Introducci on a los Computadores Estructuras de...

59
Introducci´ on Ciclo for Ciclo while Ciclo do-while Ejemplos Introducci´ on a los Computadores Estructuras de control repetitivas en C CNM-130 Departamento de Matem´ aticas Facultad de Ciencias Exactas y Naturales Universidad de Antioquia Copyleft 2009. Reproducci´on permitida bajo los erminos de la licencia de documentaci´on libre GNU.

Transcript of Introducci on a los Computadores Estructuras de...

Page 1: Introducci on a los Computadores Estructuras de …virtual.usalesiana.edu.bo/web/conte/practica/22012/2081.pdf · Introducci on Ciclo for Ciclo while Ciclo do-while Ejemplos Estructuras

Introduccion Ciclo for Ciclo while Ciclo do-while Ejemplos

Introduccion a los ComputadoresEstructuras de control repetitivas en C

CNM-130

Departamento de MatematicasFacultad de Ciencias Exactas y Naturales

Universidad de Antioquia

Copyleft «2009. Reproduccion permitida bajo los

terminos de la licencia de documentacion libre GNU.

Page 2: Introducci on a los Computadores Estructuras de …virtual.usalesiana.edu.bo/web/conte/practica/22012/2081.pdf · Introducci on Ciclo for Ciclo while Ciclo do-while Ejemplos Estructuras

Introduccion Ciclo for Ciclo while Ciclo do-while Ejemplos

Contenido

1 Introduccion

2 Estructura repetitiva for

3 Estructura repetitiva while

4 Estructura repetitiva do-while

5 Ejemplos

Page 3: Introducci on a los Computadores Estructuras de …virtual.usalesiana.edu.bo/web/conte/practica/22012/2081.pdf · Introducci on Ciclo for Ciclo while Ciclo do-while Ejemplos Estructuras

Introduccion Ciclo for Ciclo while Ciclo do-while Ejemplos

Estructuras de control repetitivas

Las estructuras de control permiten modificar el flujo de ejecucionde las instrucciones de un algoritmo o programa

Se utilizan cuando en el desarrollo de la solucion de un problema sehace necesario ejecutar una serie de instrucciones un numero repetidode veces

El conjunto de instrucciones que se ejecuta repetidamente se llamaciclo o bucle

Cada vez que se ejecuta el bucle se dice que se ha producido unaiteracion

Los bucles constituyen, junto con las sentencias condicionales, lospilares de la programacion estructurada.

Caracterısticas de los ciclos

Deben incluir una condicion de parada

Deben finalizar luego de un numero finito de veces

Page 4: Introducci on a los Computadores Estructuras de …virtual.usalesiana.edu.bo/web/conte/practica/22012/2081.pdf · Introducci on Ciclo for Ciclo while Ciclo do-while Ejemplos Estructuras

Introduccion Ciclo for Ciclo while Ciclo do-while Ejemplos

Tipos de estructuras repetitivas

Ciclo para (for)

Se conoce a priori el numero de veces que se debe repetir el conjunto deinstrucciones

El numero de repeticiones no depende de las sentencias contenidas en elciclo

Ciclo mientras (while)

No se conoce a priori el numero de veces que se debe repetir el conjuntode instrucciones

La condicion de parada se evalua antes de ejecutarse el ciclo

El numero de repeticiones puede depender de las sentencias contenidasen el ciclo

Ciclo repetir (do-while)

No se conoce a priori el numero de veces que se debe repetir el conjuntode instrucciones

Se ejecuta primero el ciclo y luego se evalua la condicion de parada

El numero de repeticiones puede depender de las sentencias contenidasen el ciclo

Page 5: Introducci on a los Computadores Estructuras de …virtual.usalesiana.edu.bo/web/conte/practica/22012/2081.pdf · Introducci on Ciclo for Ciclo while Ciclo do-while Ejemplos Estructuras

Introduccion Ciclo for Ciclo while Ciclo do-while Ejemplos

Estructura repetitiva for

Elementos del ciclo:

exp1: inicializa la variable de control del ciclo (V = VI)

exp2: condicion de parada del ciclo (V <= VF)

exp3: actualiza la variable de control del ciclo (incrementa o decrementa a V)

for (exp1; exp2; exp3) sentencias;

o para varias sentencias

for (exp1; exp2; exp3) {

sentencias;

}

Page 6: Introducci on a los Computadores Estructuras de …virtual.usalesiana.edu.bo/web/conte/practica/22012/2081.pdf · Introducci on Ciclo for Ciclo while Ciclo do-while Ejemplos Estructuras

Introduccion Ciclo for Ciclo while Ciclo do-while Ejemplos

Ejemplo 2.1

Ejemplo 2.1

Realice un programa en C que imprima los enteros desde el 1 hasta el 10.No utilice estructuras repetitivas.

Solucion

naturales.c

#include<stdio.h>

main(){

// imprime enteros del 1 al 10printf("1 \n");printf("2 \n");printf("3 \n");printf("4 \n");printf("5 \n");printf("6 \n");printf("7 \n");printf("8 \n");printf("9 \n");printf("10 \n");

}

Page 7: Introducci on a los Computadores Estructuras de …virtual.usalesiana.edu.bo/web/conte/practica/22012/2081.pdf · Introducci on Ciclo for Ciclo while Ciclo do-while Ejemplos Estructuras

Introduccion Ciclo for Ciclo while Ciclo do-while Ejemplos

Ejemplo 2.2

Ejemplo 2.2

Resuelva el ejemplo (2.1) en C utilizando estructuras repetitivas.

Solucion

naturales2.c

#include<stdio.h>

main(){int i;

for (i=1; i<=10; i++) printf(" %d \n", i);

}

Page 8: Introducci on a los Computadores Estructuras de …virtual.usalesiana.edu.bo/web/conte/practica/22012/2081.pdf · Introducci on Ciclo for Ciclo while Ciclo do-while Ejemplos Estructuras

Introduccion Ciclo for Ciclo while Ciclo do-while Ejemplos

Ejemplo 2.3

Ejemplo 2.3

Realice una programa en C que imprima los enteros impares desde el 1hasta el 10.

Solucion

naturales3.c

#include<stdio.h>

main(){int i;

for (i=1; i<=10; i+=2) printf(" %d \n", i);

}

Page 9: Introducci on a los Computadores Estructuras de …virtual.usalesiana.edu.bo/web/conte/practica/22012/2081.pdf · Introducci on Ciclo for Ciclo while Ciclo do-while Ejemplos Estructuras

Introduccion Ciclo for Ciclo while Ciclo do-while Ejemplos

Ejemplo 2.4

Ejemplo 2.4

Realice un programa en C que imprima los enteros en orden descendentedesde el 10 hasta el 1.

Solucion

naturales4.c

#include<stdio.h>

main(){int i;

for (i=10; i>=1; i--) printf(" %d \n", i);

}

Page 10: Introducci on a los Computadores Estructuras de …virtual.usalesiana.edu.bo/web/conte/practica/22012/2081.pdf · Introducci on Ciclo for Ciclo while Ciclo do-while Ejemplos Estructuras

Introduccion Ciclo for Ciclo while Ciclo do-while Ejemplos

Contadores en C

Contador: variable que se incrementa o decrementa de formaconstante cada vez que se ejecuta la instruccion que lo contiene

Uso:

Cuenta las veces que ocurre un determinado suceso

Controla la ejecucion de un bucle que se realiza un determinado numerode veces.

Inicializacion: todo contador debe tomar un valor inicial antes de serusado,

tipo Variable Contador = valor;

Sintaxis de un contador en C:

Variable Contador = Variable Contador + constante;

Page 11: Introducci on a los Computadores Estructuras de …virtual.usalesiana.edu.bo/web/conte/practica/22012/2081.pdf · Introducci on Ciclo for Ciclo while Ciclo do-while Ejemplos Estructuras

Introduccion Ciclo for Ciclo while Ciclo do-while Ejemplos

Ejemplo 2.5

Ejemplo 2.5

Realice un programa en C que lea N numeros enteros desde el teclado ycuente cuantos de ellos son ceros.

Solucion

Datos:

N: variable de tipo entero que representa el numero de datos que seingresan

NUM: variable de tipo entero, se utilizara para almacenar los valores delos enteros ingresados.

Variables de salida:

NUMCEROS: variable de tipo entero que actuara de contador, cuenta elnumero de ceros

Page 12: Introducci on a los Computadores Estructuras de …virtual.usalesiana.edu.bo/web/conte/practica/22012/2081.pdf · Introducci on Ciclo for Ciclo while Ciclo do-while Ejemplos Estructuras

Introduccion Ciclo for Ciclo while Ciclo do-while Ejemplos

Ejemplo 2.5

cuenta ceros.c

#include<stdio.h>

main(){int k, N, NUM, NUMCEROS;

NUMCEROS = 0; // inicializa variable contadora

printf("Numero de datos a ingresar: ");

scanf("%d", &N);

for (k=1; k<=N; k++) {

printf("Ingrese numero: ");

scanf("%d", &NUM);

if (NUM==0) NUMCEROS = NUMCEROS + 1;

}

printf("Numero de ceros: %d \n", NUMCEROS);

}

Page 13: Introducci on a los Computadores Estructuras de …virtual.usalesiana.edu.bo/web/conte/practica/22012/2081.pdf · Introducci on Ciclo for Ciclo while Ciclo do-while Ejemplos Estructuras

Introduccion Ciclo for Ciclo while Ciclo do-while Ejemplos

Acumuladores en C

Acumulador: variable que almacena un valor que se incrementa odecrementa de forma variable durante un proceso repetitivo.

Sintaxis de un acumulador:

Variable Acumulador = Variable Acumulador + variable;

Variable Acumulador = Variable Acumulador - variable;

Variable Acumulador = Variable Acumulador * variable;

Inicializacion: todo acumulador debe tomar un valor inicial antes de serusado

Cuando el acumulador varıa por suma sucesiva de variables se inicializaa 0:

(tipo) Variable Acumulador = 0;

Cuando el acumulador varıa por producto sucesiva de variables seinicializa a 1:

(tipo) Variable Acumulador = 1;

Page 14: Introducci on a los Computadores Estructuras de …virtual.usalesiana.edu.bo/web/conte/practica/22012/2081.pdf · Introducci on Ciclo for Ciclo while Ciclo do-while Ejemplos Estructuras

Introduccion Ciclo for Ciclo while Ciclo do-while Ejemplos

Ejemplo 2.6

Ejemplo 2.6

Realice programa en C que sume los numeros enteros desde 1 hasta N .

Solucion

Datos:

N: variable de tipo entero que representa el entero hasta donde serealiza la suma

SUMA: variable de tipo entero que actuara de acumulador; almacena lasuma de los primeros N numeros naturales

1 + 2 + · · · + N

Variables de salida:

SUMA

Page 15: Introducci on a los Computadores Estructuras de …virtual.usalesiana.edu.bo/web/conte/practica/22012/2081.pdf · Introducci on Ciclo for Ciclo while Ciclo do-while Ejemplos Estructuras

Introduccion Ciclo for Ciclo while Ciclo do-while Ejemplos

Ejemplo 2.5

suma enteros.c

#include<stdio.h>

main(){int i, N, SUMA;

SUMA = 0; // inicializa variable acumuladora

printf("Numero numero de enteros a sumar: ");

scanf("%d", &N);

for (i=1; i<=N; i++) {SUMA += i; // SUMA = SUMA + i

}

printf("La suma es: %d \n", SUMA);

}

Page 16: Introducci on a los Computadores Estructuras de …virtual.usalesiana.edu.bo/web/conte/practica/22012/2081.pdf · Introducci on Ciclo for Ciclo while Ciclo do-while Ejemplos Estructuras

Introduccion Ciclo for Ciclo while Ciclo do-while Ejemplos

Ejemplo 2.7

Ejemplo 2.7

El factorial de un numero entero no negativo n se define como

n! = 1 · 2 · · · (n− 1) · n , con 0! = 1 y 1! = 1

Escriba un programa en C que calcule el factorial de un entero N ≥ 1.

Solucion

Datos:

N: variable de tipo entero que representa el entero hasta donde serealiza el producto

PROD: variable de tipo entero que actuara de acumulador; almacena elproducto de los primeros N numeros naturales

1 * 2 * · · · * N

Variables de salida:

PROD

Page 17: Introducci on a los Computadores Estructuras de …virtual.usalesiana.edu.bo/web/conte/practica/22012/2081.pdf · Introducci on Ciclo for Ciclo while Ciclo do-while Ejemplos Estructuras

Introduccion Ciclo for Ciclo while Ciclo do-while Ejemplos

Ejemplo 2.7

factorial.c

#include<stdio.h>

main(){int i, N, PROD;

PROD = 1; // inicializa variable acumuladora

printf("Ingrese N: ");

scanf("%d", &N);

for (i=1; i<=N; i++) {PROD *= i; // PROD = PROD * i

}

printf("El factorial es: %d \n", PROD);

}

Page 18: Introducci on a los Computadores Estructuras de …virtual.usalesiana.edu.bo/web/conte/practica/22012/2081.pdf · Introducci on Ciclo for Ciclo while Ciclo do-while Ejemplos Estructuras

Introduccion Ciclo for Ciclo while Ciclo do-while Ejemplos

Estructura repetitiva mientras

La estructura repetitiva while (mientras) es utilizada en un ciclocuando no sabemos el numero de veces que este se ha de repetir

Elementos del bucle:

EXPRESION: sentencia booleana que determina si se ejecuta el bucle

sentencias: instrucciones a ejecutar si EXPRESION es verdadera

while (EXPRESION) sentencias;

o para varias sentencias:

while (EXPRESION) {

sentencias;

}

Page 19: Introducci on a los Computadores Estructuras de …virtual.usalesiana.edu.bo/web/conte/practica/22012/2081.pdf · Introducci on Ciclo for Ciclo while Ciclo do-while Ejemplos Estructuras

Introduccion Ciclo for Ciclo while Ciclo do-while Ejemplos

Ejemplo 3.1

Ejemplo 3.1

Realice un programa en C que muestre en pantalla la suma de dos numerosenteros leidos por teclado y que permita repetir el proceso cuantas veces sedesee.

Solucion

Variables:

NUM1: variable de tipo entero, almacena el primer numero leido

NUM2: variable de tipo entero, almacena el segundo numero leido

suma: variable de tipo entero, almacena la suma de los numeros leidos

RESPUESTA: variable de tipo de caracter, dependiendo de la respuestaalmacenada se ejecuta o no el ciclo

Page 20: Introducci on a los Computadores Estructuras de …virtual.usalesiana.edu.bo/web/conte/practica/22012/2081.pdf · Introducci on Ciclo for Ciclo while Ciclo do-while Ejemplos Estructuras

Introduccion Ciclo for Ciclo while Ciclo do-while Ejemplos

Ejemplo 3.1

suma2.c

#include<stdio.h>

main(){int NUM1, NUM2, suma;char RESPUESTA;

printf("Desea sumar dos enteros (S/N)?: ");scanf(" %c", &RESPUESTA);

while (RESPUESTA==’S’) {printf("Ingrese entero 1: ");scanf(" %c", &NUM1);

printf("Ingrese entero 2: ");scanf(" %d", &NUM2);

suma = NUM1 + NUM2;

printf("La suma es %d \n", suma);

printf("Desea sumar dos enteros (S/N)?: ");scanf(" %c", &RESPUESTA);

}}

Page 21: Introducci on a los Computadores Estructuras de …virtual.usalesiana.edu.bo/web/conte/practica/22012/2081.pdf · Introducci on Ciclo for Ciclo while Ciclo do-while Ejemplos Estructuras

Introduccion Ciclo for Ciclo while Ciclo do-while Ejemplos

Ejemplo 3.2

Ejemplo 3.2

Realice un programa en C que calcule el promedio de los primeros N

numeros naturales. Utilice las estructurtas repetitivas mientras y para.

Solucion

Variables:

N: variable de tipo entero, almacena el ultimo entero

NUM: variable de tipo entero, almacena uno a uno cada numero a sumar

SUM: variable de tipo entero que actuara de acumulador, almacena lasuma de los naturales

PROM: variable de tipo real, almacena almacena el promedio de losdatos

Page 22: Introducci on a los Computadores Estructuras de …virtual.usalesiana.edu.bo/web/conte/practica/22012/2081.pdf · Introducci on Ciclo for Ciclo while Ciclo do-while Ejemplos Estructuras

Introduccion Ciclo for Ciclo while Ciclo do-while Ejemplos

promedio mientras.c

#include<stdio.h>

main(){int N, NUM = 1, SUM = 0;

float PROM;

printf("Ingrese N: ");

scanf(" %d", &N);

while (NUM<=N) {SUM = SUM + NUM;

NUM = NUM + 1;

}PROM = (float)SUM/(float)N;

printf("Promedio = %g \n", PROM);

}

promedio para.c

#include<stdio.h>

main(){int N, i, SUM = 0;

float PROM;

printf("Ingrese N: ");

scanf(" %d", &N);

for (i=1;i<=N;i++) SUM = SUM + i;

PROM = (float)SUM/(float)N;

printf("Promedio = %g \n", PROM);

}

Page 23: Introducci on a los Computadores Estructuras de …virtual.usalesiana.edu.bo/web/conte/practica/22012/2081.pdf · Introducci on Ciclo for Ciclo while Ciclo do-while Ejemplos Estructuras

Introduccion Ciclo for Ciclo while Ciclo do-while Ejemplos

Dato Centinela

Centinela: valor particular que no pertenece al rango de valoresadmitidos como validos para una variable

Permiten finalizar un proceso de entrada de datos

Ejemplos:

1 Proceso: leer numeros positivos; Centinela = -1

2 Proceso: leer los 10 primeros enteros pares positivos; Centinela = 22

3 Proceso: leer nombres de personas; Centinela = "FIN"

Page 24: Introducci on a los Computadores Estructuras de …virtual.usalesiana.edu.bo/web/conte/practica/22012/2081.pdf · Introducci on Ciclo for Ciclo while Ciclo do-while Ejemplos Estructuras

Introduccion Ciclo for Ciclo while Ciclo do-while Ejemplos

Ejemplo 3.3: dato centinela

Ejemplo 3.3

Realice un programa en C que reciba por teclado enteros positivos y sume lospares.

Solucion

Datos:

NUM: variable de tipo entero, se utilizara para almacenar los enterosingresados

-1: dato centinela que se utilizara para finalizar el algoritmo

Variables de salida:

SUMAPARES: variable de tipo entero que actuara de acumulador,almacena la suma de los pares

Page 25: Introducci on a los Computadores Estructuras de …virtual.usalesiana.edu.bo/web/conte/practica/22012/2081.pdf · Introducci on Ciclo for Ciclo while Ciclo do-while Ejemplos Estructuras

Introduccion Ciclo for Ciclo while Ciclo do-while Ejemplos

suma pares.c

#include<stdio.h>

main(){int NUM, SUMAPARES = 0;float PROM;

printf("Ingrese numero: ");scanf(" %d", &NUM);

while (NUM!=-1) {if (NUM %2==0) SUMAPARES = SUMAPARES + NUM;

printf("Ingrese numero: ");scanf(" %d", &NUM);

}printf("Suma de pares = %d \n", SUMAPARES);

}

Page 26: Introducci on a los Computadores Estructuras de …virtual.usalesiana.edu.bo/web/conte/practica/22012/2081.pdf · Introducci on Ciclo for Ciclo while Ciclo do-while Ejemplos Estructuras

Introduccion Ciclo for Ciclo while Ciclo do-while Ejemplos

Variables tipo bandera o “switche”

Banderas: variables booleanas; determinan dos alternativas a seguirdentro del algoritmo

Posibles valores de las banderas:

"VERDADERO" o "FALSO"

"SI" o "NO"

1 o 0

Usos de las banderas:

Controlan el flujo logico de un programa

Permiten variar la secuencia de ejecucion del algoritmo dependiendo desu valor en cada instante

Dependiendo de su valor, determinan si el algoritmo ha pasado por undetermnado punto

Salir de un ciclo

Ejecutar una u otra accion dependiendo de su valor

Page 27: Introducci on a los Computadores Estructuras de …virtual.usalesiana.edu.bo/web/conte/practica/22012/2081.pdf · Introducci on Ciclo for Ciclo while Ciclo do-while Ejemplos Estructuras

Introduccion Ciclo for Ciclo while Ciclo do-while Ejemplos

Ejemplo 3.4: variable bandera

Ejemplo 3.4

Realice un programa en C que genere los primeros N terminos de lasucesion

17 , 15 , 18 , 16 , 19 , 17 , 20 , 18 , 21 , . . .

Solucion

Variables:

NT: variable de tipo entero; numero de terminos a generar

CONT: variable de tipo entero que actuara de contador para controlar elciclo

TER: variable de tipo entero, almacena cada termino de la sucesion

BAN: variable de tipo bandera, selecciona si se suma -2 o +3 a TER

Page 28: Introducci on a los Computadores Estructuras de …virtual.usalesiana.edu.bo/web/conte/practica/22012/2081.pdf · Introducci on Ciclo for Ciclo while Ciclo do-while Ejemplos Estructuras

Introduccion Ciclo for Ciclo while Ciclo do-while Ejemplos

sucesion.c

#include<stdio.h>

main(){int NT, TER = 17, CONT = 1, BAN = 1;

printf("Ingrese numero de terminos: ");scanf(" %d", &NT);

while (CONT<=NT) {printf(" %d",TER);

if (BAN==1) {TER = TER - 2;BAN = 2;

}else {

TER = TER + 3;BAN = 1;

}CONT = CONT + 1;

}}

Page 29: Introducci on a los Computadores Estructuras de …virtual.usalesiana.edu.bo/web/conte/practica/22012/2081.pdf · Introducci on Ciclo for Ciclo while Ciclo do-while Ejemplos Estructuras

Introduccion Ciclo for Ciclo while Ciclo do-while Ejemplos

Ejemplo 3.5: variable bandera

Ejemplo 3.5

Realice un programa en C que lea desde el teclado enteros positivos y sumelos multiplos de 3. El algoritmo debe finalizar al ingresar un numeronegativo.

Solucion

Variables:

CONTINUAR: variable de tipo bandera, determina cuando finaliza elalgoritmo

NUM: variable de tipo entero; almacena el entero ingresado en cadaiteracion

SUMA: variable de tipo entero que actuara de acumulador, almacena lasuma de los multiplos de 3

Page 30: Introducci on a los Computadores Estructuras de …virtual.usalesiana.edu.bo/web/conte/practica/22012/2081.pdf · Introducci on Ciclo for Ciclo while Ciclo do-while Ejemplos Estructuras

Introduccion Ciclo for Ciclo while Ciclo do-while Ejemplos

multiplos3.c

#include<stdio.h>#include<string.h>

main(){int NUM, SUMA = 0;char CONTINUAR[3] = "si";

while (!strcpy(CONTINUAR,"si")) {printf("Ingrese entero: ");scanf(" %d", &NUM);

if (NUM<0) strcpy(CONTINUAR,"no");

else if (NUM %3==0) SUMA = SUMA + NUM;}printf("Suma = %d \n", SUMA);

}

Page 31: Introducci on a los Computadores Estructuras de …virtual.usalesiana.edu.bo/web/conte/practica/22012/2081.pdf · Introducci on Ciclo for Ciclo while Ciclo do-while Ejemplos Estructuras

Introduccion Ciclo for Ciclo while Ciclo do-while Ejemplos

Ejemplo 3.6: ruptura de ciclos

Ejemplo 3.6

Realice un programa en C que lea desde el teclado N enteros y se detengacuando al menos uno de los numeros leidos sea cero.

Solucion

Variables:

N: variable de tipo entero, almacena el numero de enteros a ingresar

k: variable de tipo entero que actuara de contador del ciclo

ENCONTRADO: variable de tipo bandera, determina cuando finaliza elalgoritmo; si ENCONTRADO==F el algoritmo continua, si ENCONTRADO==V elalgoritmo llega a su fin

NUM: variable de tipo entero; almacena el entero ingresado en cadaiteracion

Page 32: Introducci on a los Computadores Estructuras de …virtual.usalesiana.edu.bo/web/conte/practica/22012/2081.pdf · Introducci on Ciclo for Ciclo while Ciclo do-while Ejemplos Estructuras

Introduccion Ciclo for Ciclo while Ciclo do-while Ejemplos

ruptura ciclo.c

#include<stdio.h>

#include<string.h>

main(){int k = 1, N, NUM;

char ENCONTRADO = ’F’;

printf("Numero de terminos a ingresar: ");

scanf(" %d", &N);

while ( (k<=N) && (ENCONTRADO==’F’) ) {printf("Ingrese entero: ");

scanf(" %d", &NUM);

if (NUM==0)

ENCONTRADO = ’V’;

else

k++;

}

if ( ENCONTRADO == ’V’ )

printf("Al menos uno es cero");

else

printf("Ninguno es cero");

}

Page 33: Introducci on a los Computadores Estructuras de …virtual.usalesiana.edu.bo/web/conte/practica/22012/2081.pdf · Introducci on Ciclo for Ciclo while Ciclo do-while Ejemplos Estructuras

Introduccion Ciclo for Ciclo while Ciclo do-while Ejemplos

Ejemplo 3.7: maximo y mınimo

Ejemplo 3.7

Como parte de un experimento un biologo requiere tomar la temperaturaexterior de un lugar cada hora por un perıodo de 6 horas. Realice unprograma en C que reciba como datos las temperaturas tomadas y determinela mayor y la menor.

Solucion

Variables:

TEMP: variable de tipo real, almacena la temperatura medida en cadahora

MAX: variable de tipo real, almacena la mayor temperatura leida

MIN: variable de tipo real, almacena la menor temperatura leida

Page 34: Introducci on a los Computadores Estructuras de …virtual.usalesiana.edu.bo/web/conte/practica/22012/2081.pdf · Introducci on Ciclo for Ciclo while Ciclo do-while Ejemplos Estructuras

Introduccion Ciclo for Ciclo while Ciclo do-while Ejemplos

max min.c

#include<stdio.h>

#include<string.h>

main(){int k = 2, TEMP, MAX, MIN;

printf("Ingrese temperatura: ");

scanf(" %d", &TEMP);

MAX = TEMP;

MIN = TEMP;

while (k<=6) {printf("Ingrese temperatura: ");

scanf(" %d", &TEMP);

if (TEMP>MAX)

MAX = TEMP;

else if (TEMP < MAX)

MIN = TEMP;

k++;

}

printf("El maximo es %d y el mınimo es %d \n",MAX, MIN);

}

Page 35: Introducci on a los Computadores Estructuras de …virtual.usalesiana.edu.bo/web/conte/practica/22012/2081.pdf · Introducci on Ciclo for Ciclo while Ciclo do-while Ejemplos Estructuras

Introduccion Ciclo for Ciclo while Ciclo do-while Ejemplos

Estructura repetitiva do-while

Se ejecuta primero el ciclo y luego se evalua la condicion de parada

Elementos del bucle:

EXPRESION: sentencia booleana que determina si se ejecuta el bucle

INSTRUCCIONES: sentencias a ejecutar si EXPRESION es verdadera

do {

INSTRUCCIONES;

} while (EXPRESION)

Page 36: Introducci on a los Computadores Estructuras de …virtual.usalesiana.edu.bo/web/conte/practica/22012/2081.pdf · Introducci on Ciclo for Ciclo while Ciclo do-while Ejemplos Estructuras

Introduccion Ciclo for Ciclo while Ciclo do-while Ejemplos

Ejemplo 4.1

Ejemplo 4.1

Realice un programa en C que le solicite al usuario un entero; cuando elnumero proporcionado sea 666 se debe imprimir el mensaje “adivinaste”.

Solucion

satanas.c

#include<stdio.h>

main(){int NUM;

do {printf("Ingrese entero: ");scanf(" %d", &NUM);

} while (NUM != 666);

printf("Adivinaste");

}

Page 37: Introducci on a los Computadores Estructuras de …virtual.usalesiana.edu.bo/web/conte/practica/22012/2081.pdf · Introducci on Ciclo for Ciclo while Ciclo do-while Ejemplos Estructuras

Introduccion Ciclo for Ciclo while Ciclo do-while Ejemplos

Ejemplo 4.2

Ejemplo 4.2

Realice un programa en C que calcule la suma de los primeros N enterospositivos.

Solucion

suma hasta.c

#include<stdio.h>

main(){int N, SUMA = 0, NUM = 1;

printf("Ingrese entero: ");scanf(" %d", &N);

do {SUMA += NUM; // SUMA = SUMA + NUMNUM++; // NUM = NUM + 1

} while (NUM <= N);

printf("La suma es %d \n", SUMA);

}

Page 38: Introducci on a los Computadores Estructuras de …virtual.usalesiana.edu.bo/web/conte/practica/22012/2081.pdf · Introducci on Ciclo for Ciclo while Ciclo do-while Ejemplos Estructuras

Introduccion Ciclo for Ciclo while Ciclo do-while Ejemplos

Ejemplo 5.1

Ejemplo 5.1

Realice un programa en C que obtenga la suma de los terminos de lasucecion

2 , 5 , 7 , 10 , 12 , 15 , 17 , . . . , 1800.

Solucion

Variables:

TER: variable de tipo entero, almacena cada termino de la sucesion

BAN: variable de tipo bandera, selecciona si se suma 2 o 3 a TER

SUMA: variable de tipo entero que actuara de acumulador paraalmacenar la suma

Page 39: Introducci on a los Computadores Estructuras de …virtual.usalesiana.edu.bo/web/conte/practica/22012/2081.pdf · Introducci on Ciclo for Ciclo while Ciclo do-while Ejemplos Estructuras

Introduccion Ciclo for Ciclo while Ciclo do-while Ejemplos

Ejemplo 5.1

Page 40: Introducci on a los Computadores Estructuras de …virtual.usalesiana.edu.bo/web/conte/practica/22012/2081.pdf · Introducci on Ciclo for Ciclo while Ciclo do-while Ejemplos Estructuras

Introduccion Ciclo for Ciclo while Ciclo do-while Ejemplos

Ejemplo 5.2

Ejemplo 5.2

Realice un programa en C lea un entero N y calcule la suma

1−1

2+

1

3−

1

4+ · · · ±

1

N

Solucion

Variables:

N: variable de tipo entero; determina hasta donde se hace la suma

k: variable de tipo entero; contador del ciclo

TER: variable de tipo entero, almacena cada termino de la sucesion

BAN: variable de tipo bandera, selecciona si se suma 2 o 3 a TER

SUMA: variable de tipo entero que actuara de acumulador paraalmacenar la suma

Page 41: Introducci on a los Computadores Estructuras de …virtual.usalesiana.edu.bo/web/conte/practica/22012/2081.pdf · Introducci on Ciclo for Ciclo while Ciclo do-while Ejemplos Estructuras

Introduccion Ciclo for Ciclo while Ciclo do-while Ejemplos

Page 42: Introducci on a los Computadores Estructuras de …virtual.usalesiana.edu.bo/web/conte/practica/22012/2081.pdf · Introducci on Ciclo for Ciclo while Ciclo do-while Ejemplos Estructuras

Introduccion Ciclo for Ciclo while Ciclo do-while Ejemplos

Ejemplo (5.3): epsilon de la maquina

Ejemplo 5.3

En aritmetica de punto flotante el epsilon de la maquina (ε-mach) sedefine como el menor valor ε almacenado en la maquina que satisface

1 + ε > 1 ,

es decir, el menor numero que el computador reconoce como mayor a cero.Realice un programa en C que calcule el epsilon de la maquina.

Observaciones

Precision simple 32-bits:

1 = 1 00000001| {z }8 bits

00000000000000000000000| {z }23 bits

1 + ε = 1 00000001| {z }8 bits

00000000000000000000001| {z }23 bits

=⇒ ε = 2−23

Page 43: Introducci on a los Computadores Estructuras de …virtual.usalesiana.edu.bo/web/conte/practica/22012/2081.pdf · Introducci on Ciclo for Ciclo while Ciclo do-while Ejemplos Estructuras

Introduccion Ciclo for Ciclo while Ciclo do-while Ejemplos

Ejemplo (5.3): epsilon de la maquina

Idea del algoritmo

1.0 +1

2= 1.5

1.0 +1

22= 1.25

1.0 +1

23= 1.125

1.0 +1

24= 1.0625

...

1.0 +1

2n= 1.0

Page 44: Introducci on a los Computadores Estructuras de …virtual.usalesiana.edu.bo/web/conte/practica/22012/2081.pdf · Introducci on Ciclo for Ciclo while Ciclo do-while Ejemplos Estructuras

Introduccion Ciclo for Ciclo while Ciclo do-while Ejemplos

Ejemplo (5.4): la conjetura de Collatz (Ulam)

Ejemplo 5.4 (Problema de Collatz)

Sea n un entero positivo. Si n es par, divıdalo entre 2, sino lo es,multiplıquelo por 3 y sumele 1. Itere este proceso hasta que el numero quealcance sea 1. Realice un programa en C que implemente dicho proceso.

Observaciones

Para n = 10 la sucesion generada es

10 , 5 , 16 , 8 , 4 , 2 , 1

Conjetura de Collatz:

“Para cualquier entero positivo n, el proceso iterativo deCollatz arriba descrito siempre terminara en 1 en un numerofinito de pasos”

La conjetura de Collatz es un problema abierto en matematicas y hastaahora no ha sido resuelto

Page 45: Introducci on a los Computadores Estructuras de …virtual.usalesiana.edu.bo/web/conte/practica/22012/2081.pdf · Introducci on Ciclo for Ciclo while Ciclo do-while Ejemplos Estructuras

Introduccion Ciclo for Ciclo while Ciclo do-while Ejemplos

Ejemplo (5.4): la conjetura de Collatz (Ulam)

Page 46: Introducci on a los Computadores Estructuras de …virtual.usalesiana.edu.bo/web/conte/practica/22012/2081.pdf · Introducci on Ciclo for Ciclo while Ciclo do-while Ejemplos Estructuras

Introduccion Ciclo for Ciclo while Ciclo do-while Ejemplos

Ejemplo (5.5): conjetura de Collatz (continuacion)

Ejemplo 5.5 (Problema de Collatz 2)

Modifique el programa del problema de Collatz (5.5) de manera tal que noimprima los terminos de la sucesion generada sino solamente el numero deiteraciones necesarias para alcanzar el 1. Realice varios experimentosnumericos. ¿Siempre se alcanza 1? Compare sus resultados con losmostrados en las figuras.

Page 47: Introducci on a los Computadores Estructuras de …virtual.usalesiana.edu.bo/web/conte/practica/22012/2081.pdf · Introducci on Ciclo for Ciclo while Ciclo do-while Ejemplos Estructuras

Introduccion Ciclo for Ciclo while Ciclo do-while Ejemplos

Ejemplo (5.5): conjetura de Collatz (continuacion)

Page 48: Introducci on a los Computadores Estructuras de …virtual.usalesiana.edu.bo/web/conte/practica/22012/2081.pdf · Introducci on Ciclo for Ciclo while Ciclo do-while Ejemplos Estructuras

Introduccion Ciclo for Ciclo while Ciclo do-while Ejemplos

Ejemplo (5.6): sucesion de Fibonacci

Ejemplo 5.6

Realice un programa en C que imprima los n primeros terminos de lasucecion de Fibonacci

0 , 1 , 1 , 2 , 3 , 5 , 8 , 13 , . . . , n

Solucion

Los terminos de la sucesion estan dados por

f0 = 0

f1 = 1

...

fn = fn−1 + fn−2 para n = 2, 3, . . .

Variables:

PRI: variable de tipo entero; representa el primer numero a sumar

SEG: variable de tipo entero; representa el segundo numero a sumar

TER: variable de tipo entero; representa el termino de la serie

Page 49: Introducci on a los Computadores Estructuras de …virtual.usalesiana.edu.bo/web/conte/practica/22012/2081.pdf · Introducci on Ciclo for Ciclo while Ciclo do-while Ejemplos Estructuras

Introduccion Ciclo for Ciclo while Ciclo do-while Ejemplos

Page 50: Introducci on a los Computadores Estructuras de …virtual.usalesiana.edu.bo/web/conte/practica/22012/2081.pdf · Introducci on Ciclo for Ciclo while Ciclo do-while Ejemplos Estructuras

Introduccion Ciclo for Ciclo while Ciclo do-while Ejemplos

Ejemplo 5.7 (Divisores)

Realice un programa en C que encuentre todos los divisores positivos de unentero no negativo N y que imprima ademas el numero de divisores queposee.

Solucion

Page 51: Introducci on a los Computadores Estructuras de …virtual.usalesiana.edu.bo/web/conte/practica/22012/2081.pdf · Introducci on Ciclo for Ciclo while Ciclo do-while Ejemplos Estructuras

Introduccion Ciclo for Ciclo while Ciclo do-while Ejemplos

Ejemplo (5.8): numeros primos

Ejemplo 5.8 (Detecta numeros primos)

Un numero entero positivo N es primo si los unicos enteros positivos quelo dividen son 1 y N . Realice un programa en C que determine si un enterono negativo N es primo.

Solucion

Variables:

N: variable de tipo entero

i: variable de tipo entero; almacena los divisores de N y controla elciclo

primo: variable de tipo bandera, determina si N es primo y el cicloacaba

Page 52: Introducci on a los Computadores Estructuras de …virtual.usalesiana.edu.bo/web/conte/practica/22012/2081.pdf · Introducci on Ciclo for Ciclo while Ciclo do-while Ejemplos Estructuras

Introduccion Ciclo for Ciclo while Ciclo do-while Ejemplos

Numeros primos

Page 53: Introducci on a los Computadores Estructuras de …virtual.usalesiana.edu.bo/web/conte/practica/22012/2081.pdf · Introducci on Ciclo for Ciclo while Ciclo do-while Ejemplos Estructuras

Introduccion Ciclo for Ciclo while Ciclo do-while Ejemplos

Maximo comun divisor

Ejemplo 5.9

Desarrolle un programa en C que calcule el maximo comun divisor(mcd) de dos numeros naturales a y b, i.e.,

Solucion

El mcd de dos enteros no negativos a y b es el mayor entero positivoque es divisor de a y de b

mcd(48, 60) = ?

Divisores de 48 = {1, 2, 3, 4, 6, 8, 12, 16, 24, 48}

Divisores de 60 = {1, 2, 3, 4, 5, 6, 10, 12, 15, 20, 30, 60}

mcd(48, 60) = 12

Propiedades:

mcd(a, b) ≤ a mcd(a, b) ≤ b mcd(a, 0) = |a|

Page 54: Introducci on a los Computadores Estructuras de …virtual.usalesiana.edu.bo/web/conte/practica/22012/2081.pdf · Introducci on Ciclo for Ciclo while Ciclo do-while Ejemplos Estructuras

Introduccion Ciclo for Ciclo while Ciclo do-while Ejemplos

Maximo comun divisor

Page 55: Introducci on a los Computadores Estructuras de …virtual.usalesiana.edu.bo/web/conte/practica/22012/2081.pdf · Introducci on Ciclo for Ciclo while Ciclo do-while Ejemplos Estructuras

Introduccion Ciclo for Ciclo while Ciclo do-while Ejemplos

Numeros perfectos

Ejemplo 5.10

Un numero natural se denomina numero perfecto si es precisamente iguala la suma de todos sus divisores positivos sin incluirse el mismo. Realice unprograma en C que determine si un entero positivo N es un numero perfecto.

Solucion

Numeros perfectos:

Divisores de 6 = {1, 2, 3, 6} y 1 + 2 + 3 = 6

Divisores de 28 = {1, 2, 4, 7, 14, 28} y 1 + 2 + 4 + 7 + 14 = 28

Variables:

N: variable de tipo entero

i: variable de tipo entero; almacena los divisores de N y controla el ciclo

suma: variable de tipo entero, almacena la suma de los divisores de N

Page 56: Introducci on a los Computadores Estructuras de …virtual.usalesiana.edu.bo/web/conte/practica/22012/2081.pdf · Introducci on Ciclo for Ciclo while Ciclo do-while Ejemplos Estructuras

Introduccion Ciclo for Ciclo while Ciclo do-while Ejemplos

Numeros perfectos

Page 57: Introducci on a los Computadores Estructuras de …virtual.usalesiana.edu.bo/web/conte/practica/22012/2081.pdf · Introducci on Ciclo for Ciclo while Ciclo do-while Ejemplos Estructuras

Introduccion Ciclo for Ciclo while Ciclo do-while Ejemplos

Ejemplo (5.11)

Ejemplo 5.11

Realice un programa en C que, dado un valor de x, calcule el valor de lafuncion

f(x) = 1− x+x2

2!− x3

3!+x4

4!− x5

5!+ · · ·

Tenga en cuenta solo los terminos de la serie que en valor absoluto sonmayores o iguales a 10−3.

Solucion

Variables:

i: variable de tipo entero, genera el exponente y el factorial

ter: variable de tipo real, almacena cada termino de la serie

ter = (−1) ∧ i ∗ (x ∧ i/i!)

fac: variable de tipo entera, almacena el factorial

fx: variable de tipo real, acumula la suma de los terminos de la serie

fx = fx + ter

Page 58: Introducci on a los Computadores Estructuras de …virtual.usalesiana.edu.bo/web/conte/practica/22012/2081.pdf · Introducci on Ciclo for Ciclo while Ciclo do-while Ejemplos Estructuras

Introduccion Ciclo for Ciclo while Ciclo do-while Ejemplos

Ejemplo (5.11)

Page 59: Introducci on a los Computadores Estructuras de …virtual.usalesiana.edu.bo/web/conte/practica/22012/2081.pdf · Introducci on Ciclo for Ciclo while Ciclo do-while Ejemplos Estructuras

Introduccion Ciclo for Ciclo while Ciclo do-while Ejemplos

Referencias

M.A. CriadoProgramacion en lenguajes estructuradosAlfaomega Grupo Editor, S.A. de C.V. Primera Edicion, 2006

H.M. Mora EscobarIntroduccion a C y a metodos numericosUniversidad Nacional de Colombia (Sede Bogota), 2004

M.J. PaezC y C++ de afanSegunda edicion. Editorial Universidad de Antioquia, 2004

E. ScheinermanC++ for MathematiciansTaylor & Francis Group, LCC., 2005