FPR U2 Contenido
FPR U2 Contenido
FPR U2 Contenido
Programa de la asignatura:
Fundamentos de programación
Índice
Unidad 2: introducción al lenguaje c........................... 3
Presentación de la unidad...................................... 3
Competencia específica......................................... 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...................... 10
2.2. Tipos de datos........................................... 12
2.3. Variables y constantes................................... 14
2.3.1. Identificadores........................................ 14
2.3.2. Declaración e inicialización de variables.............. 16
2.3.3. Tipos de constantes.................................... 18
2.3.4. Declaración de constantes.............................. 20
2.4. Expresiones matemáticas.................................. 21
2.4.1. Tipos de operadores.................................... 23
2.4.2. Evaluación de expresiones.............................. 25
2.5. Bibliotecas y funciones.................................. 28
2.5.1. Funciones matemáticas.................................. 29
2.5.2. Funciones de entrada y salida.......................... 30
2.6. Codificación de algoritmos............................... 33
2.7. Estructuras de control................................... 41
2.7.1. Estructuras selectivas................................. 42
2.7.2. Estructuras repetitivas................................ 60
2.7.3. Estructuras anidadas................................... 81
Cierre de la unidad........................................... 85
Fuentes de consulta........................................... 86
Presentación de la Unidad
Competencia específica
Logros
/* Definición de función
Principal */
main( )
{
printf(“Hola mundo… \n”);
}
o: output
UNADM | DCEIT | DS | FPR 6
Unidad 2. Introducción al lenguaje C
std: estándar
i: input
2.1.1. Instrucciones
1 En este punto es importante destacar que el lenguaje C distingue entre mayúsculas y minúsculas.
/* Declaraciones globales */
const float PI = 3.1416;
/* Función Principal */
main( )
{
/* Declaraciones de variables locales de la
función main*/
float radio, area;
Enteros
Numéricos
Decimales
Simples
Lógicos (verdadero o falso)
Alfanuméricos (caracteres)
Unidimensionales
Arreglos
Estructurados Multidimensionales
Estructuras o registros
Tipos de datos (Cairó, 2006).
2 Recuerda que un bit se definió como la unidad mínima de información, esto es, 1 ó 0.
2.3.1. Identificadores
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.
<tipo><identificador>;
<tipo><identificador1>, … , <identificadorN>;
<tipo><identificador>=<valor>;
MEMORIA
Dirección Contenido Dirección Contenido
51
01 3.0
radio
02 52
18
edad
03 53
54
04 0.0
area
05 55
… 56
Memoria y declaración e inicialización de variables.
#define<identificador><valor_constante>
Por ejemplo:
#define PI 3.1416
const<tipo><identificador> = <valor_constante>;
Por ejemplo:
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.
x++; → 6
x--; → 4
(x % 2 == 0)
variables
x % 2 == 0 X
24
0 == 0 Igual al anterior
1 Igual al anterior
4 En (Kernighan & Ritchie, 1991) puedes consultar las funciones que están definidas en cada una de las bibliotecas estándar.
area = PI * pow(radio,2);
printf(<cadena_de_control>, <lista_de_identificadores>);
Especificador Acción
%d Insertar un entero (int)
Insertar un entero tipo
%i
(int)
Insertar un entero tipo
%ld
(long)
Insertar un número
%f
flotante tipo (float)
Insertar un número de
%lf
tipo (double)
Insertar un caracter
%c
(char)
Insertar una cadena(char
%s
[ ])
Especificadores de conversión
La salida es:
El perímetro es 18.85
scanf(<cadena_de_control>,<lista_de_direcciones_de_variables>);
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.
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.
Constantes:
PRECIO = 45
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).
=75
Imprimir “El
El número
número de
PRECIO nBoletos total pago Cambio de billetes
billetes de - 75/100 = 0
45 5 225 500 75 de $100 es
$100 es”,
0
cambio/100
cambio =
cambio = cambio PRECIO nBoletos total pago Cambio
- 275 mod 100 -
módulo 100 45 5 225 500 75
=75
Imprimir “El
El número
número de PRECIO nBoletos total pago Cambio
- 75/50= 1 de billetes
billetes de $50 45 5 225 500 75
de $50 es 1
es”, cambio/50
cambio =
cambio = cambio PRECIO nBoletos total pago Cambio
- 75 mod 50 -
módulo 50 45 5 225 500 25
=25
Imprimir “El
El número
número de PRECIO nBoletos total pago Cambio
- 25/50= 0 de billetes
billetes de $20 45 5 225 500 25
de $50 es 0
es”, cambio/20
cambio =
cambio = cambio PRECIO nBoletos total pago Cambio
- 25 mod 20 -
módulo 20 45 5 225 500 5
=5
Imprimir “El
El número
número de PRECIO nBoletos total pago Cambio
- 5/10= 0 de monedas
monedas de $10 45 5 225 500 25
de $10 es 0
es”, cambio/10
cambio =
cambio = cambio PRECIO nBoletos total pago Cambio
- 5 mod 10 -
módulo 10 45 5 225 500 5
=5
Imprimir “El El número
- 5/5= 1 PRECIO nBoletos total pago Cambio
número de de monedas
/* 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);
if(<condición>)
Si <condición>
entonces
<instrucciones>
<instrucciones>
Fin Si
Si angulo=90 entonces
Imprimir "El ángulo es recto"
Fin_Si
/* 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 programa determina 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\n\t");
system ("pause");
} /*Fin de la función Principal*/
Ejemplo de aplicación de estructura selectiva simple: Codificación tipoAngulo.c
Si (<condición>)
if(<condición>)
entonces
<instruccionesV>
<instruccionesV>
else
sino
<instruccionesF>
<instruccionesF>
Fin Si-Sino
Representaciones de la estructura condicional doble.
𝑎𝑥 2 + 𝑏𝑥 + 𝑐 = 0.
Para resolver este problema se utilizará la fórmula general:
−𝑏 ± √𝑏 2 − 4𝑎𝑐
𝑥=
2𝑎
/* 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;
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).
Pseudocódigo Lenguaje
Casos para<expresión>
caso<valor1>: switch (<expresión>)
<instruccionesCaso1> {
caso<valor2>: case<valor1>:
<instruccionesCaso2> <instrucciones1>;
… break;
otros casos: case<valor2>:
<instruccionesOtros> <instrucciones2>;
Fin_Casos break;
default:
<instruccionesOtras>
}
Diagrama de Flujo
#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",¬a);
/*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.
SumaTotal = SumaTotal +
cantidad;
ProductoFinal = ProductoFinal *
cantidad;
Mientras while
<condición>hacer (<condición>)
Condición V F
<instrucciones> <instrucciones>;
Fin mientras
instrucciones
Así que en este caso se usará un ciclo que vaya leyendo una a
una las temperaturas (almacenándolas en la variable 𝑡𝑒𝑚𝑝𝐹) y
acumulando la suma en la variable 𝑠𝑢𝑚𝑎𝐹, estas acciones se
repetirán hasta que el usuario introduzca un número menor a -
460. De esta manera, la condición de término es: 𝑠𝑢𝑚𝑎𝐹 ≥ −460;
por lo que antes de iniciar el ciclo se debe pedir la primera
temperatura, para que se compare con la condición y si es mayor
a -460 se acumule en la suma. Además, se utilizará un contador
para registrar el número de temperaturas que se lean.
Finalmente, cuando se termina el ciclo se divide el resultado
de la suma de las temperaturas entre el valor del contador. Lo
anterior se expresa en el siguiente pseudocódigo.
Inicio
c←0, sumaF←0
Imprimir "Ingrese la primera temperatura registrada en grados
Fahrenheit:"
Leer tempF
Mientras (tempF≥-460)
c←c+1
sumaF=sumaF+tempF
Imprimir "Ingrese la siguiente temperatura en grados
Fahrenheit (un número mayor a -460)
para calcular el promedio "
Leer tempF
Fin Mientras
promF←sumaF/c
Imprimir “El promedio de las temperaturas es” promF
Fin
Ejemplo de estructura repetitiva Mientras (while): pseudocódigo para calcular el
Promedio de temperaturas.
/* Programa: promTemp.c
Descripción: Calcula el promedio de las temperaturas que el
usuario ingresa.
*/
#include<stdio.h>
#include<stdlib.h>
#define centinela -460
/* Función principal */
main () {
/*Declaración de acumuladores y contadores*/
float tempF,promF, sumaF=0;
int c=0;
Desde
<inicialización>Mientras<condición>,
<incr/decr>
<Instrucciones>
Fin desde
Lenguaje C
for (<inicialización>;<condición>; <inc/dec>)
<instrucciones>
Representaciones de la estructura repetitiva para-mientras (for).
Inicio
Imprimir "Ingrese el total de empleados: "
Leer n
nom=0
Desde c=1, Mientras (c<=n), c=c+1
Imprimir “Ingresa el salario del trabajador”, c
Leer sal
nom=nom+sal
/* Programa: nomina.c
Descripción: calcula la nómina a pagar de n trabajadores
*/
/*directivas de preprocesador*/
/*Acumulador de salarios*/
nom=nom+sal;
}
printf(“\n La nómina a pagar es $&.2f”, nom);
}
Problema de aplicación de una estructura para-mientras (for): codificación del
programa Nomina.c
Hacer do
<instrucciones> <instrucciones>;
while(<condición>);
Mientras
<condición>Fin
Inicio
Hacer
Imprimir "Realiza Cálculos trabajando la 2a. Ley
de Newton"
Imprimir " ------------------------------------------------"
Imprimir " a. Fuerza."
Imprimir " b. Aceleración."
Imprimir " c. Masa."
Imprimir " d. Salir."
Imprimir " Elegir una Opción: "
Leeropc
Selecciona (opc)
Caso 1: Imprimir "Ingresa La masa:”
Leer m
Imprimir “Ingresa la aceleración:”
Leer a
Imprimir “Masa = ”, m
Caso 4: Imprimir "Adios"
Otro: Imprimir " Opción inválida"
Fin_Selecciona
Mientras (opc!=4) Fin
Fin
Problema de estructura hacer-mientras (do-while): pseudocódigo Segunda ley de Newton.
/* Programa: newton.c
Descripción: Muestra un menú para calcular la aceleración,
fuerza o masa, conforme a la segunda ley de Newton */
/*directivas de preprocesador*/
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
/*Función Principal*/
El programa en C es el siguiente:
/* 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 ()
{
/*Declaración de variables */
intangulo;
/*Mensaje de bienvenida*/
printf ("\nEste programa determina de qué 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");
else if (angulo<90)
printf ("\n El ángulo es agudo");
else if (angulo==90)
printf ("\n El ángulo es recto");
else
printf ("\nEl ángulo es cóncavo");
printf ("\n\n\t");
system ("pause");
}
Problema de sentencias de estructuras anidadas: codificación tipoAngulo.c
Cierre de la unidad
https://github.com/gorkau/Libro-Programacion-en-C
Fuentes de consulta