SlideShare una empresa de Scribd logo
1 de 79
Descargar para leer sin conexión
contenido
1
Introducción - Flujos
Dar formato a números para la salida del programa.
• cin y cout -Impresión de una línea de texto
• Lectura desde el teclado
• Puesta en cascada de los operadores de Inserción/ extracción de
flujo.
• Salida de caracteres con la funcion put, put en cascada
• Eof en cin
Entrada/ salida de string funcion setw
Entrada de strings, funciones cin.get()
Funciones putback, peek y ws
Bases: dec, oct, hex y setbase
Precision de punto flotante(precisión, set precision)
Estados de formato de flujo
Ceros a la derecha y puntos decimales
• Las bibliotecas estándar de C++ tienen un amplio conjunto de
capacidades de entrada/salida(E/S).
• C++ utiliza E/S a prueba de tipos, las operaciones de E/S se realizan
de forma automática y de forma sensible al tipo de datos.
• Para poder emplear los elementos que permitan la entrada y salida
de datos del medio estándar de entrada y salida usaremos
primordialmente la biblioteca iostream. Sin embargo, para poder
manipular los datos, sobre todo para la salida de datos, se podrá
emplear la biblioteca iomanip, como veremos más adelante.
2
Introducción
Flujos
• La E/S de C++ se da en flujos de bytes. Un flujo es
simplemente una secuencia de bytes. En las operaciones de
entrada, los bytes fluyen desde un dispositivo (por ejemplo un
teclado, una unidad de disco) hacia la memoria principal.
• En operaciones de salida los bytes fluyen de la memoria
principal hacia un dispositivo (por ejemplo una pantalla, una
impresora, una unidad de disco).
• La aplicación asocia significado a los bytes. Pueden
representar caracteres ASCII, o cualquier otro tipo de
información que pueda requerir una aplicación.
3
Entendiendo las bibliotecas en C++
• Por otro lado, debemos tener presente que para el lenguaje C++ se han venido
desarrollando una infinidad de bibliotecas de funciones y clases, lo que ha traído
como consecuencia que en muchos casos se empleen en un mismo programa dos
a más bibliotecas que definan las mismas clases u objetos, lo que trae como
consecuencia una interrupción en el proceso de compilación.
• Para solucionar este problema, el lenguaje ha implementado un mecanismo por
medio del cual los elementos definidos en una biblioteca se pueden colocar
dentro de un ámbito, identificado con un nombre, ese ámbito se conoce con el
nombre de "espacio de nombres" (la implementación de un espacio de nombres
se desarrollará en el capítulo de funciones, aquí solo lo emplearemos).
• Para el caso de las bibliotecas iostream e iomanip, el espacio de nombres que se
ha definido en ambos casos se denomina std que viene del inglés standard.
4
cin y cout -Impresión de una línea de texto
• cin es el flujo de entrada estándar que normalmente es el teclado y
cout es el flujo de salida estándar que por lo general es la pantalla.
• iostream es el archivo de encabezado del flujo de entrada/salida.
Este archivo debe incluirse cuando se utilicen cin o cout. En vez de
n podemos poner endl, como a continuación:
5
Lectura desde el teclado
• La instrucción cin >> i1; obtiene un valor desde el teclado. El usuario
debe introducir un valor y luego enter. cin saltea los espacios en
blanco, los tabuladores y el salto de línea.
• endl envía a la salida un salto de línea.
6
Puesta en cascada de los operadores inserción/
extracción de flujo
• Los operadores << y >> pueden utilizarse en forma de cascada, como por
ejemplo en:
cout << “47 mas 53 es:”<< (47 + 53) << endl;
se ejecutan como si hubieran sido escritas en la forma:
(((cout << ”47 mas 53 es ”) << (47 + 53)) << endl);
o sea que asocia de izquierda a derecha. Esto funciona porque cout << a;
devuelve una referencia hacia su operando izquierdo, es decir cout.
• Por lo tanto:
(cout << “47 mas 53 es ”) envía a la salida la cadena de caracteres especificada
y devuelve una referencia a cout. De igual forma: cin >> a >> b;
realiza la entrada en a y devuelve una referencia a cin la cual realiza la entrada
en b.
7
Uso de cout.width
• En el primer caso se emplea: cout.width(n), donde cout.width
representa el llamado a ejecución de la función miembro (método)
width que pertenece a (es miembro de) cout. n es un valor entero que
indica la cantidad mínima de caracteres a emplear en la salida del valor
(es equivalente al uso de %nd en el lenguaje C).
• El ejemplo siguiente muestra el efecto de esta función:
8
Explicando cout.width
• Aquí podemos ver algunas cosas que son muy significativas, la primera es
que la instrucción de formato y la instrucción que envía el valor de salida
van por separado. La segunda y más importante es que el formato se aplica
solo a la operación de salida inmediata, al resto no se aplica, por lo que se
deberá anteponer en cada instrucción de salida.
• A esto hay que recordar que el operador << se aplica una sola vez con el
objeto cout, pero como esta operación luego de enviar el resultado al medio
de salida devuelve una referencia al objeto cout, la operación se puede
concatenar en la forma cout << a << b << c << ..., por esta razón el formato
solo se aplicará al primer valor, como podemos ver en el ejemplo siguiente:
int a = 2351, b = 765, b = 1234;
cout.width(10)
cout << a << b << endl;
cout << c << endl;
9
cout_width y cout_width_2
10
Pregunta01
• Codifique en c++ para obtener el siguiente resultado
11
Salida de caracteres con la funcion put, put en cascada
La función miembro put envía a la salida un carácter, por ejemplo: cout.put(’A’);
lo cual despliega una A en pantalla.
Las llamadas a put pueden ponerse en cascada como en: cout.put(’A’).put(’n’);
lo cual da salida a A seguida de un carácter de nueva línea.
El operador punto (.) asocia de izquierda a derecha y la función miembro put
devuelve una
referencia al objeto mediante el que se realizo la llamada a put.
put también puede invocarse mediante una expresión de valor ASCII, como en
cout.put(65) que también da salida a A.
por ejemplo:
cout.put(’A’).put(’n’).put(’B’).put(65);
imprime:
A
BA
12
cout.put
• El método toma el carácter contenido en la variable "c" y lo envía al
medio de salida. El siguiente ejemplo muestra su uso:
13
Eof en cin
• El operador de extracción de flujo era >>. Cuando este encuentra el
fin de archivo en una entrada, devuelve cero (false), de lo contrario
devuelve una referencia al objeto mediante el cual es llamado (cin).
Por ejemplo, podemos escribir el programa:
14
Entrada/ salida de string funcion setw
Es posible asignar una cadena a un arreglo de caracteres utilizando cin
y setw como sigue:
15
Uso del setw
• En el segundo caso emplearemos una función definida en la biblioteca
iomanip. Se trata de setw(n).
• Esta función, al igual que cout.width(n), define la mínima cantidad de
caracteres en a que se representará el valor, sin embargo la forma de
emplearla es mucho más sencilla y práctica, como veremos a
continuación:
int a = 2351, b = 765, c = 1234;
cout << setw(10) << a << setw(10) << b << endl;
cout << setw(10) << c << endl;
16
Entrada de strings, funciones cin.get() y cin.getline()
• cin.get() (sin argumentos), La función cin.get() lee un carácter desde
el teclado. a=cin.get() almacena el carácter leído en la variable a.
• Se pueden introducir blancos, tabuladores y nueva línea en a (idem to
getchar). Consideremos el siguiente programa:
17
Si ingreso una palabra
de largo mayor o igual a
tres, se cargaran
caracteres en a, b y c. Si
hubieran mas
instrucciones de lectura a
continuación leerían los
caracteres restantes (si
el largo de la palabra
ingresada es mayor que
tres).
Otro ejemplo de cin.get
• El método toma un carácter del buffer de entrada y lo entrega al
programa. El siguiente ejemplo muestra su efecto:
18
cin.get (a,b,c – 3 argumentos)
Hay otra versión de la función get que toma tres argumentos: un
arreglo de caracteres, un límite de tamaño y un delimitador (con un
valor predeterminado de ’nn’). Esta versión lee caracteres desde el flujo
de entrada, lee hasta uno menos que el número de caracteres
especificado y termina o termina antes si lee el delimitador.
Esta función inserta el carácter nulo ’n0’ al final del arreglo de
caracteres. El delimitador no se coloca en el arreglo pero permanece en
el flujo de entrada y sería el siguiente carácter que se lea en una
instrucción de entrada.
Al igual que el get sin argumentos ingresa espacios en blanco, nueva
línea y tabulador (en el caso de que estos no sean delimitadores). Por
ejemplo:
19
20
cin.unget()
• El método envía al buffer de entrada el último carácter extraído por el
método cin.get().
• Los ejemplos siguientes mostrarán el efecto de este método:
• // Ejemplo 1, sin usar cin.unget()
Escuela de Estudios Generales - UNMSM 21
cin.unget() parte II
22
Funciones peek y putback
• El método peek obtiene una copia del carácter del buffer de entrada,
sin extraerlo y lo entrega al programa. En el ejemplo siguiente se
podrá ver el efecto de este método:
23
cin.putback(c)
El método es similar a cin.unget() con la diferencia que el usuario
puede enviar al buffer de
entrada el carácter que desee. En el ejemplo siguiente se podrá ver su
efecto:
24
Funcion ws
• La función permite extraer del buffer de entrada todos los espacios
(espacios en blanco, tabuladores y cambios de línea) que vaya
encontrando hasta encontrar un carácter no blanco. Observe los
siguientes códigos:
• // Ejemplo 1, sin usar ws
25
Funcion ws
• Usando ws
26
Bases: dec, oct, hex y setbase –banderas de formato
• Los enteros normalmente se interpretan como valores decimales.
Para cambiar la base sobre la que se interpretan los enteros
insertamos hex (para establecer la base a hexadecimal), oct (para
establecer la base a octal), o dec (para reestablecer la base a
decimal).
• La base también se puede cambiar utilizando setbase el cual toma un
argumento entero de 10, 8 o 16. Se requiere el archivo de
encabezado <iomanip>.
• Las banderas de formato (format flags) son constantes que permiten
definir ciertos atributos que influenciarán en la forma cómo
aparecerán los datos en el medio de salida. Los ejemplos siguiente
muestra alguno de ellos:
27
left y right
• Observe que el formato se mantiene en todos los casos, sin embargo
el uso de los elementos "left" y "right" harán que los resultados se
alineen a la izquierda o a la derecha respectivamente. También se
puede ver que una vez que se ejecuta el elemento, la alineación se
mantenga hasta que se use de otro elemento lo cambie. Un segundo
ejemplo de estas banderas podemos verlas a continuación:
28
• Las banderas, "hex", "oct" y "dec" controlan la base (16, 8 y 10) en la
que aparecerán los valores en la salida. Las banderas "uppercase", y
"nouppercase" determinan la forma en que se mostrarán las letras en
el formato hexadecimal, mayúsculas o minúsculas respectivamente.
• Observe también que los formatos se mantienen hasta que se levante
otra bandera. Finalmente mostraremos cómo poder rellenar los
espacios colocados en los formatos con otro carácter diferente:
29
Precisión de punto flotante(precisión, set precisión)
• Por defecto, los valores de punto flotante aparecerán con un formato pre establecido. El ejemplo
siguiente muestra este detalle:
• double f = 3.1415926535;
• double g = 0.0000012345;
• cout << f << endl;
• cout << -f << endl;
• cout << g << endl;
• cout << -g << endl;
La salida será: 3.14159
-3.14159
1.2345e-006
-1.2345e-006
30
• Para dar format a valores de punto flotante, C++ requiere del uso de
dos herramientas, una que define la precisión en la que aparecerá el
número (cout.presicion(n) o setpresicion(n)) y la otra que interpretará
el significado de la precisión (fixed).
• Por defecto cout.presicion(n) y setpresicion(n), define la cantidad de
cifras o dígitos que se mostrarán en el medio de salida, entiéndase
que esto se refiere al número de dígitos, no al número de cifras
decimales. El siguiente ejemplo muestra este detalle:
Escuela de Estudios Generales - UNMSM 31
Precisión de punto flotante(precisión, set precisión)
• La figura anterior confirma lo explicado, cout.presicion(n) y
setpresicion(n) no definen el número de decimales sino el número de
dígitos que aparecerán en la salida. Por eso se requiere otra
herramienta, en este caso fixed. Al activar esta bandera, el valor de
precisión se interpretará como el número de decimales. Entonces:
32
Estados de formato de flujo
• Utilizamos las funciones setf, unsetf y flags para setear y resetear los
indicadores. Los indicadores son: ios::skipws = se saltea los caracteres de
espacio en blanco en un flujo de entrada
• ios::left = alinea la salida a la izquierda de un campo. Los caracteres de
relleno aparecen a la derecha en caso necesario
• ios::right = alinea la salida a la derecha de un campo. Los caracteres de
relleno aparecen a la izquierda en caso necesario.
• ios::internal = indica que el signo de un numero debe estar alineado a la
izquierda y la magnitud alineada a la derecha. Los caracteres de relleno
aparecen en el medio, entre el signo y el numero.
• ios::dec = especifica que los enteros deben tratarse como valores decimales.
• ios::oct = especifica que los enteros deben tratarse como valores octales.
33
• ios::hex = especifica que los enteros deben tratarse como valores hexadecimales.
• ios::showbase = especifica que la base de un numero debe aparecer en la salida al
inicio de un numero (0 para los octales, 0x para los hexadecimales).
• ios::showpoint = especifica que los números de punto flotante deben aparecer en la
salida con un punto decimal.
• ios::uppercase = especifica que se debe utilizar X mayúscula en 0X antes de un entero
hexadecimal y E mayúscula cuando se utiliza notación científica para números en
punto flotante.
• ios::showpos = especifica que los números positivos y negativos deben estar
precedidos del signo.
• ios::scientiflc = especifica que la salida de un valor de punto flotante debe estar en
notación científica.
• setiosflags hace lo mismo que setf.resetiosflags hace lo mismo que unsetf. Se necesita
el archivo de encabezado iomanip
34
Estados de formato de flujo
Ceros a la derecha y puntos decimales
• El indicador showpoint se establece para forzar que un número de
punto flotante aparezca en la salida con su punto decimal y sus ceros a
la derecha. 79.0 se imprimirá como 79 cuando showpoint no este
establecido y como 79.000 (con tantos ceros a la derecha como lo
especifique la precisión) cuando si este establecido.
• Ejemplo:
35
Mientras la expresión sea
diferente de cero
(verdadera) se ejecuta el
bloque de instrucciones
Instrucción while
Expresión ≠0
si
Bloque de instrucciones
no
verdadero =1
while(expresion)
{
bloque de instrucciones
}
// continua con el codigo
Instrucción while
Sintaxis:
while (expresión)
bloque;
El bloque de instrucciones se ejecutará mientras
el valor de la expresión sea verdadero. De lo
contrario se continua con la siguiente
instrucción.
{ cout<<"contador = " << contador << "n";
contador = contador +1;
}
_getch();
return 0;
}
Ejemplo 1- Instrucción while
Escriba un programa en C++ que permita imprimir los cinco
primeros números positivos.
• Datos de entrada: Ninguno
• Datos de salida: Impresión de los cinco primeros números
positivos
• Restricciones: Ninguna
int main()
{ int contador;
contador = 1;
while (contador <= 5)
serie--; cont++;
}
_getch();
return 0;
}
Ejemplo 2 - Instrucción while (Solución 1)
Dado un numero n=7 generar 7,6,5,4,3,2,1 .
• Datos de entrada: n
• Datos de salida: Impresión de la serie de números positivos
• Restricciones: Ninguna
#include<iostream>
#include<conio.h>
using namespace std;
int main ()
{
int n, cont, serie;
cout<<"Cantidad de terminos:";
cin>> n;
cont = 1;
serie = n;
while(cont <= n)
{
cout<< serie << " ";
serie=serie-1;
cont =cont+1
Ejemplo 2 - I nstrucción while (Solución 2)
#include<iostream>
#include<conio.h>
using namespace std;
int main()
{
int n;
cout<< "Cantidad de terminos:";
cin>> n;
while(n > 0)
{
cout<< n << " ";
n--;
}
_getch();
return 0;
}
Dado un numero n=7 generar 7,6,5,4,3,2,1 .
• Datos de entrada: n
• Datos de salida: Impresión de la serie de números positivos
• Restricciones: Ninguna
expresión sea diferente de
cero.
• Siempre se ejecuta el
bloque de instrucciones
por lo menos una vez.
Expresión ≠0
Bloque de instrucciones
si
no
Instrucción do…while
do{
bloque de instrucciones
}
while(expresion)
• Se ejecuta el bloque de
instrucciones mientras la
Instrucción do … while
Sintaxis:
do
bloque de instrucciones;
while (expresión);
El bloque de instrucciones se ejecutará mientras el
valor de la expresión sea verdadero. De lo contrario se
continua con la siguiente instrucción.
El bloque de instrucciones se ejecutará por lo menos
una vez.
Instrucción do … while
int main()
{
int contador;
contador = 1;
do
{ cout << "contador = " << contador << "n";
contador = contador + 1;
} while (contador <= 5);
_getch();
return 0;
}
Escriba un programa en C++ que permita imprimir los cinco
primeros números positivos.
• Datos de entrada: Ninguno
• Datos de salida: Impresión de los cinco primeros números
positivos
• Restricciones: Ninguna
Instrucción while y do … while
El bloque de instrucciones puede estar constituido por una
o más instrucciones.
Si el bloque está compuesto por varias instrucciones se
encierran entre { }.
No olvide que:
▫ En el bloque de instrucciones se debe incluir alguna
instrucción que permita modificar el valor de la expresión
en a lgún momento para poder salir del lazo.
▫ En la instrucción do …while el bloque de instrucciones se
ejecuta por lo menos la primera vez.
• Se ejecuta la expresión 1
• Mientras la expresión 2 sea
diferente de cero
(verdadera) se ejecuta el
bloque de instrucciones y
la expresión 3
no
Instrucción for
expresión 1
expresión2 ≠0
si
Bloque de instrucciones
expresión 3
Instrucción for
Sintaxis:
for (expresión 1; expresión 2; expresión 3)
bloque;
▫ Primero se ejecuta la expresión 1.
▫ El bloque de instrucciones y la expresión 3 se
ejecutarán mientras el valor de la expresión 2 sea
verdadero.
Instrucción for
int main()
{
int contador;
for (contador = 1;contador < 6; contador++)
cout << "contador = " << contador << "n";
_getch();
return 0;
}
Escriba un programa en C++ que permita imprimir los cinco
primeros números positivos.
• Datos de entrada: Ninguno
• Datos de salida: Impresión de los cinco primeros números
positivos
• Restricciones: Ninguna
Instrucción for
• Si se omite expresión 2 se asumirá el valor permanente de 1 y
el bloque se ejecutará de forma indefinida (bucle infinito).
• Inicialmente se ejecuta expresión 1, esta se realiza para
inicializar algún parámetro que controla la repetición del
bloque de instrucciones.
• La expresión 2 es una condición que debe ser verdadera para
que se ejecute el bloque.
• La expresión 3 s e utiliza para modificar el valor del parámetro
que controla el bucle.
Ejemplo 1 - For
int main()
{
int i;
cout<<"Los números pares entre 10 y 20 inclusive son:n";
for(i = 10; i <= 20; i = i + 2)
cout << i << "n";
_getch();
return 0;
}
Elaborar un programa en C++ que muestre los números pares
comprendidos entre 10 y 20 inclusive.
• Datos de entrada: Ninguno
• Datos de salida: Impresión de los pares entre 10 y 20
• Restricciones: Ninguna
Ejemplo 2 - For
int main()
{
cout<< "Los números pares entre 10 y 20 inclusive son:n";
int i;
for(i = 20;i >= 10; i = i-2)
cout << i << "n";
_getch();
return 0;
}
Elaborar un programa en C++ que muestre los números pares
comprendidos entre 10 y 20 inclusive (Descendente).
• Datos de entrada: Ninguno
• Datos de salida: Impresión de los pares entre 10 y 20
• Restricciones: Ninguna
cout << char(i)<< " " << i << "n";
_getch();
return 0;
}
Ejemplo 3 - For
Mostrar la tabla de caracteres ASCII a partir del Código 32 (el
espacio en blanco) hasta el Código 164 (o sea la ñ) sin incluir las
minúsculas ( rango del 97 al 122).
• Datos de entrada: Ninguno
• Datos de salida: Impresión de algunos caracteres ASCII
• Restricciones: Ninguna
int main()
{
cout << "Los Caracteres ASCII son: n";
0 1
if(i<97 || i>122)
1 0
int i; i+=2
for(i = 32;i <= 164; i++)i+=1
if(i < 97 || i > 122)
Sentencias
break , continue, exit
Temario
• break
• continue
• exit
break
• La proposición "break" permite una salida forzada de
las siguientes estructuras de control:
▫
▫
▫
▫
do…while
while
for
switch
• Es utilizado para provocar el fin de la ejecución de
una ECR o para salir de la sentencia switch.
Sentencia break
int main()
{
int num, cont;
cont=0;
num=0;
while (num <= 20)
{ num = num + 1;
if (cont==6)
break;
if (num % 2 ==0)
{ cont = cont + 1;
cout << num << " ";
}
}
_getch();
return 0;
}
Realizar una aplicación en C++ que imprima los 6
primeros número pares que hay entre 1 y 20
continue
• La proposición “continue" provoca un salto
obligatorio a la siguiente iteración dentro del ciclo de
las siguientes ECR:
▫ do…while
▫ while
▫ for
• La s entencia dentro de un bucle forzará al programa
a finalizar la iteración actual y a comenzar la
evaluación de la siguiente.
int main()
{
int i, suma;
suma=0;
for (i = 1; i <= 10; i++)
{
if (i % 2 != 0) // salta los impares
continue;
suma = suma + i; // aquí procesa los pares
}
cout << "La suma es : " << suma;
_getch();
return 0;
}
Sentencia continue
Realizar una aplicación en C++ que sume los
número pares comprendidos entre 1 y 10 inclusive
exit
Sintaxis:
exit (código)
▫ Si el código es 0, entonces la aplicación terminará
bajo la denominación de “éxito”
▫ Si el código diferente a 0, entonces la aplicación
terminará bajo la denominación de “fallo”
• Es una función que esta definida en la librería
<stdlib.h> y es utilizada para terminar la ejecución
programa actual, desde el lugar donde se le invoque.
{ cout << "Pulse el caracter S para salir ";
cin>> caracter;
if (caracter==’S’ || caracter==’s’)
exit(0);
}
return 0;
}
Sentencia exit
Realizar una aplicación en C++ que pregunte al
usuario si desea salir del programa hasta que el
usuario ingrese la letra S.
int main()
{
char caracter;
while (1) //verdadero
{ cout<<“Ingrese el numero 0 para salir ”;
cin>> numero;
if (numero == 0)
exit(0);
contador = contador + 1;
}
cout << “La cantidad de numeros ingresados es : ” << contador;
return 0;
}
Ejercicio
Realizar una aplicación en C++ que permita ingresar un
conjunto de números enteros y nos determine la cantidad de
enteros ingresados, s i se sabe que se ingresarán números
hasta que el usuario digite el valor de cero.
int main()
{
int contador, numero;
contador=0;
while (1)
36
While
COMPARANDO BUCLES: WHILE, FOR Y DO WHILE
• El ciclo while se ejecuta mientras la condición sea
verdadera
for
Do while
for(i=1; i<=10; i++)
• Se usa cuando se trata de un conteo y cuando
el numero de iteraciones requeridas se pueden
determinar desde el principio
• Se ejecuta muy similar al while, excepto que las
sentencias del bucle se ejecutan mas de una
vez
Ej01:
escribir los números
10,20,30…100, usando los
bucles while, for y do while
37
Ej02: leer un numero entero
positivo y calcular su
factorial, usando el bucle
con while, for y do while.
38
int main(){
//6 6! =6*5*4*3*2*1
0;
Bucle do…while
• La sentencia do while se utiliza para especificar un bucle condicional
que se ejecuta al menos una vez.
Semántica
• Sintaxis
do
sentencias
while(expresión)
39
Después de la ejecución de la
sentencia, se evalúa la
expresión, si es verdadera se
repite la(s) sentencia(s), si es
falsa se termina el bucle y se
las siguientes instrucciones del
programa.
El bucle do ..while constituye el ciclo de prueba posterior(ciclo controlado a la salida),
c ontinua las iteraciones a través del ciclo mientras la condición es verdadera, sale del
ciclo cuando la condición es falsa.
Estructura de un ciclo do.. While
40
El ciclo do.. While hace una prueba posterior, la
manera en como la realiza es usando do para hacer
instrucciones previas, las cuales serán evaluadas con
posterioridad con la expresión while.
0. Salir del Programa
1. Sumar valores
2. Restar Valores
3. Multiplicar
do
{
menu de opciones
switch(opcion)
case 0
case ...
}
while (opcion !=0)
Observe que el cout y el cin están al
inicio de la instrucción, las cuales son
comprobadas al final.
Hay que tener en cuenta que do
puede ser reemplaza por while, la
elección dependerá de la aplicación
y del estilo al programar, tener en
cuenta si se valida antes o después.
42
Verificación de validez – instrucción do
• La utilidad d e la instrucción do radica en que filtra los datos ingresados
por el usuario y posteriormente verifica.
• Suponga que se requiere que se ingrese la identificación de un código de
usuario que esta entre 1000 y 1999, un numero fuera de ese rango es
rechazado pidiéndose que se ingrese el numero que este dentro del rango solicitado.
43
0
1
1
0
1
10
0
//250 2250
PROBLEMAS PROPUESTOS
1.aUsando una instrucción do, escriba un programa para aceptar una calificación. El programa deberá solicitar una
calificación en forma continua en tanto se introduzca una calificación inválida. Una calificación inválida es cualquier calificación
menor que 0 o mayor que 100. Después que se ha introducido una calificación válida, su programa deberá desplegar el valor de
la calificación introducida.
b. Modifique el programa escrito para el ejercicio 1a de modo que el usuario sea alertado cuando se ha introducido una
calificación inválida.
c. Modifique el programa escrito para el ejercicio 1b de modo que permita al usuario salir del programa introduciendo el número
999.
d. Modifique el programa escrito para el ejercicio 1b de modo que termine en forma automática después que se han introducido
cinco calificaciones inválidas.
2. a. Escriba un programa que solicite en forma continua que se introduzca una calificación. Si la calificación es menor que 0 o
mayor que 100, su programa deberá imprimir un mensaje apropiado que informe al usuario que se ha introducido una
calificación inválida, de lo contrario la calificación deberá sumarse a un total. Cuando se introduzca una calificación de 999 el
programa deberá salir del ciclo de repetición y calcular y desplegar el promedio de las calificaciones válidas introducidas.
b. Ejecute el programa escrito en el ejercicio 2a en una computadora y verifique el programa usando datos de prueba
apropiados.
3. a. Escriba un programa para invertir los dígitos de un número entero positivo. Por ejemplo, si se introduce el número 8735, el
número desplegado deberá ser
5378.(Sugerencia: Use una instrucción do y continuamente quite y despliegue el dígito de las
unidades del número. Si la variable num en un inicio contiene el número introducido, el dígito de las unidades se obtiene como
(num % 10). Después que se despliega un dígito de unidades, dividir el número entre 10 establece el número para la siguiente
iteración. Por tanto (8735 % 10) es 5 y (8735 / 10) es 873. La instrucción do deberá continuar en tanto el número remanente no
sea cero.
b. Ejecute el programa escrito en el ejercicio 3a en una computadora y verifique el programa usando datos de prueba
apropiados.
44
44
En C++, esta distinción tan fácil no se sostiene, pues cada instrucción puede usarse
para crear cada tipo de ciclo. La respuesta en C++, entonces, en realidad es
cuestión de estilo. En vista que un ciclo for y uno while son intercambiables en C++,
cualquier ciclo es apropiado.
44
Que se obtiene con el siguiente código:
44
Técnicas de programación con ciclos
❑ Incluir una instrucción cin dentro de un while
❑ Introducir datos de forma interactiva dentro de un ciclo, es aplicable a la instrucción for.
❑ Se usa una instrucción cin para permitir a un usuario introducir de manera interactiva
un conjunto de números.
❑ Conforme se introduce cada número, es sumado a un total. Cuando se sale del ciclo for,
se calcula y se despliega el promedio.
COMPARANDO BUCLES: WHILE, FOR Y DO WHILE
71
While
• El ciclo while se ejecuta mientras la condición
sea verdadera.
for
• Se usa cuando se trata de un conteo y cuando
el numero de iteraciones requeridas se pueden
determinar desde el principio
Do while
• Se ejecuta muy similar al while, excepto que las
sentencias del bucle se ejecutan mas de una
vez
Ej01:escribir los números
10,20,30…100, usando los
bucles while, for y do while
72
Ej02: leer un numero entero
positivo y calcular su
factorial, usando el bucle
con while, for y do while.
73
Bucle do…while
• La sentencia do while se utiliza para especificar un bucle condicional
que se ejecuta al menos una vez.
• Sintaxis Semántica
do
sentencias
while(expresión)
74
Después de la ejecución de la
sentencia, se evalúa la
expresión, si es verdadera se
repite la(s) sentencia(s), si es
falsa se termina el bucle y se
las siguientes instrucciones del
programa.
El bucle do ..while constituye el ciclo de prueba posterior(ciclo controlado a la salida),
continua las iteraciones a través del ciclo mientras la condición es verdadera, sale del
ciclo cuando la condición es falsa.
Estructura de un ciclo do.. While
75
El ciclo do.. While hace una prueba posterior, la
manera en como la realiza es usando do para hacer
instrucciones previas, las cuales serán evaluadas con
posterioridad con la expresión while.
76
Una cierta mejora seria el reemplazo
de la instrucción do por una
instrucción compuesta.
Observando el diagrama:
Las instrucciones que se encuentran
en el ámbito(dentro) de do se
ejecutan al menos una vez antes de
evaluar a la expresión.
Observe que el cout y el cin están al
inicio de la instrucción, las cuales son
comprobadas al final.
Hay que tener en cuenta que do
puede ser reemplaza por while, la
elección dependerá de la aplicación
y del estilo al programar, tener en
cuenta si se valida antes o después.
77
Verificación de validez – instrucción do
• La utilidad de la instrucción do radica en que filtra los datos ingresados
por el usuario y posteriormente verifica.
• Suponga que se requiere que se ingrese la identificación de un código de
usuario que esta entre 1000 y 1999, un numero fuera de ese rango es
rechazado pidiéndose que se ingrese el numero que este dentro del rango
solicitado.
78
PROBLEMAS PROPUESTOS
1.aUsando una instrucción do, escriba un programa para aceptar una calificación. El programa deberá solicitar una
calificación en forma continua en tanto se introduzca una calificación inválida. Una calificación inválida es cualquier calificación
menor que 0 o mayor que 100. Después que se ha introducido una calificación válida, su programa deberá desplegar el valor de
la calificación introducida.
b. Modifique el programa escrito para el ejercicio 1a de modo que el usuario sea alertado cuando se ha introducido una
calificación inválida.
c. Modifique el programa escrito para el ejercicio 1b de modo que permita al usuario salir del programa introduciendo el número
999.
d. Modifique el programa escrito para el ejercicio 1b de modo que termine en forma automática después que se han introducido
cinco calificaciones inválidas.
2. a. Escriba un programa que solicite en forma continua que se introduzca una calificación. Si la calificación es menor que 0 o
mayor que 100, su programa deberá imprimir un mensaje apropiado que informe al usuario que se ha introducido una
calificación inválida, de lo contrario la calificación deberá sumarse a un total. Cuando se introduzca una calificación de 999 el
programa deberá salir del ciclo de repetición y calcular y desplegar el promedio de las calificaciones válidas introducidas.
b. Ejecute el programa escrito en el ejercicio 2a en una computadora y verifique el programa usando datos de prueba
apropiados.
3. a. Escriba un programa para invertir los dígitos de un número entero positivo. Por ejemplo, si se introduce el número 8735, el
número desplegado deberá ser 5378.(Sugerencia: Use una instrucción do y continuamente quite y despliegue el dígito de las
unidades del número. Si la variable num en un inicio contiene el número introducido, el dígito de las unidades se obtiene como
(num % 10). Después que se despliega un dígito de unidades, dividir el número entre 10 establece el número para la siguiente
iteración. Por tanto (8735 % 10) es 5 y (8735 / 10) es 873. La instrucción do deberá continuar en tanto el número remanente no
sea cero.
b. Ejecute el programa escrito en el ejercicio 3a en una computadora y verifique el programa usando datos de prueba
apropiados. 79

Más contenido relacionado

Similar a Entrada y salida en C

A1 u1-16230227
A1 u1-16230227A1 u1-16230227
A1 u1-16230227erikalejo
 
Introduccion a c++
Introduccion a c++Introduccion a c++
Introduccion a c++guestab91474
 
Comandos importantes en c++
Comandos importantes en c++Comandos importantes en c++
Comandos importantes en c++Andy Otañez
 
Bibliotecas de lenguaje c++
Bibliotecas de lenguaje c++Bibliotecas de lenguaje c++
Bibliotecas de lenguaje c++triss0706
 
Lenguajesdeprogramacion c nivel1-unidad1-01-componentes y tipos de datos_1
Lenguajesdeprogramacion c nivel1-unidad1-01-componentes y tipos de datos_1Lenguajesdeprogramacion c nivel1-unidad1-01-componentes y tipos de datos_1
Lenguajesdeprogramacion c nivel1-unidad1-01-componentes y tipos de datos_1logan1725
 
Lenguajesdeprogramacion c nivel1-unidad1-01-componentes y tipos de datos_1
Lenguajesdeprogramacion c nivel1-unidad1-01-componentes y tipos de datos_1Lenguajesdeprogramacion c nivel1-unidad1-01-componentes y tipos de datos_1
Lenguajesdeprogramacion c nivel1-unidad1-01-componentes y tipos de datos_1nibox
 
Lenguajesdeprogramacion c nivel1-unidad1-01-componentes y tipos de datos_1
Lenguajesdeprogramacion c nivel1-unidad1-01-componentes y tipos de datos_1Lenguajesdeprogramacion c nivel1-unidad1-01-componentes y tipos de datos_1
Lenguajesdeprogramacion c nivel1-unidad1-01-componentes y tipos de datos_1Carlos
 
Lenguajesdeprogramacion c nivel1-unidad1-01-componentes y tipos de datos_1
Lenguajesdeprogramacion c nivel1-unidad1-01-componentes y tipos de datos_1Lenguajesdeprogramacion c nivel1-unidad1-01-componentes y tipos de datos_1
Lenguajesdeprogramacion c nivel1-unidad1-01-componentes y tipos de datos_1Carlos
 
Lenguajesdeprogramacion c nivel1-unidad1-01-componentes y tipos de datos_1
Lenguajesdeprogramacion c nivel1-unidad1-01-componentes y tipos de datos_1Lenguajesdeprogramacion c nivel1-unidad1-01-componentes y tipos de datos_1
Lenguajesdeprogramacion c nivel1-unidad1-01-componentes y tipos de datos_1Carlos
 
Ing. Mecatrónica, Prog. Básica, U2 intro a la programacion
Ing. Mecatrónica, Prog. Básica, U2 intro a la programacionIng. Mecatrónica, Prog. Básica, U2 intro a la programacion
Ing. Mecatrónica, Prog. Básica, U2 intro a la programacionJosé Antonio Sandoval Acosta
 
Uso de las clases iostream
Uso de las clases iostreamUso de las clases iostream
Uso de las clases iostreamTensor
 
Fundamentos de Programación - Unidad II: Introducción a la Programación
Fundamentos de Programación - Unidad II: Introducción a la ProgramaciónFundamentos de Programación - Unidad II: Introducción a la Programación
Fundamentos de Programación - Unidad II: Introducción a la ProgramaciónJosé Antonio Sandoval Acosta
 
iNDICE DE CONTENIDOS
iNDICE DE CONTENIDOSiNDICE DE CONTENIDOS
iNDICE DE CONTENIDOSMarco Rosero
 
Elementos básicos del lenguaje
Elementos básicos del lenguajeElementos básicos del lenguaje
Elementos básicos del lenguajemarbcm
 
Funciones C++
Funciones C++Funciones C++
Funciones C++Jarvis_15
 

Similar a Entrada y salida en C (20)

A1 u1-16230227
A1 u1-16230227A1 u1-16230227
A1 u1-16230227
 
C++.pdf
C++.pdfC++.pdf
C++.pdf
 
Introduccion a c++
Introduccion a c++Introduccion a c++
Introduccion a c++
 
Comandos importantes en c++
Comandos importantes en c++Comandos importantes en c++
Comandos importantes en c++
 
Bibliotecas de lenguaje c++
Bibliotecas de lenguaje c++Bibliotecas de lenguaje c++
Bibliotecas de lenguaje c++
 
Lenguajesdeprogramacion c nivel1-unidad1-01-componentes y tipos de datos_1
Lenguajesdeprogramacion c nivel1-unidad1-01-componentes y tipos de datos_1Lenguajesdeprogramacion c nivel1-unidad1-01-componentes y tipos de datos_1
Lenguajesdeprogramacion c nivel1-unidad1-01-componentes y tipos de datos_1
 
Lenguajesdeprogramacion c nivel1-unidad1-01-componentes y tipos de datos_1
Lenguajesdeprogramacion c nivel1-unidad1-01-componentes y tipos de datos_1Lenguajesdeprogramacion c nivel1-unidad1-01-componentes y tipos de datos_1
Lenguajesdeprogramacion c nivel1-unidad1-01-componentes y tipos de datos_1
 
Lenguajesdeprogramacion c nivel1-unidad1-01-componentes y tipos de datos_1
Lenguajesdeprogramacion c nivel1-unidad1-01-componentes y tipos de datos_1Lenguajesdeprogramacion c nivel1-unidad1-01-componentes y tipos de datos_1
Lenguajesdeprogramacion c nivel1-unidad1-01-componentes y tipos de datos_1
 
Lenguajesdeprogramacion c nivel1-unidad1-01-componentes y tipos de datos_1
Lenguajesdeprogramacion c nivel1-unidad1-01-componentes y tipos de datos_1Lenguajesdeprogramacion c nivel1-unidad1-01-componentes y tipos de datos_1
Lenguajesdeprogramacion c nivel1-unidad1-01-componentes y tipos de datos_1
 
Lenguajesdeprogramacion c nivel1-unidad1-01-componentes y tipos de datos_1
Lenguajesdeprogramacion c nivel1-unidad1-01-componentes y tipos de datos_1Lenguajesdeprogramacion c nivel1-unidad1-01-componentes y tipos de datos_1
Lenguajesdeprogramacion c nivel1-unidad1-01-componentes y tipos de datos_1
 
Ing. Mecatrónica, Prog. Básica, U2 intro a la programacion
Ing. Mecatrónica, Prog. Básica, U2 intro a la programacionIng. Mecatrónica, Prog. Básica, U2 intro a la programacion
Ing. Mecatrónica, Prog. Básica, U2 intro a la programacion
 
6.funciones y recursividad en c++
6.funciones y recursividad en c++6.funciones y recursividad en c++
6.funciones y recursividad en c++
 
Uso de las clases iostream
Uso de las clases iostreamUso de las clases iostream
Uso de las clases iostream
 
cap7.pdf
cap7.pdfcap7.pdf
cap7.pdf
 
Fundamentos de Programación - Unidad II: Introducción a la Programación
Fundamentos de Programación - Unidad II: Introducción a la ProgramaciónFundamentos de Programación - Unidad II: Introducción a la Programación
Fundamentos de Programación - Unidad II: Introducción a la Programación
 
Lenguaje c neo
Lenguaje c neoLenguaje c neo
Lenguaje c neo
 
iNDICE DE CONTENIDOS
iNDICE DE CONTENIDOSiNDICE DE CONTENIDOS
iNDICE DE CONTENIDOS
 
Investigacion 1
Investigacion 1Investigacion 1
Investigacion 1
 
Elementos básicos del lenguaje
Elementos básicos del lenguajeElementos básicos del lenguaje
Elementos básicos del lenguaje
 
Funciones C++
Funciones C++Funciones C++
Funciones C++
 

Último

Sesión 02 TIPOS DE VALORIZACIONES CURSO Cersa
Sesión 02 TIPOS DE VALORIZACIONES CURSO CersaSesión 02 TIPOS DE VALORIZACIONES CURSO Cersa
Sesión 02 TIPOS DE VALORIZACIONES CURSO CersaXimenaFallaLecca1
 
UNIDAD 3 ELECTRODOS.pptx para biopotenciales
UNIDAD 3 ELECTRODOS.pptx para biopotencialesUNIDAD 3 ELECTRODOS.pptx para biopotenciales
UNIDAD 3 ELECTRODOS.pptx para biopotencialesElianaCceresTorrico
 
INTEGRALES TRIPLES CLASE TEORICA Y PRÁCTICA
INTEGRALES TRIPLES CLASE TEORICA Y PRÁCTICAINTEGRALES TRIPLES CLASE TEORICA Y PRÁCTICA
INTEGRALES TRIPLES CLASE TEORICA Y PRÁCTICAJOSLUISCALLATAENRIQU
 
Reporte de simulación de flujo del agua en un volumen de control MNVA.pdf
Reporte de simulación de flujo del agua en un volumen de control MNVA.pdfReporte de simulación de flujo del agua en un volumen de control MNVA.pdf
Reporte de simulación de flujo del agua en un volumen de control MNVA.pdfMikkaelNicolae
 
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
 
TAREA 8 CORREDOR INTEROCEÁNICO DEL PAÍS.pdf
TAREA 8 CORREDOR INTEROCEÁNICO DEL PAÍS.pdfTAREA 8 CORREDOR INTEROCEÁNICO DEL PAÍS.pdf
TAREA 8 CORREDOR INTEROCEÁNICO DEL PAÍS.pdfAntonioGonzalezIzqui
 
Ingeniería clínica 1 Ingeniería biomedica
Ingeniería clínica 1 Ingeniería biomedicaIngeniería clínica 1 Ingeniería biomedica
Ingeniería clínica 1 Ingeniería biomedicaANACENIMENDEZ1
 
PERFORACIÓN Y VOLADURA EN MINERÍA APLICADO
PERFORACIÓN Y VOLADURA EN MINERÍA APLICADOPERFORACIÓN Y VOLADURA EN MINERÍA APLICADO
PERFORACIÓN Y VOLADURA EN MINERÍA APLICADOFritz Rebaza Latoche
 
clasificasion de vias arteriales , vias locales
clasificasion de vias arteriales , vias localesclasificasion de vias arteriales , vias locales
clasificasion de vias arteriales , vias localesMIGUELANGEL2658
 
ECONOMIA APLICADA SEMANA 555555555555555555.pdf
ECONOMIA APLICADA SEMANA 555555555555555555.pdfECONOMIA APLICADA SEMANA 555555555555555555.pdf
ECONOMIA APLICADA SEMANA 555555555555555555.pdffredyflores58
 
CONCEPTOS EN HIDROGEOLOGIA-diapositivas varias.pptx
CONCEPTOS EN HIDROGEOLOGIA-diapositivas varias.pptxCONCEPTOS EN HIDROGEOLOGIA-diapositivas varias.pptx
CONCEPTOS EN HIDROGEOLOGIA-diapositivas varias.pptxBrayanJavierCalle2
 
Voladura Controlada Sobrexcavación (como se lleva a cabo una voladura)
Voladura Controlada  Sobrexcavación (como se lleva a cabo una voladura)Voladura Controlada  Sobrexcavación (como se lleva a cabo una voladura)
Voladura Controlada Sobrexcavación (como se lleva a cabo una voladura)ssuser563c56
 
COMPEDIOS ESTADISTICOS DE PERU EN EL 2023
COMPEDIOS ESTADISTICOS DE PERU EN EL 2023COMPEDIOS ESTADISTICOS DE PERU EN EL 2023
COMPEDIOS ESTADISTICOS DE PERU EN EL 2023RonaldoPaucarMontes
 
DOCUMENTO PLAN DE RESPUESTA A EMERGENCIAS MINERAS
DOCUMENTO PLAN DE RESPUESTA A EMERGENCIAS MINERASDOCUMENTO PLAN DE RESPUESTA A EMERGENCIAS MINERAS
DOCUMENTO PLAN DE RESPUESTA A EMERGENCIAS MINERASPersonalJesusGranPod
 
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
 
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
 
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
 
Comite Operativo Ciberseguridad 012020.pptx
Comite Operativo Ciberseguridad 012020.pptxComite Operativo Ciberseguridad 012020.pptx
Comite Operativo Ciberseguridad 012020.pptxClaudiaPerez86192
 
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
 

Último (20)

Sesión 02 TIPOS DE VALORIZACIONES CURSO Cersa
Sesión 02 TIPOS DE VALORIZACIONES CURSO CersaSesión 02 TIPOS DE VALORIZACIONES CURSO Cersa
Sesión 02 TIPOS DE VALORIZACIONES CURSO Cersa
 
UNIDAD 3 ELECTRODOS.pptx para biopotenciales
UNIDAD 3 ELECTRODOS.pptx para biopotencialesUNIDAD 3 ELECTRODOS.pptx para biopotenciales
UNIDAD 3 ELECTRODOS.pptx para biopotenciales
 
INTEGRALES TRIPLES CLASE TEORICA Y PRÁCTICA
INTEGRALES TRIPLES CLASE TEORICA Y PRÁCTICAINTEGRALES TRIPLES CLASE TEORICA Y PRÁCTICA
INTEGRALES TRIPLES CLASE TEORICA Y PRÁCTICA
 
Reporte de simulación de flujo del agua en un volumen de control MNVA.pdf
Reporte de simulación de flujo del agua en un volumen de control MNVA.pdfReporte de simulación de flujo del agua en un volumen de control MNVA.pdf
Reporte de simulación de flujo del agua en un volumen de control MNVA.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
 
TAREA 8 CORREDOR INTEROCEÁNICO DEL PAÍS.pdf
TAREA 8 CORREDOR INTEROCEÁNICO DEL PAÍS.pdfTAREA 8 CORREDOR INTEROCEÁNICO DEL PAÍS.pdf
TAREA 8 CORREDOR INTEROCEÁNICO DEL PAÍS.pdf
 
Ingeniería clínica 1 Ingeniería biomedica
Ingeniería clínica 1 Ingeniería biomedicaIngeniería clínica 1 Ingeniería biomedica
Ingeniería clínica 1 Ingeniería biomedica
 
PERFORACIÓN Y VOLADURA EN MINERÍA APLICADO
PERFORACIÓN Y VOLADURA EN MINERÍA APLICADOPERFORACIÓN Y VOLADURA EN MINERÍA APLICADO
PERFORACIÓN Y VOLADURA EN MINERÍA APLICADO
 
clasificasion de vias arteriales , vias locales
clasificasion de vias arteriales , vias localesclasificasion de vias arteriales , vias locales
clasificasion de vias arteriales , vias locales
 
ECONOMIA APLICADA SEMANA 555555555555555555.pdf
ECONOMIA APLICADA SEMANA 555555555555555555.pdfECONOMIA APLICADA SEMANA 555555555555555555.pdf
ECONOMIA APLICADA SEMANA 555555555555555555.pdf
 
CONCEPTOS EN HIDROGEOLOGIA-diapositivas varias.pptx
CONCEPTOS EN HIDROGEOLOGIA-diapositivas varias.pptxCONCEPTOS EN HIDROGEOLOGIA-diapositivas varias.pptx
CONCEPTOS EN HIDROGEOLOGIA-diapositivas varias.pptx
 
Voladura Controlada Sobrexcavación (como se lleva a cabo una voladura)
Voladura Controlada  Sobrexcavación (como se lleva a cabo una voladura)Voladura Controlada  Sobrexcavación (como se lleva a cabo una voladura)
Voladura Controlada Sobrexcavación (como se lleva a cabo una voladura)
 
COMPEDIOS ESTADISTICOS DE PERU EN EL 2023
COMPEDIOS ESTADISTICOS DE PERU EN EL 2023COMPEDIOS ESTADISTICOS DE PERU EN EL 2023
COMPEDIOS ESTADISTICOS DE PERU EN EL 2023
 
DOCUMENTO PLAN DE RESPUESTA A EMERGENCIAS MINERAS
DOCUMENTO PLAN DE RESPUESTA A EMERGENCIAS MINERASDOCUMENTO PLAN DE RESPUESTA A EMERGENCIAS MINERAS
DOCUMENTO PLAN DE RESPUESTA A EMERGENCIAS MINERAS
 
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
 
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
 
VALORIZACION Y LIQUIDACION MIGUEL SALINAS.pdf
VALORIZACION Y LIQUIDACION MIGUEL SALINAS.pdfVALORIZACION Y LIQUIDACION MIGUEL SALINAS.pdf
VALORIZACION Y LIQUIDACION MIGUEL SALINAS.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
 
Comite Operativo Ciberseguridad 012020.pptx
Comite Operativo Ciberseguridad 012020.pptxComite Operativo Ciberseguridad 012020.pptx
Comite Operativo Ciberseguridad 012020.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
 

Entrada y salida en C

  • 1. contenido 1 Introducción - Flujos Dar formato a números para la salida del programa. • cin y cout -Impresión de una línea de texto • Lectura desde el teclado • Puesta en cascada de los operadores de Inserción/ extracción de flujo. • Salida de caracteres con la funcion put, put en cascada • Eof en cin Entrada/ salida de string funcion setw Entrada de strings, funciones cin.get() Funciones putback, peek y ws Bases: dec, oct, hex y setbase Precision de punto flotante(precisión, set precision) Estados de formato de flujo Ceros a la derecha y puntos decimales
  • 2. • Las bibliotecas estándar de C++ tienen un amplio conjunto de capacidades de entrada/salida(E/S). • C++ utiliza E/S a prueba de tipos, las operaciones de E/S se realizan de forma automática y de forma sensible al tipo de datos. • Para poder emplear los elementos que permitan la entrada y salida de datos del medio estándar de entrada y salida usaremos primordialmente la biblioteca iostream. Sin embargo, para poder manipular los datos, sobre todo para la salida de datos, se podrá emplear la biblioteca iomanip, como veremos más adelante. 2 Introducción
  • 3. Flujos • La E/S de C++ se da en flujos de bytes. Un flujo es simplemente una secuencia de bytes. En las operaciones de entrada, los bytes fluyen desde un dispositivo (por ejemplo un teclado, una unidad de disco) hacia la memoria principal. • En operaciones de salida los bytes fluyen de la memoria principal hacia un dispositivo (por ejemplo una pantalla, una impresora, una unidad de disco). • La aplicación asocia significado a los bytes. Pueden representar caracteres ASCII, o cualquier otro tipo de información que pueda requerir una aplicación. 3
  • 4. Entendiendo las bibliotecas en C++ • Por otro lado, debemos tener presente que para el lenguaje C++ se han venido desarrollando una infinidad de bibliotecas de funciones y clases, lo que ha traído como consecuencia que en muchos casos se empleen en un mismo programa dos a más bibliotecas que definan las mismas clases u objetos, lo que trae como consecuencia una interrupción en el proceso de compilación. • Para solucionar este problema, el lenguaje ha implementado un mecanismo por medio del cual los elementos definidos en una biblioteca se pueden colocar dentro de un ámbito, identificado con un nombre, ese ámbito se conoce con el nombre de "espacio de nombres" (la implementación de un espacio de nombres se desarrollará en el capítulo de funciones, aquí solo lo emplearemos). • Para el caso de las bibliotecas iostream e iomanip, el espacio de nombres que se ha definido en ambos casos se denomina std que viene del inglés standard. 4
  • 5. cin y cout -Impresión de una línea de texto • cin es el flujo de entrada estándar que normalmente es el teclado y cout es el flujo de salida estándar que por lo general es la pantalla. • iostream es el archivo de encabezado del flujo de entrada/salida. Este archivo debe incluirse cuando se utilicen cin o cout. En vez de n podemos poner endl, como a continuación: 5
  • 6. Lectura desde el teclado • La instrucción cin >> i1; obtiene un valor desde el teclado. El usuario debe introducir un valor y luego enter. cin saltea los espacios en blanco, los tabuladores y el salto de línea. • endl envía a la salida un salto de línea. 6
  • 7. Puesta en cascada de los operadores inserción/ extracción de flujo • Los operadores << y >> pueden utilizarse en forma de cascada, como por ejemplo en: cout << “47 mas 53 es:”<< (47 + 53) << endl; se ejecutan como si hubieran sido escritas en la forma: (((cout << ”47 mas 53 es ”) << (47 + 53)) << endl); o sea que asocia de izquierda a derecha. Esto funciona porque cout << a; devuelve una referencia hacia su operando izquierdo, es decir cout. • Por lo tanto: (cout << “47 mas 53 es ”) envía a la salida la cadena de caracteres especificada y devuelve una referencia a cout. De igual forma: cin >> a >> b; realiza la entrada en a y devuelve una referencia a cin la cual realiza la entrada en b. 7
  • 8. Uso de cout.width • En el primer caso se emplea: cout.width(n), donde cout.width representa el llamado a ejecución de la función miembro (método) width que pertenece a (es miembro de) cout. n es un valor entero que indica la cantidad mínima de caracteres a emplear en la salida del valor (es equivalente al uso de %nd en el lenguaje C). • El ejemplo siguiente muestra el efecto de esta función: 8
  • 9. Explicando cout.width • Aquí podemos ver algunas cosas que son muy significativas, la primera es que la instrucción de formato y la instrucción que envía el valor de salida van por separado. La segunda y más importante es que el formato se aplica solo a la operación de salida inmediata, al resto no se aplica, por lo que se deberá anteponer en cada instrucción de salida. • A esto hay que recordar que el operador << se aplica una sola vez con el objeto cout, pero como esta operación luego de enviar el resultado al medio de salida devuelve una referencia al objeto cout, la operación se puede concatenar en la forma cout << a << b << c << ..., por esta razón el formato solo se aplicará al primer valor, como podemos ver en el ejemplo siguiente: int a = 2351, b = 765, b = 1234; cout.width(10) cout << a << b << endl; cout << c << endl; 9
  • 11. Pregunta01 • Codifique en c++ para obtener el siguiente resultado 11
  • 12. Salida de caracteres con la funcion put, put en cascada La función miembro put envía a la salida un carácter, por ejemplo: cout.put(’A’); lo cual despliega una A en pantalla. Las llamadas a put pueden ponerse en cascada como en: cout.put(’A’).put(’n’); lo cual da salida a A seguida de un carácter de nueva línea. El operador punto (.) asocia de izquierda a derecha y la función miembro put devuelve una referencia al objeto mediante el que se realizo la llamada a put. put también puede invocarse mediante una expresión de valor ASCII, como en cout.put(65) que también da salida a A. por ejemplo: cout.put(’A’).put(’n’).put(’B’).put(65); imprime: A BA 12
  • 13. cout.put • El método toma el carácter contenido en la variable "c" y lo envía al medio de salida. El siguiente ejemplo muestra su uso: 13
  • 14. Eof en cin • El operador de extracción de flujo era >>. Cuando este encuentra el fin de archivo en una entrada, devuelve cero (false), de lo contrario devuelve una referencia al objeto mediante el cual es llamado (cin). Por ejemplo, podemos escribir el programa: 14
  • 15. Entrada/ salida de string funcion setw Es posible asignar una cadena a un arreglo de caracteres utilizando cin y setw como sigue: 15
  • 16. Uso del setw • En el segundo caso emplearemos una función definida en la biblioteca iomanip. Se trata de setw(n). • Esta función, al igual que cout.width(n), define la mínima cantidad de caracteres en a que se representará el valor, sin embargo la forma de emplearla es mucho más sencilla y práctica, como veremos a continuación: int a = 2351, b = 765, c = 1234; cout << setw(10) << a << setw(10) << b << endl; cout << setw(10) << c << endl; 16
  • 17. Entrada de strings, funciones cin.get() y cin.getline() • cin.get() (sin argumentos), La función cin.get() lee un carácter desde el teclado. a=cin.get() almacena el carácter leído en la variable a. • Se pueden introducir blancos, tabuladores y nueva línea en a (idem to getchar). Consideremos el siguiente programa: 17 Si ingreso una palabra de largo mayor o igual a tres, se cargaran caracteres en a, b y c. Si hubieran mas instrucciones de lectura a continuación leerían los caracteres restantes (si el largo de la palabra ingresada es mayor que tres).
  • 18. Otro ejemplo de cin.get • El método toma un carácter del buffer de entrada y lo entrega al programa. El siguiente ejemplo muestra su efecto: 18
  • 19. cin.get (a,b,c – 3 argumentos) Hay otra versión de la función get que toma tres argumentos: un arreglo de caracteres, un límite de tamaño y un delimitador (con un valor predeterminado de ’nn’). Esta versión lee caracteres desde el flujo de entrada, lee hasta uno menos que el número de caracteres especificado y termina o termina antes si lee el delimitador. Esta función inserta el carácter nulo ’n0’ al final del arreglo de caracteres. El delimitador no se coloca en el arreglo pero permanece en el flujo de entrada y sería el siguiente carácter que se lea en una instrucción de entrada. Al igual que el get sin argumentos ingresa espacios en blanco, nueva línea y tabulador (en el caso de que estos no sean delimitadores). Por ejemplo: 19
  • 20. 20
  • 21. cin.unget() • El método envía al buffer de entrada el último carácter extraído por el método cin.get(). • Los ejemplos siguientes mostrarán el efecto de este método: • // Ejemplo 1, sin usar cin.unget() Escuela de Estudios Generales - UNMSM 21
  • 23. Funciones peek y putback • El método peek obtiene una copia del carácter del buffer de entrada, sin extraerlo y lo entrega al programa. En el ejemplo siguiente se podrá ver el efecto de este método: 23
  • 24. cin.putback(c) El método es similar a cin.unget() con la diferencia que el usuario puede enviar al buffer de entrada el carácter que desee. En el ejemplo siguiente se podrá ver su efecto: 24
  • 25. Funcion ws • La función permite extraer del buffer de entrada todos los espacios (espacios en blanco, tabuladores y cambios de línea) que vaya encontrando hasta encontrar un carácter no blanco. Observe los siguientes códigos: • // Ejemplo 1, sin usar ws 25
  • 27. Bases: dec, oct, hex y setbase –banderas de formato • Los enteros normalmente se interpretan como valores decimales. Para cambiar la base sobre la que se interpretan los enteros insertamos hex (para establecer la base a hexadecimal), oct (para establecer la base a octal), o dec (para reestablecer la base a decimal). • La base también se puede cambiar utilizando setbase el cual toma un argumento entero de 10, 8 o 16. Se requiere el archivo de encabezado <iomanip>. • Las banderas de formato (format flags) son constantes que permiten definir ciertos atributos que influenciarán en la forma cómo aparecerán los datos en el medio de salida. Los ejemplos siguiente muestra alguno de ellos: 27
  • 28. left y right • Observe que el formato se mantiene en todos los casos, sin embargo el uso de los elementos "left" y "right" harán que los resultados se alineen a la izquierda o a la derecha respectivamente. También se puede ver que una vez que se ejecuta el elemento, la alineación se mantenga hasta que se use de otro elemento lo cambie. Un segundo ejemplo de estas banderas podemos verlas a continuación: 28
  • 29. • Las banderas, "hex", "oct" y "dec" controlan la base (16, 8 y 10) en la que aparecerán los valores en la salida. Las banderas "uppercase", y "nouppercase" determinan la forma en que se mostrarán las letras en el formato hexadecimal, mayúsculas o minúsculas respectivamente. • Observe también que los formatos se mantienen hasta que se levante otra bandera. Finalmente mostraremos cómo poder rellenar los espacios colocados en los formatos con otro carácter diferente: 29
  • 30. Precisión de punto flotante(precisión, set precisión) • Por defecto, los valores de punto flotante aparecerán con un formato pre establecido. El ejemplo siguiente muestra este detalle: • double f = 3.1415926535; • double g = 0.0000012345; • cout << f << endl; • cout << -f << endl; • cout << g << endl; • cout << -g << endl; La salida será: 3.14159 -3.14159 1.2345e-006 -1.2345e-006 30
  • 31. • Para dar format a valores de punto flotante, C++ requiere del uso de dos herramientas, una que define la precisión en la que aparecerá el número (cout.presicion(n) o setpresicion(n)) y la otra que interpretará el significado de la precisión (fixed). • Por defecto cout.presicion(n) y setpresicion(n), define la cantidad de cifras o dígitos que se mostrarán en el medio de salida, entiéndase que esto se refiere al número de dígitos, no al número de cifras decimales. El siguiente ejemplo muestra este detalle: Escuela de Estudios Generales - UNMSM 31 Precisión de punto flotante(precisión, set precisión)
  • 32. • La figura anterior confirma lo explicado, cout.presicion(n) y setpresicion(n) no definen el número de decimales sino el número de dígitos que aparecerán en la salida. Por eso se requiere otra herramienta, en este caso fixed. Al activar esta bandera, el valor de precisión se interpretará como el número de decimales. Entonces: 32
  • 33. Estados de formato de flujo • Utilizamos las funciones setf, unsetf y flags para setear y resetear los indicadores. Los indicadores son: ios::skipws = se saltea los caracteres de espacio en blanco en un flujo de entrada • ios::left = alinea la salida a la izquierda de un campo. Los caracteres de relleno aparecen a la derecha en caso necesario • ios::right = alinea la salida a la derecha de un campo. Los caracteres de relleno aparecen a la izquierda en caso necesario. • ios::internal = indica que el signo de un numero debe estar alineado a la izquierda y la magnitud alineada a la derecha. Los caracteres de relleno aparecen en el medio, entre el signo y el numero. • ios::dec = especifica que los enteros deben tratarse como valores decimales. • ios::oct = especifica que los enteros deben tratarse como valores octales. 33
  • 34. • ios::hex = especifica que los enteros deben tratarse como valores hexadecimales. • ios::showbase = especifica que la base de un numero debe aparecer en la salida al inicio de un numero (0 para los octales, 0x para los hexadecimales). • ios::showpoint = especifica que los números de punto flotante deben aparecer en la salida con un punto decimal. • ios::uppercase = especifica que se debe utilizar X mayúscula en 0X antes de un entero hexadecimal y E mayúscula cuando se utiliza notación científica para números en punto flotante. • ios::showpos = especifica que los números positivos y negativos deben estar precedidos del signo. • ios::scientiflc = especifica que la salida de un valor de punto flotante debe estar en notación científica. • setiosflags hace lo mismo que setf.resetiosflags hace lo mismo que unsetf. Se necesita el archivo de encabezado iomanip 34 Estados de formato de flujo
  • 35. Ceros a la derecha y puntos decimales • El indicador showpoint se establece para forzar que un número de punto flotante aparezca en la salida con su punto decimal y sus ceros a la derecha. 79.0 se imprimirá como 79 cuando showpoint no este establecido y como 79.000 (con tantos ceros a la derecha como lo especifique la precisión) cuando si este establecido. • Ejemplo: 35
  • 36. Mientras la expresión sea diferente de cero (verdadera) se ejecuta el bloque de instrucciones Instrucción while Expresión ≠0 si Bloque de instrucciones no verdadero =1 while(expresion) { bloque de instrucciones } // continua con el codigo
  • 37. Instrucción while Sintaxis: while (expresión) bloque; El bloque de instrucciones se ejecutará mientras el valor de la expresión sea verdadero. De lo contrario se continua con la siguiente instrucción.
  • 38. { cout<<"contador = " << contador << "n"; contador = contador +1; } _getch(); return 0; } Ejemplo 1- Instrucción while Escriba un programa en C++ que permita imprimir los cinco primeros números positivos. • Datos de entrada: Ninguno • Datos de salida: Impresión de los cinco primeros números positivos • Restricciones: Ninguna int main() { int contador; contador = 1; while (contador <= 5)
  • 39. serie--; cont++; } _getch(); return 0; } Ejemplo 2 - Instrucción while (Solución 1) Dado un numero n=7 generar 7,6,5,4,3,2,1 . • Datos de entrada: n • Datos de salida: Impresión de la serie de números positivos • Restricciones: Ninguna #include<iostream> #include<conio.h> using namespace std; int main () { int n, cont, serie; cout<<"Cantidad de terminos:"; cin>> n; cont = 1; serie = n; while(cont <= n) { cout<< serie << " "; serie=serie-1; cont =cont+1
  • 40. Ejemplo 2 - I nstrucción while (Solución 2) #include<iostream> #include<conio.h> using namespace std; int main() { int n; cout<< "Cantidad de terminos:"; cin>> n; while(n > 0) { cout<< n << " "; n--; } _getch(); return 0; } Dado un numero n=7 generar 7,6,5,4,3,2,1 . • Datos de entrada: n • Datos de salida: Impresión de la serie de números positivos • Restricciones: Ninguna
  • 41. expresión sea diferente de cero. • Siempre se ejecuta el bloque de instrucciones por lo menos una vez. Expresión ≠0 Bloque de instrucciones si no Instrucción do…while do{ bloque de instrucciones } while(expresion) • Se ejecuta el bloque de instrucciones mientras la
  • 42. Instrucción do … while Sintaxis: do bloque de instrucciones; while (expresión); El bloque de instrucciones se ejecutará mientras el valor de la expresión sea verdadero. De lo contrario se continua con la siguiente instrucción. El bloque de instrucciones se ejecutará por lo menos una vez.
  • 43. Instrucción do … while int main() { int contador; contador = 1; do { cout << "contador = " << contador << "n"; contador = contador + 1; } while (contador <= 5); _getch(); return 0; } Escriba un programa en C++ que permita imprimir los cinco primeros números positivos. • Datos de entrada: Ninguno • Datos de salida: Impresión de los cinco primeros números positivos • Restricciones: Ninguna
  • 44. Instrucción while y do … while El bloque de instrucciones puede estar constituido por una o más instrucciones. Si el bloque está compuesto por varias instrucciones se encierran entre { }. No olvide que: ▫ En el bloque de instrucciones se debe incluir alguna instrucción que permita modificar el valor de la expresión en a lgún momento para poder salir del lazo. ▫ En la instrucción do …while el bloque de instrucciones se ejecuta por lo menos la primera vez.
  • 45. • Se ejecuta la expresión 1 • Mientras la expresión 2 sea diferente de cero (verdadera) se ejecuta el bloque de instrucciones y la expresión 3 no Instrucción for expresión 1 expresión2 ≠0 si Bloque de instrucciones expresión 3
  • 46. Instrucción for Sintaxis: for (expresión 1; expresión 2; expresión 3) bloque; ▫ Primero se ejecuta la expresión 1. ▫ El bloque de instrucciones y la expresión 3 se ejecutarán mientras el valor de la expresión 2 sea verdadero.
  • 47. Instrucción for int main() { int contador; for (contador = 1;contador < 6; contador++) cout << "contador = " << contador << "n"; _getch(); return 0; } Escriba un programa en C++ que permita imprimir los cinco primeros números positivos. • Datos de entrada: Ninguno • Datos de salida: Impresión de los cinco primeros números positivos • Restricciones: Ninguna
  • 48. Instrucción for • Si se omite expresión 2 se asumirá el valor permanente de 1 y el bloque se ejecutará de forma indefinida (bucle infinito). • Inicialmente se ejecuta expresión 1, esta se realiza para inicializar algún parámetro que controla la repetición del bloque de instrucciones. • La expresión 2 es una condición que debe ser verdadera para que se ejecute el bloque. • La expresión 3 s e utiliza para modificar el valor del parámetro que controla el bucle.
  • 49. Ejemplo 1 - For int main() { int i; cout<<"Los números pares entre 10 y 20 inclusive son:n"; for(i = 10; i <= 20; i = i + 2) cout << i << "n"; _getch(); return 0; } Elaborar un programa en C++ que muestre los números pares comprendidos entre 10 y 20 inclusive. • Datos de entrada: Ninguno • Datos de salida: Impresión de los pares entre 10 y 20 • Restricciones: Ninguna
  • 50. Ejemplo 2 - For int main() { cout<< "Los números pares entre 10 y 20 inclusive son:n"; int i; for(i = 20;i >= 10; i = i-2) cout << i << "n"; _getch(); return 0; } Elaborar un programa en C++ que muestre los números pares comprendidos entre 10 y 20 inclusive (Descendente). • Datos de entrada: Ninguno • Datos de salida: Impresión de los pares entre 10 y 20 • Restricciones: Ninguna
  • 51. cout << char(i)<< " " << i << "n"; _getch(); return 0; } Ejemplo 3 - For Mostrar la tabla de caracteres ASCII a partir del Código 32 (el espacio en blanco) hasta el Código 164 (o sea la ñ) sin incluir las minúsculas ( rango del 97 al 122). • Datos de entrada: Ninguno • Datos de salida: Impresión de algunos caracteres ASCII • Restricciones: Ninguna int main() { cout << "Los Caracteres ASCII son: n"; 0 1 if(i<97 || i>122) 1 0 int i; i+=2 for(i = 32;i <= 164; i++)i+=1 if(i < 97 || i > 122)
  • 52. Sentencias break , continue, exit Temario • break • continue • exit
  • 53. break • La proposición "break" permite una salida forzada de las siguientes estructuras de control: ▫ ▫ ▫ ▫ do…while while for switch • Es utilizado para provocar el fin de la ejecución de una ECR o para salir de la sentencia switch.
  • 54. Sentencia break int main() { int num, cont; cont=0; num=0; while (num <= 20) { num = num + 1; if (cont==6) break; if (num % 2 ==0) { cont = cont + 1; cout << num << " "; } } _getch(); return 0; } Realizar una aplicación en C++ que imprima los 6 primeros número pares que hay entre 1 y 20
  • 55. continue • La proposición “continue" provoca un salto obligatorio a la siguiente iteración dentro del ciclo de las siguientes ECR: ▫ do…while ▫ while ▫ for • La s entencia dentro de un bucle forzará al programa a finalizar la iteración actual y a comenzar la evaluación de la siguiente.
  • 56. int main() { int i, suma; suma=0; for (i = 1; i <= 10; i++) { if (i % 2 != 0) // salta los impares continue; suma = suma + i; // aquí procesa los pares } cout << "La suma es : " << suma; _getch(); return 0; } Sentencia continue Realizar una aplicación en C++ que sume los número pares comprendidos entre 1 y 10 inclusive
  • 57. exit Sintaxis: exit (código) ▫ Si el código es 0, entonces la aplicación terminará bajo la denominación de “éxito” ▫ Si el código diferente a 0, entonces la aplicación terminará bajo la denominación de “fallo” • Es una función que esta definida en la librería <stdlib.h> y es utilizada para terminar la ejecución programa actual, desde el lugar donde se le invoque.
  • 58. { cout << "Pulse el caracter S para salir "; cin>> caracter; if (caracter==’S’ || caracter==’s’) exit(0); } return 0; } Sentencia exit Realizar una aplicación en C++ que pregunte al usuario si desea salir del programa hasta que el usuario ingrese la letra S. int main() { char caracter; while (1) //verdadero
  • 59. { cout<<“Ingrese el numero 0 para salir ”; cin>> numero; if (numero == 0) exit(0); contador = contador + 1; } cout << “La cantidad de numeros ingresados es : ” << contador; return 0; } Ejercicio Realizar una aplicación en C++ que permita ingresar un conjunto de números enteros y nos determine la cantidad de enteros ingresados, s i se sabe que se ingresarán números hasta que el usuario digite el valor de cero. int main() { int contador, numero; contador=0; while (1)
  • 60. 36 While COMPARANDO BUCLES: WHILE, FOR Y DO WHILE • El ciclo while se ejecuta mientras la condición sea verdadera for Do while for(i=1; i<=10; i++) • Se usa cuando se trata de un conteo y cuando el numero de iteraciones requeridas se pueden determinar desde el principio • Se ejecuta muy similar al while, excepto que las sentencias del bucle se ejecutan mas de una vez
  • 61. Ej01: escribir los números 10,20,30…100, usando los bucles while, for y do while 37
  • 62. Ej02: leer un numero entero positivo y calcular su factorial, usando el bucle con while, for y do while. 38 int main(){ //6 6! =6*5*4*3*2*1 0;
  • 63. Bucle do…while • La sentencia do while se utiliza para especificar un bucle condicional que se ejecuta al menos una vez. Semántica • Sintaxis do sentencias while(expresión) 39 Después de la ejecución de la sentencia, se evalúa la expresión, si es verdadera se repite la(s) sentencia(s), si es falsa se termina el bucle y se las siguientes instrucciones del programa. El bucle do ..while constituye el ciclo de prueba posterior(ciclo controlado a la salida), c ontinua las iteraciones a través del ciclo mientras la condición es verdadera, sale del ciclo cuando la condición es falsa.
  • 64. Estructura de un ciclo do.. While 40 El ciclo do.. While hace una prueba posterior, la manera en como la realiza es usando do para hacer instrucciones previas, las cuales serán evaluadas con posterioridad con la expresión while. 0. Salir del Programa 1. Sumar valores 2. Restar Valores 3. Multiplicar do { menu de opciones switch(opcion) case 0 case ... } while (opcion !=0)
  • 65. Observe que el cout y el cin están al inicio de la instrucción, las cuales son comprobadas al final. Hay que tener en cuenta que do puede ser reemplaza por while, la elección dependerá de la aplicación y del estilo al programar, tener en cuenta si se valida antes o después. 42
  • 66. Verificación de validez – instrucción do • La utilidad d e la instrucción do radica en que filtra los datos ingresados por el usuario y posteriormente verifica. • Suponga que se requiere que se ingrese la identificación de un código de usuario que esta entre 1000 y 1999, un numero fuera de ese rango es rechazado pidiéndose que se ingrese el numero que este dentro del rango solicitado. 43 0 1 1 0 1 10 0 //250 2250
  • 67. PROBLEMAS PROPUESTOS 1.aUsando una instrucción do, escriba un programa para aceptar una calificación. El programa deberá solicitar una calificación en forma continua en tanto se introduzca una calificación inválida. Una calificación inválida es cualquier calificación menor que 0 o mayor que 100. Después que se ha introducido una calificación válida, su programa deberá desplegar el valor de la calificación introducida. b. Modifique el programa escrito para el ejercicio 1a de modo que el usuario sea alertado cuando se ha introducido una calificación inválida. c. Modifique el programa escrito para el ejercicio 1b de modo que permita al usuario salir del programa introduciendo el número 999. d. Modifique el programa escrito para el ejercicio 1b de modo que termine en forma automática después que se han introducido cinco calificaciones inválidas. 2. a. Escriba un programa que solicite en forma continua que se introduzca una calificación. Si la calificación es menor que 0 o mayor que 100, su programa deberá imprimir un mensaje apropiado que informe al usuario que se ha introducido una calificación inválida, de lo contrario la calificación deberá sumarse a un total. Cuando se introduzca una calificación de 999 el programa deberá salir del ciclo de repetición y calcular y desplegar el promedio de las calificaciones válidas introducidas. b. Ejecute el programa escrito en el ejercicio 2a en una computadora y verifique el programa usando datos de prueba apropiados. 3. a. Escriba un programa para invertir los dígitos de un número entero positivo. Por ejemplo, si se introduce el número 8735, el número desplegado deberá ser 5378.(Sugerencia: Use una instrucción do y continuamente quite y despliegue el dígito de las unidades del número. Si la variable num en un inicio contiene el número introducido, el dígito de las unidades se obtiene como (num % 10). Después que se despliega un dígito de unidades, dividir el número entre 10 establece el número para la siguiente iteración. Por tanto (8735 % 10) es 5 y (8735 / 10) es 873. La instrucción do deberá continuar en tanto el número remanente no sea cero. b. Ejecute el programa escrito en el ejercicio 3a en una computadora y verifique el programa usando datos de prueba apropiados. 44
  • 68. 44 En C++, esta distinción tan fácil no se sostiene, pues cada instrucción puede usarse para crear cada tipo de ciclo. La respuesta en C++, entonces, en realidad es cuestión de estilo. En vista que un ciclo for y uno while son intercambiables en C++, cualquier ciclo es apropiado.
  • 69. 44 Que se obtiene con el siguiente código:
  • 70. 44 Técnicas de programación con ciclos ❑ Incluir una instrucción cin dentro de un while ❑ Introducir datos de forma interactiva dentro de un ciclo, es aplicable a la instrucción for. ❑ Se usa una instrucción cin para permitir a un usuario introducir de manera interactiva un conjunto de números. ❑ Conforme se introduce cada número, es sumado a un total. Cuando se sale del ciclo for, se calcula y se despliega el promedio.
  • 71. COMPARANDO BUCLES: WHILE, FOR Y DO WHILE 71 While • El ciclo while se ejecuta mientras la condición sea verdadera. for • Se usa cuando se trata de un conteo y cuando el numero de iteraciones requeridas se pueden determinar desde el principio Do while • Se ejecuta muy similar al while, excepto que las sentencias del bucle se ejecutan mas de una vez
  • 72. Ej01:escribir los números 10,20,30…100, usando los bucles while, for y do while 72
  • 73. Ej02: leer un numero entero positivo y calcular su factorial, usando el bucle con while, for y do while. 73
  • 74. Bucle do…while • La sentencia do while se utiliza para especificar un bucle condicional que se ejecuta al menos una vez. • Sintaxis Semántica do sentencias while(expresión) 74 Después de la ejecución de la sentencia, se evalúa la expresión, si es verdadera se repite la(s) sentencia(s), si es falsa se termina el bucle y se las siguientes instrucciones del programa. El bucle do ..while constituye el ciclo de prueba posterior(ciclo controlado a la salida), continua las iteraciones a través del ciclo mientras la condición es verdadera, sale del ciclo cuando la condición es falsa.
  • 75. Estructura de un ciclo do.. While 75 El ciclo do.. While hace una prueba posterior, la manera en como la realiza es usando do para hacer instrucciones previas, las cuales serán evaluadas con posterioridad con la expresión while.
  • 76. 76 Una cierta mejora seria el reemplazo de la instrucción do por una instrucción compuesta. Observando el diagrama: Las instrucciones que se encuentran en el ámbito(dentro) de do se ejecutan al menos una vez antes de evaluar a la expresión.
  • 77. Observe que el cout y el cin están al inicio de la instrucción, las cuales son comprobadas al final. Hay que tener en cuenta que do puede ser reemplaza por while, la elección dependerá de la aplicación y del estilo al programar, tener en cuenta si se valida antes o después. 77
  • 78. Verificación de validez – instrucción do • La utilidad de la instrucción do radica en que filtra los datos ingresados por el usuario y posteriormente verifica. • Suponga que se requiere que se ingrese la identificación de un código de usuario que esta entre 1000 y 1999, un numero fuera de ese rango es rechazado pidiéndose que se ingrese el numero que este dentro del rango solicitado. 78
  • 79. PROBLEMAS PROPUESTOS 1.aUsando una instrucción do, escriba un programa para aceptar una calificación. El programa deberá solicitar una calificación en forma continua en tanto se introduzca una calificación inválida. Una calificación inválida es cualquier calificación menor que 0 o mayor que 100. Después que se ha introducido una calificación válida, su programa deberá desplegar el valor de la calificación introducida. b. Modifique el programa escrito para el ejercicio 1a de modo que el usuario sea alertado cuando se ha introducido una calificación inválida. c. Modifique el programa escrito para el ejercicio 1b de modo que permita al usuario salir del programa introduciendo el número 999. d. Modifique el programa escrito para el ejercicio 1b de modo que termine en forma automática después que se han introducido cinco calificaciones inválidas. 2. a. Escriba un programa que solicite en forma continua que se introduzca una calificación. Si la calificación es menor que 0 o mayor que 100, su programa deberá imprimir un mensaje apropiado que informe al usuario que se ha introducido una calificación inválida, de lo contrario la calificación deberá sumarse a un total. Cuando se introduzca una calificación de 999 el programa deberá salir del ciclo de repetición y calcular y desplegar el promedio de las calificaciones válidas introducidas. b. Ejecute el programa escrito en el ejercicio 2a en una computadora y verifique el programa usando datos de prueba apropiados. 3. a. Escriba un programa para invertir los dígitos de un número entero positivo. Por ejemplo, si se introduce el número 8735, el número desplegado deberá ser 5378.(Sugerencia: Use una instrucción do y continuamente quite y despliegue el dígito de las unidades del número. Si la variable num en un inicio contiene el número introducido, el dígito de las unidades se obtiene como (num % 10). Después que se despliega un dígito de unidades, dividir el número entre 10 establece el número para la siguiente iteración. Por tanto (8735 % 10) es 5 y (8735 / 10) es 873. La instrucción do deberá continuar en tanto el número remanente no sea cero. b. Ejecute el programa escrito en el ejercicio 3a en una computadora y verifique el programa usando datos de prueba apropiados. 79