Professional Documents
Culture Documents
Ap Ind 22022
Ap Ind 22022
LENGUAJE DE PROGRAMCION
Está formado por un conjunto de símbolos y reglas sintácticas y semánticas que
definen su estructura y el significado de sus elementos y expresiones.
.
1
APUNTES DE PROGRAMACIÓN EN C AUTOR: ING. JORGE LUIS RIVERA HERNÁNDEZ 09
ESTRUCTURA DE UN PROGRAMA EN C
Todo programa en C puede incluir: directivas de procesador, declaraciones
globales y locales, la función principal main(), comentarios del programa, funciones
definidas por el usuario, arreglos(Arrays).
Las directivas son instrucciones del compilador. Todas las directivas o librerías o
archivos de cabecera comienzan con el signo (#), las más utilizadas en C son
#include y #define no terminan en punto y coma, ya que no son instrucciones de
lenguaje C.
C utiliza varios archivos o librerías a los cuales pertenecen ciertas funciones
llamadas de biblioteca o librerías, para realizar varias operaciones y cálculos de uso
frecuente. Estas funciones se encuentran almacenadas en archivos que se incluyen
en el compilador. Para acceder a estos archivos se utiliza la directiva: #include.
2
APUNTES DE PROGRAMACIÓN EN C AUTOR: ING. JORGE LUIS RIVERA HERNÁNDEZ 09
.
DIRECTIVA #include su formato es: #include<archivo.h>
En la redacción de cualquier programa en C, se deben incluir todos los archivos a
los que pertenecen las funciones de biblioteca que se utilicen en su desarrollo.
A los archivos también se les llama archivos de cabecera, librerías o bibliotecas
La extensión .h = header (inglés) = Encabezamiento o cabecera (español)
Programa de ejemplo:
//Progama de aplicación de ladirectiva #include.
#include<stdio.h>
#include<math.h>
#include<conio.h>
main()
{
float x, y,s,t;
printf("Ingrese el valor de x = "); /*archivo #include<stdio.h> */
scanf("%f",&x); //archivo#include<stdio.h>
printf("Ingrese el valor de y = ");
scanf("%f",&y); //archivo #include<stdio.h> */
s = pow(x*y,3); //archivo #include<math.h>
t= sqrt(x); // archivo #include<math.h>
printf("s = %f\nt = %f",s,t);
getch(); //archivo #include<conio.h>
return 0;
}
Las funciones printf y scanf pertenecen al archivo #include<stdio.h>
Las funciones sqrt y pow pertenecen al archivo #include<math.h>
La función getch pertenece al archivo #include< conio.h>
3
APUNTES DE PROGRAMACIÓN EN C AUTOR: ING. JORGE LUIS RIVERA HERNÁNDEZ 09
En las páginas 20 y 21 viene una tabla de las principales librerías de C.
DIRECTIVA #define
su formato es: #define nombre texto
Esta directiva indica al procesador que sustituya un dato por otro. Por ejemplo, la
directiva #define TRE 50 sustituirá el valor de 50 cada vez que TRE aparezca en el
programa. También se le llama constante simbólica.
Ejemplo;
#define PI 3.1416
#define CIERTO 1
#define FALSO 0
Programa de ejemplo:
//Programa de aplicación de la directiva #define
#include<stdio.h>
#include<conio.h>
#define PI 3.1416
main()
{
float A,r; //Declaraciones de variables
printf("Introduce el valor de r: ");
scanf("%f",&r);
A = PI*r*r; // PI está definido domo 3.1416
printf("El resultado del Area es: %f m.c.", A);
getch();
}
COMENTARIOS
La inclusión de comentarios en un programa es una saludable práctica, como lo
reconocerá cualquiera que haya tratado de leer un listado elaborado por otro
programador o por sí mismo, varios meses atrás. Para el compilador, los
comentarios son inexistentes, por lo que no generan líneas de código, permitiendo
abundar en ellos tanto como se desee. Los comentarios se escriben entre los
delimitadores /* */ y //.
Ejemplos:
/*…………………………………………………………………………………………….*/ Varias
líneas
//………………………………………………………………………………………………//
……………………Una sola línea
DECLARACIONES
Una declaración consiste en un tipo de datos, seguido de uno o más nombres de
variables, finalizando en un punto y coma (;).
Todas las variables deben ser declaradas antes de ser utilizadas.
Ejemplos: char p; int a,b,c; float r1,r2; double x,y,z;
También se le pueden asignar valores iniciales a las variables dentro de la
declaración de tipo:
Ejemplos:
char p = ‘x’;
char texto [ ] = “Hola”;
int a = 3, b = 5, c;
foat x = 0.013, y = -5.2, z;
4
APUNTES DE PROGRAMACIÓN EN C AUTOR: ING. JORGE LUIS RIVERA HERNÁNDEZ 09
.
LAS DECLARACIONES SE CLASIFICAN EN: GLOBALES Y LOCALES
GLOBALES Indican al programador que las constantes o variables declaradas son
comunes a todas las funciones del programa o sea que tienen validez en todo el
desarrollo del programa. Se escriben antes de la función principal main().
LOCALES Son variables o constantes que se declaran dentro de una función o
cuerpo o bloque de un programa. Estas solo pueden ser utilizadas por las
sentencias de la función donde están declaradas, fuera de dicha función, no tienen
validez.
Programa de ejemplo:
//programa que visualiza las variables globales y locales
#include<stdio.h>
int y=20; // Declaración global
main ()
{
{
int x = 5;// Declaración local Inicio del bloque
printf ("Bloque 1\n");
printf ("x = %d, y = %d\n", x, y); // Visualiza x = 5, y = 20
} //Fin del bloque
{ //Inicio del bloque
printf ("Bloque 2\n");
int x=10; // Esta x es local al bloque
printf ("x = %d, y = %d\n", x, y); // Visualiza x = 10, y = 20
} // Fin del bloque
{ // Inicio del bloque
printf ("Bloque 3\n");
int x = 30;// x variable local
printf ("x = %d, y = %d\n", x, y); /* Visualiza x = 30, y = 20 */
}// Fin del bloque
return 0;
}// El valor de y no cambia porque es declaración global
6
APUNTES DE PROGRAMACIÓN EN C AUTOR: ING. JORGE LUIS RIVERA HERNÁNDEZ 09
PASOS PARA LA EJECUCIÓN DE UN PROGRAMA EN C
7
APUNTES DE PROGRAMACIÓN EN C AUTOR: ING. JORGE LUIS RIVERA HERNÁNDEZ 09
.
ELEMENTOS BÁSICOS DE C
Lenguaje c se auxilia de ciertos elementos básicos para la construcción de
programas como: el conjunto de caracteres, secuencias de escape, identificadores,
palabras clave, tipos de datos, constantes, arreglos, declaraciones, expresiones,
sentencias y operadores.
SECUENCIAS DE ESCAPE
En C también se utilizan combinaciones de caracteres no imprimibles como: el
retroceso de un espacio \b, un salto de línea \n, un tabulador \t, un sonido bell \a,
etc. solo se utilizan en las cadenas de caracteres de las funciones de biblioteca
printf()
Programa de ejemplo:
#include<stdio.h>
main()
{
printf("Hola");
printf ("como ");
printf ("están ");
return 0;
}
La salida o resultado será:
Sin embargo.
Programa de ejemplo:
#include<stdio.h>
main()
{
printf("Hola \n");
printf ("como \n");
printf ("están \n");
return 0;
}
La salida o resultado será:
8
APUNTES DE PROGRAMACIÓN EN C AUTOR: ING. JORGE LUIS RIVERA HERNÁNDEZ 09
Si se quiere tabular el texto se usa la secuencia de escape \t
Programa de ejemplo:
Ejemplo.
#include<stdio.h>
main()
{
printf("\t\tHola \n");
printf ("\t\tcomo \n");
printf ("\t\testán \n");
return 0;
}
La salida o resultado será:
9
APUNTES DE PROGRAMACIÓN EN C AUTOR: ING. JORGE LUIS RIVERA HERNÁNDEZ 09
‘\\’ barra invertida (backslash) 92 0x5C
‘\?’ interrogación 63 0x3F
‘\0’ carácter nulo 00 0x00
‘\ooo’ cualquier carácter (donde ooo es el código ASCII expresado en octal )
‘\xhh’ cualquier carácter (donde xhh es el código ASCII expresado en hexadecimal )
PALABRAS CLAVE
En lenguaje C se usan ciertas palabras predefinidas llamadas palabras clave que se
utilizan con un propósito ya establecido; No se pueden utilizar como identificadores
definidos por el programador a menos que se escriban con letras mayúsculas.
En C está estrictamente prohibido escribir las palabras clave y las funciones de
biblioteca en mayúsculas, todo se escribe en minúsculas.
10
APUNTES DE PROGRAMACIÓN EN C AUTOR: ING. JORGE LUIS RIVERA HERNÁNDEZ 09
.
TIPOS DE DATOS
En lenguaje C se usan cuatro tipos de datos: char (carácter), int (entero), float
(coma flotante), double (coma flotante de doble precisión) y void (sin valor).
Los datos de tipo char se usan para guardar valores definidos en juego de
caracteres ASCII, así como cualquier cantidad de 8 bits. Las variables de tipo int se
usan para guardar cantidades numéricas enteras.
Las variables de tipo float y double se usan para guardar números reales. (Los
números reales son aquellos que tienen una parte entera y una fraccionaria).
El tipo de dato double maneja más cifras significativas y mayor valor posible del
exponente.
TABLA DE LOS TIPOS DE DATOS BÁSICOS
Espec. de
Tipo de dato Tamaño Rango formato
char 8 bits -128 a 127 %c ó %d
unsigned char 8 bits 0 a 255 %c ó %d
Short int 16 bits -32,768 a 32,767 %hd
int 32 bits -2,147,483,648 a 2,147,483,647 %i ó %d
unsigned int 32 bits 0 a 4,294,967,295 %u
float 32 bits 3.4x10e-38 a 3.4x10e38 %f ó %g ó
%e
double 64 bits 1.1x10e-308 a 1.7x10e308 %lf
bool 8 bits 0a1
void Sin valor
CONSTANTES
En C se usan cuatro tipos básicos de constantes: constantes enteras, constantes
de coma flotante, constantes de carácter y constantes de cadena de caracteres
(también se utilizan las constantes enumeradas que se tratarán en capítulos
avanzados).
11
APUNTES DE PROGRAMACIÓN EN C AUTOR: ING. JORGE LUIS RIVERA HERNÁNDEZ 09
Las constantes son datos referenciados a través de un identificador o variable,
cuyo valor no varía a lo largo de toda la ejecución de un programa.
CONSTANTES ENTERAS
Una constante entera, es un número con un valor entero que se puede escribir en
tres sistemas numéricos: decimal, octal o hexadecimal.
Una constante entera decimal puede estar formada por cualquier combinación de
dígitos del 0 al 9. Si la constante tiene dos o más dígitos, el primero de ellos debe
ser distinto de 0
Ejemplos de la escritura de las constantes Decimales para sus declaraciones:
DEC int a = 457; OCT int a = 0457; HEX int a = 0X457;
CONSTANTES DE COMA FLOTANTE
Una constante de coma flotante es un número en base 10 que contiene un punto
decimal y/o un exponente.
Ejemplos de la escritura de las constantes de coma flotante:
float x = 0. 5, y = 3e-9; 86230. 0.5235 145.236 1248E-5
Las constantes enteras son cantidades exactas, mientras que las constantes de
coma flotante son aproximaciones.
CONSTANTES DE CARÁCTER
Es un solo carácter encerrado entre comillas simples para su declaracion.
Ejemplos:
Declaración de Caracteres Valor numérico ASCII
char c = ‘#’; 35
char c = ‘\’; 92
Programa de ejemplo:
//Programa de aplicacion de los tipos de datos char, int, float y double
#include<stdio.h>
main()
{ char caracter ='@';
int a = 2000;
float x = 5.342546;
double z = 3.456732901203;
printf("El caracter %c en ASCII representa el numero decimal %d\n", caracter, caracter);
printf("Elvalor de a es: %d\n",a);
printf("Elvalor de x es: %f\n",x);
printf("Elvalor de z es: %.12f",z);
return 0;
}
CONSTANTES DE CADENA DE CARACTERES
Es cualquier número de caracteres consecutivos o ninguno encerrados entre
comillas. Ejemplo printf(“Hola “); o puts(“Hola”);
printf(“Hola...”); en pantalla se visualizará: Hola...
puts(“Calle 10 no. 50”); en pantalla aparece: Calle 10 no. 50.
Se debe tener en cuenta que una constante de carácter (‘c’) no es equivalente a una
constante de cadena de caracteres (“c”). Ya que una constante de carácter tiene un
valor entero correspondiente, mientras que la constante de cadena no tiene valor
entero equivalente.
VARIABLES
Una variable es un identificador que se utiliza para representar cierto tipo de
información dentro del programa. Ejemplo: F = m*a; P = v*i;
EXPRESIONES
Una expresión representa una unidad de datos simple, tal como un número o un
carácter, una constante, una variable, un elemento de un arreglo o una referencia de
una función.
Ejemplos: E = m*v*v/2; x<=y; p = = q; a>b&&c<d||p<q; x*=y;
SENTENCIAS
Una sentencia hace que la computadora ejecute una acción. En C se utilizan tres
tipos diferentes de sentencias: sentencias de expresión o de asignación,
sentencias compuestas y de control.
SENTENCIAS COMPUESTAS
Una sentencia compuesta está formada por varias sentencias individuales
encerradas en un par de llaves ({y}). Las sentencias individuales pueden ser a su
vez sentencias de expresión, sentencias compuestas o sentencias de control.
Una sentencia compuesta hace posible incluir sentencias dentro de otras
sentencias. A diferencia de las sentencias de expresión estas no terminan en punto
y coma (;).
Ejemplos:
#include<stdio.h>
main( )
{ /* Inicia sentencia compuesta */
Instrucciones
} /*Termina sentencia compuesta */
OPERADORES Y EXPRESIONES
Los operadores son símbolos que representan operaciones y, se utilizan para
formar expresiones. Lenguaje C, posee un gran número de operadores que se
13
APUNTES DE PROGRAMACIÓN EN C AUTOR: ING. JORGE LUIS RIVERA HERNÁNDEZ 09
pueden agrupar en varias categorías como: operadores aritméticos, operadores
monarios, operadores relacionales, operadores lógicos, operadores de asignación y
el operador condicional. Los datos sobre los que actúan los operadores se llaman
operandos. A algunos operadores se les llama binarios porque requieren dos
operandos para ejecutarse, a otros se les llama monarios o unarios ya que actúan
sobre un solo operando, también existe un operador que actúa sobre tres
operandos a este se llama operador condicional. Un operador sirve para manipular
datos.
Programa de ejemplo:
/* Programa de aplicación de los operadores aritméticos */
#include <stdio.h>
#include <math.h>
main()
{
int a = 10,b = 3,c,d,e,f,g; float x =5,y = 3, potencia;
c = a+b; //Suma
d = a-b; //Resta
e = a*b; //Multiplicación
f = a/b; //División
g = a%b; //Residuo de una division o módulo
potencia = pow(x,y);
printf ( " %d + %d = %d\n",a,b, c);
printf ( " %d - %d = %d\n",a,b, d);
printf ( " %d * %d = %d\n",a,b, e);
printf ( " %d / %d = %d\n",a,b, f);
printf ( " El residuo de la division es:= %d\n",g);
printf ( " 5 elevado a la 3 es igual a: %.2f",potencia);//Aplicación de la función pow
}
15
APUNTES DE PROGRAMACIÓN EN C AUTOR: ING. JORGE LUIS RIVERA HERNÁNDEZ 09
operador menos monario (-), operador de incremento (++), operador de decremento
(--) y el operador sizeof (tamaño de).
.
TABLA DE EQUIVALENCIAS DE LOS OPERADORES MONARIOS ++ Y - -
Operador Expresión Expresión equivalente
++ ++Variable Variable = variable +1
-- --Variable Variable = variable –1
Ejemplos:
int i = 5 ++i equivale a i = i+1 por lo tanto i = 6. Este operador equivale a sumar 1 a la
variable. En caso contrario se resta 1 a la variable int i = 5 –i equivale a i = i-5 por lo
tanto i = 4.
Programa de ejemplo:
/* Aplicación del operador (++) en un contador inverso de 1 a 50 */
#include <stdio.h>
main()
{ int p;
for(p=1; p<=50;++p){
printf ( "%d\t", p );
}
return 0;
}
Programa de ejemplo:
/* Aplicación del operador (--) en un contador inverso de 50 a 1 */
#include <stdio.h>
main()
{
int p;
for(p=50; p>=1;--p){
printf ( "%d\t", p );
}
}
Programa de ejemplo:
/* Aplicación de operadores relacionales */
#include <stdio.h>
main()
{
int a = 50, b = 20;
printf( "a>b da como resultado %d\n", a>b );
printf( "b<a da como resultado %d\n", b<a );
printf("a==b da como resultado %d\n",a==b);
printf("a>=b da como resultado %d\n",a>=b);
printf("a<=b da como resultado %d\n",a<=b);
printf("a!=b da como resultado %d\n",a !=b);
return 0;
}
OPERADORES DE ASIGNACIÓN
El operador de asignación ( = ) es el más usado en lenguaje C.
17
APUNTES DE PROGRAMACIÓN EN C AUTOR: ING. JORGE LUIS RIVERA HERNÁNDEZ 09
Este es un operador que se utiliza para asignar un valor a una variable. Este valor
puede ser un número que tecleamos directamente u otra variable.
Programa de ejemplo:
/*Programa que realiza un conteo de cinco en cinco hasta 100 */
#include <stdio.h>
main()
{
int q;
for(q=0; q<=100; q+=5)
18
APUNTES DE PROGRAMACIÓN EN C AUTOR: ING. JORGE LUIS RIVERA HERNÁNDEZ 09
printf( "%d\t", q );
return 0;
}
Ejemplos:
int x = 1; (x<0)?0:100 (1<0)?0:100 = 100
1 no es menor que cero por lo tanto la expresión (1<0) es falsa el resultado es 100
De otro modo:
Si int x = -1; (x<0)?0:100 (-1<0)?0:100 = 0
-1 es menor que cero por lo tanto la exp1. (-1<0) es cierta, el resultado será 0../*
.
Programa de ejemplo:
//Comparación del operador condicional (:?) con la sentencia condicional if-else */
#include <stdio.h>
main()
{
int a, b;
printf(“Introduce los números:\n”);
scanf(“%d%d”,&a,&b);
if(a > b)
printf(“%d >%d \n”,a,b); /*salida en pantalla: a>b*/
else
printf(“Falso”); /*salida en pantalla: Falso*/
return 0;
}
.
FUNCIONES DE BIBLIOTECA O LIBRERÍAS SRCHIVOS DE CABECERA
Lenguaje C utiliza ciertas funciones de biblioteca para realizar varias operaciones y
cálculos de uso frecuente, estas funciones se encuentran almacenadas en archivos
que se incluyen en el compilador. Para acceder a estos archivos se utiliza la
directiva: #include <archivo.h>
La extensión .h designa un archivo de cabecera (h = header = encabezado) que
indica que se debe incluir al comienzo del programa.
21
APUNTES DE PROGRAMACIÓN EN C AUTOR: ING. JORGE LUIS RIVERA HERNÁNDEZ 09
long lx=-51654,ly;
labs(l) long int math.h Devuelve el calor absoluto de 1
ly=labs(lx);
hdouble x,y;
log(d) double math.h Devuelve el logaritmo natural de d x=10;
y=log(x);
hdouble x,y;
log10(d) double math.h Devuelve el logaritmo (en base 10) de d x=10;
y=log10(x);
void(pu Reserva u bytes de memoria. devuelve un puntero al
malloc(u) stdlib.h cadena=malloc(MAX_CHR);
ntero) principio del espacio reservado
double x=2.0, y=4.0, z;
pow(d1, d2) double math.h Devuelve d1 elevado a la potencia d2
z=pow(x,y); //z sera 1.60
.
FUNCIONES DE ENTRADA Y SALIDA
Las principales funciones de entrada son: "getchar" ,"scanf" y “gets” mientras que
las correspondientes funciones de salida son: "putchar" , "printf" y “puts”. Todas
estas funciones pertenecen al archivo de acceso a biblioteca #include<stdio.h>.
Estas funciones permiten la transferencia de datos entre la computadora y los
dispositivos de entrada y salida estándar (teclado y monitor).
Las funciones getchar y putchar, permiten la transferencia de caracteres sueltos
hacia adentro y hacia afuera de la computadora. Las funciones scanf y printf son
más complejas y más utilizadas en C, ya que permiten la transferencia de
información de caracteres sueltos, valores numéricos y cadenas de caracteres. Las
funciones gets y puts, permiten la transferencia de cadenas de caracteres. Con
estas funciones ya se pueden redactar programas sencillos y completos.
Programa de ejemplo:
/*Programa donde se aplican las funciones getchar() y putchar()*/
#include<stdio.h>
main()
{
22
APUNTES DE PROGRAMACIÓN EN C AUTOR: ING. JORGE LUIS RIVERA HERNÁNDEZ 09
char c;
c = getchar( );
putchar( c );
return 0;
}
/*En pantalla se visualizará el carácter que se oprima en el teclado*/
.
Ejemplos:
main()
{
char f;
int a;
long q;
float x;
double z;
char leo[100];
scanf (“%c %d %ld %f %lf ”,&f,&a,&q,&x,&z);
gets(leo);
}
Programa de ejemplo:
23
APUNTES DE PROGRAMACIÓN EN C AUTOR: ING. JORGE LUIS RIVERA HERNÁNDEZ 09
/* Programa que guarda datos en memoria y los visualiza en pantalla aplicando
Las funciones de E/S scanf(), printf(), gets() y puts()*/
#include<stdio.h>
main()
{
char f ;
int a;
short e;
long q;
unsigned t;
float x;
double z;
char leo[100];
printf("*********************************** \n");
printf("Escribe tu nombre completo \n");
gets(leo);
printf("Teclea los valores de f, a, e, q, t, x, z:\n");
scanf ("%d %d %hd %ld %u %f %lf ", &f, &a, &e, &q, &t, &x, &z);
/*Aquí se escriben las formulas*/
printf("%c\n %d\n %hd\n % ld\n %u\n %f\n %lf\n", f, a, e, q, t, x, z);
puts(leo); // ó printf("%s", leo);
return 0;
}
Programa de ejemplo:
#include<stdio.h>
main()
{
char Texto[100]; //Texto es la variable declarada en la cadena de caracteres
gets(Texto);
puts(Texto);
}
Programa de ejemplo:
//Las funciones gets y puts no visualizan números, solo cadenas de caracteres
#include<stdio.h>
main()
{
int a,b,c;
char leo[30];
printf("Escribe tu nombre completo \n");
24
APUNTES DE PROGRAMACIÓN EN C AUTOR: ING. JORGE LUIS RIVERA HERNÁNDEZ 09
gets(leo);
printf("Teclea los valores de a y b: ");
scanf ("%d%d", &a, &b);
c =a/b;
puts(leo); //Visualiza la cadena nombre completo
printf("el valor de C = %d", c); //Esto es correcto printf sí visualiza números
//puts("el valor de C = %d"); //Esto es incorrecto puts no visualiza números
}
Programa de ejemplo:
#include<stdio.h>
main()
{
int a = 20, b = 12300; Salida en pantalla:
printf(“%d\n”,a); 20
printf(“%d\n”,b); 12300
printf(“%05d\n”,a); 00015
printf(“%15s”, “Hola\n”); hola
}
Programa de ejemplo:
/* Alineación de salida hacia la derecha y hacia la izquierda */
#include<stdio.h>
main()
{
int a, b, c, d, e,f;
a = 1;
b = 12;
c = 123;
d = 1234;
e = 12345;
f = 123456;
printf("%10d%d\n",a,a);
printf("%10d%d\n",b,b);
printf("%10d%d\n",c,c);
printf("%10d%d\n",d,d);
printf("%10d%d\n",e,e);
printf("%10d%d\n",f,f);
}
Programa de ejemplo:
/* Programa que visualiza un tabla */
#include <stdio.h>
main()
{
int c[10], j;
25
APUNTES DE PROGRAMACIÓN EN C AUTOR: ING. JORGE LUIS RIVERA HERNÁNDEZ 09
for(j = 0;j<=9;j++) c[j] = 10;
printf(" %s %13s\n","Elemento", "Valor");
for(j = 0;j<=9;j++)
printf(" %7d %13d\n", j, c[j]);
}
ESPECIFICADOR DE PRECISIÓN
El especificador de precisión consiste en colocar un punto decimal (.) y un entero
justo después del entero .El especificador de precisión se utiliza para determinar el
número de posiciones decimales en float coma flotante.
Programa de ejemplo:
#include <stdio.h>
main()
{
float a = 36.0, b = 7.0, c;
c = a/b;
printf(“ c = %.2f \n", c );
}
/*Salida en pantalla: c = 5.14 sin el especificador de precisión %.2f el resultado
sería: c = 5.142857*/
.
ESPECIFICADORES DE FORMATO O CARACTERES DE CONVERSIÓN DE scanf
Carácter Significado
%c El dato es un carácter
%d El dato es un entero decimal
%e El dato es un valor en coma flotante en la forma exponencial base 10
%f El dato es un valor en coma flotante
%g El dato es un valor en coma flotante
%h El dato es un entero corto
%i El dato es un entero decimal
%o El dato es un entero octal
El dato es una cadena seguida por un espacio en blanco
%s
(el carácter nulo \0 se añade automáticamente al final
%u El dato es un entero sin signo
%x El dato es un entero hexadecimal en minúsculas
%[^\n] El dato es una cadena que puede contener espacios en blanco, etc.
26
APUNTES DE PROGRAMACIÓN EN C AUTOR: ING. JORGE LUIS RIVERA HERNÁNDEZ 09
significativos ni el punto decimal si no es significativo
%h El dato se muestra como un entero corto
%i El dato se muestra como un entero decimal
%o El dato se muestra como un entero octal
%s El dato se muestra como una cadena de caracteres
%u El dato se muestra como un entero sin signo
%x El dato es un entero hexadecimal en minúsculas
%X El dato es un entero hexadecimal en mayúsculas
%p El dato es un puntero
Prefijo Significado
h Entero corto o entero sin signo corto
l Entero largo, entero largo sin signo o real de doble precisión
L real en doble precisión largo
.
Programa de ejemplo:
/*Programa que calcula la velocidad de un móvil */
#include<stdio.h>
main() {
float V, d, t;
printf("Introduzca los valores de d y t: ");
scanf("%f%f",&d,&t);
V = d/t;
printf( "La velocidad es = %.2f Km/h", V);
}
Programa de ejemplo:
/* programa que convierte grados C a F */
#include <stdio.h>
main() {
float cels, farh;
farh = 35.0;
cels = 5.0 * ( farh - 32.0 ) / 9.0;
printf(" %.2f Grados Farh Equivalen a %f grados Cels", farh, cels );
}
Programa de ejemplo:
/*Programa que extrae las raíces de una ecuación de este tipo Ax*x+Bx+C=0 */
#include<stdio.h>
#include<math.h>
main() {
float A,B,C,raiz,sol1,sol2;
27
APUNTES DE PROGRAMACIÓN EN C AUTOR: ING. JORGE LUIS RIVERA HERNÁNDEZ 09
printf("\nIntroduzca el termino de la x al cuadrado: ");
scanf("%f",&A);
printf("\nIntroduzca el termino de la x: ");
scanf("%f",&B);
printf("\nIntroduzca el termino independiente: ");
scanf("%f",&C);
raiz=B*B-4*A*C;
sol1=(-B-sqrt(raiz))/(2*A);
sol2=(-B+sqrt(raiz))/(2*A);
printf("\nSolución 1= %f",sol1);
printf("\nSolución 2= %f",sol2);
}
.
UNIDAD 4
ESTRUCTURAS SELECTIVAS Y DE REPETICIÓN
Una sentencia condicional es aquella que verifica el estado de una expresión,
puede ser el valor de una variable o una comparación entre variables, este estado
puede resultar cierto = 1 o falso = 0. Aquí se aplican los operadores relacionales
Este tipo de sentencias permiten variar el flujo del programa mediante
determinadas condiciones ciertas o falsas. Existen varias estructuras diferentes:
SENTENCIA CONDICIONAL if
La sentencia if solo se ejecuta si la condición es cierta = 1. En caso contrario el
programa sigue su curso sin ejecutar la sentencia.
Su formato es:
if (condición) sentencia;
Programa de ejemplo:
//Programa de aplicación de la sentencia condicional if
#include<stdio.h>
main ()
{ int a=30,b=50,c;
if(a>b){
printf("cierto");
}
}
28
APUNTES DE PROGRAMACIÓN EN C AUTOR: ING. JORGE LUIS RIVERA HERNÁNDEZ 09
En cualquier caso, el programa continuará a partir de la sentencia2.
Su formato es:
if(condición){
instrucciones (el bloque que se ejecuta si se cumple la condición)
}
else {
instrucciones (el bloque que se ejecuta si no se cumple la condición)
}
Programa de ejemplo:
/* Uso de la sentencia condicional if else */
#include<stdio.h>
main()
{ int p;
printf( "Teclea un número " );
scanf( "%d", &p );
if ( p==50 ){
printf ( "El número que introdujo es cincuenta.\n" );
}
else{
printf ( "El número que introdujo no es cincuenta.\n" );
}
}
.
SENTENCIA CONDICIONAL if-else-if
Con este formato el flujo del programa únicamente entra en una de las condiciones.
Si una de ellas se cumple, se ejecuta la sentencia correspondiente y salta hasta el
final de la estructura para continuar con el programa.
Su formato es:
if (condición){
instrucciones;
}
else if (condición){
instrucciones;
}
.
.
else {
instrucciones;
}
Programa de ejemplo:
//Leer dos números enteros y escribir el mayor de ambos o un mensaje si son
iguales.
#include <stdio.h>
main()
{
int a,b;
printf("Dame dos numeros... ");
scanf("%d%d",&a,&b);
if (a>b)
29
APUNTES DE PROGRAMACIÓN EN C AUTOR: ING. JORGE LUIS RIVERA HERNÁNDEZ 09
printf("El mayor numero es... %d",a);
else if (b>a)
printf("El numero mayor es.... %d",b);
else
printf("Los numeros son iguales");
return 0;
}
.
SENTENCIA CONDICIONAL switch
Esta sentencia solo evalúa expresiones enteras como: tipo char o tipo int nunca,
tipo float y compara el resultado con la constante que aparece en cada case.
En cada case sólo puede escribirse una constante. Switch se suele utilizar en los
menús, de manera que según la opción seleccionada se ejecuten una serie de
sentencias.
Su formato es:
switch ( expresión entera){
case 1:
código a ejecutar si la variable tiene elvalor de la opción 1
break;
case 2:
código a ejecutar si la variable tiene elvalor de la opción 2
break;
.
case n:
código a ejecutar si la variable tiene el valor de la opción n
break;
default:
código que se ejecuta si la variable tiene un valor distinto a los anteriores
}
Cada case puede incluir una o más sentencias sin necesidad de ir entre llaves, ya
que se ejecutan todas hasta que se encuentra la sentencia break. La variable
evaluada solo puede ser declarada en tipo entero o carácter.
default ejecutará las sentencias que incluya, en caso de que la opción escogida no
exista.
30
APUNTES DE PROGRAMACIÓN EN C AUTOR: ING. JORGE LUIS RIVERA HERNÁNDEZ 09
La sentencia switch sirve par elegir una opción entre varias disponibles. Aquí no
tenemos una condición que se debe cumplir sino el valor de una variable,
dependiendo del valor se cumplirá un caso u otro.
Vamos a ver un ejemplo de múltiples casos con if-else y luego con switch.
Como vemos el código con switch es más cómodo de leer.
Programas de ejemplo:
/*Aplicación de la sentencia switch */
#include <stdio.h>
main()
{
int num;
printf( "Introduce un número " );
scanf( "%i", &num );
switch( num ){
case 1: printf( "Es un 1\n" );
break;
case 2:printf( "Es un 2\n" );
break;
case 3:printf( "Es un 3\n" );
break;
default:
printf( "No es ni 1, ni 2, ni 3\n" );
}
}
SENTENCIAS DE CONTROL (Bucles) for, while, do wile, break, continue y goto
Los bucles son sentencias que permiten ejecutar partes del código de forma
repetida, mientras se cumpla una condición.
Esta condición puede ser simple o compuesta de otras condiciones unidas por
operadores lógicos. Nota: break y continue se usan com auxiliares de for, while, do
wile y switch.
Los bucles nos ofrecen la solución cuando se quiera repetir una tarea un número
determinado de veces. Suponiendo que
se quiera escribir 100 veces el nombre /*Ahora con if-eles-if */
Juan. Con lo que se ha aprendido hasta #include <stdio.h>
ahora se haría lo siguiente: main()
Ejemplo: {
#include <stdio.h> int num;
main() printf( "Hola mundo\n " );
{ printf( "Introduce un número: " );
printf( "Juan\n"); scanf( "%i", &num );
printf( "Juan\n"); if ( num==1 )
printf( "Juan\n"); printf ( "Es un 1\n" );
………. else if ( num==2 )
(y así hasta 100 veces) printf ( "Es un 2\n" );
} else if ( num==3 )
¡que lata! Y si se quiere repetirlo más printf ( "Es un 3\n" );
veces quedaría un programa muy else
largo. printf ( "No es ni 1, ni 2, ni 3\n" );
De otra forma si se usa un bucle for el }
programa quedaría así:
31
APUNTES DE PROGRAMACIÓN EN C AUTOR: ING. JORGE LUIS RIVERA HERNÁNDEZ 09
Programa de ejemplo:
#include <stdio.h>
main()
{
int i;
for ( i=0 ; i<50 ; i++ ) {
printf( "Juan\n" );
}
}
El inicio indica una variable (variable de control) que condiciona la repetición del
bucle. Si hay más, van separadas por comas.
La condición es una expresión relacional que determina cuando finaliza el ciclo.
El incremento define como cambia la variable de control cada vez que se repite el
ciclo. También se puede poner más de una condición. Los elementos de cada
sección se separan por comas. Cada sección se separa por punto y coma.
Como se ve en el ejemplo, si se tiene más de una variable en la sección de
inicialización y en la de incrementos estas deben ir separadas por comas.
Por ejemplo: for (a=1,b=100;a!=b;a++,b- -){
Programa de ejemplo:
#include<stdio.h>//Programa de ejemplo de la sentencia de control for
main()
{
int cont;
for(cont=1;cont<=100;++cont){
printf(“%d\t”,cont);
}
}
Su formato es:
Tipo de dato variable = valor inicial
while(condicion) {
instrucciones;
incremento;
32
APUNTES DE PROGRAMACIÓN EN C AUTOR: ING. JORGE LUIS RIVERA HERNÁNDEZ 09
}
La condición puede ser cualquier expresión, y cualquier valor distinto de cero. El
ciclo itera mientras la condición es cierta. Cuando la condición se hace falsa, el
control del programa pasa a la línea siguiente al código del ciclo.
Programa de ejemplo:
/*Programa que escribe los números del 1 al 10 */
#include <stdio.h>
main()
{
int numero=1;
while(numero<=10) {
printf("%d\n",numero);
numero++;
}
}
.
SENTENCIA DE CONTROL do - while
Con esta sentencia se controla la condición al final del bucle. Si ésta se cumple, el
programa vuelve a ejecutar las sentencias del bucle.
La única diferencia entre las sentencias while y do-while es que con la segunda el
cuerpo del bucle se ejecutará por lo menos una vez.
Su formato es:
int inicio;
do{
instrucciones
.
.
incremento;
}while (condición);
Programa de ejemplo:
/*La suma de números pares*/
#include<stdio.h>
main()
{ int numero=2,suma=0;
33
APUNTES DE PROGRAMACIÓN EN C AUTOR: ING. JORGE LUIS RIVERA HERNÁNDEZ 09
do{
suma+=numero;
numero+=2;
}while(numero<=100);
printf("La suma es%d\n", suma);
}
BUCLES ANIDADOS
Los bucles se pueden anidar uno entre otro. Loa bucles internos y externos no
necesitan ser generados por el mismo tipo de estructura de control. Pero es
importante que un bucle se encuentre incluido dentro del otro. Cada bucle debe ser
controlado por un índice diferente.
Programa de ejemplo:
/*Uso de bucles anidados for*/
#include<stdio.h>
main()
{ int i,j,x,y;
printf("introduzca numeros enteros del 1 al 20 ");
scanf("%d%d",&x,&y);
for(i=1;i<=x;i++) {//Líneas
for(j=1;j<=y;j++)//Columnas
printf(" @ ");
printf("\n");
}
}
.
SENTENCIA break
Esta sentencia se utiliza para terminar la ejecución de un bucle o salir de una
sentencia switch.
Programa de ejemplo:
#include<stdio.h> /*Interrupcion de un ciclo infinito utilizando la instrucción for */
main()
{
int c;
printf("Introduce un caracter:\n(puslse x para salir)\n");
for(;;) {
c=getchar();
if(c=='x') break;
}
printf("El ciclo infinito ha sido interumpido. ¡Hasta pronto!\n");
}
SENTENCIA continue
Se utiliza dentro de un bucle. Cuando el programa llega a una sentencia continue no
ejecuta las líneas de código que hay a continuación y salta a la siguiente iteración
del bucle.
Programa de ejemplo
34
APUNTES DE PROGRAMACIÓN EN C AUTOR: ING. JORGE LUIS RIVERA HERNÁNDEZ 09
/*Programa que escribe del 1 al l 100 menos el 25 y el 50 */
#include <stdio.h>
main()
{ Int numero;
For(numero=1;numero<=100;++numero){
If(numero==25||numero==50)
Continue;
Printf(“%d\t”,numero);
}
}
SENTENCIA goto
permite al programa saltar hacia un punto identificado con una etiqueta, pero el
buen programador debe prescindir de su utilización. Es una sentencia muy mal
vista en la programación.
Su formato es: goto etiqueta
Programa de ejemplo:
/*Programa que calcula la velocidad de un móvil aplicando la sentencia goto*/
#include<stdio.h>
main()
{ float V, d, t;
int ref;
ref: printf("Introduzca los valores de d y t: ");
scanf("%f%f",&d,&t);
V = d/t;
printf( "V = %f Km/h\n", V);
printf("para regresar pulse el numero indicado: ");
scanf("%d",& ref);
if(ref ==5)
goto ref;
printf("El resultado del Area es: %.2f m.c.", A);
getch();
}
36
APUNTES DE PROGRAMACIÓN EN C AUTOR: ING. JORGE LUIS RIVERA HERNÁNDEZ 09
printf ("No. de control:\n ");
printf(" el número de bytes de la variable c es %d\n", n);
n= sizeof(d);
printf(" el número de bytes de la variable d es %d\n", n);
n= sizeof(int);
printf(" el número de bytes que ocupa el tipo entero es %d\n", n);
printf(" el número de bytes que ocupa el tipo double es %d",sizeof(double));
}
37
APUNTES DE PROGRAMACIÓN EN C AUTOR: ING. JORGE LUIS RIVERA HERNÁNDEZ 09
if(a%2==0)//isualiza numeros pares
printf("%d \t", a);
}
}
40
APUNTES DE PROGRAMACIÓN EN C AUTOR: ING. JORGE LUIS RIVERA HERNÁNDEZ 09
f = 123456;
printf("Practica 27\n");
printf ("Nombre: \n");
printf ("No. de control: \n");
printf("%10d%d\n",a,a);
printf("%10d%d\n",b,b);
printf("%10d%d\n",c,c);
printf("%10d%d\n",d,d);
printf("%10d%d\n",e,e);
printf("%10d%d\n",f,f);
}
41
APUNTES DE PROGRAMACIÓN EN C AUTOR: ING. JORGE LUIS RIVERA HERNÁNDEZ 09
gets(nombre);
printf("Por favor ,introduce la primera nota: ");
scanf("%f",¬a1);
printf("Por favor, introduce la segunda nota: ");
scanf("%f",¬a2);
printf("Por favor, introduce la tercera nota: ");
scanf("%f",¬a3);
Promedio = (nota1+nota2+nota3)/3;
printf("n\nNombre: %s\n\n", nombre);
printf("Nota 1: %-5.1f\n",nota1);
printf("Nota 2: %-5.1f\n",nota2);
printf("Nota 3: %-5.1f\n\n",nota3);
printf("Tu Promedio es: %-5.1f\n\n",Promedio);
}
#include <stdio.h>
main()
{
float cels, farh;
farh = 35.0;
printf("Practica 32\n");
printf ("Nombre: \n");
printf ("No. de control: \n");
cels = 5.0 * ( farh - 32.0 ) / 9.0;
printf(" %.2f Grados Farh Equivalen a %f grados Cels", farh, cels );
}
/*Programa que extrae las raíces de una ecuación de este tipo Ax*x+Bx+C=0 */
#include<stdio.h>
#include<math.h>
main()
{
float A,B,C,raiz,sol1,sol2;
printf("Practica 33\n");
printf ("Nombre: \n");
printf ("No. de control: \n");
printf("\nIntroduzca el termino de la x al cuadrado: ");
42
APUNTES DE PROGRAMACIÓN EN C AUTOR: ING. JORGE LUIS RIVERA HERNÁNDEZ 09
scanf("%f",&A);
printf("\nIntroduzca el termino de la x: ");
scanf("%f",&B);
printf("\nIntroduzca el termino independiente: ");
scanf("%f",&C);
raiz=B*B-4*A*C;
sol1=(-B-sqrt(raiz))/(2*A);
sol2=(-B+sqrt(raiz))/(2*A);
printf("\nSolución 1= %f",sol1);
printf("\nSolución 2= %f",sol2);
}
43
APUNTES DE PROGRAMACIÓN EN C AUTOR: ING. JORGE LUIS RIVERA HERNÁNDEZ 09
scanf("%f",&Angulo);
if (Angulo < 90)
printf("El angulo es agudo");
if (Angulo == 90)
printf("El angulo es recto ");
if (Angulo>90 && Angulo<180)
printf("El angulo es obtuso ");
if (Angulo == 180)
printf("El angulo es llano ");
if (Angulo>180 && Angulo<360)
printf("El angulo es concavo ");
}// Fin del programa
44
APUNTES DE PROGRAMACIÓN EN C AUTOR: ING. JORGE LUIS RIVERA HERNÁNDEZ 09
printf ("No. De control: \n");
printf("\n\tcual fue tu promedio?: ");
scanf("%f", &prom);
if(prom>=90)
{desc = 0.2;
}
else if(prom>=80&&prom<90) {desc = 0.1;
}
else if(prom>=70&&prom<80){
desc = 0.05;
}
else
{
desc = 0;
}
tot = coleg-coleg*desc;
printf("\n\tTu colegiatura sera de: %.2f",tot);
return 0;
}
45
APUNTES DE PROGRAMACIÓN EN C AUTOR: ING. JORGE LUIS RIVERA HERNÁNDEZ 09
printf("\n1-Pesos a Euros\n2-Euros a pesos\n");
scanf("%d",&opcion);
switch(opcion)
{
case 1: conversion=cantidad/24.99;
printf("\n%.2f Pesos son %.2f Euros",cantidad,conversion);
break;
case 2:
conversion=cantidad*24.99;
printf("\n%.2f Euros son %.2f Pesos",cantidad,conversion);
break;
default:
printf("\nOpcion incorrecta");
}
}
46
APUNTES DE PROGRAMACIÓN EN C AUTOR: ING. JORGE LUIS RIVERA HERNÁNDEZ 09
b=1;
while (b<=10) {
printf("%d * %d = %d\n",a,b,a*b);
b++;
}
}
47
APUNTES DE PROGRAMACIÓN EN C AUTOR: ING. JORGE LUIS RIVERA HERNÁNDEZ 09
++cont; suma+=cont;
}while(cont<=10);
}
48
APUNTES DE PROGRAMACIÓN EN C AUTOR: ING. JORGE LUIS RIVERA HERNÁNDEZ 09
printf("Cuantas listas? ");
scanf("%d",&bucles);
/* bucle exterior procesa cada lista de números */
for(cbucles=1; cbucles<=bucles; ++cbucles) {
/*inicializar y leer el valor de n*/
suma =0;
printf("\n lista numero %d\n cuantos numeros? ", cbucles);
scanf("%d",&n); /*leer los números*/
for(contador =1; contador<=n;++contador) {
printf("x=");
scanf("%f",&x);
suma+=x;
} /*fin del bucle interno */
/*calcular la media y escribir la respuesta*/
media =suma/n;
printf("\n La media se: %f\n",media);
} /* fin del bucle externo */
return 0;
}
49
APUNTES DE PROGRAMACIÓN EN C AUTOR: ING. JORGE LUIS RIVERA HERNÁNDEZ 09
printf ("Nombre del alumno: \n");
printf ("No. De control: \n");
/*Leer parametros de entrada*/
printf("Valor inicial: ");
scanf("%f",&valor);
/*Comienza bucle principal*/
while(indicador) {
++cont;
if(cont==50) indicador = FALSO;
test=10 -3*valor*valor;
if(test>0) {
/*Inicializa otra iteración*/
raiz=exp(0.2*log(test));
printf("\nIteracion numero: %2d", cont);
printf(" x=%7.5f",raiz);
error=fabs(raiz-valor);
if(error>0.00001) valor =raiz;/*Repetir el calculo*/
else {
indicador=FALSO;
printf("\n\nRaiz=%7.5f",raiz);
printf("No. de iteraciones = %2d",cont);
}
}
else {
/*Mensaje de error*/
indicador=FALSO;
printf("\nNumeros fuera de rango - intenta con otro valor inicial");
}
}
if((cont==50)&&(error>0.00001)) /*Otro mensaje de error*/
printf("\n\nConvergencia no obtenida tras 50 iteraciones");
return 0;
}
50
APUNTES DE PROGRAMACIÓN EN C AUTOR: ING. JORGE LUIS RIVERA HERNÁNDEZ 09
break;
printf("%d\n", x);
}
printf("la corrida se frena cuando x==%d\n",x);
}
51
APUNTES DE PROGRAMACIÓN EN C AUTOR: ING. JORGE LUIS RIVERA HERNÁNDEZ 09
FECHA:
SALIDA:
52
APUNTES DE PROGRAMACIÓN EN C AUTOR: ING. JORGE LUIS RIVERA HERNÁNDEZ 09