SlideShare una empresa de Scribd logo
1 de 7
Descargar para leer sin conexión
CENTRO TECNOLÓGICO DE AVANZADA
AREA DE MECATRÓNICA
Código: M06 MICROCONTROLADORES I
Laboratorio: D-19
Duración: 2 Hs INSTRUCCIONES DE CONTROL
5.3. Instrucción while
Objetivos
1. Entender el funcionamiento de la estructura while.
Hasta ahora hemos visto algunos aspectos básicos del control del flujo de ejecución de
un programa en C. Este capítulo presenta los mecanismos que C ofrece para la ejecución
repetida de sentencias, bien un número prefijado de veces, bien dependiendo de cierta
condición. Es decir, mecanismos para la creación de bucles de ejecución. C proporciona
las siguientes construcciones iterativas:
la construcción while,
la construcción do-while, y
la construcción for.
5.3.1. Construcción while
La construcción while es similar a la existente en otros lenguajes de programación.
Sin embargo, debido a que en C toda sentencia puede considerarse como una expresión,
la construcción while de C ofrece cierta potencia añadida.
La forma más general para la ejecución repetida de una sola sentencia es:
while(condición) sentencia;
O para la ejecución repetida de un grupo de sentencias:
while(condición) { grupo_de_sentencias; }
El funcionamiento de esta construcción es bastante simple. El cuerpo del bucle, es
decir, la sentencia o grupo de sentencias dentro del bucle, se ejecuta mientras el valor
de la expresión que actúa de condición sea cierto. En el momento en que la condición
sea falsa, la ejecución del programa continúa secuencialmente con la siguiente instrucción
tras el bucle (ver Figura 5.1).
Pedro Ramírez <pedroramirez22@gmail.com> 1
CENTRO TECNOLÓGICO DE AVANZADA
AREA DE MECATRÓNICA
Código: M06 MICROCONTROLADORES I
Laboratorio: D-19
Duración: 2 Hs INSTRUCCIONES DE CONTROL
5.1. Construcci´on while 34
Condición
sentencias
Grupo de
Cierto
Falso
Figura 5.1: Esquema de funcionamiento de while
El siguiente ejemplo calcula la media de una secuencia de n´umeros enteros le´ıdos por teclado aca-
bada en ;1:
#include <stdio.h>
void main()
f
int num, cont, suma;
cont = 0;
suma = 0;
scanf( "%d", &num );
while (num != -1)
f
cont++;
suma = suma + num;
scanf( "%d", &num );
g
if (cont != 0)
printf( "La media es %dnn", sum/cont );
else
printf( "La secuencia es vac´ıa.nn" );
g
En la construcci´on while la condici´on se eval´ua al principio del bucle. Por ello, si cuando se al-
canza el bucle por primera vez, la condici´on es falsa, el cuerpo del bucle no se ejecuta nunca (imag´ınese
el caso, en el ejemplo anterior, en que el primer n´umero de la secuencia sea ;1). Como consecuencia,
el cuerpo de un bucle while puede ejecutarse entre 0 y N veces, donde N depende de la condici´on.
N´otese tambi´en que si la condici´on permanece cierta, el bucle puede no terminar nunca (imag´ınese
qu´e ocurrir´ıa si se elimina la sentencia scanf del cuerpo del bucle del ejemplo anterior). Por ello,
habitualmente las sentencias del cuerpo del bucle modifican las variables que aparecen en la condici´on,
de forma que ´esta sea falsa en alg´un momento.
Por otra parte, la condici´on del bucle (y esto es extensible a las diferentes construcciones repetitivas)
Figura 5.1: Esquema de funcionamiento de while
En la construcción while la condición se evalúa al principio del bucle. Por ello, si
cuando se alcanza el bucle por primera vez, la condición es falsa, el cuerpo del bucle no
se ejecuta nunca.
El comportamiento o funcionamiento de una sentencia (bucle) while es:
1. Se evalúa la condición-bucle
2. Si condición-bucle es verdadera (distinto de cero) :
a) La sentencia especificada, denominada el cuerpo del bucle, se ejecuta.
b) Vuelve el control al paso I.
3. En caso contrario:
El control se transfiere a la sentencia siguiente al bucle o sentencia while.
Las sentencias del cuerpo del bucle se repiten mientras que la expresión lógica (con-
dición del bucle) sea verdadera. Cuando se evalúa la expresión lógica y resulta falsa, se
termina y se sale del bucle y se ejecuta la siguiente sentencia de programa después de la
sentencia while.
EJEMPLO 1.
/* cuenta hasta 10 */
int x = 0 ;
while(x < 10)
printf("x: %d" , x++);
La variable que representa la condición del bucle se denomina también variable de
control del bucle debido a que su valor determina si el cuerpo del bucle se repite. La
variable de control del bucle debe ser: 1) inicializada, 2) comprobada, y 3) actualizada
para que el cuerpo del bucle se ejecute adecuadamente.
Pedro Ramírez <pedroramirez22@gmail.com> 2
CENTRO TECNOLÓGICO DE AVANZADA
AREA DE MECATRÓNICA
Código: M06 MICROCONTROLADORES I
Laboratorio: D-19
Duración: 2 Hs INSTRUCCIONES DE CONTROL
Cada etapa se resume así:
1. Inicialización. Contador se establece a un valor inicial (se inicializa a cero, aunque
podría ser otro su valor) antes de que se alcance la sentencia while.
2. Prueba/condición. Se comprueba el valor de contador antes de que comience la
repetición de cada bucle (denominada iteración o pasada).
3. Actualización. Contador se actualiza (su valor se incrementa en 1, mediante el
operador ++) durante cada iteración.
Si la variable de control no se actualiza el bucle se ejecutará «siempre». Tal bu-
cle se denomina bucle infinito. En otras palabras un bucle infinito (sin terminación)
se producirá cuando la condición del bucle permanece y no se hace falsa en ninguna
iteración.
/*bucle infinito*/
contador = 1;
while(contador < 100)
{
printf("%d n",contador);
contador--;
}
contador se inicializa a 1 (menor de 100) y como contador−− decrementa en 1 el
valor de contador en cada iteración, el valor del contador nunca llegará a valer 100,
valor necesario de contador para que la condición del bucle sea falsa. Por consiguiente,
la condición contador<1OO siempre será verdadera, resultando un bucle infinito.
Pedro Ramírez <pedroramirez22@gmail.com> 3
CENTRO TECNOLÓGICO DE AVANZADA
AREA DE MECATRÓNICA
Código: M06 MICROCONTROLADORES I
Laboratorio: D-19
Duración: 2 Hs INSTRUCCIONES DE CONTROL
EJEMPLO 2.
/ * Bucle de muestra con while * /
#include<stdio.h>
int main()
{
int contador = 0; /*inicializa la condición*/
while(contador < 5) /*condición de prueba*/
{
contador++; /*cuerpo del bucle*/
printf("contador: %d n",contador);
}
printf("Terminado.Contador: %dn",contador);
return 0;
}
EJECUCIÓN
contador: 1
contador: 2
contador: 3
contador: 4
contador: 5
Terminado.Contador: 5
5.3.2. Bucles while con cero iteraciones
El cuerpo de un bucle no se ejecuta nunca si la prueba o condición de repetición del
bucle no se cumple, es falsa (es cero en C), cuando se alcanza while la primera vez.
contador = 10;
while(contador > 100)
{
...
}
El bucle anterior nunca se ejecutará ya que la condición del bucle (contador >100)
es falsa la primera vez que se ejecuta. El cuerpo del bucle nunca se ejecutará.
5.3.3. Bucles controlados por centinelas
Normalmente, no se conoce con exactitud cuantos elementos de datos se procesarán
antes de comenzar su ejecución. Esto se produce bien porque hay muchos datos a contar
normalmente o porque el número de datos a procesar depende de cómo prosigue el proceso
de cálculo.
Pedro Ramírez <pedroramirez22@gmail.com> 4
CENTRO TECNOLÓGICO DE AVANZADA
AREA DE MECATRÓNICA
Código: M06 MICROCONTROLADORES I
Laboratorio: D-19
Duración: 2 Hs INSTRUCCIONES DE CONTROL
Un medio para manejar esta situación es instruir al usuario a introducir un único dato
definido y especificado denominado valor centinela como Último dato. La condición del
bucle comprueba cada dato y termina cuando se lee el valor centinela. El valor centinela
se debe seleccionar con mucho cuidado y debe ser un valor que no pueda producirse como
dato. En realidad el centinela es un valor que sirve para terminar el proceso del bucle.
En el siguiente fragmento de código hay un bucle con centinela; se introducen notas
mientras que ésta sea distinta de centinela.
/*
entrada de datos numéricos,
centinela -1
*/
const int centinela = -1;
int cuenta = 0;
printf("Introduzca primera nota:");
scanf("%d", &nota);
while(nota != centinela)
{
cuenta++;
suma += nota;
printf("Introduzca la siquiente nota");
scanf("%d", &nota);
}/*fin de while*/
puts("Final");
EJECUCIÓN Si se lee el primer valor de nota, por ejemplo 25 y luego se ejecuta, la
salida podría ser ésta:
Introduzca primera nota: 25
Introduzca primera nota: 30
Introduzca primera nota: 90
Introduzca primera nota: -1 /*valor del centinela*/
Final
Pedro Ramírez <pedroramirez22@gmail.com> 5
CENTRO TECNOLÓGICO DE AVANZADA
AREA DE MECATRÓNICA
Código: M06 MICROCONTROLADORES I
Laboratorio: D-19
Duración: 2 Hs INSTRUCCIONES DE CONTROL
5.3.4. La sentencia break en los bucles
La sentencia break se utiliza, a veces, para realizar una terminación anormal del
bucle. Dicho de otro modo, una terminación antes de lo previsto. Su sintaxis es:
break;
while(condición)
{
if(condicion2)
break;
/*sentencias*/
}
5.3.5. Bucles while (true)
La condición que se comprueba en un bucle while puede ser cualquier expresión
válida C. Mientras que la condición permanezca verdadera (distinto de 0) , el bucle
while continuará ejecutándose. Se puede crear un bucle que nunca termine utilizando el
valor 1 (verdadero) para la condición que se comprueba.
/*Listado while (true)*/
#include<stdio.h>
int main()
{
int flag=1, contador=0;
while(flag)
{
contador++;
if(contador > 10)
break;
}
printf("Contador: %dn", contador) ;
return 0;
}
Salida
Contador: 11
Por otra parte, la condición del bucle (y esto es extensible a las diferentes construc-
ciones repetitivas) no tiene por qué ser simplemente una expresión lógica, sino que puede
ser cualquier expresión. Por ejemplo, los siguiente bucles
while (x−−) { . . . }
while (x = x+1);
Pedro Ramírez <pedroramirez22@gmail.com> 6
CENTRO TECNOLÓGICO DE AVANZADA
AREA DE MECATRÓNICA
Código: M06 MICROCONTROLADORES I
Laboratorio: D-19
Duración: 2 Hs INSTRUCCIONES DE CONTROL
son perfectamente válidos. En ambos casos el cuerpo del bucle se repetirá mientras el
valor de x sea distinto de 0 . Nótese que en el segundo caso el cuerpo del bucle es nulo,
lo cual también es posible.
EJERCICIOS
1. Considerar el siguiente código del programa
int i = 1;
while(i <= n){
if((i%n) == 0){
++i;
}
printf("%d n", i);
}
a) Cuál será la salida si n es cero.
b) Cuál será la salida si n es uno.
c) Cuál será la salida si n es tres.
2. Cuál es la salida del siguiente bucle?
suma = 0;
while(suma < 100)
sum+=5;
printf("%d n", suma);
3. Escribir un bucle while que visualice todas las potencias de un entero n menores
a un valor especificado max_limite.
4. Escribir un programa que encuentre el primer numero introducido por teclado.
5. Calcular la suma de una serie de números leídos del teclado.
Ultima Actualización 16 de marzo de 2017
Pedro Ramírez <pedroramirez22@gmail.com> 7

Más contenido relacionado

La actualidad más candente (18)

Manual
ManualManual
Manual
 
Iteraciones y decisiones en c++
Iteraciones y decisiones en c++Iteraciones y decisiones en c++
Iteraciones y decisiones en c++
 
Grupo7
Grupo7Grupo7
Grupo7
 
ESTATUTO WHILE
ESTATUTO WHILEESTATUTO WHILE
ESTATUTO WHILE
 
ESTRUCTURAS DE CONTROL: BUCLES EN C++
ESTRUCTURAS DE CONTROL: BUCLES EN C++ESTRUCTURAS DE CONTROL: BUCLES EN C++
ESTRUCTURAS DE CONTROL: BUCLES EN C++
 
Ejemplo C++
Ejemplo C++Ejemplo C++
Ejemplo C++
 
Clase 6
Clase 6Clase 6
Clase 6
 
Estructuras de control
Estructuras de controlEstructuras de control
Estructuras de control
 
Fpr Tema 5 www.fresymetal.com
Fpr Tema 5 www.fresymetal.comFpr Tema 5 www.fresymetal.com
Fpr Tema 5 www.fresymetal.com
 
Guia4
Guia4Guia4
Guia4
 
Modulo2b
Modulo2bModulo2b
Modulo2b
 
Estructura repetitiva for y while
Estructura repetitiva for y whileEstructura repetitiva for y while
Estructura repetitiva for y while
 
Presentación
Presentación Presentación
Presentación
 
While y do while c++
While y do while c++While y do while c++
While y do while c++
 
Estructura repetitiva for y while
Estructura repetitiva for y whileEstructura repetitiva for y while
Estructura repetitiva for y while
 
While do while
While  do whileWhile  do while
While do while
 
Estructura switch case
Estructura switch caseEstructura switch case
Estructura switch case
 
4. estructuras selectivas
4. estructuras selectivas4. estructuras selectivas
4. estructuras selectivas
 

Similar a 5.3 instruccion while

Estructuras De RepeticióN
Estructuras De RepeticióNEstructuras De RepeticióN
Estructuras De RepeticióNRegina Flores
 
Alexander power point
Alexander power pointAlexander power point
Alexander power point20081027
 
Instrucciones de control repetitivas
Instrucciones de control repetitivasInstrucciones de control repetitivas
Instrucciones de control repetitivasAbrirllave
 
Php04 estructuras control
Php04 estructuras controlPhp04 estructuras control
Php04 estructuras controlJulio Pari
 
Sentencias de Programacion
Sentencias de ProgramacionSentencias de Programacion
Sentencias de Programacionaeroscar90
 
183007957 estructuras repetitivas-estructurarepetitivadesdevi
183007957 estructuras repetitivas-estructurarepetitivadesdevi183007957 estructuras repetitivas-estructurarepetitivadesdevi
183007957 estructuras repetitivas-estructurarepetitivadesdeviyaquelinpr
 
While y do while
While y do whileWhile y do while
While y do whilejosenassr
 
Semana 2 Estructuras De Control While.pdf
Semana 2 Estructuras De Control While.pdfSemana 2 Estructuras De Control While.pdf
Semana 2 Estructuras De Control While.pdfLeonardoQuevedo18
 
Presentacion semana numero_14
Presentacion semana numero_14Presentacion semana numero_14
Presentacion semana numero_14Cristhian BM
 
5.5 instruccion for
5.5 instruccion for5.5 instruccion for
5.5 instruccion forSNPP
 
Instrucciones de control repetitivas
Instrucciones de control repetitivasInstrucciones de control repetitivas
Instrucciones de control repetitivasCarlos Pes
 

Similar a 5.3 instruccion while (20)

Estructuras De RepeticióN
Estructuras De RepeticióNEstructuras De RepeticióN
Estructuras De RepeticióN
 
Estructura repetitiva
Estructura repetitivaEstructura repetitiva
Estructura repetitiva
 
Alexander power point
Alexander power pointAlexander power point
Alexander power point
 
Instrucciones de control repetitivas
Instrucciones de control repetitivasInstrucciones de control repetitivas
Instrucciones de control repetitivas
 
Instruccion while bm
Instruccion while bmInstruccion while bm
Instruccion while bm
 
Sentencias
SentenciasSentencias
Sentencias
 
Sentencias
SentenciasSentencias
Sentencias
 
Php04 estructuras control
Php04 estructuras controlPhp04 estructuras control
Php04 estructuras control
 
Sentencias de Programacion
Sentencias de ProgramacionSentencias de Programacion
Sentencias de Programacion
 
183007957 estructuras repetitivas-estructurarepetitivadesdevi
183007957 estructuras repetitivas-estructurarepetitivadesdevi183007957 estructuras repetitivas-estructurarepetitivadesdevi
183007957 estructuras repetitivas-estructurarepetitivadesdevi
 
Estructuras de Control Repetitivo
Estructuras de Control RepetitivoEstructuras de Control Repetitivo
Estructuras de Control Repetitivo
 
While do while
While do whileWhile do while
While do while
 
Unidad 2
Unidad 2Unidad 2
Unidad 2
 
While y do while
While y do whileWhile y do while
While y do while
 
Semana 2 Estructuras De Control While.pdf
Semana 2 Estructuras De Control While.pdfSemana 2 Estructuras De Control While.pdf
Semana 2 Estructuras De Control While.pdf
 
Presentacion semana numero_14
Presentacion semana numero_14Presentacion semana numero_14
Presentacion semana numero_14
 
5.5 instruccion for
5.5 instruccion for5.5 instruccion for
5.5 instruccion for
 
Instrucciones de control repetitivas
Instrucciones de control repetitivasInstrucciones de control repetitivas
Instrucciones de control repetitivas
 
Practicas3 Secuencia While
Practicas3 Secuencia WhilePracticas3 Secuencia While
Practicas3 Secuencia While
 
Trabajo bucles bn
Trabajo bucles bnTrabajo bucles bn
Trabajo bucles bn
 

Más de SNPP

RR00X_RESUMEN.pdf
RR00X_RESUMEN.pdfRR00X_RESUMEN.pdf
RR00X_RESUMEN.pdfSNPP
 
RR_TAYI.pdf
RR_TAYI.pdfRR_TAYI.pdf
RR_TAYI.pdfSNPP
 
1. panel de le ds
1. panel de le ds1. panel de le ds
1. panel de le dsSNPP
 
7. incubadora de huevos
7. incubadora de huevos7. incubadora de huevos
7. incubadora de huevosSNPP
 
6. visualizacion remota de consumo de agua en tiempo real
6. visualizacion remota de consumo de agua en tiempo real6. visualizacion remota de consumo de agua en tiempo real
6. visualizacion remota de consumo de agua en tiempo realSNPP
 
5. alimentador de animales domesticos smart feeder
5. alimentador de animales domesticos smart feeder5. alimentador de animales domesticos smart feeder
5. alimentador de animales domesticos smart feederSNPP
 
3. radar medidor de velocidad
3. radar medidor de velocidad3. radar medidor de velocidad
3. radar medidor de velocidadSNPP
 
2. soft starter monofasico
2. soft starter monofasico2. soft starter monofasico
2. soft starter monofasicoSNPP
 
Operadores y expresiones
Operadores y expresionesOperadores y expresiones
Operadores y expresionesSNPP
 
6.2 cadenas de caracteres
6.2 cadenas de caracteres6.2 cadenas de caracteres
6.2 cadenas de caracteresSNPP
 
6.1 vectores
6.1 vectores6.1 vectores
6.1 vectoresSNPP
 
5.4 instruccion do-while
5.4 instruccion do-while5.4 instruccion do-while
5.4 instruccion do-whileSNPP
 
5.2 instruccion switch
5.2  instruccion switch5.2  instruccion switch
5.2 instruccion switchSNPP
 
5.1 instruccion if-else
5.1 instruccion if-else5.1 instruccion if-else
5.1 instruccion if-elseSNPP
 
4. entrada y salida de datos
4. entrada y salida de datos4. entrada y salida de datos
4. entrada y salida de datosSNPP
 
3.6 funciones de biblioteca
3.6 funciones de biblioteca3.6 funciones de biblioteca
3.6 funciones de bibliotecaSNPP
 
3.5 operador condicional
3.5 operador condicional3.5 operador condicional
3.5 operador condicionalSNPP
 
2.10 entrada y salida
2.10 entrada y salida2.10 entrada y salida
2.10 entrada y salidaSNPP
 
2.9 variables
2.9 variables2.9 variables
2.9 variablesSNPP
 
2.8 constantes
2.8 constantes2.8 constantes
2.8 constantesSNPP
 

Más de SNPP (20)

RR00X_RESUMEN.pdf
RR00X_RESUMEN.pdfRR00X_RESUMEN.pdf
RR00X_RESUMEN.pdf
 
RR_TAYI.pdf
RR_TAYI.pdfRR_TAYI.pdf
RR_TAYI.pdf
 
1. panel de le ds
1. panel de le ds1. panel de le ds
1. panel de le ds
 
7. incubadora de huevos
7. incubadora de huevos7. incubadora de huevos
7. incubadora de huevos
 
6. visualizacion remota de consumo de agua en tiempo real
6. visualizacion remota de consumo de agua en tiempo real6. visualizacion remota de consumo de agua en tiempo real
6. visualizacion remota de consumo de agua en tiempo real
 
5. alimentador de animales domesticos smart feeder
5. alimentador de animales domesticos smart feeder5. alimentador de animales domesticos smart feeder
5. alimentador de animales domesticos smart feeder
 
3. radar medidor de velocidad
3. radar medidor de velocidad3. radar medidor de velocidad
3. radar medidor de velocidad
 
2. soft starter monofasico
2. soft starter monofasico2. soft starter monofasico
2. soft starter monofasico
 
Operadores y expresiones
Operadores y expresionesOperadores y expresiones
Operadores y expresiones
 
6.2 cadenas de caracteres
6.2 cadenas de caracteres6.2 cadenas de caracteres
6.2 cadenas de caracteres
 
6.1 vectores
6.1 vectores6.1 vectores
6.1 vectores
 
5.4 instruccion do-while
5.4 instruccion do-while5.4 instruccion do-while
5.4 instruccion do-while
 
5.2 instruccion switch
5.2  instruccion switch5.2  instruccion switch
5.2 instruccion switch
 
5.1 instruccion if-else
5.1 instruccion if-else5.1 instruccion if-else
5.1 instruccion if-else
 
4. entrada y salida de datos
4. entrada y salida de datos4. entrada y salida de datos
4. entrada y salida de datos
 
3.6 funciones de biblioteca
3.6 funciones de biblioteca3.6 funciones de biblioteca
3.6 funciones de biblioteca
 
3.5 operador condicional
3.5 operador condicional3.5 operador condicional
3.5 operador condicional
 
2.10 entrada y salida
2.10 entrada y salida2.10 entrada y salida
2.10 entrada y salida
 
2.9 variables
2.9 variables2.9 variables
2.9 variables
 
2.8 constantes
2.8 constantes2.8 constantes
2.8 constantes
 

Último

IPERC Y ATS - SEGURIDAD INDUSTRIAL PARA TODA EMPRESA
IPERC Y ATS - SEGURIDAD INDUSTRIAL PARA TODA EMPRESAIPERC Y ATS - SEGURIDAD INDUSTRIAL PARA TODA EMPRESA
IPERC Y ATS - SEGURIDAD INDUSTRIAL PARA TODA EMPRESAJAMESDIAZ55
 
Comite Operativo Ciberseguridad 012020.pptx
Comite Operativo Ciberseguridad 012020.pptxComite Operativo Ciberseguridad 012020.pptx
Comite Operativo Ciberseguridad 012020.pptxClaudiaPerez86192
 
hitos del desarrollo psicomotor en niños.docx
hitos del desarrollo psicomotor en niños.docxhitos del desarrollo psicomotor en niños.docx
hitos del desarrollo psicomotor en niños.docxMarcelaArancibiaRojo
 
Manual_Identificación_Geoformas_140627.pdf
Manual_Identificación_Geoformas_140627.pdfManual_Identificación_Geoformas_140627.pdf
Manual_Identificación_Geoformas_140627.pdfedsonzav8
 
PPT ELABORARACION DE ADOBES 2023 (1).pdf
PPT ELABORARACION DE ADOBES 2023 (1).pdfPPT ELABORARACION DE ADOBES 2023 (1).pdf
PPT ELABORARACION DE ADOBES 2023 (1).pdfalexquispenieto2
 
Ingeniería de Tránsito. Proyecto Geométrico de calles y carreteras, es el pro...
Ingeniería de Tránsito. Proyecto Geométrico de calles y carreteras, es el pro...Ingeniería de Tránsito. Proyecto Geométrico de calles y carreteras, es el pro...
Ingeniería de Tránsito. Proyecto Geométrico de calles y carreteras, es el pro...wvernetlopez
 
TEXTURA Y DETERMINACION DE ROCAS SEDIMENTARIAS
TEXTURA Y DETERMINACION DE ROCAS SEDIMENTARIASTEXTURA Y DETERMINACION DE ROCAS SEDIMENTARIAS
TEXTURA Y DETERMINACION DE ROCAS SEDIMENTARIASfranzEmersonMAMANIOC
 
ARBOL DE CAUSAS ANA INVESTIGACION DE ACC.ppt
ARBOL DE CAUSAS ANA INVESTIGACION DE ACC.pptARBOL DE CAUSAS ANA INVESTIGACION DE ACC.ppt
ARBOL DE CAUSAS ANA INVESTIGACION DE ACC.pptMarianoSanchez70
 
Curso intensivo de soldadura electrónica en pdf
Curso intensivo de soldadura electrónica  en pdfCurso intensivo de soldadura electrónica  en pdf
Curso intensivo de soldadura electrónica en pdfFernandaGarca788912
 
Reporte de Exportaciones de Fibra de alpaca
Reporte de Exportaciones de Fibra de alpacaReporte de Exportaciones de Fibra de alpaca
Reporte de Exportaciones de Fibra de alpacajeremiasnifla
 
¿QUE SON LOS AGENTES FISICOS Y QUE CUIDADOS TENER.pptx
¿QUE SON LOS AGENTES FISICOS Y QUE CUIDADOS TENER.pptx¿QUE SON LOS AGENTES FISICOS Y QUE CUIDADOS TENER.pptx
¿QUE SON LOS AGENTES FISICOS Y QUE CUIDADOS TENER.pptxguillermosantana15
 
clases de dinamica ejercicios preuniversitarios.pdf
clases de dinamica ejercicios preuniversitarios.pdfclases de dinamica ejercicios preuniversitarios.pdf
clases de dinamica ejercicios preuniversitarios.pdfDanielaVelasquez553560
 
CLASe número 4 fotogrametria Y PARALAJE.pptx
CLASe número 4 fotogrametria Y PARALAJE.pptxCLASe número 4 fotogrametria Y PARALAJE.pptx
CLASe número 4 fotogrametria Y PARALAJE.pptxbingoscarlet
 
Obras paralizadas en el sector construcción
Obras paralizadas en el sector construcciónObras paralizadas en el sector construcción
Obras paralizadas en el sector construcciónXimenaFallaLecca1
 
Procesos-de-la-Industria-Alimentaria-Envasado-en-la-Produccion-de-Alimentos.pptx
Procesos-de-la-Industria-Alimentaria-Envasado-en-la-Produccion-de-Alimentos.pptxProcesos-de-la-Industria-Alimentaria-Envasado-en-la-Produccion-de-Alimentos.pptx
Procesos-de-la-Industria-Alimentaria-Envasado-en-la-Produccion-de-Alimentos.pptxJuanPablo452634
 
aCARGA y FUERZA UNI 19 marzo 2024-22.ppt
aCARGA y FUERZA UNI 19 marzo 2024-22.pptaCARGA y FUERZA UNI 19 marzo 2024-22.ppt
aCARGA y FUERZA UNI 19 marzo 2024-22.pptCRISTOFERSERGIOCANAL
 
CHARLA DE INDUCCIÓN SEGURIDAD Y SALUD OCUPACIONAL
CHARLA DE INDUCCIÓN SEGURIDAD Y SALUD OCUPACIONALCHARLA DE INDUCCIÓN SEGURIDAD Y SALUD OCUPACIONAL
CHARLA DE INDUCCIÓN SEGURIDAD Y SALUD OCUPACIONALKATHIAMILAGRITOSSANC
 
Curso Análisis Fisicoquímico y Microbiológico de Aguas -EAI - SESIÓN 5.pdf
Curso Análisis Fisicoquímico y Microbiológico de Aguas -EAI - SESIÓN 5.pdfCurso Análisis Fisicoquímico y Microbiológico de Aguas -EAI - SESIÓN 5.pdf
Curso Análisis Fisicoquímico y Microbiológico de Aguas -EAI - SESIÓN 5.pdfcesar17lavictoria
 
nom-028-stps-2012-nom-028-stps-2012-.pdf
nom-028-stps-2012-nom-028-stps-2012-.pdfnom-028-stps-2012-nom-028-stps-2012-.pdf
nom-028-stps-2012-nom-028-stps-2012-.pdfDiegoMadrigal21
 
Elaboración de la estructura del ADN y ARN en papel.pdf
Elaboración de la estructura del ADN y ARN en papel.pdfElaboración de la estructura del ADN y ARN en papel.pdf
Elaboración de la estructura del ADN y ARN en papel.pdfKEVINYOICIAQUINOSORI
 

Último (20)

IPERC Y ATS - SEGURIDAD INDUSTRIAL PARA TODA EMPRESA
IPERC Y ATS - SEGURIDAD INDUSTRIAL PARA TODA EMPRESAIPERC Y ATS - SEGURIDAD INDUSTRIAL PARA TODA EMPRESA
IPERC Y ATS - SEGURIDAD INDUSTRIAL PARA TODA EMPRESA
 
Comite Operativo Ciberseguridad 012020.pptx
Comite Operativo Ciberseguridad 012020.pptxComite Operativo Ciberseguridad 012020.pptx
Comite Operativo Ciberseguridad 012020.pptx
 
hitos del desarrollo psicomotor en niños.docx
hitos del desarrollo psicomotor en niños.docxhitos del desarrollo psicomotor en niños.docx
hitos del desarrollo psicomotor en niños.docx
 
Manual_Identificación_Geoformas_140627.pdf
Manual_Identificación_Geoformas_140627.pdfManual_Identificación_Geoformas_140627.pdf
Manual_Identificación_Geoformas_140627.pdf
 
PPT ELABORARACION DE ADOBES 2023 (1).pdf
PPT ELABORARACION DE ADOBES 2023 (1).pdfPPT ELABORARACION DE ADOBES 2023 (1).pdf
PPT ELABORARACION DE ADOBES 2023 (1).pdf
 
Ingeniería de Tránsito. Proyecto Geométrico de calles y carreteras, es el pro...
Ingeniería de Tránsito. Proyecto Geométrico de calles y carreteras, es el pro...Ingeniería de Tránsito. Proyecto Geométrico de calles y carreteras, es el pro...
Ingeniería de Tránsito. Proyecto Geométrico de calles y carreteras, es el pro...
 
TEXTURA Y DETERMINACION DE ROCAS SEDIMENTARIAS
TEXTURA Y DETERMINACION DE ROCAS SEDIMENTARIASTEXTURA Y DETERMINACION DE ROCAS SEDIMENTARIAS
TEXTURA Y DETERMINACION DE ROCAS SEDIMENTARIAS
 
ARBOL DE CAUSAS ANA INVESTIGACION DE ACC.ppt
ARBOL DE CAUSAS ANA INVESTIGACION DE ACC.pptARBOL DE CAUSAS ANA INVESTIGACION DE ACC.ppt
ARBOL DE CAUSAS ANA INVESTIGACION DE ACC.ppt
 
Curso intensivo de soldadura electrónica en pdf
Curso intensivo de soldadura electrónica  en pdfCurso intensivo de soldadura electrónica  en pdf
Curso intensivo de soldadura electrónica en pdf
 
Reporte de Exportaciones de Fibra de alpaca
Reporte de Exportaciones de Fibra de alpacaReporte de Exportaciones de Fibra de alpaca
Reporte de Exportaciones de Fibra de alpaca
 
¿QUE SON LOS AGENTES FISICOS Y QUE CUIDADOS TENER.pptx
¿QUE SON LOS AGENTES FISICOS Y QUE CUIDADOS TENER.pptx¿QUE SON LOS AGENTES FISICOS Y QUE CUIDADOS TENER.pptx
¿QUE SON LOS AGENTES FISICOS Y QUE CUIDADOS TENER.pptx
 
clases de dinamica ejercicios preuniversitarios.pdf
clases de dinamica ejercicios preuniversitarios.pdfclases de dinamica ejercicios preuniversitarios.pdf
clases de dinamica ejercicios preuniversitarios.pdf
 
CLASe número 4 fotogrametria Y PARALAJE.pptx
CLASe número 4 fotogrametria Y PARALAJE.pptxCLASe número 4 fotogrametria Y PARALAJE.pptx
CLASe número 4 fotogrametria Y PARALAJE.pptx
 
Obras paralizadas en el sector construcción
Obras paralizadas en el sector construcciónObras paralizadas en el sector construcción
Obras paralizadas en el sector construcción
 
Procesos-de-la-Industria-Alimentaria-Envasado-en-la-Produccion-de-Alimentos.pptx
Procesos-de-la-Industria-Alimentaria-Envasado-en-la-Produccion-de-Alimentos.pptxProcesos-de-la-Industria-Alimentaria-Envasado-en-la-Produccion-de-Alimentos.pptx
Procesos-de-la-Industria-Alimentaria-Envasado-en-la-Produccion-de-Alimentos.pptx
 
aCARGA y FUERZA UNI 19 marzo 2024-22.ppt
aCARGA y FUERZA UNI 19 marzo 2024-22.pptaCARGA y FUERZA UNI 19 marzo 2024-22.ppt
aCARGA y FUERZA UNI 19 marzo 2024-22.ppt
 
CHARLA DE INDUCCIÓN SEGURIDAD Y SALUD OCUPACIONAL
CHARLA DE INDUCCIÓN SEGURIDAD Y SALUD OCUPACIONALCHARLA DE INDUCCIÓN SEGURIDAD Y SALUD OCUPACIONAL
CHARLA DE INDUCCIÓN SEGURIDAD Y SALUD OCUPACIONAL
 
Curso Análisis Fisicoquímico y Microbiológico de Aguas -EAI - SESIÓN 5.pdf
Curso Análisis Fisicoquímico y Microbiológico de Aguas -EAI - SESIÓN 5.pdfCurso Análisis Fisicoquímico y Microbiológico de Aguas -EAI - SESIÓN 5.pdf
Curso Análisis Fisicoquímico y Microbiológico de Aguas -EAI - SESIÓN 5.pdf
 
nom-028-stps-2012-nom-028-stps-2012-.pdf
nom-028-stps-2012-nom-028-stps-2012-.pdfnom-028-stps-2012-nom-028-stps-2012-.pdf
nom-028-stps-2012-nom-028-stps-2012-.pdf
 
Elaboración de la estructura del ADN y ARN en papel.pdf
Elaboración de la estructura del ADN y ARN en papel.pdfElaboración de la estructura del ADN y ARN en papel.pdf
Elaboración de la estructura del ADN y ARN en papel.pdf
 

5.3 instruccion while

  • 1. CENTRO TECNOLÓGICO DE AVANZADA AREA DE MECATRÓNICA Código: M06 MICROCONTROLADORES I Laboratorio: D-19 Duración: 2 Hs INSTRUCCIONES DE CONTROL 5.3. Instrucción while Objetivos 1. Entender el funcionamiento de la estructura while. Hasta ahora hemos visto algunos aspectos básicos del control del flujo de ejecución de un programa en C. Este capítulo presenta los mecanismos que C ofrece para la ejecución repetida de sentencias, bien un número prefijado de veces, bien dependiendo de cierta condición. Es decir, mecanismos para la creación de bucles de ejecución. C proporciona las siguientes construcciones iterativas: la construcción while, la construcción do-while, y la construcción for. 5.3.1. Construcción while La construcción while es similar a la existente en otros lenguajes de programación. Sin embargo, debido a que en C toda sentencia puede considerarse como una expresión, la construcción while de C ofrece cierta potencia añadida. La forma más general para la ejecución repetida de una sola sentencia es: while(condición) sentencia; O para la ejecución repetida de un grupo de sentencias: while(condición) { grupo_de_sentencias; } El funcionamiento de esta construcción es bastante simple. El cuerpo del bucle, es decir, la sentencia o grupo de sentencias dentro del bucle, se ejecuta mientras el valor de la expresión que actúa de condición sea cierto. En el momento en que la condición sea falsa, la ejecución del programa continúa secuencialmente con la siguiente instrucción tras el bucle (ver Figura 5.1). Pedro Ramírez <pedroramirez22@gmail.com> 1
  • 2. CENTRO TECNOLÓGICO DE AVANZADA AREA DE MECATRÓNICA Código: M06 MICROCONTROLADORES I Laboratorio: D-19 Duración: 2 Hs INSTRUCCIONES DE CONTROL 5.1. Construcci´on while 34 Condición sentencias Grupo de Cierto Falso Figura 5.1: Esquema de funcionamiento de while El siguiente ejemplo calcula la media de una secuencia de n´umeros enteros le´ıdos por teclado aca- bada en ;1: #include <stdio.h> void main() f int num, cont, suma; cont = 0; suma = 0; scanf( "%d", &num ); while (num != -1) f cont++; suma = suma + num; scanf( "%d", &num ); g if (cont != 0) printf( "La media es %dnn", sum/cont ); else printf( "La secuencia es vac´ıa.nn" ); g En la construcci´on while la condici´on se eval´ua al principio del bucle. Por ello, si cuando se al- canza el bucle por primera vez, la condici´on es falsa, el cuerpo del bucle no se ejecuta nunca (imag´ınese el caso, en el ejemplo anterior, en que el primer n´umero de la secuencia sea ;1). Como consecuencia, el cuerpo de un bucle while puede ejecutarse entre 0 y N veces, donde N depende de la condici´on. N´otese tambi´en que si la condici´on permanece cierta, el bucle puede no terminar nunca (imag´ınese qu´e ocurrir´ıa si se elimina la sentencia scanf del cuerpo del bucle del ejemplo anterior). Por ello, habitualmente las sentencias del cuerpo del bucle modifican las variables que aparecen en la condici´on, de forma que ´esta sea falsa en alg´un momento. Por otra parte, la condici´on del bucle (y esto es extensible a las diferentes construcciones repetitivas) Figura 5.1: Esquema de funcionamiento de while En la construcción while la condición se evalúa al principio del bucle. Por ello, si cuando se alcanza el bucle por primera vez, la condición es falsa, el cuerpo del bucle no se ejecuta nunca. El comportamiento o funcionamiento de una sentencia (bucle) while es: 1. Se evalúa la condición-bucle 2. Si condición-bucle es verdadera (distinto de cero) : a) La sentencia especificada, denominada el cuerpo del bucle, se ejecuta. b) Vuelve el control al paso I. 3. En caso contrario: El control se transfiere a la sentencia siguiente al bucle o sentencia while. Las sentencias del cuerpo del bucle se repiten mientras que la expresión lógica (con- dición del bucle) sea verdadera. Cuando se evalúa la expresión lógica y resulta falsa, se termina y se sale del bucle y se ejecuta la siguiente sentencia de programa después de la sentencia while. EJEMPLO 1. /* cuenta hasta 10 */ int x = 0 ; while(x < 10) printf("x: %d" , x++); La variable que representa la condición del bucle se denomina también variable de control del bucle debido a que su valor determina si el cuerpo del bucle se repite. La variable de control del bucle debe ser: 1) inicializada, 2) comprobada, y 3) actualizada para que el cuerpo del bucle se ejecute adecuadamente. Pedro Ramírez <pedroramirez22@gmail.com> 2
  • 3. CENTRO TECNOLÓGICO DE AVANZADA AREA DE MECATRÓNICA Código: M06 MICROCONTROLADORES I Laboratorio: D-19 Duración: 2 Hs INSTRUCCIONES DE CONTROL Cada etapa se resume así: 1. Inicialización. Contador se establece a un valor inicial (se inicializa a cero, aunque podría ser otro su valor) antes de que se alcance la sentencia while. 2. Prueba/condición. Se comprueba el valor de contador antes de que comience la repetición de cada bucle (denominada iteración o pasada). 3. Actualización. Contador se actualiza (su valor se incrementa en 1, mediante el operador ++) durante cada iteración. Si la variable de control no se actualiza el bucle se ejecutará «siempre». Tal bu- cle se denomina bucle infinito. En otras palabras un bucle infinito (sin terminación) se producirá cuando la condición del bucle permanece y no se hace falsa en ninguna iteración. /*bucle infinito*/ contador = 1; while(contador < 100) { printf("%d n",contador); contador--; } contador se inicializa a 1 (menor de 100) y como contador−− decrementa en 1 el valor de contador en cada iteración, el valor del contador nunca llegará a valer 100, valor necesario de contador para que la condición del bucle sea falsa. Por consiguiente, la condición contador<1OO siempre será verdadera, resultando un bucle infinito. Pedro Ramírez <pedroramirez22@gmail.com> 3
  • 4. CENTRO TECNOLÓGICO DE AVANZADA AREA DE MECATRÓNICA Código: M06 MICROCONTROLADORES I Laboratorio: D-19 Duración: 2 Hs INSTRUCCIONES DE CONTROL EJEMPLO 2. / * Bucle de muestra con while * / #include<stdio.h> int main() { int contador = 0; /*inicializa la condición*/ while(contador < 5) /*condición de prueba*/ { contador++; /*cuerpo del bucle*/ printf("contador: %d n",contador); } printf("Terminado.Contador: %dn",contador); return 0; } EJECUCIÓN contador: 1 contador: 2 contador: 3 contador: 4 contador: 5 Terminado.Contador: 5 5.3.2. Bucles while con cero iteraciones El cuerpo de un bucle no se ejecuta nunca si la prueba o condición de repetición del bucle no se cumple, es falsa (es cero en C), cuando se alcanza while la primera vez. contador = 10; while(contador > 100) { ... } El bucle anterior nunca se ejecutará ya que la condición del bucle (contador >100) es falsa la primera vez que se ejecuta. El cuerpo del bucle nunca se ejecutará. 5.3.3. Bucles controlados por centinelas Normalmente, no se conoce con exactitud cuantos elementos de datos se procesarán antes de comenzar su ejecución. Esto se produce bien porque hay muchos datos a contar normalmente o porque el número de datos a procesar depende de cómo prosigue el proceso de cálculo. Pedro Ramírez <pedroramirez22@gmail.com> 4
  • 5. CENTRO TECNOLÓGICO DE AVANZADA AREA DE MECATRÓNICA Código: M06 MICROCONTROLADORES I Laboratorio: D-19 Duración: 2 Hs INSTRUCCIONES DE CONTROL Un medio para manejar esta situación es instruir al usuario a introducir un único dato definido y especificado denominado valor centinela como Último dato. La condición del bucle comprueba cada dato y termina cuando se lee el valor centinela. El valor centinela se debe seleccionar con mucho cuidado y debe ser un valor que no pueda producirse como dato. En realidad el centinela es un valor que sirve para terminar el proceso del bucle. En el siguiente fragmento de código hay un bucle con centinela; se introducen notas mientras que ésta sea distinta de centinela. /* entrada de datos numéricos, centinela -1 */ const int centinela = -1; int cuenta = 0; printf("Introduzca primera nota:"); scanf("%d", &nota); while(nota != centinela) { cuenta++; suma += nota; printf("Introduzca la siquiente nota"); scanf("%d", &nota); }/*fin de while*/ puts("Final"); EJECUCIÓN Si se lee el primer valor de nota, por ejemplo 25 y luego se ejecuta, la salida podría ser ésta: Introduzca primera nota: 25 Introduzca primera nota: 30 Introduzca primera nota: 90 Introduzca primera nota: -1 /*valor del centinela*/ Final Pedro Ramírez <pedroramirez22@gmail.com> 5
  • 6. CENTRO TECNOLÓGICO DE AVANZADA AREA DE MECATRÓNICA Código: M06 MICROCONTROLADORES I Laboratorio: D-19 Duración: 2 Hs INSTRUCCIONES DE CONTROL 5.3.4. La sentencia break en los bucles La sentencia break se utiliza, a veces, para realizar una terminación anormal del bucle. Dicho de otro modo, una terminación antes de lo previsto. Su sintaxis es: break; while(condición) { if(condicion2) break; /*sentencias*/ } 5.3.5. Bucles while (true) La condición que se comprueba en un bucle while puede ser cualquier expresión válida C. Mientras que la condición permanezca verdadera (distinto de 0) , el bucle while continuará ejecutándose. Se puede crear un bucle que nunca termine utilizando el valor 1 (verdadero) para la condición que se comprueba. /*Listado while (true)*/ #include<stdio.h> int main() { int flag=1, contador=0; while(flag) { contador++; if(contador > 10) break; } printf("Contador: %dn", contador) ; return 0; } Salida Contador: 11 Por otra parte, la condición del bucle (y esto es extensible a las diferentes construc- ciones repetitivas) no tiene por qué ser simplemente una expresión lógica, sino que puede ser cualquier expresión. Por ejemplo, los siguiente bucles while (x−−) { . . . } while (x = x+1); Pedro Ramírez <pedroramirez22@gmail.com> 6
  • 7. CENTRO TECNOLÓGICO DE AVANZADA AREA DE MECATRÓNICA Código: M06 MICROCONTROLADORES I Laboratorio: D-19 Duración: 2 Hs INSTRUCCIONES DE CONTROL son perfectamente válidos. En ambos casos el cuerpo del bucle se repetirá mientras el valor de x sea distinto de 0 . Nótese que en el segundo caso el cuerpo del bucle es nulo, lo cual también es posible. EJERCICIOS 1. Considerar el siguiente código del programa int i = 1; while(i <= n){ if((i%n) == 0){ ++i; } printf("%d n", i); } a) Cuál será la salida si n es cero. b) Cuál será la salida si n es uno. c) Cuál será la salida si n es tres. 2. Cuál es la salida del siguiente bucle? suma = 0; while(suma < 100) sum+=5; printf("%d n", suma); 3. Escribir un bucle while que visualice todas las potencias de un entero n menores a un valor especificado max_limite. 4. Escribir un programa que encuentre el primer numero introducido por teclado. 5. Calcular la suma de una serie de números leídos del teclado. Ultima Actualización 16 de marzo de 2017 Pedro Ramírez <pedroramirez22@gmail.com> 7