Professional Documents
Culture Documents
for
while
do while
for
La instruccin for permite repetir un conjunto de instrucciones una cierta cantidad de veces. Su
formato general es:
Ejemplo 24: Programa que calcula la sumatoria de los "n" primeros nmeros. El valor de n
es ingresado por teclado.
#include <stdio.h>
main() {
int i, num, suma=0;
Ejemplo 25: Programa al cual se le ingresa por teclado un nmero y calcula su respectivo
factorial.
#include <stdio.h>
main() {
int i, num, factorial=1;
printf( "Ingrese un numero entero: " );
scanf( "%i", &num );
for( i=1 ; i<=num ; i++ )
{
factorial = factorial*i;
}
printf( "El factorial de los %i primeros numeros es: %i\n", num, factorial );
system("PAUSE");
}
ASCII.
#include <stdio.h>
main() {
int i;
for(i=0;i<256;i++){
printf("El codigo ASCII del caracter %c: %i\n",(char)i, i);
letra++;
}
system("PAUSE");
}
while
La instruccin while (mientras) es otra instruccin que nos permite implementar un bucle. Su
formato es:
while ( condicin )
{
<bloque de instrucciones>
}
Para que se ejecute el <bloque_de_instrucciones>, la condicin tiene que ser verdadera. Por el
contrario, si la condicin es falsa, el <bloque_de_instrucciones> no se ejecuta. Por tanto,
cuando el flujo de un programa llega a un bucle while, existen dos posibilidades:
Ejemplo 27: Programa que solicita el ingreso de una nota vigesimal y la vlida.
Observar que la condicin es que:
nota >= 0 y nota <= 20
AND
Cuando queremos validar con una instruccin While, lo que debemos hacer es tomar la
"condicin negativa", esto es:
nota < 0 o nota > 20
OR
#include <stdio.h>
main() {
float nota;
printf( "Ingrese su nota: " );
scanf( "%f", ¬a );
while ( nota < 0 || nota > 20 )
{
printf( "\nERROR: Nota incorrecta, la nota debe ser 0 <= nota<= 20\n" );
printf( "\nIngrese nuevamente su nota: " );
scanf( "%f", ¬a );
}
system("PAUSE");
}
Los cdigos ASCII de los caracteres para el AND y OR son:
Ejemplo 28: Programa que calcula la sumatoria de las races cuadradas de los nmeros
que van desde a hasta b. Dichos nmeros son ingresados desde el teclado. Se considera
que: 0 <= a <= b.
#include <stdio.h>
main() {
int a, b, i;
float suma=0;
/* Ingresar valores de limites inferior y superior. */
printf ("Ingrese valor del limite inferior:");
scanf ("%i", &a);
while (a < 0) {
printf ("El numero no puede ser negativo\n");
printf ("Ingrese nuevamente el valor del limite inferior:");
scanf ("%i", &a);
}
printf ("Ingrese valor del limite superior:");
do while
Es otra instruccin de bucle, su formato es:
do
{
instrucciones a ejecutar
} while ( condicin );
La diferencia entre while y do-while es que en este ltimo, la condicin va despues del conjunto
de instrucciones a ejecutar. De esta forma, las instrucciones se ejecutan al menos una vez.
#include <stdio.h>
main() {
char seguir;
int suma=0, numero;
do {
#include <stdio.h>
main() {
int i, numero,factorial=1;
do {
printf("Ingrese un numero entero mayor o igual a cero: ");
scanf( "%i", &numero);
} while (numero<0);
for(i=1;i<=numero;i++){
factorial=factorial*i;
}
printf("El factorial de %i es: %i\n",numero,factorial);
system("PAUSE");
}
Ejemplo 31:
#include <stdio.h>
main() {
int i, numero;
do {
printf("Ingrese un numero entero mayor o igual a cero: ");
scanf( "%i", &numero);
} while (numero<0);
for(i=0;i<numero;i++){
printf("*");
}
printf("\n");
system("PAUSE");
}
Ejemplo 32: Programa que convierte un nmero entero mayor o igual a cero en binario (si
el nmero ingresado es menor que cero, debe solicitar el ingreso nuevamente).
Recordemos el procedimiento para pasar un nmero decimal a binario:
#include <stdio.h>
#include <math.h>
main() {
int exp=0,numero,digito,binario=0;
do {
printf("Ingrese un numero entero mayor o igual a cero: ");
scanf( "%i", &numero);
} while (numero<0);
while(numero!=0){
digito= numero%2;
binario=binario+digito*pow(10,exp);
exp=exp+1;
numero=numero/2;
}
printf("El binario es: %i\n", binario);
system("PAUSE");
}
EJERCICIOS
Ejercicio 1: Escribir un programa que muestre en pantalla lo siguiente:
Solucin:
#include <stdio.h>
main() {
int i, j;
for( i=1; i<6; i++ ) {
for( j=0; j<i; j++ ){
printf( "*" );
}
printf( "\n" );
}
system("PAUSE");
}
Ejercicio 2:
Ejercicio 4: Elaborar un programa que grafique una onda seno. El programa debe solicitar
los siguientes datos:
ESTRUCTURAS DE CONTROL
En un lenguaje de programacin, las estructuras de control permiten modificar el flujo de
ejecucin de las instrucciones de un programa.
Las estructuras de control determinan la secuencia de ejecucin de las sentencias de un
programa. Las estructuras de control se dividen en tres categoras:
Secuencial
Condicional o Selectiva
Interativa o Repetitiva.
ESTRUCTURAS CONDICIONALES
Todos los programas que hemos desarrollado han sido lineales, esto significa que empezaban
por la primera instruccin y finalizaba en la ltima instruccin. Pero resulta que muchas veces
queremos que ciertas instrucciones se ejecuten en funcin a ciertas condiciones. Para esto
estn las sentencia de control de flujo o sentencias de condicin.
if
La palabra if significa si (condicional). Su formato es el siguiente:
if ( condicin )
{
<bloque de instrucciones>
}
Cuando se cumple la condicin entre parntesis se ejecuta el bloque inmediatamente siguiente
al if(bloque de instrucciones).
Ejemplo 33: Programa que solicita el ingreso por teclado de dos nmeros enteros y los
compara, indicando si el primero es mayor, menor o igual que el segundo nmero ingresado.
#include <stdio.h>
main() {
int num1,num2;
printf ("Ingrese el primer numero entero: ");
scanf ("%i", &num1);
printf ("Ingrese el segundo numero entero: ");
scanf ("%i", &num2);
if (num1 > num2)
printf ("El numero %i es mayor que %i\n",num1,num2);
if (num1 < num2)
printf ("El numero %i es menor que %i\n",num1,num2);
if (num1 == num2)
printf ("El numero %i es igual que %i\n",num1,num2);
system("PAUSE");
}
If - else
El formato es el siguiente:
if ( condicin )
{
<bloque que se ejecuta si se cumple la condicin>
}
else
{
<bloque que se ejecuta si no se cumple la condicin>
}
Tenemos un bloque de instrucciones que se ejecuta si la condicin es verdadera y otro bloque
de instrucciones que se ejecuta si la condicin es falsa.
#include <stdio.h>
main() {
int num;
printf ("Ingrese un entero: ");
scanf ("%i", &num);
if (num % 2 == 0) {
printf ("El numero %i es par.\n",num);
}
else {
printf ("El numero %i es impar.\n",num);
}
system("PAUSE");
}
Ejemplo
35: Programa que lee tres nmeros enteros: hora (H), minutos (M)
y segundos (S) respectivamente, y compruebe si la hora especificada es una hora vlida. La
hora se especifica en modo de 24 horas.
#include <stdio.h>
main() {
int H,M,S;
printf("Ingrese la hora: ");
scanf("%i",&H);
printf("Ingrese los minutos: ");
scanf("%i",&M);
printf("Ingrese los segundos: ");
scanf("%i",&S);
if(H>=0 && H<24 && M>=0 && M<60 && S>=0 && S<60)
printf("Hora correcta\n");
else
printf("Hora incorrecta\n");
system("PAUSE");
}
#include <stdio.h>
main() {
int H,M,S;
printf("Ingrese la hora: ");
scanf("%i",&H);
printf("Ingrese los minutos: ");
scanf("%i",&M);
printf("Ingrese los segundos: ");
scanf("%i",&S);
if(H>=0 && H<24 && M>=0 && M<60 && S>=0 && S<60){
if (H<10)
printf("0%i:",H);
else
printf("%i:",H);
if (M<10)
printf("0%i:",M);
else
printf("%i:",M);
if (S<10)
printf("0%i\n",S);
else
printf("%i\n",S);
}
else
printf("Hora incorrecta\n");
system("PAUSE");
}
En la solucin empleamos un solo if para realizar las dos preguntas (las cuales estn "unidas"
por el operador OR.
if else if
La instruccin if else if significa podemos colocar un if dentro de otros if y asi sucesivamente.
Esto se llamada anidar.
Ejemplo 38: Programa al cual se le ingresan dos nmeros enteros e indica si el primero
es mayor, menor o igual que el segundo.
#include <stdio.h>
main() {
int num1, num2;
printf ("Ingrese el primer numero: ");
Ejemplo 39: Programa que solicita el ingreso de un nmero entero e indica si es menor a
10, si esta entre 10 y 100 o si es mayor o igual a 100.
#include <stdio.h>
main() {
int a;
printf( "Ingrese un numero: " );
scanf( "%i", &a );
if ( a<10 ) {
printf ( "El numero ingresado es menor de 10\n" );
}
else {
if ( a>10 && a<100 ){
printf ( "El numero ingresado esta entre 10 y 100\n" );
}
else {
if ( a>=100 ){
printf( "El numero es mayor o igual a 100\n" );
}
}
}
printf( "Fin del programa\n" );
system("PAUSE");
}
Ejemplo 40: Programa al cual le ingrese una letra y enva a pantalla un mensaje indicando
si es un letra en mayscula o minscula.
#include <stdio.h>
main() {
char letra;
printf("Ingrese una letra: ");
scanf("%c",&letra);
if(('A'<= letra) && (letra <='Z'))
printf("Es una letra mayuscula\n");
else{
if(('a'<= letra) && (letra <='z'))
printf("Es una letra minuscula\n");
else
printf("No es una letra\n");
}
system("PAUSE");
}
#include <stdio.h>
main() {
int n1, n2, n3;
do {
printf("Ingrese primer numero entero mayor o igual a cero: ");
scanf( "%i", &n1);
} while (n1<0);
do {
printf("Ingrese segundo numero entero mayor o igual a cero: ");
scanf( "%i", &n2);
} while (n2<0);
do {
printf("Ingrese tercer numero entero mayor o igual a cero: ");
scanf( "%i", &n3);
} while (n3<0);
if(n1 > n2)
if(n1 > n3)
printf("El mayor numero es: %i\n", n1);
else
printf("El mayor numero es: %i\n", n3);
else if(n2 > n3)
printf("El mayor numero es: %i\n", n2);
else
printf("El mayor numero es: %i\n", n3);
system("PAUSE");
}
switch
La sentencia switch sirve par elegir una opcin entre varias disponibles. Aqu no tenemos una
condicin que se debe cumplir sino el valor de una variable. Dependiendo del valor se cumplir
un caso u otro. El formato de la sentencia switch es:
switch ( variable )
{
case opcin1:
cdigo a ejecutar si la variable = opcin1;
break;
case opcin2:
cdigo a ejecutar si la variable = opcin2;
break;
........<bloques de case>
default:
cdigo que se ejecuta si la variable no es igual a ninguno de los valores del case.
break;
}
#include <stdio.h>
main() {
int dia;
printf("Ingrese un digito del 1 al 7 que represente un dia de la semana: ");
scanf("%i",&dia);
switch(dia) {
case 1 :
printf("Lunes\n");
break;
case 2 :
printf("Martes\n");
break;
case 3 :
printf("Miercoles\n");
break;
case 4 :
printf("Jueves\n");
break;
case 5 :
printf("Viernes\n");
break;
case 6 :
printf("Sabado\n");
break;
case 7 :
printf("Domingo\n");
break;
default :
printf("El digito ingresado no es valido\n");
break;
}
system("PAUSE");
}
Ejemplo 43: Programa al cual se le ingresa dos nmeros enteros y un operador (suma,
resta, multiplicacin o divisin) y calcula la operacin. El programa:
Valida que el segundo nmero no sea cero para la operacin de divisin. Si es cero
presenta el mensaje "No se puede dividir por cero".
#include <stdio.h>
main(){
int A,B;
char operacion;
printf("Ingrese el primer numero entero: ");
scanf("%i",&A);
printf("Ingrese el segundo numero entero: ");
scanf("%i",&B);
printf("Ingrese el operador (+,-,*,/): ");
operacion=getch();
printf("%c\n",operacion);
switch (operacion){
case '-': printf("El resultado es: %i\n",(A-B)); break;
case '+': printf("El resultado es: %i\n ",(A+B)); break;
case '*': printf("El resultado es: %i\n",(A*B)); break;
case '/':
if(B!=0)
printf("El resultado es: %f\n",(1.0*A)/B);
else
printf("No se puede dividir por cero");
break;
default : printf("Operador no valido");
}
system("PAUSE");
}
#include <stdio.h>
main() {
int mes,anio;
printf("Ingrese el anio: ");
scanf("%i",&anio);
printf("Ingrese el numero de mes (1-12): ");
scanf("%i",&mes);
switch(mes){
case 1:case 3:case 5:case 7:case 8:case 10:case 12:
printf("El mes tiene 31 dias ");break;
case 4:case 6:case 9:case 11:
printf("El mes tiene 30 dias");break;
case 2:
if((anio%4==0 && anio%100!=0) || anio%400==0)
printf("El mes tiene 29 dias");
else
printf("El mes tiene 28 dias");break;
default:
printf("No es un numero de mes valido");break;
}
}
EJERCICIOS
Ejercicio 1: Desarrollar
Solucin:
#include <stdio.h>
main() {
int i, numero=0, primo=1;
while (numero<2){
printf("Ingrese un numero entero mayor que 1: ");
scanf( "%i", &numero);
}
for (i=2;i<numero;i++){
if (numero%i==0)
primo = 0;
}
if(primo==0)
printf("El numero ingresado no es primo\n");
else
printf("El numero ingresado es primo\n");
system("PAUSE");
}
#include <stdio.h>
main() {
int i, numero=0, primo=1;
while (numero<2){
printf("Ingrese un numero entero mayor que 1: ");
scanf( "%i", &numero);
}
i=2;
while (primo==1 && i<numero){
if (numero%i==0)
primo = 0;
i=i+1;
}
if(primo==0)
printf("El numero ingresado no es primo\n");
else
printf("El numero ingresado es primo\n");
system("PAUSE");
}
Solucin:
#include <stdio.h>
main() {
int i, numero=0;
while (numero<2){
printf("Ingrese un numero entero mayor que 1: ");
scanf( "%i", &numero);
}
for (i=1;i<=numero;i++){
if (numero%i==0)
printf("%i,",i);
}
printf("\n");
system("PAUSE");
}
Ejercicio 3: Desarrollar
Solucin:
#include <stdio.h>
main() {
int i,j,numero=0,primo;
while (numero<2){
printf("Ingrese un numero entero mayor que 1: ");
scanf( "%i", &numero);
}
for(j=2;j<=numero;j++){
primo=1;
for (i=2;i<j;i++){
if (j%i==0)
primo = 0;
}
if(primo==1)
printf("%i,",j);
}
printf("\n");
system("PAUSE");
}
Validar que se esta ingresado un dgito hexadecimal. Si no lo es, debe displayar: "No
es un dgito hexadecimal".
El programa debe funcionar independiente si se ingresa en maysculas o minsculas.
PRCTICA DIRIGIDA
Problema 1: Elaborar un programa que solicite el ingreso del largo y ancho de un rectngulo y
que imprima asteriscos en los vrtices. Los nmeros ingresados deben ser mayores o iguales a
cero, de no ser as el programa debe solicitar nuevamente el ingreso.
Problema 2: Elaborar un programa que solicite el ingreso del largo y ancho de un rectngulo y
lo imprima en pantalla (solo el borde) empleando el caracter asterisco. Los nmeros ingresados
deben ser mayores o iguales a cero, de no ser as el programa debe solicitar nuevamente el
ingreso (Problema tomado en el Examen Parcial del semestre 2013-2).
En el siguiente grfico podemos observar como sera el rectngulo para los datos: largo = 8 y
ancho = 4
APLICACIONES EN MATMATICAS
Ejemplo: Elaborar un programa que solicite el ingreso del permetro de un rectngulo (el
cual debe ser entero mayor a cero) y calcule los valores de los lados para obtener la mxima
rea. El programa debe imprimir el rea mxima y los lados a y b.
#include <stdio.h>
main() {
double i, perimetro, a=0, b=0, area, areamax=0;
do{
printf("Ingrese el perimetro del rectangulo: ");
scanf( "%lf", &perimetro);
}while(perimetro<=0);
for(i=0.1;i<=perimetro;i=i+0.1){
area=((perimetro/2)-i)*i;
if (area>areamax){
areamax=area;
a=i;
b=(perimetro/2)-i;
printf("%.2f\n",areamax);
}
}
printf("El area maxima es: %.2f\n",areamax);
printf("El lado a es: %.2f\n",a);
printf("El lado b es: %.2f\n",b);
system("PAUSE");
}
Ejemplo: Elaborar un programa que permita calcular experimentalmente a que ngulo, las
reas A1 y A2 son iguales. El programa debe solicitar el ingreso del valor del radio de la
circunferencia (la cual debe ser mayor a cero). Se debe imprimir el A1, A2 y el ngulo en
sexagesimal. Los resultados deben ser redondeados a 3 decimales.
ARRAY
Un array es un conjunto de variables del mismo tipo que tienen el mismo nombre y se
diferencian en el ndice.
Declaracin de un Array
La forma general de declarar un array es la siguiente:
Inicializar un array
En C se pueden inicializar los arrays al declararlos igual que con las variables.
int temperaturas [10] = { 15, 18, 20, 23, 22, 24, 22, 25, 26, 25 };
El primer elemento de este arreglo es: