Chapter 6 Looping Dale/Weems/Headington. 2 Chapter 6 Topics l While Statement Syntax l Count-Controlled Loops l Event-Controlled Loops l Using the End-of-File.

Slides:



Advertisements
Presentaciones similares
Conceptos Básicos Prof. Carlos Rodríguez Sánchez
Advertisements

Ejemplo de Programa C++
Iteración La iteración permite modelar problemas en los cuales una secuencia de instrucciones debe ejecutarse varias veces. La cantidad de iteraciones.
Repaso para la construcción del intérprete 2012
Concepto de programa. Directorio Concepto de programa. Analisis del problema. Resolucion del problema. Desarroollo de un programa. Partes constitutivas.
FUNCIONES EN C.
ALGORÍTMICA Dpto. Ingeniería de Sistemas y Automática
ESTRUCTURAS DE SECUENCIA
Introducción a la Computación
Una breve introducción
Estructuras de Repetición
NQC Lazos, Enunciados Condicionales, Lógica Booleana.
Métodos Algoritmos y Desarrollo de Programas I. Cuando utilizar métodos  Los métodos se utilizan para romper un problema en pedazos de forma que este.
Estructuras de repetición
Estructuras de Control de Repetición
If anidados y Switch Prof. Lillian Bras.
Archivos Programación.
Programación de Computadores
Lenguaje C.
Introducción a la Computación
Estructuras de Iteracion (Repetitivas ) while , for,, do-while
Análisis de Algoritmos
Desarrollador Profesional de Juegos Programación III Unidad II Una clase thread para window.
ESTRUCTURAS DO-WHILE Y FOR.
Capítulo 1 “Elementos de Programación”
CICLOS por Profesora Lillian Bras
Conversión cadena a número
Resolución de Problemas y Algoritmos Uso de iteración con secuencias
Administración de Proyectos de desarrollo de Software Ciclo de vida de un proyecto Enfoque moderno Temas Componentes Directivas Declaraciones globales.
COMPUTACION 2009 C lase 4 Programa PASCAL SENTENCIAS DATOS Expresiones Tipos Declaración de variables Declaración de variables Asignación Entrada/Salida.
Parte 4: Estructura FOR Basada en diapositivas de Prof. Elizabeth Vidal Duarte.
Ciclos (Loops, Repeticiones) Permiten ejecutar una secuencia de sentencias mas de una vez. Hay 2 tipos de loops:  WHILE repite la acción un número indefinido.
Teoría – Alejandro Gonzalez
Estructura de Control Repeticiones(Loops) Ejercicios
COMP 250.  Ejemplo:  Suponer que se necesita codificar un programa donde se muestre como resultado el string “Bienvenidos al mundo de JAVA!!!” cien.
Elementos básicos del lenguaje
SIMULACIÓN DE UNA CORRIDA (DEBUG) Preparado por Prof. Nelliud D. Torres Corrida de un programa (Debug) que pide diferentes edades al usuario y calcula.
Estructuras de Control.
Elementos básicos del lenguaje
Principios de programación LIA. Suei Chong Sol, MCE. Sentencias de Control Repetitivas.
Estructuras de Repetición (Hacer-Mientras)
Sentencias de repetición
Tema ‧ Comando - while Repeticiones. Comando while ‧ Un ciclo es cualquier construcción de programa que repite una sentencia ó secuencia de sentencias.
1 Algunas ideas básicas de C++ Agustín J. González ELO-329.
Estructuras de Repetición (Hacer-Mientras)
COMPUTO III Ing. Jimmy Ojeda Arnica.
1 Algunas ideas básicas de C++ Agustín J. González ELO-329.
1 Algunas ideas básicas de C++ Agustín J. González ELO-329.
INTRODUCCIÓN AL LENGUAJE C++. Instrucciones Temas.
INTRODUCCION A LA PROGRAMACION
Código (salario) #include int main() { int hours; double gross_pay,rate; cout rate; if (hours > 40) gross_pay = rate*40.
1 TÉCNICAS DE PROGRAMACIÓN Lenguaje C Tercera Clase (Segunda de C)
Introducción al lenguaje PROCESSING para ARDUINO
Estructuras de Decisión
Algoritmo.
int cantidad, horas, cuota; float precio, peso; cantidad = 5; // Le asigno un número a la variable Cantidad; horas = // Le asigno 30 a la variable.
Arreglos Ejemplo paso a paso. Planteamiento Como estudiante de ingeniería, quieres usar tus habilidades de programador para llevar un registro de tus.
Desarrollador Profesional de Juegos Programación III Unidad II Trabajando con bloqueo de datos.
Desarrollador Profesional de Juegos Programación III Unidad I Capturar Excepciones.
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS Arreglo.
Page 1 Ciclo de Estructuras de Repetición Carlos Bautista García Unidad VI PROG 2270L.
Ciclos en Visual Basic Yaimira Pérez. Los ciclos son estructuras de repetición que ejecutan una o varias instrucciones durante la cantidad de veces que.
PROF. RAFAEL MONTENEGRO B. UNELLEZ-APURE Introducci Ó n a los Arreglos (“arrays”) en C++
Entrada y Salida en C++, Estructuras de Control Prof. Manuel B. Sánchez.
Ciclos de Repeticion Yoel Gutierrez Unidad 6. Contenido DefinicionExplicacionEjemplosReferencias.
Ciclos condicionales y exactos Estructura de control de ciclos
Estructuras Repetitivas Consideraciones. Estructuras Repetitivas  Son aquellas que van a ejecutar un número determinado de veces una instrucción o un.
Ciclos en Visual Basic Rebeca M. Colón Crespo. Introducción Visual Basic es una aplicación y un lenguaje en programación. Este programa fue originado.
Searching data in Arrays
Arrays Programming COMP102 Prog. Fundamentals I: Arrays / Slide 2 Arrays l An array is a collection of data elements that are of the same type (e.g.,
Transcripción de la presentación:

Chapter 6 Looping Dale/Weems/Headington

2 Chapter 6 Topics l While Statement Syntax l Count-Controlled Loops l Event-Controlled Loops l Using the End-of-File Condition to Control Input Data l Using a While Statement for Summing and Counting l Nested While Loops l Loop Testing and Debugging

3 l Un “loop” es una estructura de control de repetición l Esto causa que un solo “statement” o bloque se ejecute varias veces. ¿Qué es un loop (ciclo)?

4 Dos Tipos de Loops(ciclos) count controlled loops (FOR) repite los “statements”una cantidad determinadad de ocurrencias (veces). event-controlled loops Existe una condición dentro del cuerpo del ciclo que causa que se termine la repetición de los “statements”.

5 While Statement SYNTAX while ( Expression ) {.. // loop body. } NOTA: El “Loop body” puede ser un solo “statement”, un “statement” nulo o un bloque.

6 Cuando se prueba la expresión y se determina que es falsa, se sale del ciclo y el control pasa al “statement”que sigue despues del “loop body”. WHILE LOOP FALSE TRUE body statement Expression

7 Una inicialisación de la variable que controla el ciclo una expresión que pruebe la continuidad del ciclo una actualización de la variable que controla el ciclo el cual se ejecuta en cada interación del cuerpo (“body”) del ciclo. “ Count-controlled loop” contiene

8 int count ; count = 4; // initialize loop variable while (count > 0) // test expression { cout << count << endl ; // repeated action count -- ; // update loop variable } cout << “Done” << endl ; Count-controlled Loop (Ciclo)

9 Count-controlled Loop int count ; count = 4; while (count > 0) { cout << count << endl ; count -- ; } cout << “Done” << endl ; OUTPUT count

10 Count-controlled Loop int count ; count = 4; while (count > 0) { cout << count << endl ; count -- ; } cout << “Done” << endl ; OUTPUT count 4

11 Count-controlled Loop int count ; count = 4; while (count > 0) TRUE { cout << count << endl ; count -- ; } cout << “Done” << endl ; OUTPUT count 4

12 Count-controlled Loop int count ; count = 4; while (count > 0) { cout << count << endl ; count -- ; } cout << “Done” << endl ; OUTPUT 4 count 4

13 Count-controlled Loop int count ; count = 4; while (count > 0) { cout << count << endl ; count -- ; } cout << “Done” << endl ; OUTPUT 4 count 3

14 Count-controlled Loop int count ; count = 4; while (count > 0) TRUE { cout << count << endl ; count -- ; } cout << “Done” << endl ; OUTPUT 4 count 3

15 Count-controlled Loop int count ; count = 4; while (count > 0) { cout << count << endl ; count -- ; } cout << “Done” << endl ; OUTPUT 4 3 count 3

16 Count-controlled Loop int count ; count = 4; while (count > 0) { cout << count << endl ; count -- ; } cout << “Done” << endl ; OUTPUT 4 3 count 2

17 Count-controlled Loop int count ; count = 4; while (count > 0) TRUE { cout << count << endl ; count -- ; } cout << “Done” << endl ; OUTPUT 4 3 count 2

18 Count-controlled Loop int count ; count = 4; while (count > 0) { cout << count << endl ; count -- ; } cout << “Done” << endl ; OUTPUT count 2

19 Count-controlled Loop int count ; count = 4; while (count > 0) { cout << count << endl ; count -- ; } cout << “Done” << endl ; OUTPUT count 1

20 Count-controlled Loop int count ; count = 4; while (count > 0) TRUE { cout << count << endl ; count -- ; } cout << “Done” << endl ; OUTPUT count 1

21 Count-controlled Loop int count ; count = 4; while (count > 0) { cout << count << endl ; count -- ; } cout << “Done” << endl ; OUTPUT count 1

22 Count-controlled Loop int count ; count = 4; while (count > 0) { cout << count << endl ; count -- ; } cout << “Done” << endl ; OUTPUT count 0

23 Count-controlled Loop int count ; count = 4; while (count > 0) FALSE { cout << count << endl ; count -- ; } cout << “Done” << endl ; OUTPUT count 0

24 Count-controlled Loop int count ; count = 4; while (count > 0) { cout << count << endl ; count -- ; } cout << “Done” << endl ; OUTPUT Done count 0

25 myInfile contiene 100 muestras de presión sangínea Utilize un ciclo while para leer las 100 muestras de presión sanguínea y busque la suma total Ejemplo de “Count-Controlled Loop”

26 ifstream myInfile ; int thisBP ; int total ; int count ; count = 0 ; // initialize while ( count < 100 ) // test expression { myInfile >> thisBP ; total = total + thisBP ; count++ ; // update } cout << “The total = “ << total << endl ; 26

27 Ciclos “Event-controlled” l Sentinel controlled Mantiene procesando data hasta que un valor especial, que no es un valor común, se entra para indicar que el procesamiento debe terminar. l End-of-file controlled Mantiene procesando data mientras encuentre datos en el archivo para leer. l Flag controlled Mantiene procesando data hasta que el valor de un flag cambia en el cuerpo del ciclo. 27

28 Ejemplo de los tipos de ciclos Count controlled loop Lee exáctamente 100 muestras de presión sanguínea de un archivo. End-of-file controlled loop Lee todas las muestras de presión sanguínea de un archivo sin importan cuantos hay. 28

29 Ejemplo de los tipos de ciclos Sentinel controlled loop Lee las muestras de presión sanguínea hasta que un valor especial (EJ. -1) seleccionado por el usuario, es leído. Flag controlled loop Lee las muestras de presión sanguínea hasta que se lee un valor peligrosamente alto (200 o más). 29

30 Un ciclo “Sentinel-controlled” l Requiere un “priming read” l “priming read” significa que debes leer un conjunto de datos antes de ejecutar el while.

31 // Sentinel controlled loop total = 0; cout << “Enter a blood pressure (-1 to stop ) ”; cin >> thisBP; while (thisBP != -1)// while not sentinel { total = total + thisBP; cout << “Enter a blood pressure (-1 to stop ) ”; cin >> thisBP; } cout << total;

32 Ciclo “End-of-File” l Depende del hecho de que el archivo caiga en un “fail state” al tratar de leer otro dato cuando se llega al final del archivo.

33 total = 0; myInfile >> thisBP; // priming read while (myInfile) // while last read successful { total = total + thisBP; myInfile >> thisBP; // read another } cout << total; // End-of-file controlled loop

34 //End-of-file at keyboard total = 0; cout << “Enter blood pressure (Ctrl-Z to stop)”; cin >> thisBP; // priming read while (cin) // while last read successful { total = total + thisBP; cout << “Enter blood pressure”; cin >> thisBP; // read another } cout << total;

35 Ciclos controlados por “Flags” l Inicializas un flag (true o false) l Usas un nombre significativo para el flag l Una condición en el cuerpo del ciclo cambia el valor del “flag” l Probar el “flag” en la expresión que prueba el ciclo.

36 countGoodReadings = 0; isSafe = true; // initialize Boolean flag while (isSafe) { cin >> thisBP; if ( thisBP >= 200 ) isSafe = false; // change flag value else countGoodReadings++; } cout << countGoodReadings << endl;

37 Los ciclos se utilizan con frecuencia para… l Contar todos los valores de un dato l Contar valores especiales l Sumar (acumular) los valores de los datos l Mantener un seguimiento de valores previos y actuales

38 Valores anteriores y actuales l Escribir un programa que cuenta el número de los operadores != en un programa. l Lee un caracter en el archivo a la vez. l Mantener un seguimiento de los caracteres previos y actuales.

39 Mantener seguimiento de los valores (x != 3) { cout << endl; } FILE CONTENTS previous current count ( x 0 ! = 1 = ‘ ‘ 1 x ‘ ‘ 0 3 ) 1 ‘ ‘ 3 1 ‘ ‘ ! 0 39

40 int count; char previous; char current; count = 0 ; inFile.get (previous); // priming reads inFile.get(current); while (inFile) { if ( (current == ‘=‘) && (previous == ‘!’) ) count++; previous = current;// update inFile.get(current); // read another }

41 initialize outer loop while ( outer loop condition ) {... initialize inner loop while ( inner loop condition ) { inner loop processing and update }... } Patrones de un “Nested Loop” 41

42 Datos de Pacientes Este archivo contiene datos de presión sanguinea de diferentes pacientes. Cada linea tiene un ID, el número de lecturas para ese paciente, seguido de las distintas lecturas. ID howManyReadings

There were 432 patients in file. Lee los datos y muestra los resultados Patient ID BP Average

44 Algoritmo usado para los “Nested Loops” l inicializar patientCount a 0 l Lee el primer ID y el howMany del archivo l while not end-of-file n incrementa patientCount n display ID n usar un “count-controlled loop”para leer y sumar la cantidad de lecturas del paciente n calcula y muestra el promedio del paciente n Lee next ID y howMany del archivo l display patientCount

45 Para diseñar un “nested loop” l Comenzar con el “outer loop” l Cuando se sabe donde va el “inner loop”, se hace un módulo por separado

46 #include #include using namespace std; int main ( ) { int patientCount; // declarations int thisID; int howMany; int thisBP; int totalForPatient; int count; float average; ifstream myInfile; 46

47 myInfile.open(“A:\\BP.dat”); if (!myInfile ) // opening failed { cout > thisID >> howMany; // priming read 47

48 while ( myInfile ) // last read successful { patientCount++; cout << thisID; totalForPatient = 0; // initialize inner loop count = 0; while ( count < howMany) { myInfile >> thisBP; count ++; totalForPatient = totalForPatient + thisBP; } average = totalForPatient / float(howMany); cout << int (average +.5) << endl; // round myInfile >> thisID >> howMany; // another read } 48

49 cout << “There were “ << patientCount << “patients on file.” << endl; cout << “Program terminated.\n”; return 0; }

50 Información Sobre 20 Libros en un Archivo en Disco “A:\\myIn.dat” 3.98 P 7.41 H 8.79 P. Precio del Libro “Hardback” o “Paperback”? ESCRIBA UN PROGRAMA QUE SUME TODOS LOS PRECIOS DE LOS LIBROS

51 #include // for cout #include // for file I/O using namespace std; int main (void) { float price ; // declarations char kind ; ifstream myInfile ; float total = 0.0 ; int count = 1; Programa que lee sobre 20 Libros en un Archivo en Disco

52 Resto del Programa myInfile.open(“A:\\myIn.dat”) ; // count-controlled processing loop while ( count <= 20 ) { myInfile >> price >> kind ; total = total + price ; count ++ ; } cout << “Total is: “ << total << endl ; myInfile.close( ) ; return 0 ; } 52

53 Seguimiento de las Variables del Programa count price kind total ‘P’ ‘H’ ‘P’ etc so loop terminates

54 Complejidad Es una medida de la cantidad de trabajo envuelta al ejecutar un algoritmo relativo al tamaño del problema.

55 Polynomial Times N N 0 N 1 N 2 N 3 constant linear quadratic cubic , ,000 1,000,000 1,0001 1,000 1,000,000 1,000,000,000 10, , ,000,000 1,000,000,000,000

56 Prueba y “Debugging”del “Loop” (ciclo) La data de prueba debe cubrir todas las secciones (módulos) del programa l Cuidado con los ciclos infinitos – el programa no se detiene l Verifica la condición de cotejo del ciclo y cotejar el problema de que se quede corto por uno l Usar la función “get” para los “loops” controlados para detectar el caracter ‘\n’ l Usar el algoritmo “walk-through” para verificar pre y post condiciones l Seguimiento a la ejecución del código de un ciclo a mano usando el “walk-through“ l Usar el “debugger” para correr programas en “slow motion” o utilizar “statements” que facilitan el “debug”