Logo Studenta

FPR_U2_Contenido

¡Este material tiene más páginas!

Vista previa del material en texto

Ciencias Exactas Ingeniería y Tecnología 
Primer Semestre 
 
 
Programa de la asignatura: 
Fundamentos de programación 
 
 
Unidad 2. Introducción al lenguaje C 
 
 
 
 
 
Universidad Abierta y a Distancia de México 
 
 
Unidad 2. Introducción al lenguaje C 
 
UNADM | DCEIT | FPR 2 
Índice 
Unidad 2: introducción al lenguaje C ............................................................................................... 3 
Presentación de la unidad ....................................................................................................................... 3 
Propósitos ............................................................................................................................................................. 3 
Competencia específica ............................................................................................................................ 4 
Logros………………….……………………………………………………………………………………………………………………………..4 
2.1. Componentes de un programa en lenguaje c................................................................... 5 
2.1.1. Instrucciones ........................................................................................................................................... 8 
2.1.2. Palabras reservadas ........................................................................................................................... 9 
2.1.3. Estructura general de un programa ...................................................................................... 9 
2.2. Tipos de datos .......................................................................................................................................... 11 
2.3. Variables y constantes ...................................................................................................................... 13 
2.3.1. Identificadores ..................................................................................................................................... 14 
2.3.2. Declaración e inicialización de variables.......................................................................... 15 
2.3.3. Tipos de constantes ........................................................................................................................ 17 
2.3.4. Declaración de constantes ........................................................................................................ 19 
2.4. Expresiones matemáticas ............................................................................................................ 20 
2.4.1. Tipos de operadores ....................................................................................................................... 22 
2.4.2. Evaluación de expresiones ....................................................................................................... 25 
2.5. Bibliotecas y funciones.................................................................................................................... 27 
2.5.1. Funciones matemáticas .............................................................................................................. 28 
2.5.2. Funciones de entrada y salida ................................................................................................ 29 
2.6. Codificación de algoritmos .......................................................................................................... 30 
2.7. Estructuras de control .................................................................................................................... 40 
2.7.1. Estructuras selectivas ..................................................................................................................... 41 
2.7.2. Estructuras repetitivas ................................................................................................................. 59 
2.7.3. Estructuras anidadas .................................................................................................................... 79 
Cierre de la unidad ...................................................................................................................................... 83 
Fuentes de consulta ................................................................................................................................... 81 
Unidad 2. Introducción al lenguaje C 
 
UNADM | DCEIT | FPR 3 
 
Unidad 2: Introducción al lenguaje C 
 
Presentación de la Unidad 
 
 En esta unidad hablaremos sobre la forma en que se 
crean programas en el lenguaje de programación C, 
desarrollado por Dennis M. Ritche en el año de 1972, en 
los laboratorios Bell de la AT&T, y que posteriormente 
fue estandarizado por un comité del ANSI (por sus siglas 
en Inglés American National Standard Institute) dando 
lugar al ANSI C, a través del cual se garantiza que cualquier programa creado 
bajo este estándar pueda ser ejecutado en cualquier computadora (Kernighan 
y Ritchie, 1991). 
 
Los elementos básicos del lenguaje de programación C son: tipos de datos, 
variables y constantes, operadores lógicos y aritméticos, funciones de manejo 
de datos, entre otras funciones. 
 
 
Propósitos 
 
Al finalizar la unidad podrás: 
• Distinguirás la estructura de un programa en lenguaje C. 
• Declararás las variables y constantes que se utilizan en un programa en 
lenguaje C 
• Codificarás expresiones matemáticas en lenguaje C. 
• Utilizarás la colección de funciones (biblioteca) estándar del lenguaje C. 
• Utilizarás un entorno de trabajo del lenguaje C para escribir, compilar y 
ejecutar programas escritos en lenguaje C. 
Unidad 2. Introducción al lenguaje C 
 
UNADM | DCEIT | FPR 4 
• Construirás expresiones lógicas para modelar situaciones reales. 
• Diseñarás algoritmos para resolver problemas que impliquen la toma de 
decisiones, utilizando estructuras selectivas. 
• Diseñarás algoritmos para resolver problemas que requieran el uso de 
estructuras repetitivas. 
• Codificarás en lenguaje C algoritmos estructurados. 
 
 
Competencia específica 
 
 
Utilizar el lenguaje de programación C para implementar 
algoritmos secuenciales que permitan resolver problemas 
mediante la aplicación estructurada de los diversos elementos de 
programación y la utilización de estructuras de control selectivas y repetitivas. 
 
 
 
Logros 
• Identificar los tipos de datos, bibliotecas y funciones empleados en DevC++ 
• Identificar los beneficios de los algoritmos secuenciales. 
• Codificar un programa en DevC++ declarando las variables y constantes con 
base en bibliotecas y funciones para después compilarlo y ejecutarlo. 
 
 
 
 
 
 
Unidad 2. Introducción al lenguaje C 
 
UNADM | DCEIT | FPR 5 
 
2.1. Componentes de un programa en lenguaje C 
 
En general, “un programa es una secuencia de instrucciones mediante las 
cuales se ejecutan diferentes acciones de acuerdo con los datos que se estén 
procesando (López, 2005)”. 
 
En la unidad 1 se explicó que un programa puede ser ejecutado por una 
computadora solamente si está escrito en lenguaje de máquina, pero existen 
lenguajes de programación, que son fáciles de entender para los seres 
humanos, mediante los cuales se pueden escribir programas más legibles 
conocidos como programas fuente–en lenguaje C los programas fuente tiene 
extensión .c–, que son traducidos a lenguaje de máquina mediante 
compiladores o traductores. En el caso de C es un lenguaje compilado, por lo 
que se genera un programa ejecutable con extensión .exe, que puede ser 
ejecutado cada vez que se desee sin necesidad de volver a compilar el 
programa fuente, a menos que se realice algún cambio. 
 
De acuerdo con su creador, un programa fuente en lenguaje C, cualquiera que 
sea su tamaño, consta de funciones y variables. Una función contiene un 
conjunto de instrucciones, también llamadas preposiciones o enunciados, que 
especifican las operacionesque la computadora debe realizar; en tanto, las 
variables son los espacios de memoria donde se almacenan los valores 
utilizados en dichas operaciones (Kernighan y Ritchie, 1991, p. 6). 
 
Uno de los componentes principales de un programa en lenguaje C, es la 
colección de funciones o biblioteca, la cual hace referencia a un conjunto de 
subprogramas que forman parte del lenguaje, es decir “los programas en C 
usan siempre funciones de propósito general que están almacenadas en una 
Unidad 2. Introducción al lenguaje C 
 
UNADM | DCEIT | FPR 6 
biblioteca. Ejemplos de estas funciones son las de impresión en pantalla, la 
lectura del teclado, matemáticas, etcétera” (Muñoz y Palacios, 2006, p.13) 
 
Por convención y con el fin de aprender cómo funciona un nuevo lenguaje, el 
primer programa que se escribe por lo general es “hola mundo”, así que a 
continuación se muestra cómo se implementa este programa en lenguaje C. 
 
/*Directivas de preprocesador*/ 
#include<stdio.h> 
 
/* Definición de función 
Principal */ 
main( ) 
{ 
printf(“Hola mundo… \n”); 
} 
 
Ejemplo de programa hola.c 
 
Código en lenguaje C Descripción 
/*Directivas de 
preprocesador*/ 
 
El texto que se encuentra entre los signos /* */ 
son comentarios largos. Los comentarios 
sirven para documentar o describir las líneas de 
código subsecuentes y no son instrucciones 
que interprete la computadora. 
 
#include<stdio.h> De todas las bibliotecas del lenguaje C en esta 
instrucción se está indicando que la librería que 
se requiere utilizar es la biblioteca básica de 
entrada y salida. 
stdio 
 
std: estándar 
 
i: input 
 
o: output 
Unidad 2. Introducción al lenguaje C 
 
UNADM | DCEIT | FPR 7 
Es una (entre otras) instrucción especial que 
indica las directivas del preprocesador antes de 
la compilación del programa, se distingue 
porque inicia con el símbolo gato “#”, en este 
caso, esta instrucción le indica al compilador 
que debe incluir la información que está 
definida en el archivo de biblioteca stdio.h, 
en el cual se encuentran todas las funciones de 
salida y entrada, como printf. 
/* Definición de función 
Principal */ 
Es un comentario que describe la función 
principal del programa. 
main( ) 
{ 
printf(“Hola mundo… \n”); 
} 
Definición de función Principal del programa. 
Donde: 
Main(): La palabra main seguida de 
paréntesis es la función principal que siempre 
debe aparecer en algún lugar del programa ya 
que es el punto desde el cual se inicia la 
ejecución del mismo. 
{ } : Las instrucciones que corresponden al 
cuerpo de la función van encerradas entre 
llaves de agrupamiento las cuales indican el 
inicio y fin de la misma. 
 
Printf: es una función que se ejecuta o llama 
al nombrarla, es decir, escribiendo su nombre y, 
dentro de los paréntesis, se menciona la lista de 
argumentos, separados por comas. En otras 
palabras, los argumentos son los valores que 
una función necesita para realizar la tarea que 
tiene encomendada. En este ejemplo, esta 
función tiene como finalidad imprimir la 
Unidad 2. Introducción al lenguaje C 
 
UNADM | DCEIT | FPR 8 
cadena de caracteres que recibe como 
parámetro; en este caso el texto “Hola mundo”. 
 
\n: es una secuencia de caracteres que realiza o 
inserta un salto de línea. 
 
“Hola mundo…” : el texto que se encuentra 
entre comillas al dispositivo de salida básico 
que en este caso es el monitor “Hola mundo”. 
 
 
Los compiladores de lenguaje C ofrecen distintas directivas, sin embargo, las que 
utilizaremos son: 
• #define, que sirve para definición de constantes y/o macros. 
• #include, que se utiliza para incluir otros archivos. 
 
 
 
2.1.1. Instrucciones 
 
Una instrucción o enunciado en lenguaje C se puede definir como una 
expresión que tiene alguna consecuencia, generalmente la consecuencia se 
ve reflejada en el cambio del valor que está almacenado en las variables. De 
acuerdo con su estructura sintáctica se pueden clasificar en dos tipos: simples 
y compuestas. 
 
Las instrucciones simples se distinguen porque terminan con punto y coma “;”. 
La sintaxis es: 
<instrucción>; 
 
Como ejemplo de instrucciones simples tenemos la declaración de variables, 
la llamada de funciones y la asignación. 
int x; 
 x = 2*y; 
printf(“Hola”); 
Unidad 2. Introducción al lenguaje C 
 
UNADM | DCEIT | FPR 9 
 
En cambio, las instrucciones compuestas son un conjunto de instrucciones que se 
escriben entre llaves “{…}”, para formar lo que conocemos como un bloque de 
instrucciones. 
La sintaxis es: 
{ 
<instrucción>; 
<instrucción>; 
… 
<instrucción>; 
} 
 
2.1.2. Palabras reservadas 
 
Las palabras reservadas de cualquier lenguaje de programación se llaman así 
porque tienen un significado especial para el compilador, el lenguaje C tiene 
32 palabras reservadas (27 fueron definidas en la versión original y cinco 
añadidas por el comité del ANSI: enum, const, signed, void y volatile), todas ellas 
escritas con minúsculas.1 
 
En la siguiente tabla se muestran todas las palabras claves o reservadas de lenguaje 
C. 
asm continue float register struct volatile 
auto default for return switch while 
break do goto short typedef 
case double if signed union 
char else int sizeof unsigned 
const enum long static void 
Palabras reservadas de C 
 
Una vez que se han descrito los diferentes elementos que integran un 
programa de lenguaje C, en la siguiente sección se describe la estructura 
general de un programa en C. 
 
 
 
1 En este punto es importante destacar que el lenguaje C distingue entre mayúsculas y minúsculas. 
Unidad 2. Introducción al lenguaje C 
 
UNADM | DCEIT | FPR 10 
2.1.3. Estructura general de un programa 
 
Si observas el programa hola.c, la primera instrucción es la directiva al 
preprocesador, seguida de la función main y las instrucciones que la integran. 
Esta estructura corresponde a los programas más simples, pero es similar a la 
de cualquier programa en C. La forma general de cualquier programa en C es 
la siguiente: 
<instrucciones para el preprocesador> 
<declaraciones globales> 
<tipo_devuelto> main(<lista de parámetros>) 
{ 
<lista de instrucciones> 
} 
Y como se ha mencionado, se pueden incluir comentarios en cualquier parte 
del código. A continuación, se presenta un programa que calcula el área de 
una circunferencia dada la medida de su radio. 
 
/* Directivas del procesador (bibliotecas) */ 
 #include<stdio.h> 
 
/* Declaraciones globales */ 
const float PI = 3.1416; 
 
/* Función Principal */ 
main( ) 
{ 
 /* Declaraciones de variables locales de la 
función main*/ 
float radio, area; 
 
printf("Calcula el área de una circunferencia\n"); 
printf(" Ingresa el radio: "); 
scanf("%f", &radio); 
area = PI * radio * radio; 
printf("Area = %.2f",area); 
getchar(); 
getchar(); 
} 
Ejemplo de programa areaCircunferencia.c 
 
Unidad 2. Introducción al lenguaje C 
 
UNADM | DCEIT | FPR 11 
 
Por el momento, basta con que observes la estructura del programa, que se 
hace evidente con los comentarios, el significado de cada una de las líneas de 
código se irá definiendo en las siguientes secciones. Para cerrar esta sección 
en la siguiente figura se muestra la ejecución del programa con la entrada 
radio=3. 
 
 
Ejecución del programa areaCircunferencia.c utilizando Dev-C++ 
 
 
 
2.2. Tipos de datos 
 
En la Unidad 1 se mencionó que todos los datos que son procesados por una 
computadora se almacenan en la memoria principal y, no importa de qué tipo 
sean, se representan por medio de unos y ceros, sin embargo, no todos se 
pueden representar con el mismo número de bits2, esto sí depende del tipo del 
que se trate. Por ejemplo, los caracteres como: ‘a’, ‘@’,’Z’, entre otros, se 
representan utilizando 8 bits, en cambio para representar un número decimal 
se utilizan, al menos, 32 bits; por lo que cuando se creaun espacio de memoria 
es necesario indicar qué tipo de dato se desea almacenar ahí, para que se 
reserve la cantidad de celdas de memoria que se necesitan y las operaciones 
que se pueden realizar con ellos. 
 
 
2 Recuerda que un bit se definió como la unidad mínima de información, esto es, 1 ó 0. 
Unidad 2. Introducción al lenguaje C 
 
UNADM | DCEIT | FPR 12 
En general, los tipos de datos que existen, independientemente de un 
lenguaje de programación, se pueden clasificar de la siguiente forma: 
 
Simples 
❖ Numéricos 
Enteros 
Decimales 
❖ Lógicos (verdadero o falso) 
❖ Alfanuméricos (caracteres) 
Estructurados 
❖ Arreglos 
Unidimensionales 
Multidimensionales 
❖ Estructuras o registros 
Tipos de datos (Cairó, 2006). 
 
Por el momento, sólo nos enfocaremos en los tipos de datos simples definidos 
en el estándar de C, en la siguiente tabla se muestran los tipos de datos simples 
en C: 
 
Tipo Descripción Ejemplo 
char 
Su tamaño equivale a 
ocho bits, capaz de 
contener un carácter del 
conjunto de caracteres 
ASCII. 
´a´, 
´C´, ´3´ 
int 
Un entero, normalmente 
ocupa mínimo 16 bits, 
pero su tamaño es según 
la máquina en que se 
ejecute. 
 
1024, 
-258 
Float 
Número de punto 
flotante de 
precisión normal. 
10.5, 
-11.6 
Double 
Punto flotante de doble 
precisión 
 
 0.00045, 
-0.55236 
Tipos básicos en C (Cairó, 2006). 
 
 
Es posible aumentar o disminuir la capacidad de representación de los 
números utilizando los modificadores long, short y unsigned. De esta manera las 
Unidad 2. Introducción al lenguaje C 
 
UNADM | DCEIT | FPR 13 
combinaciones que se ajustan al estándar ANSI, junto con sus rangos mínimos, 
son: 
 
Tipo Bits Rango 
Char 8 -127 a 127 
unsigned char 8 0 a 255 
signed char 8 -127 a 127 
Int 16 -32767 a 32767 
unsigned int 16 0 a 65535 
signed int 16 -32767 a 32767 
short int 16 -32767 a 32767 
unsigned short int 16 0 a 65535 
signed short int 16 -32767 a 32767 
long int 32 -2147483647 a 2147483647 
signed long int 32 -2147483647 a 2147483647 
unsigned long int 32 0 a 4294967295 
Float 32 seis dígitos de precisión 
Double 64 diez dígitos de precisión 
long double 64 diez dígitos de precisión 
Tipos básicos y modificadores 
 
Una vez que conocemos los tipos de datos que se pueden representar en 
lenguaje C, es conveniente saber cómo se reservan los espacios de memoria 
en donde son almacenados, esto se explica en el siguiente tema. 
 
 
2.3. Variables y constantes 
 
Las variables y las constantes en lenguaje C se utilizan para almacenar valores, 
la diferencia que existe entre ellas es que el valor almacenado en una variable 
puede ser modificado en cualquier instante del programa en tanto que las 
constantes no pueden modificarse. 
 
 
Formalmente, una variable es un espacio de memoria que tiene asignado un 
nombre (también llamado identificador) y se utiliza para almacenar un valor 
que puede ser modificado durante la ejecución de un programa, a este valor 
Unidad 2. Introducción al lenguaje C 
 
UNADM | DCEIT | FPR 14 
que se encuentra almacenado en una variable en un momento dado se le 
llama estado de la variable. Por lo contrario, una constante es un dato cuyo 
valor se establece en tiempo de compilación y no pueden cambiar durante la 
ejecución del programa. 
 
Existen dos tipos de constantes: literales y simbólicas. Las segundas, al igual 
que las variables, también tienen asignado un nombre. A lo largo de esta 
sección descubrirás cómo puedes construir variables y constantes en lenguaje 
C, así que lo primero será listar las reglas que debes seguir para nombrarlas. 
 
2.3.1. Identificadores 
 
En lenguaje C hay una serie de restricciones en cuanto a los nombres o 
identificadores, ya sea de variables, constantes o funciones. Éstas son: 
Los identificadores se integran por letras y dígitos, pero es necesario que el 
nombre siempre comience con una letra, por ejemplo: enteroA, arco3, S184. 
a) No puede contener caracteres especiales, por ejemplo, acentos (á,í), la 
letra eñe (Ñ), gato (#), guión (-). El carácter de subrayado “_”es el único 
carácter especial que puede utilizarse, generalmente se usa para darle 
una mejor legibilidad al nombre de una variable. Por ejemplo: entero_A, 
area_Circulo, i_elemento. 
b) El lenguaje C distingue entre letras mayúsculas y minúsculas, esto 
significa que los siguientes identificadores son distintos: area, Area, 
AREA. 
c) No pueden contener espacios en blanco. 
d) No pueden ser palabras reservadas. 
Aunque no es una regla, se recomienda que los identificadores sean 
significativos, es decir, que el nombre indique qué dato se está almacenando 
ahí. 
 
 
Unidad 2. Introducción al lenguaje C 
 
UNADM | DCEIT | FPR 15 
Ejemplo del área del círculo: 
 
1) Se requiere una variable para almacenar el radio de un círculo 
Las opciones sugeridas son: radio, radioCirculo, radio_circulo. 
2) Se requiere un identificador para una variable que almacene el 
promedio de ventas anuales de una tienda departamental. 
Opciones sugeridas: promedioVentas, prom_Ventas, promAnual. 
3) Almacenar el número telefónico de una persona. 
Opciones sugeridas: tel, telefono. 
 
Una vez habiendo definido las reglas para escribir los nombres de las variables 
y los tipos básicos que pueden tener, estás listo para descubrir cómo se crean 
las variables en lenguaje C. A esta acción se le denomina declaración de 
variables. 
 
2.3.2. Declaración e inicialización de variables 
 
La declaración de una variable es una instrucción que proporciona información 
de la variable al compilador, para que éste reserve en memoria el espacio 
adecuado y la referencia (identificador) para tener acceso a ella. Las 
declaraciones en general tienen la siguiente sintaxis: 
 
<tipo><identificador>; 
 
Donde <tipo> se refiere a un tipo básico de C y el <identificador> se refiere al 
nombre con el cual se identificará el espacio de memoria reservado, puede ser 
cualquier nombre siempre y cuando se respeten las reglas vistas previamente. 
Veamos los siguientes ejemplos: 
 
int edad; /* declara una variable de tipo entero con el 
identificador edad*/ 
float area; /* declara una variable de tipo float a la cual se 
identificará por area*/ 
 
Unidad 2. Introducción al lenguaje C 
 
UNADM | DCEIT | FPR 16 
También es posible declarar una lista de variables de un mismo tipo separando 
los nombres con comas “,” 
 
<tipo><identificador1>, … , <identificadorN>; 
 
Podemos ver un ejemplo de este tipo de declaración en Ejemplo de programa 
areaCircunferencia.c en el cual se calcula el área de una circunferencia, 
cuando declaramos las variables locales a la función main: 
 
float radio, area; 
 
Siempre es posible asignar un valor inicial a las variables cuando las 
declaramos, a esta operación se conoce como inicialización. La sintaxis es: 
 
<tipo><identificador>=<valor>; 
 
Del mismo modo, podemos inicializar varias variables al mismo tiempo: 
 
<tipo><identificador1> = <valor1>, … , <identificadorN> = <valor2>; 
 
Para ilustrar esto, se presentan las siguientes instrucciones: 
 
int edad = 18; 
float radio = 3.0, area = 0.0; 
 
 
En la tabla siguiente se muestra una representación gráfica de estas 
declaraciones e inicializaciones: la columna de Dirección representa la 
dirección física de los registros en la memoria RAM y si ha sido asignada a una 
variable también se escribe su identificador; en contenido se muestra el dato 
que está almacenado en dicha dirección. El estado de una variable (memoria) 
hace referencia al valor que hay almacenado en un momento determinado. 
 
 
 
 
Unidad 2. Introducción al lenguaje C 
 
UNADM | DCEIT | FPR 17 
MEMORIA 
Dirección Contenido Dirección Contenido 
01 
51 
radio 
3.0 
02 
edad 
18 
52 
 
 
03 53 
04 
54 
area 
0.0 
05 55 
… 56 
Memoria y declaración e inicialización de variables.De lo anterior tenemos que: a la variable edad le corresponde la dirección de 
memoria 02 y su estado es 18; a la variable radio le corresponde la dirección 51 y su 
estado es 3.0; y, por último, a la variable area le corresponde la dirección 54 y 
el estado es 0.0. 
 
 
2.3.3. Tipos de constantes 
 
Las constantes son expresiones con un significado invariable, en un programa 
puede haber dos tipos de constantes: literales y simbólicas (Cairó, 2006). 
 
Las constantes literales son valores de un determinado tipo escritos 
directamente en un programa y pueden ser de los siguientes tipos: 
 
a) Constantes numéricas, que son números representados en sistema 
decimal, algunas veces se estila escribir una letra que indique el tamaño 
o tipo de la constante numérica: 
 
Enteros: Por ejemplo 123, 2006, -38… 
 
Unidad 2. Introducción al lenguaje C 
 
UNADM | DCEIT | FPR 18 
Enteros Largos: Se consideran números enteros que superan un entero 
(int) generalmente valores mayores a 32,000; se le agrega los sufijos l ó 
L por ejemplo: 123456789L. 
 
Enteros sin Signo: Aquí se define que el valor de la constante se va a 
considerar como un número positivo o mayor a cero, en estos casos se 
agrega el sufijo U o u así por ejemplo podemos escribir: 123456789LU. 
 
Flotantes: Los valores numéricos que impliquen precisión decimal se 
pueden escribir de dos formas, la primera sería: 14324.983 o 3.1416. 
También se puede representar en representación exponencial (e-n), por 
ejemplo: 1.1434E2 o 1.1432e-5. También se ocupan los sufijos f o F y l o L 
para especificar los tipos double. 
 
Como puedes observar, las constantes reales con representación 
exponencial, tienen como valor una parte entera o real en forma decimal, 
seguida por la letra E, seguida de una constante entera, que se interpreta 
como exponente de la base 10. 
 
b) Constantes caracter, que se representan internamente por el lenguaje C 
como un número entero corto (short int). Una constante caracter 
siempre debe ir entre apóstrofes, por ejemplo: ‘x’, ‘A’. 
 
También existen constantes caracter que aparentan ser compuestas, pero 
sólo son representaciones de caracteres de formato o caracteres especiales, y 
en C se les conoce como secuencias de escape. A continuación, observa la 
combinación de caracteres. 
 
 
 
Unidad 2. Introducción al lenguaje C 
 
UNADM | DCEIT | FPR 19 
‘\n’ Salto de línea 
‘\t’ Tabulador 
‘\b’ Espacio hacia atrás 
‘\f’ Salto de página 
‘\”’ Comillas 
‘\\’ Barra invertida 
Secuencias de escape 
 
c) Constantes cadena, que son una secuencia de caracteres entre comillas, 
incluyendo secuencias de escape, por ejemplo: “hola”, “hola mundo 
\n”. 
 
Por otro lado, las constantes simbólicas representan datos permanentes que 
nunca cambian. Ahondaremos en este tema en la siguiente sección. 
 
Las constantes de este tipo son representadas por un nombre (simbólico) en 
el código del programa. Del mismo modo en que ocurre con las constantes 
literales éstas no pueden cambiar su valor, sin embargo para utilizar el valor 
constante se utiliza el nombre simbólico que le ha sido otorgado. 
 
Este tipo de constantes mantienen dos ventajas muy claras sobre las 
constantes literales, una es que la escritura del código es más clara y otra que 
facilita la edición de los valores contenidos en el código del programa. En el 
siguiente subtema ahondaremos en esto. 
 
 
2.3.4. Declaración de constantes 
 
En C existen dos formas de declarar una constante simbólica. La primera es 
utilizando la directiva de preprocesador #define, la cual asocia un identificador 
a un valor constante, sin reservar espacio en memoria, por lo que no podemos 
decir que se declara, sólo se define (Cairó, 2006). La sintaxis general es la 
siguiente: 
Unidad 2. Introducción al lenguaje C 
 
UNADM | DCEIT | FPR 20 
 
 
#define<identificador><valor_constante> 
 
Por ejemplo: 
 
#define PI 3.1416 
 
Con esta instrucción cada vez que en el programa se escriba el identificador PI 
éste será sustituido por el compilador con el valor de 3.1416 (no se almacena el 
valor 3.1416 en ningún espacio de memoria sólo se hace una sustitución textual 
en el momento de compilación). 
 
La segunda forma de declarar una constante simbólica es reservando espacio 
de memoria que tenga la restricción de sólo lectura, para impedir que el valor 
sea cambiado, en este caso si la declaramos. La sintaxis general es similar a la 
forma de declarar una variable sólo que se antepone al tipo la palabra 
reservada const y es obligatorio asignar el valor. 
 
const<tipo><identificador> = <valor_constante>; 
Por ejemplo: 
 
const float PI = 3.1416 ; 
 
La directiva #define debe ser al principio del programa antes del main, en 
cambio, la declaración de una constante mediante const puede ser dentro o 
fuera de las funciones al igual que las declaraciones de variables. 
 
Se recomienda escribir el nombre de una constante con letras mayúsculas 
para diferenciarlas de las variables, pero las reglas son exactamente las mismas 
que para los identificadores de las variables. 
 
 
Unidad 2. Introducción al lenguaje C 
 
UNADM | DCEIT | FPR 21 
 
 
2.4. Expresiones matemáticas 
 
Una expresión matemática puede ser un número, una variable, una constante 
o la combinación de operadores y todas las anteriores. Toda expresión al ser 
evaluada produce un valor. 
 
Se dividen en dos clases de acuerdo al tipo de datos que devuelven cuando 
son evaluadas: expresiones aritméticas cuando el resultado de la evaluación es 
un número y expresiones booleanas cuando el resultado de la evaluación es 
un valor booleano (verdadero o falso). En este punto es importante destacar 
que el modo en que el lenguaje C maneja los valores booleanos es por medio 
de valores enteros: cero equivale a falso y cualquier entero distinto de cero 
representa verdadero. 
 
Las expresiones matemáticas permiten modelar situaciones reales, por 
ejemplo, mediante las expresiones aritméticas podemos modelar la forma de 
calcular el área de cualquier figura, también podemos representar la forma de 
calcular las raíces de un polinomio de segundo grado, o calcular el monto de 
una venta, etc. En cambio, las expresiones booleanas son la base para construir 
programas que pueden tomar decisiones. 
 
Veamos los siguientes ejemplos: 
 
Ejemplos de expresiones matemáticas: 
 
a) La hipotenusa es igual a la raíz cuadrada de la suma de los cuadrados de 
catetos. 
 
Unidad 2. Introducción al lenguaje C 
 
UNADM | DCEIT | FPR 22 
Expresión aritmética: 𝑐 ← √𝑎2 + 𝑏2 
Codificación en C: c =sqrt(a*a + b*b); 
 
b) ¿x es un número par? 
Sabemos que un número es par si es divisible entre 2, en otras palabras, si 
el residuo de la división entre dos es cero, lo cual se puede expresar con el 
operador de módulo, que devuelve el residuo de una división. 
 
Expresión booleana: 𝑥𝑚𝑜𝑑 2 = 0 
Codificación en C: x % 2 == 0 
 
En el siguiente subtema se presentan los operadores básicos del lenguaje C, 
tanto aritméticos como booleanos. 
 
 
2.4.1. Tipos de operadores 
 
Los operadores son palabras o símbolos que permiten realizar operaciones con 
los datos de un programa, para cada tipo de datos hay una serie de operadores 
definidos. 
 
Entre todos los operadores se distingue el operador de asignación “=”, que se 
puede leer como “guarda un valor en la variable indicada”, el valor puede ser 
una constante literal o el resultado de una expresión. Cabe señalar que este 
operador en pseudocódigo o diagrama de flujo lo hemos representado con 
una flecha apuntado hacia la izquierda ←. 
 
Veamos algunos ejemplos: 
radio = 3.0; /* modifica el estado de la variable radio con 
el valor 3.0*/ 
area = PI * radio *radio; /* modifica el estado de la 
variable por el resultado de evaluar la expresión PI * radio 
* radio */ 
Unidad 2. Introducción al lenguaje C 
 
UNADM | DCEIT | FPR 23 
 
Losoperadores aritméticos definidos en C son: “+” (suma), “-” (resta), “*” 
(multiplicación), “/” (división) y “%”(módulo). Este último representa el residuo 
de dividir dos números enteros, por ejemplo, si realizamos la división de 6 entre 
15 (15/6), el cociente es 2 y el residuo es 3, al aplicar el operador módulo a estos 
valores tenemos: 
15 % 6 → 3 
21 % 4 → 1 
 
En C también existen los operadores de incremento “++” y decremento “--“, 
éstos tienen el efecto de aumentar o decrementar en una unidad el valor de 
una variable, supongamos que estamos trabajando con la variable x: 
 
x++;/* equivale a hacer: x = x + 1;*/ 
x--;/* equivale a hacer: x = x – 1;*/ 
 
Por ejemplo, si el valor de x es 5 el resultado de aplicar ++ y -- es: 
 
x++; → 6 
x--; → 4 
 
Los operadores que permiten construir expresiones booleanas son: 
• Operadores relacionales, que manipulan expresiones aritméticas y son: 
“>” (mayor que), “<” (menor que), “>=” (mayor o igual), “<=” (menor o 
igual), “==” (igual), “!=” (distinto) 
• Operadores booleanos, también llamados lógicos, manipulan 
únicamente expresiones booleanas y son: “!” (negación), “||” (disyunción) 
y “&&” (conjunción). 
 
Observa que el operador de igualdad se escribe con dos símbolos de igualdad 
seguidos (==). El error más común es escribir una comparación con un sólo 
símbolo de igualdad, recuerda que (=) es el operador de asignación y su 
Unidad 2. Introducción al lenguaje C 
 
UNADM | DCEIT | FPR 24 
significado es totalmente distinto. En cuanto a los operadores booleanos, su 
significado es el siguiente: 
 
Negación“!”, es un operador unario que cambia el valor de verdad de la 
expresión a la cual se le aplica. Por ejemplo, si el valor de verdad de expresión 
es verdadero entonces devuelve falso, y viceversa. Por ejemplo, si x=2, y=3, z=5. 
 
!(z > x ) → !(5 > 2 )→ !(1)→ 0 (falso) 
!(x > y ) → !(2 > 3 )→ !(0)→ 1 (falso) 
 
En pseudocódigo o diagrama de flujo se representa con la palabra en inglés 
NOT. 
 
• Conjunción“&&”, es un operador binario que se evalúa como verdadero 
sólo cuando las dos expresiones involucradas son verdaderas, en caso 
contrario devuelve falso. Por ejemplo, si evaluamos las siguientes 
expresiones en el estado x=2, y=3, z=5. 
(x>y) && (z>y) → (2 > 3) && (5 > 3) → 0&&1 → 0 (falso) 
!(x > y) && (z>y) →!(2 > 3) && (5 > 3) → ! (0) &&1 → 1&&1 → 1 
(verdadero) 
 
En pseudocódigo y diagrama de flujo se representa con la palabra en inglés 
AND. 
• Disyunción“||”, también es un operador binario que devuelve 
únicamente devuelve falso si los dos operadores son falsos, en caso 
contrario devuelve verdadero. Nuevamente, tomemos el mismo estado 
de las variables x=2, y=3, z=5. 
(x>y)||(z>y) →(2>3)||(5>3) → 0||1 → 1 (verdadero) 
(x>y)||(y>z) →(2>3)||(3>5) → 0||0 → 0 (falso) 
 
En pseudocódigo y diagrama de flujo se representa con la palabra en inglés 
OR. 
 
 
Unidad 2. Introducción al lenguaje C 
 
UNADM | DCEIT | FPR 25 
 
En C existen otro tipo de operadores, sin embargo, su estudio no está 
considerado dentro de los objetivos de este curso por lo que no los 
revisaremos, pero si deseas saber más, puedes consultar a Joyanes y Zahonero 
(2005). 
2.4.2. Evaluación de expresiones 
 
La evaluación de las expresiones depende de tres cosas, principalmente, el 
estado de las variables que aparecen en la expresión, el significado de los 
operadores y su precedencia. Esta última se refiere a la prioridad de los 
operadores, es decir, el orden en el que se evalúan, eliminando con esto la 
ambigüedad de las expresiones, por ejemplo, si tenemos la expresión (Malva, 
Et al., 2005): 
2 + 3 * 5 
 
Podríamos evaluarla de dos diferentes formas: La primera es hacer primero la 
suma 2+3 (=5) y después multiplicar el resultado por 5. De tal manera 
obtendríamos como resultado final 25. Otra manera sería realizar primero la 
multiplicación 3*5 (=15) y sumar el resultado a 2, obteniendo 17 como resultado 
final. Pero sabemos que en matemáticas primero se realiza la multiplicación y 
después la suma, en otras palabras, tiene mayor prioridad la multiplicación que 
la suma. Por lo tanto, el resultado correcto de la expresión 2 + 3 * 5 es 17. En la 
siguiente tabla se muestra la precedencia de operadores de lenguaje C que se 
han presentado. 
Operadores Prioridad 
( ) Mayor 
-(unario), ++, -- 
*, /, % 
+, - 
<, >, >= , <= 
==, != 
&&, || 
= Menor 
Unidad 2. Introducción al lenguaje C 
 
UNADM | DCEIT | FPR 26 
Prioridad de operadores 
 
Los operadores que se encuentran en el mismo nivel de precedencia se 
ejecutan de izquierda a derecha según aparecen en la expresión. 
 
Veamos el siguiente ejemplo: 
 
Ejemplo de evaluación de expresiones: Dada la siguiente expresión 
matemática para convertir grados centígrados (C) a su equivalente Fahrenheit 
(F), 
𝐹 = 
9
5
𝐶 + 32 
Su codificación en C es: 
F= (9.0/5.0)*C +32; 
 
Se escribe 9.0 y 5.0 para que la división devuelva un número flotante, de lo 
contrario la división será entera. En este caso las variables F y C, deben ser 
declaradas como float. 
 
Evaluando, paso a paso, la expresión en el estado de la variable C = 30 tenemos: 
 
 
Expresión actual Estados de las variables 
F= (9.0/5.0)*C +32; 
C F 
30 ¿? 
 
F= (9.0/5.0)*30 +32; Igual al anterior 
F= 1.8*30 +32; Igual al anterior 
F= 54 +32; Igual al anterior 
F= 86; 
C F 
30 86 
 
 
Observa que el único operador que cambia el estado de una variable es el de 
asignación “=”. 
 
Unidad 2. Introducción al lenguaje C 
 
UNADM | DCEIT | FPR 27 
Ejemplo de evaluación de expresiones: Ahora evaluemos la expresión: 
 
(x % 2 == 0) 
 
 
Considerando que el estado de la variable x=24 
 
Expresión actual Estados de las variables 
x % 2 == 0 
 
X 
24 
 
0 == 0 Igual al anterior 
1 Igual al anterior 
 
En este caso la evaluación de la expresión no afecta el estado de la variable, 
esto es porque no contiene ningún operador de asignación, sin embargo, 
podemos decir que el resultado de su evaluación es verdadero. 
 
2.5. Bibliotecas y funciones 
 
El lenguaje C en realidad es un lenguaje reducido en comparación con otros 
lenguajes de programación, por ejemplo, no tiene instrucciones de estrada y 
salida, y tampoco cuenta con operadores o funciones para calcular la raíz 
cuadrada de un número o su potencia, entre otras. Sin embargo, para 
compensar esto el lenguaje C ofrece un vasto conjunto de bibliotecas de 
funciones, que para fines prácticos se pueden considerar como parte de C. 
Cabe mencionar que también es posible definir nuevas bibliotecas, sin 
embargo, el lenguaje C tiene definidas diversas funciones de uso frecuente, 
que para fines de este curso son más que suficiente, por lo que este tema no 
se estudiará en esta ocasión.3 
 
 
3Si deseas más información se te recomienda consultar (Joyanes & Zohanero, 2005). 
Unidad 2. Introducción al lenguaje C 
 
UNADM | DCEIT | FPR 28 
Las funciones que más se utilizan están agrupadas en bibliotecas estándar, 
declaradas como archivos de cabecera, de tal manera que para utilizarlas se 
debe incluir en el archivo utilizando la directiva #include seguida del nombre 
del archivo encerrado entre “<>” 
 
Las bibliotecas estándar que usaremos en este curso son: 
• stdio.h en esta biblioteca se encuentran definidas las funciones estándar 
de entrada y salida –que representan la tercera parte de la biblioteca–, 
por ejemplo, declara la función printf que sirve para imprimir datos en 
pantalla y scanf que se utiliza para leer de datos ingresados mediante el 
teclado. 
• stdlib.h incluye funciones para conversión numérica, asignación de 
memoria y tareas similares, llamadas funciones de utilería. En esta 
biblioteca se declara la función system mediante la cual se envían 
mensajes al sistema operativo para que ejecute una tarea. 
• math.h declara funciones matemáticas, como la función sqrt que calcula 
la raíz cuadrada de un número. 
• ctype.hdeclara funciones para prueba de clasificación de caracteres, por 
ejemplo, si es un dígito o un carácter. 
 
Observa que todas las bibliotecas estándar tienen extensión “.h”4 
 
 
2.5.1. Funciones matemáticas 
 
La siguiente tabla muestra algunas de las funciones predefinidas en lenguaje 
C declaradas en la biblioteca math.h. 
 
 
4 En (Kernighan & Ritchie, 1991) puedes consultar las funciones que están definidas en cada una de las bibliotecas estándar. 
Unidad 2. Introducción al lenguaje C 
 
UNADM | DCEIT | FPR 29 
Función Descripción Argumento Resultado Ejemplo 
sqrt(x) Raízcuadrada Flotante flotante sqrt(900) = 90 
exp(x) Function exponencial Flotante flotante exp(2.0)= 
2.718282 fabds(x) Valor absoluto entero o 
flotante 
entero o 
flotante 
fabs(-5) = 5 
log(x) Logaritmoneperiano de x entero o 
flotate 
flotante log(0.5) = -0.693 
Log10(x) logaritmo decimal de x entero o 
flotante 
flotante Log10(0.5) = -
0.301 floor(x) Redondeohaciaabajo Flotante entero floor(6.5)=6 
ceil(x) Redondeohaciaarriba Flotante entero ceil(6.5)=7 
sen(x) seno de x entero o real flotante sen(0.5) = 0 
pow(x,y) Devuelve la potencia de x 
elevada a la y 
entero o 
flotante 
flotante pow(5,2) = 25 
cos(x) coseno de x flotante flotante cos(0.5) = 1 
sin(x) seno de x flotante Flotante sin(0.0) = 0 
tan(x) Tangente de x flotante Flotante tan(0.0) = 0 
 Funciones matemáticas 
 
Con esta información es posible codificar algoritmos que requieran este tipo 
de operaciones. Por ejemplo, la fórmula para calcular el área de una 
circunferencia, que aparece en el programa 3.2. 
 
area = PI * radio * radio; 
 
Se puede codificar de la siguiente manera: 
 
area = PI * pow(radio,2); 
 
 
2.5.2. Funciones de entrada y salida 
 
En los programas que hemos visto aparece la función de salida estándar printf, 
que se encarga de imprimir un mensaje en la pantalla. La sintaxis general es: 
 
printf(<cadena_de_control>, <lista_de_identificadores>); 
 
Donde <cadena_de_control> representa el mensaje de texto que se desea 
desplegar en el monitor y siempre tiene que ir en comillas, opcionalmente 
puede incluir secuencias de escape o especificadores de control, y 
<lista_de_identificadores> es una lista con los identificadores de las variables 
o las expresiones que serán desplegadas, separadas por comas. 
 
Unidad 2. Introducción al lenguaje C 
 
UNADM | DCEIT | FPR 30 
Las secuencias de escape, se expusieron anteriormente, los especificadores de 
conversión se utilizan para imprimir valores dentro de la cadena de control 
especificados por una variable, una constante o una expresión. En la siguiente 
tabla se muestran los que más se utilizan. 
 
Especificador Acción 
%d Insertar un entero (int) 
%i Insertar un entero tipo (int) 
%ld Insertar un entero tipo (long) 
%f 
Insertar un número flotante 
tipo (float) 
%lf 
Insertar un número de tipo 
(double) 
%c Insertar un caracter (char) 
%s Insertar una cadena(char [ ]) 
Especificadores de conversión 
 
 
 
 
Ejemplo de datos de entrada y salida 
 
Suponiendo que el estado de las variables es radio=3 y área=28.27, 
 
printf(“El área del círculo con radio %d es %f \n”,radio,area); 
 
La salida de la instrucción anterior sería: 
 
El área del círculo con radio 3 es 28.27 
 
Observa que se imprime el texto, pero en vez de imprimir el especificador de 
conversión %d se imprime el valor de la primera variable que es radio y en el 
lugar del especificador %f se imprime el valor del siguiente argumento que es 
la variable area. 
 
 
Unidad 2. Introducción al lenguaje C 
 
UNADM | DCEIT | FPR 31 
Ahora, sí tenemos la instrucción: 
 
printf(“El perímetro es %.2f \n”, PI*2*radio); 
 
La salida es: 
 
El perímetro es 18.85 
 
En este caso en el lugar del convertidor %.2f se imprime el resultado de evaluar 
la expresión PI*2*radio que es el segundo argumento, el número .2 que 
aparece en el convertidor indica que sólo deben imprimirse dos decimales. 
 
En lenguaje C la lectura de datos por medio del teclado se realiza con la función 
scanf, en la cual se deben especificar de antemano los tipos de datos que se 
desea recibir, además de los identificadores de las variables donde se desean 
almacenar. 
 
La sintaxis de esta función es: 
 
scanf(<cadena_de_control>,<lista_de_direcciones_de_variables>); 
 
Donde <cadena_de_control> es una cadena con los códigos que controlarán la 
forma como se recibirán los datos desde teclado y la 
<lista_de_direcciones_de_variables> es una lista con las localidades de 
memoria de las variables donde se almacenarán los datos que el usuario del 
programa introduzca a través del teclado. 
 
Dos observaciones importantes: en la especificación de la cadena de control se 
utilizan los mismos especificadores de conversión que para la función printf 
encerrados entre comillas y en la lista de direcciones los identificadores de las 
variables, anteponiéndoles a cada uno un símbolo de amperson “&”, en el 
mismo orden que los especificadores de tipos que les corresponden. 
 
Unidad 2. Introducción al lenguaje C 
 
UNADM | DCEIT | FPR 32 
 
Ejemplo de recepción de datos de entrada 
Suponiendo que se desea leer la base y la altura de un rectángulo y guardarlas 
en las variables de tipo int llamadas base y altura, de tal manera que el usuario 
ingrese los valores separados por una coma, digamos “5,2” entonces la 
instrucción sería: 
 
scanf(“%d,%d”, &base, &altura); 
 
Nota: Es frecuente que las personas olviden escribir el & antes del identificador 
de una variable, al utilizar la función scanf, cuestión que no es supervisada por 
el compilador y genera un error en el momento que se ejecuta el programa. 
 
 
2.6. Codificación de algoritmos 
 
Para resolver un problema, ejemplificaremos la codificación de algoritmos a 
través de la resolución del siguiente problema: 
 
Descripción del problema 
Se requiere un programa que se encargue de la venta de boletos en un cine. 
El sistema debe calcular el monto que se debe pagar por una cantidad 
determinada de boletos tomando en cuenta que el costo de cada boleto es de 
45 pesos. 
También se encargará de cobrar, es decir, dado el pago debe calcular el cambio 
indicando el tipo y número de billetes o monedas de cada denominación que 
devolverá. Para evitarse problemas de cambio, los ejecutivos de la empresa 
donde se exhiben las películas, han decidido no aceptar monedas de 
denominación menor a 1 peso y tampoco billetes de denominación mayor a 
500 pesos. También se debe suponer que siempre hay suficientes billetes y 
monedas de cualquier denominación para devolver el cambio. 
 
Unidad 2. Introducción al lenguaje C 
 
UNADM | DCEIT | FPR 33 
Análisis: Los datos de entrada son el número de boletos (nboletos)5 y el 
monto del pago (pago), la salida del programa es el monto que se debe pagar 
por los boletos (total) y el monto del cambio (cambio), indicando el tipo y 
número de cada uno de los billetes o monedas que se devolverán. Notemos 
que el precio de los boletos siempre es el mismo, así que se puede declarar 
como una constante, llamémosla PRECIO. Así que para calcular el monto que 
el cliente debe pagar tenemos la siguiente fórmula: 
 
total = nboletos * PRECIO 
 
Y el monto del cambio se calcula con la siguiente fórmula: 
 
cambio = pago – total 
 
Para calcular cuántos billetes o monedas se tienen que devolver, se utilizarán 
los operadores de módulo y división. Por ejemplo, si el cambio es 360 se puede 
calcular el número de billetes de 100 dividiendo 360 entre 100, lo cual resulta 
ser 3 que corresponde al número de billetes, el resto del cambio es igual a 360 
módulo 100, en este caso es 60. 
 
Por último, los billetes sólo pueden ser de $500, $200, $100, $50 y $20 y las 
monedas sólo son de $10, $5, $2 y $1. Por el momento supondremos que el 
usuario siempre ingresa datos correctos. 
 
Diseño del algoritmo: En la siguiente tabla se muestra el algoritmo que 
resuelveel problema. 
Constantes: 
PRECIO = 45 
 
5 En este apartado Análisis, las palabras entre paréntesis remarcadas con negritas, son los nombres propuestos para las variables que 
involucra el problema. 
Unidad 2. Introducción al lenguaje C 
 
UNADM | DCEIT | FPR 34 
Variables: 
• nboletos: entero, representa el número de boletos que quiere el 
cliente. 
• total: entero, es la cantidad de dinero que el cliente debe pagar. 
• pago: entero, monto del pago del cliente. 
• cambio: entero, monto del cambio. 
Inicio 
Imprimir “Proporciona el número de boletos” 
Leer nboletos 
total = nBoletos * PRECIO 
Imprimir “Proporciona tu pago” 
Leer pago 
cambio = pago – total 
Imprimir “Tu cambio es”, cambio 
Imprimir “El número de billetes de 200 pesos 
es”, cambio/200 
cambio = cambio módulo 200 
Imprimir “El número de billetes de 100 pesos 
es”, cambio/100 
cambio = cambio módulo 100 
Imprimir “El número de billetes de 50 pesos 
es”, cambio/50 
cambio = cambio módulo 50 
Imprimir “El número de monedas de 10 pesos es”, 
cambio/10 
cambio = cambio módulo 10 
Imprimir “El número de monedas de 5 pesos es”, 
cambio/5 
cambio = cambio módulo 5 
Imprimir “El número de monedas de 2 pesos es”, 
cambio/2 
cambio = cambio módulo 2 
Imprimir “El número de monedas de 1 peso es”, 
cambio 
Fin 
Ejemplo del algoritmo: ventaBoletos (pseudocódigo). 
 
 
 
Unidad 2. Introducción al lenguaje C 
 
UNADM | DCEIT | FPR 35 
Nota: Observa que no es necesario utilizar variables para el número de billetes 
o monedas de las diferentes denominaciones, pues sólo se utiliza una vez el 
resultado del cálculo así que se puede imprimir directamente el resultado del 
mismo. 
 
Para verificar que el algoritmo funciona, en la siguiente tabla se realiza una 
prueba de escritorio considerando que los datos de entrada son 5 boletos y el 
monto del pago son 500 pesos. En la primera columna aparece la instrucción 
que se ejecuta, en la siguiente el dato que suponemos se ingresa, después 
están las operaciones que se realizan en la ALU, en la cuarta columna se 
muestra los valores de las variables después de que se ha realizado la 
instrucción y en la última columna se indica el mensaje que se imprimirá en la 
pantalla, cuando sea el caso. Por otro lado, incluimos en la tabla de estado de 
la memoria la constante PRECIO sombreando el espacio correspondiente para 
indicar que no puede ser modificado. 
Unidad 2. Introducción al lenguaje C 
 
UNADM | DCEIT | FPR 36 
Instrucción 
Dato 
de 
entrada 
Operaciones 
Estado de la memoria 
(variables y constantes) 
Dato de salida 
Inicio - - 
PRECIO nBoletos total pago cambio 
45 - - - - 
 
- 
Imprimir 
“Proporciona el 
número de 
boletos”. 
- - 
PRECIO nBoletos total pago cambio 
45 - - - - 
 
Proporciona el 
número de 
boletos 
Leer nBoletos 
 
5 - 
PRECIO nBoletos total pago cambio 
45 5 - - - 
 
- 
total = 
nBoletos*PRECIO 
 
- 
total = 5*45 
=225 
PRECIO nBoletos total pago cambio 
45 5 225 - - 
 
- 
Imprimir 
“Proporciona tu 
pago” 
- - 
PRECIO nBoletos total pago cambio 
45 5 225 - - 
 
Proporciona 
tu pago 
Leer nBoletos 
 
500 - 
PRECIO nBoletos total pago cambio 
45 5 225 500 - 
 
- 
cambio = pago - 
total 
- 
cambio = 
500-225 = 
275 
PRECIO nBoletos total pago cambio 
45 5 225 500 275 
 
- 
Imprimir “Tu 
cambio es”, 
cambio. 
- - 
PRECIO nBoletos total pago Cambio 
45 5 225 500 275 
 
Tu cambio es 
275 
Imprimir “El 
número de 
billetes de $200 
es”, cambio/200 
- 275/200 = 1 
PRECIO nBoletos total pago Cambio 
45 5 225 500 275 
 
El número de 
billetes de 
$200 es 1 
Unidad 2. Introducción al lenguaje C 
 
UNADM | DCEIT | FPR 37 
cambio = cambio 
módulo 200 
- 
cambio = 
275 mod 
200 
=75 
PRECIO nBoletos total pago Cambio 
45 5 225 500 75 
 
- 
Imprimir “El 
número de 
billetes de $100 
es”, cambio/100 
- 75/100 = 0 
PRECIO nBoletos total pago Cambio 
45 5 225 500 75 
 
El número de 
billetes de 
$100 es 0 
cambio = cambio 
módulo 100 
- 
cambio = 
275 mod 100 
=75 
PRECIO nBoletos total pago Cambio 
45 5 225 500 75 
 
- 
Imprimir “El 
número de 
billetes de $50 
es”, cambio/50 
- 75/50= 1 
PRECIO nBoletos total pago Cambio 
45 5 225 500 75 
 
El número de 
billetes de $50 
es 1 
cambio = cambio 
módulo 50 
- 
cambio = 75 
mod 50 
=25 
PRECIO nBoletos total pago Cambio 
45 5 225 500 25 
 
- 
Imprimir “El 
número de 
billetes de $20 
es”, cambio/20 
- 25/50= 0 
PRECIO nBoletos total pago Cambio 
45 5 225 500 25 
 
El número de 
billetes de $50 
es 0 
cambio = cambio 
módulo 20 
- 
cambio = 
25 mod 20 
=5 
PRECIO nBoletos total pago Cambio 
45 5 225 500 5 
 
- 
Imprimir “El 
número de 
monedas de $10 
es”, cambio/10 
- 5/10= 0 
PRECIO nBoletos total pago Cambio 
45 5 225 500 25 
 
El número de 
monedas de 
$10 es 0 
Unidad 2. Introducción al lenguaje C 
 
UNADM | DCEIT | FPR 38 
cambio = cambio 
módulo 10 
- 
cambio = 5 
mod 10 
=5 
PRECIO nBoletos total pago Cambio 
45 5 225 500 5 
 
- 
Imprimir “El 
número de 
monedas de $5 
es”, cambio/5 
- 5/5= 1 
PRECIO nBoletos total pago Cambio 
45 5 225 500 5 
 
El número de 
monedas de 
$5 es 1 
cambio = cambio 
módulo 5 
- 
cambio = 5 
mod 5 
=0 
PRECIO nBoletos total pago Cambio 
45 5 225 500 0 
 
- 
Imprimir “El 
número de 
monedas de $2 
es”, cambio/2 
- 0/2= 0 
PRECIO nBoletos total pago Cambio 
45 5 225 500 0 
 
El número de 
monedas de 
$2 es 0 
cambio = cambio 
módulo 2 
- 
cambio = 0 
mod 2 
=0 
PRECIO nBoletos total pago Cambio 
45 5 225 500 0 
 
- 
Imprimir “El 
número de 
monedas de $1 
es”, cambio 
- - 
PRECIO nBoletos total pago Cambio 
45 5 225 500 0 
 
El número de 
monedas de 
$1 es 0 
Fin - - 
PRECIO nBoletos total pago Cambio 
45 5 225 500 0 
 
- 
Prueba de escritorio. 
 
 
Implementación: Por último, sólo queda codificar el algoritmo en lenguaje C, como se muestra a 
continuación: 
Unidad 2. Introducción al lenguaje C 
 
UNADM | DCEIT | FPR 39 
 
/* Descripción: Simulador de la caja de cobro de un cine.*/ 
 
/* Directivas al procesador */ 
#include<stdio.h>/* Funciones de entrada y salida */ 
#include<stdlib.h>/* Funciones del sistema */ 
 
/* Función Principal */ 
main( ) 
{ 
/*Declaración de variables y constantes */ 
constint precio = 45; 
intnBoletos, total, pago, cambio; 
 
/*Mensaje de bienvenida*/ 
printf("********** Venta de boletos CineESAD************\n\n"); 
 
/*Datos de entrada*/ 
printf("Proporcione el numero de boletos que desea comprar:\t"); 
scanf("%d",&nBoletos); 
 
/*Calculamos el total de la venta*/ 
total = nBoletos*precio; 
printf("El total es *** %d pesos *** \n\n",total); 
 
/*Leemos el pago y calculamos el cambio*/ 
printf("Indique el monto de su pago: "); 
scanf("%d",&pago); 
 
/*Calculamos el cambio y lo devolvemos*/ 
cambio = pago - total; 
printf("\n\n El monto de su cambio es %d\n",cambio); 
printf("\n\t%d billetes de $200", cambio/200); 
cambio = cambio%200; 
printf("\n\t%d billetes de $100", cambio/100); 
cambio = cambio%100; 
printf("\n\t%d billetes de $50", cambio/50); 
cambio = cambio%50; 
printf("\n\t%d billetes de $20", cambio/20); 
cambio = cambio%20; 
printf("\n\t%d monedas de $10", cambio/10); 
cambio = cambio%10; 
printf("\n\t%d monedas de $5", cambio/5); 
cambio = cambio%5; 
printf("\n\t%d monedas de $2", cambio/2); 
cambio = cambio%2; 
Unidad 2. Introducción al lenguaje C 
 
UNADM | DCEIT | FPR 40 
printf("\n\t%d monedas de $1", cambio); 
 
printf("\n\nAgradecemos su preferencia, disfrute su 
película\n\n"); 
system("pause");/*hará una pausa antes de terminar la ejecución*/ 
}/*fin main*/ 
Programa: ventaBoletos.c 
 
El resultado de la ejecución del programa utilizando los mismos datos de entrada 
de la prueba de escritorio es: 
 
 Ejecución del programa: ventaBoletos.c 
 
 
2.7. Estructuras de control 
 
Cualquier algoritmo puede ser escrito utilizando tres tipos de instrucciones,conocidas como estructuras de control (Kerningham, y Ritchi, 1986), las cuales 
son: 
o Secuenciales (cuando se ejecutan una tras otra) 
o Selectivas (cuando se ejecutan dependiendo de una condición) 
o Repetitivas (que se ejecutan varias veces en función de una condición) 
 
 
 
 
Unidad 2. Introducción al lenguaje C 
 
UNADM | DCEIT | FPR 41 
Su objetivo es controlar el flujo de ejecución de un programa, es decir, el 
orden en que se ejecutan las instrucciones. Considerando que ya has 
diseñado algoritmos secuenciales y los codificaste en lenguaje C para obtener 
el programa deseado que diera solución al problema en cuestión, podemos 
decir que solamente te falta saber cómo funcionan y cómo se codifican en 
lenguaje C las otras dos estructuras para poder diseñar algoritmos 
estructurados. Así que éste será justamente el tema de esta sección, donde 
estudiarás con más detalle los tipos y funcionamiento de las estructuras 
selectivas y repetitivas. 
 
Para su mejor comprensión, esta sección está dividida en dos partes: 
En la primera revisarás algunos problemas donde la solución implica tener 
que elegir el camino que se debe seguir para llegar al resultado deseado, esto 
se soluciona utilizando estructuras selectivas, por lo cual analizarás a mayor 
profundidad el significado (semántica) de cada estructura y verás la forma de 
codificarla (sintaxis) en lenguaje C. 
 
La segunda parte está dedicada a las estructuras repetitivas, para las cuales 
se sigue la misma estrategia, verás cómo se pueden solucionar problemas 
utilizando este tipo de estructuras y también analizarás su semántica y 
sintaxis en lenguaje C. De esta manera, al finalizar podrás construir 
programas que incluyan cualquier tipo de estructura de control. 
 
2.7.1. Estructuras selectivas 
 
Para diseñar programas capaces de tomar decisiones se requiere de las 
estructuras de control selectivas, también llamadas condicionales. Éstas 
llevan a cabo su función (controlar el flujo del programa) mediante una 
condición que se representa utilizando expresiones booleanas, de tal manera 
que cuando la condición se cumple (es verdadera) se ejecuta un conjunto de 
instrucciones definidas para este caso y, dependiendo del tipo de estructura, 
Unidad 2. Introducción al lenguaje C 
 
UNADM | DCEIT | FPR 42 
es posible que se ejecute otro conjunto de instrucciones distinto para el caso 
contrario (cuando la condición es falsa); e incluso, es posible definir diferentes 
conjuntos de instrucciones para valores distintos que pudiera tomar una 
variable. Es así que dependiendo de su estructura se han definido tres tipos: 
simples, dobles y múltiples. 
 
Para el estudio de cada estructura selectiva, a continuación, se dedican tres 
sub-secciones, una para cada una, en las cuales entenderás cómo funcionan 
y la forman en que se codifican en lenguaje C. 
 
 
Estructura selectiva simple (if) 
La estructura de decisión simple, como su nombre lo indica, permite decidir 
entre ejecutar o no un bloque de acciones; en pseudocódigo se propuso la 
palabra reservada Si para su representación y en lenguaje C esta estructura 
se codifica mediante la sentencia de control if, tal como se muestra en la 
siguiente tabla. 
 
Pseudocódigo Diagrama de Flujo Código en C 
Si <condición> 
entonces 
<instrucciones> 
Fin Si 
 
 
if(<condición>) 
 
<instrucciones> 
 
Representaciones de la estructura condicional simple. 
 
La <condición> puede ser cualquier expresión booleana y las <instrucciones>, 
llamadas cuerpo del Si (if), bien puede ser una sola instrucción o un bloque 
de instrucciones en cuyo caso van entre llaves {}. 
 
 
 
Unidad 2. Introducción al lenguaje C 
 
UNADM | DCEIT | FPR 43 
La manera en la que se ejecuta una instrucción Si (if) es la siguiente: se evalúa 
la condición que aparece entre paréntesis y si es verdadera (tiene un valor 
diferente de cero) entonces se ejecutan las instrucciones del cuerpo del Si (if), 
en caso de no serlo no se ejecuta y continúa el flujo de ejecución. 
 
NOTA: En lenguaje C, cuando el cuerpo de una estructura tiene más de una 
instrucción éstas deben ir encerradas entre llaves. 
 
Para ilustrar las representaciones y el funcionamiento de la estructura 
selectiva simple se presenta el siguiente problema, con el algoritmo en 
pseudocódigo, el diagrama de flujo y el programa en lenguaje C. 
 
Problema de sentencias de estructuras selectivas simples: 
Se requiere un programa que lea un valor entre 0 y 360 y determine el tipo 
de ángulo, considerando que: 
• Ángulo agudo: Mayor a cero y menor de 90 grados 
• Ángulo recto: Es igual a 90 grados 
• Ángulo obtuso: Es mayor que 90 pero menor a 180 grados 
• Ángulo llano: Es igual a 180 grados 
• Ángulo cóncavo: Es mayor a 180 pero menor a 360 grados 
 
El análisis del problema se resume en la siguiente tabla. 
Análisis del problema 
Datos de entada: 
ángulo 
 
Salida: 
Mensaje 1: “Agudo” 
Mensaje 2: “Recto” 
Mensaje 3: 
“Obtuso” 
Mensaje 4: “Llano” 
Mensaje 5: 
“Cóncavo” 
Método: 
Realizar comparaciones 
utilizando la estructura 
de selección simple, con 
el fin de identificar el 
tipo de ángulo, 
dependiendo de sus 
grados. 
Análisis del problema 
Unidad 2. Introducción al lenguaje C 
 
UNADM | DCEIT | FPR 44 
 
Lo primero que se requiere es leer el valor del ángulo, posteriormente, 
verificar de qué tipo es para imprimir el mensaje indicado. A continuación, se 
muestra el algoritmo tanto en pseudocódigo como en diagrama de flujo: 
Inicio 
 Imprimir "Ingrese la medida del ángulo (grados): " 
 Leer ángulo 
 Si angulo≤0 OR angulo≤360 entonces 
Imprimir “No tiene clasificación" 
 Fin_Si 
 
 Si angulo>0 AND angulo<90 entonces 
Imprimir "El ángulo es agudo" 
 Fin_Si 
 
 Si angulo=90 entonces 
 Imprimir "El ángulo es recto" 
 Fin_Si 
 
 Si angulo>90 AND angulo<180 entonces 
Imprimir “El ángulo es obtuso" 
 Fin_Si 
 
 Si angulo =180 entonces 
 Imprimir "El ángulo es llano" 
 Fin_Si 
 
 Si angulo>180 AND angulo<360 entonces 
 Imprimir “El ángulo es cóncavo" 
 Fin_Si 
Fin 
Ejemplo de aplicación de estructura selectiva simple: Tipo de ángulo – pseudocódigo. 
 
Observa que, para hacer más legible el algoritmo en pseudocódigo, se han 
dejado sangrías para indicar qué instrucciones forman el cuerpo de cada una 
de las estructuras Si y se han encerrado con un rectángulo, esto se adoptará 
para cualquier bloque de instrucciones que corresponda al cuerpo de una 
estructura. 
 
Unidad 2. Introducción al lenguaje C 
 
UNADM | DCEIT | FPR 45 
 
 
 
Ejemplo de aplicación de estructura selectiva simple: Tipo de ángulo – diagrama de flujo. 
 
Para reafirmar el funcionamiento de la estructura condicional simple y 
verificar que el algoritmo propuesto sea correcto, en la siguiente tabla se 
muestra su ejecución paso a paso, tomando como datos de entrada 120 
grados. 
Unidad 2. Introducción al lenguaje C 
 
UNADM | DCEIT | FPR 46 
 
Ejemplo de aplicación de estructura selectiva simple: Prueba de escritorio del algoritmo. 
 
Al ejecutar paso a paso el algoritmo la única condición que satisface el estado 
de la memoria es la que sombreamos (angulo>90 AND angulo<180), por lo 
tanto, la única instrucción que se toma en cuenta es la del cuerpo del Si 
correspondiente. 
 
El último paso es la codificación. Observa que el cuerpo de cada una de las 
estructuras consta de una instrucción por lo tanto no es necesario encerrarla 
entre llaves {}. 
 
Unidad 2. Introducción al lenguaje C 
 
UNADM | DCEIT | FPR 47 
/* Programa: tipoAngulo.c 
 Descripción: Determina el tipo de angulo (agudo, recto, 
obtuso, llano o cóncavo) 
*/ 
#include<stdio.h> 
#include<stdlib.h> 
 
/* Función Principal*/ 
 
main () 
{ /*Inicio de la función Principal*/ 
 
/*Declaración de variables */ 
intangulo; 
 
 /*Mensaje de bienvenida*/ 
printf ("\nEste programadetermina de que tipo es el ángulo 
dado."); 
 
/*Instrucciones */ 
printf ("\n\nIngrese la medida del ángulo (grados): "); 
scanf ("%d",&angulo); 
 
if (angulo<=0 || angulo>=360) 
printf ("\n No tiene clasificación"); 
 
if (angulo>0 &&angulo<90) 
printf ("\n El ángulo es agudo"); 
 
if (angulo==90) 
printf ("\n El ángulo es recto"); 
 
if (angulo>90 &&angulo<180) 
printf ("\n El ángulo es obtuso"); 
 
if (angulo ==180) 
printf ("\n El ángulo es llano"); 
 
if (angulo>180 &&angulo<360) 
printf ("\n El ángulo es concavo"); 
 
printf ("\n\n\t"); 
 system ("pause"); 
} /*Fin de la función Principal*/ 
Ejemplo de aplicación de estructura selectiva simple: Codificación tipoAngulo.c 
 
Unidad 2. Introducción al lenguaje C 
 
UNADM | DCEIT | FPR 48 
A continuación, se muestra la pantalla correspondiente a la ejecución del 
programa anterior introduciendo el mismo ángulo que se utilizó en la prueba 
de escritorio. 
 
Ejemplo de aplicación de estructura selectiva simple: Ejecución del programa tipoAngulo.c 
 
 
Estructura selectiva doble (if-else) 
Las estructuras selectivas dobles nos permiten elegir alguna de dos posibles 
acciones a realizar dependiendo de la condición. En pseudocódigo se 
propone usar las palabras reservadas Si-Sino y en C se codifican mediante la 
sentencia if-else, tal como se muestra en la siguiente tabla. 
 
Pseudocódigo Diagrama de Flujo Lenguaje C 
Si (<condición>) 
entonces 
<instruccionesV> 
sino 
<instruccionesF> 
Fin Si-Sino 
 
 
if(<condición>) 
<instruccionesV> 
else 
<instruccionesF> 
 
Representaciones de la estructura condicional doble. 
 
Al igual que en la estructura selectiva simple, la <condición> representa una 
expresión booleana y, las <instruccionesV> y <instruccionesF> puede ser una 
o varias, a las primeras se les llama cuerpo del Si (if) y las segundas son el 
cuerpo del Sino (else). 
 
Unidad 2. Introducción al lenguaje C 
 
UNADM | DCEIT | FPR 49 
Esta estructura de control ejecuta sólo uno de los dos cuerpos de 
instrucciones: cuando la condición es verdadera se ejecutan las 
<instrucciuonesV> y en caso contrario se ejecutan las <instruccionesF>. 
 
En el desarrollo del siguiente problema se ejemplifican las representaciones 
y el funcionamiento de ésta estructura. 
 
Problema de aplicación de estructura selectiva doble: 
 
Se requiere un programa que simule el cálculo y muestre las raíces reales 
para una ecuación de segundo grado de la forma: 
 
 𝑎𝑥2 + 𝑏𝑥 + 𝑐 = 0. 
Para resolver este problema se utilizará la fórmula general: 
𝑥 =
−𝑏 ± √𝑏2 − 4𝑎𝑐
2𝑎
 
 
Por lo que los datos que requerimos son los coeficientes de la ecuación (a, b 
y c) y el resultado deseado serán las raíces. También se debe considerar que 
un polinomio tiene raíces reales si se cumple con la siguiente condición: 
𝑏2 ≥ 4𝑎𝑐 
 
De lo contrario el resultado de la raíz cuadrada sería un número imaginario. 
Para esto se propone una estructura selectiva doble para verificar que 
existan raíces reales. 
 
Unidad 2. Introducción al lenguaje C 
 
UNADM | DCEIT | FPR 50 
 
El algoritmo en pseudocódigo es el siguiente: 
Inicio 
 Imprimir “Ingresa los coeficientes a, b y c:” 
 Leer a, b, c 
det←𝑏2 − 4𝑎𝑐 
 Si (det ≥ 0 ) entonces 
 x1←
−𝑏+√𝑑𝑒𝑡
2𝑎
 
 x2 ← 
−𝑏−√𝑑𝑒𝑡
2𝑎
 
Imprimir “Las raíces son:”, x1 , x2 
 Si no 
Imprimir “No existen raíces reales” 
Fin_Si-Sino 
Fin 
Problema de aplicación de estructura selectiva doble: Algoritmo pseudocódigo. Ecuación de segundo 
grado. 
 
 
Observa que en el algoritmo se utiliza la variable auxiliar det, la razón es 
porque el cálculo del determinante (𝑏2 − 4𝑎𝑐) se emplea en más de un lugar 
del algoritmo, por lo tanto, se recomienda guardar este resultado para no 
volverlo a calcular. 
 
Ahora, la representación del mismo algoritmo en diagrama de flujo se 
muestra a continuación. 
 
Unidad 2. Introducción al lenguaje C 
 
UNADM | DCEIT | FPR 51 
 
Problema de aplicación de estructura selectiva doble: diagrama de flujo Ecuación de segundo 
grado. 
 
Para validar el algoritmo, veamos su ejecución paso a paso con el polinomio 
𝑥2 + 5𝑥 + 4 = 0. 
 
Problema de aplicación de estructura selectiva doble: Prueba de escritorio del algoritmo. 
 
 
Unidad 2. Introducción al lenguaje C 
 
UNADM | DCEIT | FPR 52 
 
Para la codificación en lenguaje C se debe notar que el cuerpo del Si (if) tiene 
un bloque de tres instrucciones, por lo que deberán ir encerradas entre llaves 
{}, en cambio el cuerpo del Sino (else) sólo tiene una instrucción por lo que no 
son necesarias. 
 
 
/* Programa: ecuacion.c 
 Descripción: Solución de ecuaciones de segundo grado utilizando 
*/ 
 
/* Bibliotecas */ 
#include<stdio.h>/* Biblioteca de entrada y salida estándar */ 
#include<stdlib.h>/* Biblioteca para las funciones del sistema */ 
#include<math.h>/* Biblioteca para utilizar funciones matemáticas: 
pow para calcular la potencia 
sqrt para calcular la raíz cuadrada*/ 
/* Función Principal*/ 
main ( ) 
 { 
 
/*Declaración de variables */ 
double a, b, c, x1, x2, det; 
 
/* Mensaje de bienvenida */ 
printf("El siguiente programa calcula las raíces de un polinomio de 
segundo grado\n"); 
printf("\n\t\t ax^2 + bx + c = 0"); 
 
/* Datos de entrada */ 
printf ("\nIntroduzca los coeficientes de a,b y c:"); 
scanf ("%lf,%lf,%lf",&a,&b,&c); 
det = pow (b,2)-4*a*c; 
 
/* Verificamos que la ecuación tenga raíces reales */ 
if (det>= 0) 
 { 
 x1=(-b + sqrt(det))/2*a; 
 x2=(-b - sqrt(det))/2*a; 
 printf ("\n Las raíces son: %.2lf, %.2lf",x1, x2); 
 } 
else 
Unidad 2. Introducción al lenguaje C 
 
UNADM | DCEIT | FPR 53 
 printf ("\n No existen raíces reales."); 
 printf ("\n"); 
 system ("pause"); 
} 
Problema de aplicación de estructura selectiva doble: codificación ecuacion.c 
 
La ejecución del programa con los mismos datos de entrada de la prueba de 
escritorio es la siguiente. 
 
Problema de aplicación de estructura selectiva doble: Ejecución del programa ecuacion.c 
 
 
Estructura selectiva múltiple (switch-case) 
 
Las estructuras selectivas múltiples permiten escoger uno de varios caminos posibles. 
“permite que el flujo del diagrama se bifurque por varias ramas en el punto 
de la toma de decisión. La elección del camino a seguir depende del 
contenido de la variable conocida como selector, la cual puede tomar valores 
de un conjunto previamente establecido.” (Cairó, 2006, p. 58). 
 
Para la estructura condicional múltiple se proponen las palabras clave 
Seleccionar-caso en pseudocódigo, misma que se implementa en lenguaje C 
utilizando las palabras reservadas switch-case. Esta secuencia se utiliza 
cuando existen múltiples posibilidades para la evaluación de una expresión 
matemática (generalmente una variable), pues de acuerdo al valor que tome 
la expresión será el conjunto de instrucciones que se ejecute. 
 
 
 
Unidad 2. Introducción al lenguaje C 
 
UNADM | DCEIT | FPR 54 
 
Pseudocódigo Lenguaje 
Casos para<expresión> 
caso<valor1>: 
<instruccionesCaso1> 
caso<valor2>: 
<instruccionesCaso2> 
 … 
otros casos: 
<instruccionesOtros> 
Fin_Casos 
 
 
 
 
switch (<expresión>) 
{ 
case<valor1>: 
 <instrucciones1>; 
break; 
 case<valor2>: 
 <instrucciones2>; 
break; 
default: 
<instruccionesOtras> 
} 
Diagrama de Flujo 
 
 Representaciones de la estructura condicional múltiple. 
 
En este caso la <expresión> no es booleana sino aritmética y de tipo entero, 
así cada caso corresponde a un valor que puede resultar de su evaluación. De 
esta forma, el flujo de control que sigue la ejecución de una instrucción 
Seleccionar-casos (switch-case) es el siguiente: se evalúa la <expresión> y si el 
valor correspondeal valor de un caso, es decir a un <valori>6, se ejecuta el 
bloque de <instruccionesi> hasta encontrar el final de la instrucción, que en el 
caso de C está representado por la palabra reservada break, terminando ahí 
la ejecución de la instrucción. Cuando el valor no corresponde a ningún caso 
 
6 El valor i indica una serie de valores (números enteros) desde 1 a n valores. 
Unidad 2. Introducción al lenguaje C 
 
UNADM | DCEIT | FPR 55 
se ejecuta el bloque de instrucciones correspondiente a otros casos (default). 
El conjunto de todos los casos, incluyendo el default, conforman el cuerpo de 
la estructura Seleccionar-casos (switch-case). 
 
Problema de estructura selectiva múltiple: Se requiere un programa que 
dada una calificación numérica despliegue un mensaje, de acuerdo con la 
siguiente información: 
0-6: Reprobado 
7: Suficiente, Aprobado 
8: Bien, Aprobado 
9: Notable, Aprobado 
10: Sobresaliente, Aprobado 
 
En este caso es conveniente utilizar una estructura selectiva múltiple, en 
donde la expresión que se evalúe sea la calificación del estudiante y se defina 
un caso por cada una de las calificaciones posibles. Es claro, que la entrada 
únicamente es la calificación y la salida es el mensaje correspondiente. De lo 
anterior el algoritmo en pseudocódigo y diagrama de flujo quedaría de la 
siguiente forma. 
Inicio 
Imprimir “Inserte una calificación: " 
Leer nota 
Seleccionar (nota) 
 caso 0: caso 1: caso2: caso 3: caso 4: caso 5: caso 6: 
Imprimir “Reprobado" 
caso 7: Imprimir "Suficiente, Aprobado" 
 caso 8: Imprimir "Bien, Aprobado" 
 caso 9: Imprimir “Notable, Aprobado” 
 caso 10: Imprimir “Sobresaliente, Aprobado” 
 otros casos: Imprimir "Esa nota es incorrecta" 
Fin_Casos 
Fin 
Problema de estructura selectiva múltiple: Pseudocódigo de un programa que determina un valor 
cualitativo a partir de un valor numérico cuantitativo. 
 
Unidad 2. Introducción al lenguaje C 
 
UNADM | DCEIT | FPR 56 
 
Problema de estructura selectiva múltiple: Diagrama de flujo de un programa que determina un valor 
cualitativo a partir de un valor numérico cuantitativo. 
 
Observa que tanto en el diagrama de flujo como en el algoritmo, hay siete 
casos (0 ≤ 𝑛𝑜𝑡𝑎 ≤ 6) en los que la instrucción a ejecutar es la misma, por lo que 
se agrupan, más no se puede poner una condición que los contenga, como 
se haría en las estructuras vistas anteriormente, así que en el pseudocódigo 
se especifica cada valor antecedido por la palabra caso pero sólo se escribe 
una vez la instrucción y, de manera similar, se listan todos los valores. Para 
aclarar el funcionamiento de esta estructura y verificar si el algoritmo 
funciona adecuadamente, en la siguiente tabla se muestra una prueba de 
escritorio cuando la nota es igual a 8. 
 
Unidad 2. Introducción al lenguaje C 
 
UNADM | DCEIT | FPR 57 
 
Problema de estructura selectiva múltiple: Prueba de escritorio de un programa que determina un 
valor cualitativo a partir del valor numérico 8. 
 
Es importante señalar que, a diferencia de las estructuras anteriores, el 
cuerpo de una estructura selectiva múltiple siempre debe ir encerrado entre 
llaves {} cuando se codifica en C, más no así las instrucciones que se definen 
para cada caso, ya que éstas se acotan por las palabras reservadas case y 
break, por tal motivo no debes olvidar escribir el break al final de cada caso 
de lo contrario también se ejecutarán las instrucciones de los casos que 
aparezcan después. 
 
Unidad 2. Introducción al lenguaje C 
 
UNADM | DCEIT | FPR 58 
/* Programa: calificacion.c 
 * Descripción: Dada una calificación con número despliega un 
mensaje 
 * 0,1,2,3,4,5,6 - Reprobado 
 * 7 - Suficiente, Aprobado 
 * 8 - Bien, Aprobado 
 * 9 - Notable, Aprobado 
 * 10 - Sobresaliente, Aprobado*/ 
 
#include<stdio.h> 
#include<stdlib.h> 
 
/*Función principal*/ 
main() 
 { 
 /*Declaración de variables*/ 
int nota; 
 /*Mensaje de bienvenida */ 
printf("\nEl siguiente programa lee una calificación con número, 
\ndetermina que tipo de calificación es\n"); 
 /*Datos de entrada*/ 
printf("\nInserte una calificación numérica: "); 
scanf("%d",&nota); 
 /*Comparación*/ 
switch(nota) 
{ 
 case 0: case 1: case 2: case 3: case 4: case 5: 
 case 6: printf("\n\n\t\"Reprobado\""); 
break; 
 case 7: printf("\n\n\t\"Suficiente, Aprobado\""); 
break; 
 case 8: printf("\n\n\t\"Bien, Aprobado\""); 
break; 
 case 9: printf("\n\n\t\"Notable, Aprobado\""); 
break; 
 case 10: printf("\n\n\t\"Sobresaliente, Aprobado\""); 
break; 
 default: printf("\n\n\t\"Esa nota es incorrecta\""); 
} 
printf ("\n\n\t\t"); 
system ("pause"); 
} 
Problema de estructura selectiva múltiple: Codificación de un programa que determina un valor 
cualitativo a partir del valor numérico 8. 
 
Unidad 2. Introducción al lenguaje C 
 
UNADM | DCEIT | FPR 59 
En la siguiente figura se muestra la ejecución de este programa con el valor 
de entrada igual a 8. 
 
Problema de estructura selectiva múltiple: Ejecución de un programa que determina un valor 
cualitativo a partir de un valor numérico 8. 
 
A lo largo de este tema has estudiado los tres tipos de estructuras selectivas 
y por medio de los ejemplos presentados te has dado cuenta de la 
importancia y utilidad de estas estructuras, sin ellas sería imposible construir 
programas que implicaran la toma de decisiones. Sin embargo, todavía 
existen problemas que requieren de otro tipo de estructuras que permitan 
repetir una tarea un número determinado de veces, la siguiente sección está 
dedicada a este tema. 
 
2.7.2. Estructuras repetitivas 
 
En la mayor parte del diseño o implementación de las soluciones que se 
plantea a problemas específicos nos encontramos con instrucciones que 
deben ejecutarse un número determinado de veces, si hacemos un análisis 
más profundo de estas situaciones, en la mayoría de las ocasiones nos 
encontramos que las instrucciones son las mismas, pero que los datos varían, 
esto se hace posible utilizando las estructuras repetitivas, generalmente 
llamadas ciclos (Cairó, 2006). 
 
Existen varias estructuras de repetición implementadas por los diferentes 
lenguajes de programación, todas con la misma idea: repetir un conjunto de 
instrucciones, llamadas cuerpo del ciclo, dependiendo de condición. En la 
Unidad 2. Introducción al lenguaje C 
 
UNADM | DCEIT | FPR 60 
mayoría de los ciclos, el cuerpo se repite siempre y cuando la condición se 
cumpla, sin embargo, también existe una estructura repetitiva que se repite 
en tanto que no se cumple la condición. En esta sección sólo nos enfocaremos 
en las primeras que son las que están definidas en el lenguaje C y en la 
mayoría de los lenguajes estructurados y orientados a objetos actuales. Cabe 
mencionar que a cada una de las veces que se repite el ciclo se le conoce 
como iteración. 
 
Cuando se utilizan ciclos dentro de un programa, te puedes enfrentar a dos 
posibles situaciones: 
• Que conozcas desde el diseño cuántas veces deben repetirse las 
instrucciones (repetición definida), 
• Que el número de veces que se deban repetir las instrucciones 
dependa de un valor que se conoce hasta el momento de la ejecución 
del ciclo (repetición indefinida). 
 
En el primer caso se necesitará una variable que funja como un contador, en 
la cual se registre el número de iteraciones que se vayan ejecutando. En 
cambio, en las repeticiones indefinidas generalmente se controlan mediante 
interruptores o banderas, o bien, con valores centinela. 
 
Con lo anterior puedes darte cuenta que para las estructuras de control 
repetitivas es muy importante el uso de variables auxiliares y que por la 
frecuencia con la que se utilizan dentro de un algoritmo y por la función que 
realizan dentro del mismo toman un nombre especial:

Continuar navegando

Materiales relacionados

45 pag.
Programacion Estructurada

SIN SIGLA

User badge image

Vanina Gisele Beguiristain

153 pag.
Introduccion-prog--C

IPN

User badge image

Todos los Materiales

80 pag.
elementos-fortran-v0-1-7

UNM

User badge image

Materiales Muy Locos

251 pag.