FundProg Manual 2 PDF

Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 35

TECNOLÓGICO NACIONAL DE MÉXICO

INSTITUTO TECNOLÓGICO DE TIJUANA


SUBDIRECCIÓN ACADÉMICA
DEPARTAMENTO DE SISTEMAS Y COMPUTACIÓN

SEGUNDO SEMESTRE FEBRERO - JUNIO 2019


INGENIERÍA BIOMÉDICA

FUNDAMENTOS DE PROGRAMACIÓN CLAVE

MANUAL (EN LENGUAJE C)


UNIDAD I-IV

AVELAR ESTRELLA ARACELI #18211529

CASTILLO MARTÍNEZ ROLANDO LEONEL #18211534

M.C. FORTUNATO RAMIREZ ARZATE

Tijuana, B.C., 21 de marzo de 2019


ÍNDICE

1. Conceptos básicos
1.1. Software de sistemas y aplicación
1.2. Algoritmo y pseudocódigo
1.3. Programación
1.4. Programa
1.5. Lenguaje de Programación
1.6. Variables y tipos de datos
1.7. Paradigmas de programación
1.8. Editores de texto
1.9. Compiladores e intérpretes
1.10. Ejecutables
1.11. Consola de línea de comandos
1.12. Metodología para la solución de problemas
2. Estructuras de control y arreglos
2.1. Estructuras secuenciales
2.2. Estructuras selectivas: simple, doble y múltiple
2.3. Estructuras iterativas: repetir mientras, hasta, desde
2.4 Diseño e implementación de funciones, procedimientos o métodos
2.5. Arreglos
2.6. Tipos de archivos, creación, lectura, escritura
3. Algoritmos
3.1. Análisis de problemas
3.2. Representación gráfica de algoritmos y pseudocódigo
3.3. Diseño de algoritmos
4. Introducción a la programación
4.1. Características del lenguaje de programación
4.2. Estructura básica de un programa
4.3. Traducción de un programa: compilación, enlace de un programa, errores en
tiempo de compilación
4.4. Ejecución de un programa
4.5. Elementos del lenguaje: datos, literales y constantes, identificadores, variables,
parámetros, operadores, entrada y salida de datos
4.6. Errores en tiempo de ejecución
5. Referencias

1
1. Conceptos básicos

Software: El software es la parte de la parte intangible de la computadora, osea la parte que


no podemos tocar. El software se define como un conjunto de órdenes e instrucciones que
en conjunto realizan alguna tarea. El software es algo necesario para que nosotros como
usuarios podamos utilizar una computadora, ya que sin el software solo la computadora solo
sería un conjunto de placas, tarjetas y cables.

1.1. Software de sistemas y aplicación

1.1.1. Software de sistema


Llamado también software de base, se define como un conjunto de programas que tienen
como utilidad controlar e interactuar con el sistema, proporcionando control sobre el
hardware y dando soporte a otros programas. El software de sistema se divide en: sistema
operativo, controladores de dispositivos, y programas utilitarios.

Sistema operativo: ​El sistema operativo, que forma parte del software de sistema, también
está compuesto por programas, éstos administran los recursos de la computadora y
controlan su funcionamiento. Un sistema operativo está encargado de realizar las funciones
de: ​suministro de interfaz al usuario, administración de recursos, administración de archivos,
administración de tareas y servicio de soporte.

● Suministro de interfaz al usuario:​ Permite que el usuario se comunique con


la computadora por medio de interfaces que se basan en comandos,
interfaces que utilizan menús, e interfaces gráficas de usuario.
● Administración de recursos: Administra cada recurso del hardware, como
el CPU, la memoria, los dispositivos de almacenamiento secundario y
periféricos de entrada y de salida.
● Administración de archivos: ​Se encarga de controlar la creación, borrado,
copiado y acceso de archivos de datos y de programas.
● Administración de tareas: Administra los datos de los programas y
procesos que están ejecutándose en la computadora. Tiene la posibilidad de
cambiar la prioridad sobre cada proceso, concluir procesos y comprobar el
uso de éstos en la CPU, además de poder terminar programas.
● Servicio de soporte: Los servicios de soporte varían en cada sistema
operativo, sus características dependen de las implementaciones que se le

2
hayan añadido. Algunos de estos servicios pueden ser la instalación de
utilidades nuevas, actualizaciones, mejoras en la seguridad, controladores de
nuevos periféricos, y corrección de errores de software.

Controladores de dispositivos: Los controladores de dispositivos son programas de


utilidades que le dicen al sistema operativo como identificar y comunicarse con el hardware.
Estos sirven como enlace entre el sistema operativo y un dispositivo conectado al
computador, ya sea teclado, monitor, impresora u cualquier otro.

Programas utilitarios: ​Los programas utilitarios son programas diseñados para realizar una
tarea específica. Un ejemplo claro de esto es un editor de texto, un editor de imágenes, un
compilador de código, o cualquier otro programa que tenga un función determinada.

1.1.2. Software de aplicación


Es el que permite a los ​usuarios realizar tareas específicas, diseñado para la realización de
un grupo de funciones. En otras palabras, son los programas que se crean con los
softwares de programación, para realizar numerosas tareas tanto laborales, como
administrativas, de gestión o con el objetivo simplemente de ocio. Las aplicaciones
normalmente se desarrollan para un sistema operativo en particular ya sea ​Windows​, Mac o
Linux​ entre otros. Este término se suele abreviar como app o aplicación.
Son muchos los tipos de software de aplicación, pero a grandes rasgos se los suele
clasificar de la siguiente manera:

● Suite de aplicaciones​. Contiene de diversas aplicaciones han sido agrupadas.


Cada una de ellas dispone de funciones, características o una interfaz de
usuario relacionada, por lo que pueden interactuar entre sí. Ejemplos de este
tipo de aplicaciones son: Apps para ​unir dos fotos​ o para ​quitar los ojos rojos.
● Software empresarial. ​Es aquel que aborda las necesidades, procesos y el tipo
de flujo de información para atender a una organización. Lo usual es que se
divida en varios departamentos.
● Software departamental. ​Es un software de gestión empresarial, pero
enfocado en organizaciones más pequeñas o en pequeños grupos dentro de
una organización.

3
● Software educativo. ​Las características de este software están adaptadas a un
uso educativo o para estudiantes. Un buen ejemplo de esto es la utilización de
ebooks en la educación.
● Software de simulación. ​Encargado de la simulación de sistemas físicos o
abstractos, se usa para fines de investigación, capacitación y entretenimiento.
● Software de ingeniería de productos. Se usa para el desarrollo de productos
de ​hardware y ​software​. Puede incluir el diseño asistido por computadora o la
ingeniería asistida por computadora.

4
1.2. Algoritmo y pseudocódigo
Un algoritmo es una secuencia lógica ordenada de pasos finitos precisos que tiene como
objetivo la solución de un problema o realizar una tarea específica. Las características
principales de un algoritmo son que debe tener un inicio y un fin, las instrucciones, como su
definición lo describe, no pueden ser ambiguas, se puede presentar con diferentes tipos de
lenguajes y partiendo de las mismas condiciones iniciales se debe llegar siempre al mismo
resultado. Existen tres maneras de representarlo las cuales son las siguientes.
1. Texto narrativo. Se utiliza un lenguaje natural siendo un escrito específico, lo que
quiere decir que se debe escribir paso a paso las instrucciones o procedimientos que
se deben seguir para resolver un problema.
2. Pseudocódigo. Al igual que el texto narrativo, describe paso a paso las acciones a
realizar, pero utilizando una mezcla entre lenguaje formal y coloquial. Se emplean
las convenciones estructurales de un lenguaje de programación, considerando que
está diseñando para que una persona lo comprenda. Una característica importante
es que es independiente del lenguaje de programación, sin embargo, como
consecuencia no existe una sintaxis estándar para su uso.

5
3. Diagrama de flujo. Es el conjunto de figuras gráficas que expresan un algoritmo
mediante símbolos definidos y flechas que conectan los puntos de inicio y fin del
proceso. Cada figura utilizada tiene una función específica dependiendo del proceso
que se esté expresando con ellas.

Tabla 1. ​Figuras de un diagrama de flujo.

Figura Función

Marca el Inicio y el Fin del proceso, por lo que es


obligatorio colocar uno al comienzo y cuando se
termina el algoritmo.

Representa un proceso, es decir, dentro de esta se


expresan las operaciones que se realizan dentro del
algoritmo.

Expresa lectura; cuando el usuario ingresa información


(variables).

Establece una condición

Display. Expresa los resultados del proceso.

Llama a un procedimiento

Sirve como guía para la continuidad y el sentido del


proceso

Por ejemplo, si se desea realizar un algoritmo que tenga como función convertir dólares a
pesos, la forma de expresarlo sería la siguiente.

Tabla 2. ​Representaciones de un algoritmo.

Paso 1. Leer la cantidad de dólares y el tipo de cambio

6
Texto narrativo Paso 2. Multiplicar la cantidad de dólares por el tipo de cambio
Paso 3. Mostrar el resultado

● Inicio
● Leer cantidad_de_dolares (o dólares), tipo_de_cambio
Pseudocódigo ● resultado=cantidad_de_dolares*tipo de cambio
● Mostrar resultado
● Fin

Diagrama de
flujo

1.3. Programación
Es el proceso por el cual una persona desarrolla un algoritmo con ayuda de una
herramienta que le permita escribir el código (lenguajes) y de otra que sea capaz de
traducirlo a lenguaje máquina, el cual puede ser entendido por un microprocesador. Por lo
que programación se entiende como una serie de pasos para cumplir un objetivo, en donde
se plantea un problema para desarrollar después un algoritmo con las instrucciones para
solucionarlo, seguido se realiza el código fuente que es traducido por un compilador o
interprete para que como resultado exista un programa en lenguaje máquina.

7
1.4. Programa
Un programa informático es un conjunto de instrucciones que realiza una tarea al ser
ejecutado en una computadora, por lo que se le considera como un sinónimo del algoritmo.
De manera que sin programas, una computadora no serviría para su propósito.

1.5. Lenguaje de Programación


Un lenguaje de programación es un caso particular del lenguaje informático; el cual permite
hacer programas, así como describir datos, configuraciones físicas y protocolos de
comunicación entre equipos y programas. Está definido dos componentes muy importantes
que son la sintaxis y la semántica.
La sintaxis se define como el conjunto de reglas que establecen la construcción o formación
de instrucciones (sentencias) válidas en un lenguaje, en el caso específico de un lenguaje
de programación significa el cómo se escriben los enunciados, declaraciones y otras
construcciones. Se refiere a la disposición de palabras como elementos que tienen una
relación entre sí, refiriéndose a la serie de símbolos que constituyen los programas válidos.
Como consecuencia, sólo las sentencias escritas con la sintaxis correcta pueden ser
traducidas por un lenguaje de programación y usadas como programas, en cambio si fueran
incorrectas, son rechazadas automáticamente por la computadora, lo que hace más fácil su
identificación. Aunque cada lenguaje de programación tiene sus propias reglas sintácticas,
todas cumplen con el objetivo de definir los conceptos de sentencia, expresión,
identificadores, variables, constantes, etc., además deben permitir la fácil verificación de la
simbología de dicha sentencia, expresión, etc., para conocer si es correcta o incorrecta.
Un ejemplo sencillo de un error de sintaxis sería la redacción incorrecta de una función
como la siguiente:

prrintf( ​"\n Introduzca el primer numero (entero): "​ );

//La función correcta es printf por lo que un error de ortografía hace


que el código no funcione, pero el programador es advertido
instantáneamente por el compilador que hay un error

La semántica es el conjunto de reglas que proporcionan la información del significado de


una instrucción del lenguaje, por ejemplo la traducción de valores de objetos (constantes y
variables) de acuerdo a su grupo, o en nombres de objetos, grupos de acciones,

8
especificación de las operaciones efectuadas sobre dichos objetos, etc. Por esto, la
semántica es considerada una aplicación de la matemática lógica. A diferencia de los
errores sintácticos, en los errores semánticos el código de programación es válido porque el
compilador lo entiende, pero el programa resultante no hace lo que el programador quiere
que haga (errores lógicos) y no hay forma de que el compilador detecte estos errores.
Un ejemplo de un error de semántica puede ser en el caso de que el programador buscaba
hacer un operación matemática (suma) y usó el elemento incorrecto escribiendo una
multiplicación en su lugar; el programa va a funcionar porque no hay error de sintaxis pero
el resultado no será el que el programador espera.

//Lo que el programador buscaba


c = a + b;
//Cambio de operación por error de semántica
c = a * b;

Si un programa está escrito en un lenguaje de programación comprensible para el ser


humano, se le llama código fuente. A su vez, el código fuente se puede convertir en un
archivo ejecutable (código máquina) con la ayuda de un compilador, aunque también puede
ser ejecutado de inmediato a través de un intérprete. Existen varios tipos de lenguaje de
programación tales como C, C++, Pascal, ADA, FORTRAN, LISP, SCHEME, PROLOG,
SQL, Xquery, Java, entre otros HTML, XML, RDF, Latex, entre otros. Aunque de acuerdo
con el índice TIOBE actualmente, los cinco lenguajes más utilizados son JAVA, C, Phyton,
C++ y Visual Basic .NET.

1.6. Variables y tipos de datos


Una variable en C es un espacio que reservado en la memoria para poder guardar
información, éstas se utilizan para guardar en su mayoría, números caracteres, entre otros
tipos de datos, lo que determina la interpretación que le dará el lenguaje. La sintaxis para
declarar variables o constantes con diferentes tipos de datos es:

tipo_de_dato nombre_variable;
//NOTA: no pueden llevar espacios, ni acentos, ni guiones, pero sí
pueden ser separadas por guión bajo. Las variables también pueden ser
alfanuméricas

9
En lenguaje C existen en general cuatro tipos de datos, los cuales son los básicos,
enumerados, voids, y derivados.

● Tipos de datos básicos (numéricos y caracteres)


A continuación esta tabla muestra los tipos de datos y el rango de valores que puede tomar,
algunos varían dependiendo del tipo de máquina en el que se desarrolle, si es 16 bits, 32
bits, o 64 bits, algunos tipos de datos pueden variar su rango de valores y tamaño.

Tabla 3.​ Tipos de datos básicos.

Tipo Tamaño en Valores posibles Descripción


memoria

char 1 byte -128 a 127 ó 0 a 255 Guarda caracteres del


código ASCII

int 2 o 4 bytes -32,768 a 32,767 o Guarda números enteros


-2,147,483,648 a 2,147,483,647

float 4 bytes 1.2E-38 a 3.4E+38 Guarda números


decimales de 6 dígitos

double 8 bytes 2.3E-308 a 1.7E+308 Guarda números


decimales de 15 dígitos

short 2 bytes -32,768 a 32,767 Guarda números enteros


de menor almacenamiento
a comparación de int

long 4 bytes -2,147,483,648 a 2,147,483,647 Guarda números enteros


de mayor almacenamiento
que int

long 10 bytes 3.4E-4932 a 1.1E+4932 Guarda números


double decimales de hasta 19
dígitos

● Enumerados
Son aquellos que pueden tomar su valor a partir de una lista ordenada de valores
previamente establecida por el programador, la cual empieza de 0 hasta n. Por ejemplo:

enumerado direcciones {Norte, Sur, Este, Oeste}


// lo que es igual a
{​0​,​1​,​2​,​3​}

10
● Void
No es un tipo de dato en sí, pero se usa para determinar que una función no recibe
parámetros o no devuelve un resultado. Por lo que no pueden existir variables del tipo void,
entonces su rango tiene valor nulo y al igual que su tamaño.

int​ ​sumaDosEnteros​ (​int​ entero1, ​int​ entero2)


{
int​ resultado = ​0​;
resultado = entero1 + entero2;
return​ resultado;
}

int​ ​main​()
{
​printf​(​"Bienvenidos al programa\n"​);
​printf​(​"Si sumamos tres y cinco obtenemos %d\n"​,
sumaDosEnteros(​3​,​5​));
​return​ ​0​;
}

● Derivados

1.7. Paradigmas de programación


Un paradigma de programación es un método de desarrollo de programas que indica la
manera en que se deben estructurar y organizar las tareas para que se logre llevarlo a
cabo. Los lenguajes de programación se encuadran en uno o varios paradigmas a la vez a
partir del tipo de órdenes que permiten implementar, lo que tiene una relación directa con su
sintaxis. Existen varios tipos de paradigmas que se dividen como:
● Imperativo. Los programas se componen de un conjunto de sentencias que
cambian su estado. Son secuencias de comandos que ordenan acciones a la
computadora.
● Declarativo. Es el opuesto del imperativo, es decir, los programas describen los
resultados esperados sin enlistar explícitamente los pasos a llevar a cabo para
desarrollarlos.
● Lógico.​ El problema se presenta con enunciados de lógica de primer orden.

11
● Funcional. Como su nombre lo dice, son aquellos programas que se componen
de funciones, es decir, implementaciones de comportamiento que reciben un
conjunto de datos de entrada y devuelven un valor de salida.
● Orientado a objetos. El comportamiento del programa es llevado a cabo por
objetos, que son entidades que representan elementos del problema a resolver y
tienen atributos y comportamiento.

Además de los ya mencionados, existen otros paradigmas más recientes que no forman
parte del grupo principal:
● Dirigido por eventos. ​El flujo del programa está determinado por sucesos
externos (por ejemplo, una acción del usuario).
● Orientado a aspectos. Apunta a dividir el programa en módulos independientes,
cada uno con un comportamiento bien definido.

1.8. Editores de texto


Un editor de texto es un programa informático que permite crear, guardar y modificar
archivos de texto digital plano. Aunque su uso más común es como almacén de notas
rápidas, también se puede utilizar para abrir múltiples lenguajes de programación y seguir
avanzando en códigos, por ejemplo en HTML, CSS, JavaScript, PHP, XML, BAT, ASP,
SQL, etc. Los editores de texto, por lo general, son incluidos en el mismo sistema operativo
y algunos son instalados por el usuario, de igual manera algunos son libres y otros son de
paga, dependiendo de la cantidad de funciones adicionales con las que cuente el editor,
aunque generalmente cuentan con funciones para cortar, pegar, modificar, importar, hacer y
deshacer acciones. Los editores de textos más comunes son Bloc de notas o Notepad
(editor integrado en Microsoft Windows), Unix, Notepad++ (editor de código fuente para
Windows), Vi (editor muy común en Unix), Text Editor and Corrector.
Por otro lado, existen los procesadores de texto que son programas que permiten crear,
guardar y modificar archivos de texto con una amplia posibilidad de edición de formato,
tamaño, fuente, color, imágenes entre muchas otras funcionalidades. Ejemplos de éstos son
Microsoft Word y WordPad.

1.9. Compiladores e intérpretes


Desde el punto de vista informático, un lenguaje es una notación formal para describir
algoritmos o funciones que serán ejecutadas por un ordenador. Actualmente, existe una
gran variedad de lenguajes. Todos tienen un punto en común, su gramática. Con ella

12
podemos saber si una sentencia escrita para un determinado lenguaje es válida o no. Y ello
lo podemos determinar mediante un compilador. Con esto, es posible definir un compilador
como el programa que procesa las instrucciones escritas y convierte un lenguaje de alto
nivel en otro comprensible para la máquina, aplicando una serie de reglas específicas de
ese lenguaje, esto es, su gramática.
Es posible llevar a cabo esta tarea de transformación de dos maneras distintas: mediante un
intérprete o mediante un compilador. El funcionamiento del intérprete consiste en ejecutar
una a una las sentencias que componen el programa. Este funcionamiento tiene la ventaja
de permitir la interacción con el programa durante la ejecución, por lo que se pueden hacer
cambios en el mismo y observar los resultados inmediatamente, facilitando así la
depuración. No obstante, el intérprete cuenta con la desventaja de ser lento. Con el
compilador sin embargo, la ejecución es más rápida, ya que después del proceso de
compilación, se ha creado un fichero ejecutable equivalente.

13
1.10. Ejecutables
1.11. Consola de línea de comandos
1.12. Metodología para la solución de problemas

2. Estructuras de control y arreglos

2.1. Estructuras secuenciales


Una estructura secuencial es aquella en la que una instrucción (acción) sigue a otra en un
orden lógico (secuencia), es decir, que suceden de tal forma que la salida de una tarea es la
entrada de la siguiente y así sucesivamente hasta el final del proceso. Sin embargo, toda
estructura secuencial tiene entrada inicial y una salida final.
Una forma gráfica de observar esto se muestra a continuación, además del respectivo
pseudocódigo.

Por ejemplo, si se busca hacer la suma y resta de dos números, se utiliza la estructura
secuencial para representarlo de la siguiente manera.

inicio
leer​(num1)
leer​(num2)
Suma ← num1 + num2
Resta ← num1 - num2
escribir​(Suma, Resta)
fin

14
2.2. Estructuras selectivas: simple, doble y múltiple
También llamadas estructuras de decisión o alternativas son aquellas que se utilizan para
tomar decisiones lógicas mediante la evaluación de una condición y en base al resultado se
realiza una opción u otra. Las estructuras selectivas se dividen en:

• Simple (if)
Las estructuras selectivas simples o condicionales están compuestas por una sola
condición, de manera que si ésta es verdadera la acción o acciones se ejecutarán, en
cambio si la condición es falsa no se realiza un proceso. Por lo que su estructura general es
la siguiente.

if (condición) //entre paréntesis la condición que se debe evaluar//

proceso //(acciones) Si la condición entre paréntesis es verdadera el proceso


se llevará a cabo//.

end

Ejemplo 2.2.1. Escribir un código en el que el usuario escriba una calificación y que el
programa imprima si la calificación es aprobatoria o no (siendo 7 la calificación mínima
aprobatoria).

#include <stdio.h>

15
int​ ​main​()
{
​float​ calificacion;​//Declaración de una variable

​printf​(​"Introduzca una calificacion: \n"​);​//Mensaje para el usuario


​scanf​(​"%f"​, &calificacion);​//Escanea el valor de variable y lo
guarda

​if​(calificacion>=​7​)​//Condición o expresión
{
​printf​(​"La calificación es aprobatoria"​);​/*Si la condición se
cumple
imprime dicho mensaje*/
}
​//Si no se cumple, sale del programa

​return​ ​0​;
}

• Doble (if-else)
Las estructuras selectivas dobles están compuestas por una sola condición, en el caso de
que sea verdadera se ejecutará la acción (o acciones) correspondientes, en cambio si la
condición es falsa se ejecutará la acción (o acciones) para dicha condición. Este tipo de
estructura se utiliza únicamente cuando existen dos condiciones, si existen más de dos

16
condiciones se puede utilizar varias selectivas simples o una selectiva múltiple. La
estructura general es la siguiente.

if (condición)

acción (si la condición entre paréntesis es verdadera se ejecutará el proceso)

else

acción (si la condición entre paréntesis es falsa se ejecutará un proceso diferente)

end

Ejemplo 2.2.2. Siguiendo el ejemplo anterior, en el caso de que la calificación sea menor a
7, se imprimirá el mensaje “La calificación es reprobatoria”.

#include <stdio.h>

int​ ​main​()
{
​float​ calificacion;​//Declaración de variables

​printf​(​"Introduzca una calificacion: \n"​);​//Mensaje para el usuario


​scanf​(​"%f"​, &calificacion);​//Escanea el valor de la variable y lo
guarda

​if​(calificacion>=​7​)​//Condición o expresión
{
​printf​(​"La calificación es aprobatoria"​);​/*Si la condición se
cumple, imprime el mensaje*/
}
​else
{
​printf​(​"La calificación es reprobatoria"​);​/*Si la condición no
se
cumple, imprime este mensaje*/
}

​return​ ​0​;
}

17
• Múltiple (switch case)
Usando la estructura de decisión múltiple se evalúa una expresión que puede tomar n
valores distintos (1, 2 , 3, ...., n) y según el valor que se elija en la condición, se realizará
una de las n acciones o lo que es igual, el flujo del algoritmo seguirá sólo un determinado
camino entre los n posibles. Esta estructura se representa por una selección, la cual si toma
el valor 1 ejecutará la acción 1, si toma el valor 2 ejecutará la acción 2, si toma el valor N
realizará la acción N.

Ejemplo 2.2.3. Escribir un código en el cual el usuario introduzca un número del 1 al 7


correspondiendo a los días de la semana de manera que si se introduce el número 1
imprima el mensaje “Lunes”, si el número es dos que imprima el mensaje “Martes”, y así
sucesivamente.

#include <stdio.h>

int​ ​main​()
{
​int​ dia;​//Declaración de variables

​ rintf​(​"Introduzca un numero de la semana: \n"​);​//Mensaje para el


p
usuario

18
​scanf​(​"%i"​, &dia);​//Escanea el valor de la variable y lo guarda

​switch​(dia)​//Inicio de la función
{
​case​ ​1​:
​printf​(​"Lunes"​);​//Si el usuario introduce el numero 1, se
imprimirá "Lunes"
​break​;

​case​ 2​ ​:
​printf​(​"Martes"​);​//Si el usuario introduce el numero 2, se
imprimirá "Martes"
​break​;

​case​ 3​ ​:
​printf​(​"Miercoles"​);​//Si el usuario introduce el numero 3, se
imprimirá "Miercoles"
​break​;

​case​ 4​ ​:
​printf​(​"Jueves"​);​//Si el usuario introduce el numero 4, se
imprimirá "Jueves"
​break​;

​case​ 5​ ​:
​printf​(​"Viernes"​);​//Si el usuario introduce el numero 5, se
imprimirá "Viernes"
​break​;

​case​ 6​ ​:
​printf​(​"Sabado"​);​//Si el usuario introduce el numero 6, se
imprimirá "Sabado"
​break​;

​case​ 7​ ​:
​printf​(​"Domingo"​);​//Si el usuario introduce el numero 7, se
imprimirá "Domingo"
​break​;

​default​:
​printf​(​"Numero no valido"​);​//Si el usuario introduce otro numero, se
imprimirá "Numero no valido"
}

​return​ ​0​;

19
}

2.3. Estructuras iterativas: repetir mientras, hasta, desde.


2.3.1. For
Es una estructura de repetición utilizada para repetir un código una o más veces
dependiendo de un contador. Su estructura es la siguiente.

for​ (condición de inicio ; expresión ; acción después de cada iteración)


{
sentencia (s);
}

En donde la condición de inicio establece el valor de la variable que se va a utilizar dentro


del cuerpo de la estructura for. La expresión indica que la sentencia (proceso) se continuará
repitiendo (iterando) mientras la condición sea verdadera. La acción después de cada
iteración se refiere a la indicación que se realiza varias veces después de cada iteración,
esta variación podría ser un incremento en la variable definida en la condición de inicio.

Es importante tomar en cuenta que al igual que las demás estructuras de control el cuerpo
de la estructura for lleva llaves si este contiene más de una sentencia o instrucción. Una
forma sintáctica para mayor comprensión de la estructura for se observa a continuación.

​for​ (inicio; mientras; incremento)


{
proceso;
}

Ejemplo 2.3.1. Escribir un código que imprima del 1 al 10.


#include <stdio.h>

int​ ​main​()
{
​int​ n;
​/*Declarar la una variable entera
con valor inicial de 1 para que la
lista empiece en ese número. Esta
variable también se refiere al contador*/

​for​ (n=​1​; n<=​10​; n++) ​/*La variable se

20
declarar en el valor de 1 ya que ese es el primer número entero,
después se establece el límite de la cantidad de valores que va
a imprimir, es decir, que imprimiría hasta el número 10, y por
último se escribe el incremento, que es +1*/
{
​printf​(​"%i"​, n);​/*Inicia el proceso con el primer valor de n (1)
y se utiliza "i" porque es un número entero, también se puede usar
"d"*/
}

​return​ ​0​;
}

2.3.2. While
Este tipo de estructura se encarga de repetir una serie de acciones mientras se cumpla una
condición. La forma correcta de desarrollarlo es la siguiente.

while (condición)
{
sentencia (s);
}

El ciclo While primeramente evalúa la condición para después reconocer si es verdadera y


ejecutar las sentencias correspondientes, es decir, el cuerpo de la estructura. En cambio si
el resultado de la evaluación es falso no se ejecutan las sentencias y termina el ciclo.

Ejemplo 2.3.2. Escribir un código que imprima los primeros diez números enteros.

#include <stdio.h>

int​ ​main​()
{
​int​ n=​1​;
​/*Declarar la una variable entera
con valor inicial de 1 para que la
lista empiece en ese número*/

​while​(n<=​10​) ​//Establecer que la lista sea del 1 al 10//


{
​printf​(​"%i \n"​, n); ​/*Imprimir el número con el tipo
de variable entero (i) y hacer referencia a la variable inicial
(n)*/

n++;​//Aumentar 1 cada vez que se repita el proceso//

21
}

​return​ ​0​;
}

2.3.3. Do While
Su estructura se basa en la repetición del cuerpo del bucle, que es el grupo de sentencias o
instrucciones, hasta que la condición se haga falsa (valor nulo), es decir, ejecutar el grupo
de sentencias mientras la condición sea cierta (valor no nulo). por lo que siempre se va a
ejecutar el cuerpo del bucle al menos una vez, ya que la condición de salida
(<exp-condición>) la encontramos al final. La sintaxis de Do While es la siguiente.

do
{
sentencia
}
while (condición); //El punto y coma (;) es muy importante ya que es la diferencia entre un
While y Do While

Ejemplo 2.3.3. Escribir un código que imprima los números enteros del 1 al 10.

#include <stdio.h>

int​ ​main​()
{
​int​ n;​//Declaración de variable

​do
{
​printf​(​"%d"​, n); ​//Proceso o sentencia o instrucción
n++;​//Contador (aumenta 1 a 1)
}
​while​ (n <= ​10​); ​/*Por cuánto se repetirá el proceso.
Es importante el uso de punto y coma (;) al final del While,
ya que se confundiría con un While normal*/

​return​ ​0​;
}

2.4 Diseño e implementación de funciones, procedimientos o métodos.


2.5. Arreglos
2.6. Tipos de archivos, creación, lectura, escritura.

22
3. Algoritmos
3.1. Análisis de problemas.
3.2. Representación gráfica de algoritmos y pseudocódigo.
Existen diversas maneras de representar un algoritmo, esto tiene varios fines y utilidades,
por ejemplo, tener un mejor entendimiento de ellos. En este caso se explica la
representación gráfica de los algoritmos, que son los diagramas de flujo. Los diagramas de
flujo son una manera de representar visualmente el flujo de datos a través de formas de
tratamiento de información.

Los diagramas de flujo describen que operaciones y en qué secuencia se requieren para
solucionar un problema dado. Un diagrama de flujo ilustra la secuencia de las operaciones
que se realizarán para conseguir la solución de un problema. Los diagramas de flujo se
dibujan generalmente antes de comenzar a programar el código frente a la computadora,
este es un dato importante, ya que a muchas personas se les facilita mucho más tener
visualmente su programa.

Las características que debe tener un diagrama de flujo son:

● Capacidad de comunicación: permite la puesta en común de conocimientos


individuales sobre un proceso, y facilita la mejor comprensión global del mismo.
● Claridad: proporciona información sobre los procesos de forma clara, ordenada y
concisa.

El Diagrama de Flujo muestra el sistema como una red de procesos funcionales conectados
entre sí, sus datos permiten describir el movimiento de los datos a través del Sistema. Este
describe: Lugares de Origen y Destino de los datos, Transformaciones a las que son
sometidos los datos, Lugares en los que se almacenan los datos dentro del sistema. Los
canales por donde circulan los datos. Además de esto podemos decir que este es una
representación reticular de un sistema, el cual lo contempla en términos de sus
componentes indicando el enlace entre los mismos. Debe tener un principio y un fin.

En la siguiente tabla se ilustran las figuras básicas de un diagrama de flujo:

Tabla 4. ​Figuras de un diagrama de flujo.

Símbolo Nombre Función

Representa el inicio y el final de un


Inicio / Final
proceso

23
Indica el orden de la ejecución de
Línea de flujo
las operaciones. La flecha indica la
siguiente instrucción.

Representa la lectura de datos en la


Entrada / Salida
entrada y la impresión de datos en
la salida.

Representa cualquier tipo de


Proceso
operación.

Nos permite analizar una situación,


Decisión con base en los valores verdadero y
falso.

Los diagramas de flujo desempeñan un papel vital en la programación de un problema y


facilitan la comprensión de problemas complicados y sobre todo muy largos.

En el siguiente ejemplo se muestra un algoritmo cuyo objetivo es leer dos números y


calcular la suma de éstos, y enseguida, su representación gráfica (diagrama de flujo).

24
Una vez que se dibuja el diagrama de flujo, llega a ser fácil escribir el programa en cualquier
idioma de alto nivel. A continuación, se presenta el código en lenguaje C del diagrama de
flujo anterior:

int​ ​main​()
{
​int​ numero_a=​1​;
​int​ numero_b=​2​;
​int​ suma;

suma=numero_a+numero_b;

​printf​(​"El resultado es: %d\n"​, suma);


​return​ ​0​;
}

Vemos a menudo cómo los diagramas de flujo nos dan ventaja al momento de explicar el
programa a otros. Por lo tanto, está correcto decir que un diagrama de flujo es una necesidad
para la documentación mejor de un programa complejo.

Pseudocódigo.

El pseudocódigo (o falso lenguaje) es comúnmente utilizado por los programadores para omitir
secciones de código o para dar una explicación del paradigma que tomó el mismo programador
para hacer sus códigos, esto quiere decir que el pseudocódigo no es programable sino facilita
la programación.

El principal objetivo del pseudocódigo es el de representar la solución a un algoritmo de la


forma más detallada posible, y a su vez lo más parecida posible al lenguaje que posteriormente
se utilizará para la codificación del mismo El pseudocódigo utiliza para representar las acciones
sucesivas palabras reservadas en inglés (similares a sus homónimos en los lenguajes de
programación), tales como start, begin, end, stop, if-then-else, while, repeat until…etc.

Es un lenguaje de especificación de algoritmos. El uso de tal lenguaje hace el paso de


codificación final (esto es, la traducción a un lenguaje de programación) relativamente fácil. Se

25
considera un primer borrador, dado que el pseudocódigo tiene que traducirse posteriormente a
un lenguaje de programación. Cabe señalar que el pseudocódigo no puede ser ejecutado por
una computadora.

Tabla 5.​ Símbolos usados en un pseudocódigo

Operación Símbolo Descripción

Suma + Adiciona una o más variables

Resta - Sustrae una o más variables

Multiplica el valor de dos o


Multiplicación *
más variables

División / Divide dos o más variables

Devuelve la parte entera de la


Entero de división \ división entre dos números

Potencia ^ x^n el valor elevado a la n

Devuelve el resto de la
Módulo Mod
división de dos números

3.3. Diseño de algoritmos.


A partir de la definición de algoritmo y de sus características previamente descritas,
se puede establecer que para el diseño de un algoritmo exitoso una herramienta útil es el
uso de pseudocódigo y diagrama de flujo. Después de realiza la declaración de variables.,
en donde los datos deben seguir ciertas reglas de nombramiento, las cuales son
especificadas en la mayoría de los lenguajes de programación.

● Se utilizan secuencias formadas por caracteres alfanuméricos.


● El primer elemento de la secuencia debe ser un carácter alfabético.
● No se utilizan signos de acentuación.
● No se utilizan espacios. En caso de necesitar un separador se debe utilizar un guión
bajo (_).
● No se permite el uso de las palabras reservadas o palabras claves.
● Se recomiendan nombres cortos y fáciles de identificar, es decir, que su nombre
represente lo que es.

26
A continuación se presenta una tabla con ejemplos de identificadores válidos y no válidos
de acuerdo a las reglas mencionadas.

Identificadores válidos Identificadores no válidos

Identificador Razón

longitud ºC El signo º no es un caracter válido


altura 1_dato No debe iniciar con un número
dato1 valor 1 No deber tener espacio como separador
Valor_1
leer Es una palabra reservada
valor_1
VALOR escribir Es una palabra reservada
inicio Es una palabra reservada

El procedimiento el diseño de un algoritmo consta de seis pasos, los cuales se desglosan a


continuación.

1. Entender el problema
Para poder establecer la secuencia o conjunto de instrucciones es necesario entender el
problema a resolver. Por ejemplo, si se busca hacer un promedio, se necesita saber la
formula para obtener un promedio, en el que primero se suman los valores y después se
divide ese valor entre la cantidad de valores inicial, o si se busca obtener el área de un
triángulo, de igual manera se necesita una fórmula, y en base a eso saber si se comprende
la serie de pasos que se necesitan seguir para obtener el resultado deseado.

2. Declaración de datos
Una vez seleccionada la mejor alternativa para la solución del problema, se de hacer la
declaración de datos, los cuales se clasifican en ​datos de entrada​, que se refieren a todos
aquellos que se suministren, ​datos de salida que son los datos o resultados que se
esperan y los ​datos de trabajo que son posiciones de memoria donde se almacenan los
resultados de cálculos intermedios, necesarios para obtener los datos de salida.
Se debe asignar nombre a los datos de acuerdo a las reglas para formar identificadores. Al
hacer la declaración de variables también debe especificarse el tipo al que corresponde, ya
sea un carácter, una cadena de caracteres o un valor lógico (verdadero o falso).En esta
sección del proceso es importante especificar las fórmulas a utilizar (utilizando los nombres
asignados a los datos).

3. Prueba de escritorio
Se debe representar la alternativa de solución seleccionada mediante un algoritmo, el cual
puede desarrollarse utilizando el pseudocódigo o el diagrama de flujo, después se verifica si
el algoritmo cumple con las características de un algoritmo. A esta verificación se conoce
como prueba de escritorio.

27
Se puede ejecutar el algoritmo con diferentes datos de entrada para verificar si en realidad
se obtienen los datos de salida esperados, en caso contrario se deben hacer las
modificaciones necesarias. Es importante usar diferentes datos de prueba de manera que el
algoritmo paso por todas las situaciones posibles y por último, la forma de saber si el diseño
está listo es hacer la prueba de escritorio, y que este cumpla con las características que el
programador busca.

A continuación se presenta un ejemplo de la metodología para el diseño de un algoritmo.

Problema 3.3.1. Diseñar un algoritmo para convertir grados Celsius a Fahrenheit.

1. Entender el problema
El agua se congela a 0º C y hierve a 100º C, mientras que en grados Fahrenheit el agua se
congela a 32º y hierve a 212º. Como el problema pide hacer una conversión de Celsius a
Fahrenheit la fórmula que se necesita es: ºF=[(5/9)ºC]+32, en donde sólo se hace una
sustitución.

2. Declaración de datos
Para hacer esta operación se necesitan los datos de entrada: los cuales son la cantidad de
grados Celsius a convertir. Los datos de proceso o trabajo, que hacen referencia a la
fórmula y por último los datos de salida; que es la cantidad de grados Fahrenheit convertida
o Resultado.

3. Prueba de escritorio
Tomar un valor para la variable de ºC, correr el algoritmo en un software y rectificar que el
resultado sea correcto. En el caso de que no sea así, revisar la información y hacer las
correcciones correspondientes.

4. Introducción a la programación

4.1. Características del lenguaje de programación.

4.2. Estructura básica de un programa


Como breve introducción, el programa más sencillo en lenguaje C, siendo así mismo la
estructura más simple, es el código predeterminado en CodeBlocks una vez que se inicia un
proyecto, aunque a diferencia de “Hello World!”, en este ejemplo se utiliza otro mensaje.

#include <stdio.h>

main()
{
printf​(​"Este es mi primer código en lenguaje C"​);

28
​return​ ​0​;
}

Con este código se visualiza el mensaje: ​Este es mi primer código en lenguaje C ​en la
terminal.

La primera línea indica que se deben de tomar en cuenta las funciones y tipos definidos en
la biblioteca ​stdio (standard input/output). Estas definiciones se encuentran en el fichero de
encabezado (header) ​stdio.h.​ En la función ​main se incluye una primera sentencia que llama
a la función ​printf.​ Ésta toma como argumento (encerrado entre paréntesis) un mensaje
limitado por dobles comillas (" ") y la imprime en la salida habitual, es decir, en la terminal
(interfaz).

La segunda sentencia, ​return 0​, termina el programa y devuelve un valor (cero) al sistema
operativo (por lo general es cero si la ejecución fue correcta y se usan valores distintos de
cero para indicar diversos errores que pudieron ocurrir). Si bien no es obligatorio terminar el
programa con return, es conveniente indicarle a quien lo haya invocado, sea el sistema
operativo o algún otro programa, si la finalización ha tenido éxito o no.

Por lo tanto todo programa escrito en C consta de tres partes principales: ​Entrada de
datos, proceso y salida de datos​. Para que se pueda llevar a cabo necesita contener una
o más funciones. El programa siempre comenzará por la ejecución de la función main, como
se mencionó, de la cual se desglosa la estructura del programa.

Cada función debe contener:

● Una cabecera de la función, que consta del nombre de la función, seguido de una
lista opcional de argumentos encerrados con paréntesis.
● Una lista de declaración de argumentos, si se incluyen éstos en la cabecera.
● Una sentencia compuesta, que contiene el resto de la función.

Los argumentos son símbolos que representan información que se le pasa a la función
desde otra parte del programa. Cada sentencia compuesta se encierra con un par de llaves,
{.....}. Las llaves pueden contener combinaciones de sentencias elementales (denominadas
sentencias de expresión) y otras sentencias compuestas. Así las sentencias compuestas
pueden estar anidadas, una dentro de otra. Cada sentencia de expresión debe acabar en
punto y coma (;).

Más a detalle, Stdio.h (standard input-output header), es el archivo de cabecera que


contiene las definiciones de las macros, las constantes, las declaraciones de funciones de la
biblioteca estándar del lenguaje de programación C para hacer operaciones, estándar, de
entrada y salida, así como la definición de tipos necesarios para dichas operaciones. Es la
cabecera principal de este tipo de lenguaje y aparece como predeterminado una vez que
inicia un proyecto en Codeblocks.

29
La primera función que aparece en el lenguaje C, es int main() seguido de una llave abierta
que simboliza el espacio donde se escribirá el código (proceso) para cumplir su función. Por
lo que dentro de un código es la que pauta la entrada de datos, en la mayoría de los casos
se refiere a la declaración de variables1 de cualquier tipo (int, float, etc.). ​Dependiendo del
código puede ser otro tipo de información; llenado de datos, información de un menú,
peticiones del autor al usuario para empezar con la función del código, etc.

Después se realiza la estructura del proceso, en el cual se utilizan diferentes tipos de


funciones, por ejemplo; printf, scanf, while, for, etc. La estructura general de una función en
C es la siguiente:

tipo_de_retorno nombre_de_la_función (lista_de_parametros)


{
cuerpo_de_la_función
return​ expresión
}

Se realiza el proceso, que es meramente el funcionamiento del código y de las funciones.


Una vez que éste se cumple de manera exitosa, se da la salida de datos, que se refiere a la
entrega de información hacia el usuario, como lo puede ser un menú, una búsqueda dentro
de archivos, operaciones matemáticas, un juego, etc.

Existen comentarios, que son notas que el creador del programa puede escribir en cualquier
parte del código, y no son vistos en pantalla una vez que el usuario corre el programa.
Existen dos formas distintas de escribirlos; uno es usando dos diagonales al inicio del
comentario y dos al final, por ejemplo;

//esto es un comentario//

Además se puede escribir con una diagonal y un asterisco seguido del mensaje y cerrarlo
con un asterisco y una diagonal, tal como;

/*esto es otro comentario*/

Los comentarios son útiles para identificar los elementos principales de un programa,
establecer las diferentes partes o procesos que se llevan a cabo dentro del código, siendo
así una guía para el autor o si el usuario tiene acceso al código, es una herramienta útil para
identificar todo lo que se lleve a cabo.

1
​TipoDeVariable NombreDeVariable,​ en la que no se pueden utilizar espacios en variables pero sí
nombres alfanuméricos seguidos o divididos con guión bajo. Ejemplo: num_1​✔​, num1​✔​, num 1​𝒙​.

30
Mediante el siguiente ejemplo se pueden identificar las diferentes partes básicas de un
programa sencillo. Este código tiene como función que el usuario introduzca dos números
enteros y el programa realice operaciones básicas con ellos (suma, resta, multiplicación,
división).

4.2.1. Entrada de datos


#include <stdio.h>

int​ ​main​()
{
​int​ num1;
​int​ num2;
​float​ suma;
​float​ resta;
​float​ multiplicacion;
​float​ division;

Se refiere a la declaración de variables, información (datos) que el usuario introduce para el


funcionamiento del programa, etc. Las variables son de diferentes tipos y se escogen
dependiendo de la clase de dato que se vaya a utilizar, en este caso se manejan dos
números enteros, por lo cual se maneja la variable ​int,​ en cambio para las operaciones se
utiliza la variable ​float,​ debido a que ésta permite números decimales.

​//Instrucciones para el usuario//

​printf​(​"Introduzca un numero: "​);


​scanf​(​"%i"​, &num1);
​printf​(​"Introduzca otro numero: "​);
​scanf​(​"%i"​, &num2);

​printf​(​"\n"​);

Se le dan indicaciones al autor, si así es el caso, de información que tiene que proporcionar
para que el código cumpla su función, en éste programa se busca que el usuario proponga
ambos números, por lo cual tienen que ser declarados. Ésto se hace imprimiendo ​(printf) un
mensaje que le notifique al usuario lo que tiene que realizar, para después guardar un
espacio en la memoria para dicho dato mediante la función scanf, cuando se utiliza ésta
función es importante saber su estructura, la cual es ​scanf​(“​%​TipoDeVariable”,
&​NombreDeVariable). En este caso como se solicitó un número entero, se declara con la
letra ​i​ (int).

4.2.2. Proceso
​//Operaciones//

31
suma=num1+num2;
resta=num1-num2;
multiplicacion=num1*num2;
division=num1/num2;

Es la sección del código donde se realizan todas las operaciones, en este caso específico
son completamente numéricas, pero no significa que se limita a eso, existe una gran
variedad de posibilidades respecto al tipo de operaciones permitidas en este tipo de
lenguaje, por ejemplo, otras de las más usadas es de búsqueda o como base de datos.

4.2.3. Salida de datos


//Resultados//

​printf​(​"El resultado de la suma es: %.2f\n"​, suma);


​printf​(​"El resultado de la resta es: %.2f\n"​, resta);
​printf​(​"El resultado de la multiplicacion es: %.2f\n"​,
multiplicacion);
​printf​(​"El resultado de la division es: %.2f\n"​, division);

​return​ ​0​;
}

Es la parte que se le presenta al usuario en la terminal (interfaz), donde se visualizan los


resultados de las operaciones. Es importante establecer la variable que corresponde con
cada resultado, ya que si no es así, solo se imprimiría un mensaje normal y no el resultado.
Al igual se debe señalar el tipo de variable que maneja, en éste caso flotante ​(float) porque
así se estableció en la primera parte del código. Un dato adicional completamente estético
es el uso de %.2f, en lugar de %f, lo que éste hace es reducir el número de decimales con
los que se presenta el resultado, no es obligatorio utilizar 2, se puede establecer otra
cantidad de decimales si así lo desea el autor.

NOTAS:
➔ Siempre se cierra una línea de código con punto y coma (;) excepto en algunos
tipos de funciones.
➔ Las variables no pueden tener espacios ni acentos.
➔ Los comentarios pueden llevar acentos.
➔ Una forma de hacer más estética una interfaz es mediante saltos de línea, para
escribirlos se utiliza ​printf​(“\n”)​;
➔ Cuando se utiliza la función scanf es importante no olvidar usar
&​NombreDeVariable.

32
4.3. Traducción de un programa: compilación, enlace de un programa, errores en
tiempo de compilación
4.4. Ejecución de un programa.
4.5. Elementos del lenguaje: datos, literales y constantes, identificadores, variables,
parámetros, operadores, entrada y salida de datos.
4.6. Errores en tiempo de ejecución.

33
Referencias

● Luis Olarte Gervacio. (2017). Clasificación de software de sistemas y aplicaciones.


2019, Marzo 12, Conogasi.org Sitio web:
http://conogasi.org/articulos/clasificacion-de-software-de-sistemas-y-aplicaciones/
● ​ .F., México. Grupo Editorial
Juganaru, M. (2014). ​Introducción a la programación. D
Patria.
(​http://www.editorialpatria.com.mx/pdffiles/9786074384154.pdf​)
● Universidad Técnica Federico Santa María. (s.f.). ​Programación en Pascal. Capítulo 7.
Descripción Formal de Lenguajes. Recuperado de:
http://ramos.elo.utfsm.cl/~lsb/pascal/clases/cap07.pdf
● http://fcasua.contad.unam.mx/apuntes/interiores/docs/98/4/informatica_4.pdf
● TIOBE. (2019). ​TIOBE Index for March 2019. ​Recuperado de:
https://www.tiobe.com/tiobe-index/

34

También podría gustarte