Resolución de Problemas y Algoritmos Clase 6: Repetición (continuación)



Documentos relacionados
Módulo 7: Sentencias de control en Pascal

Trabajo Práctico Nº 4 Iteración

6. Estructuras básicas de control 1. Pseudocódigo

Donde Condicion es una expresión booleana, es decir, que puede tomar el valor verdadero (true) o falso (false).

Introducción a la Programación

Lógica de programación

Dra. Jessica Andrea Carballido

TEMA 4: Programación estructurada

ESTRUCTURAS REPETITIVAS EN PHP

Iteración Diagrama de SINTAXIS: IF

Al igual que las instrucciones alternativas, las instrucciones repetitivas también se pueden anidar, permitiendo las siguientes combinaciones de

Tipos y Estructuras de Control. Dpto. de Ciencias e Ingeniería de la Computación UNIVERSIDAD NACIONAL DEL SUR

Resolución de Problemas y Algoritmos

Sentencia1 Sentencia2 Cuerpo del bucle

Estructuras de Control. Secuencia y Selección

21/03/2018. Variables y Constantes. Los datos de un programa están representados por variables o constantes y tienen asociado un tipo.

Resolución de Problemas y Algoritmos

Estructuras de Programación

Control de Flujo. Estructuras de Control! Experiencia Educativa de Algorítmica CONTROL DE FLUJO

24/8/2018. cuota monto/cantcuotas

UNIDAD 5. ESTRUCTURAS DINÁMICAS Y ESTÁTICAS DE ALMACENAMIENTO DE DATOS.

Repetición Condicional

Iteración Diagrama de SINTAXIS: IF

5. ESTRUCTURAS DE REPETICIÓN

Programación Estructurada

Resolución de Problemas y Algoritmos Segundo cuatrimestre 2015 Clase 11: Construcción de primitivas (Funciones)

Apunte Laboratorio ALPI - El lenguaje de programación Pascal

Estructuras de Control. Secuencia y Selección

Programación I. Ingeniería Técnica Informática. Ejercicios de los Temas 4, 5, 6 y 7

28/08/2018. Dra. Jessica Andrea Carballido. cuota monto/cantcuotas

Estructuras Repetitivas

Programcaión Básica. Secuencias de Control y Repetición. Arturo Vega González.

Trabajo Práctico Nº 5 Repetición y Archivos

Tema 3. Estructuras de Datos

Lógica de programación

CLASIFICACION DE LAS ESTRUCTURAS DE CONTROL

Recursión. Recursión continuación

EJERCICIOS ALGORITMOS

Tema 3. Estructuras de control

Distinguir las diferentes estructuras de repetición utilizadas en problemas con bucles: mientras, repetir mientras, para.

28/10/2016. Procesamiento de Secuencias. Procesamiento de Secuencias. Procesamiento de Secuencias. Procesamiento de Secuencias

ESTRUCTURAS REPETITIVAS

Componentes Básicos. InCo. InCo Componentes Básicos 1 / 28

FUNDAMENTOS DE PROGRAMACIÓN LABORATORIO SESIÓN 2

Conocimientos previos

Tema 6 Control de Flujo

1. Detalle de los Comandos:

ESTRUCTURA SECUENCIAL ESTRUCTURA SELECTIVA

INSTITUCIÓN EDUCATIVA SAN VICENTE TALLER 3 DE DIAGRAMAS DE FLUJO ALGORITMOS CICLICOS CICLO: MIENTRAS QUE GRADOS DÉCIMOS

Inicio del programa. Entrada de datos. Proceso de datos. Salida de datos. Fin del programa

Dra. Jessica Andrea Carballido

Estructuras de Repetición: Repita Mientras.

VGOC"6<"Rtqitcocekôp"guvtwevwtcfc

U nidad 6: A rreglos: U nidim ensionales y m ultidim ensionales

Módulo 8: Primitivas en Pascal

Operadores aritméticos

Dra. Jessica Andrea Carballido

Arreglos y Subrangos

TEMA 5. PROGRAMACIÓN BÁSICA EN MATLAB /OCTAVE

Esquemas repetitivos en Fortran 90. Esquemas repetitivos en Fortran 90. Esquemas repetitivos en Fortran 90. Tipos de Esquema

Dra. Jessica Andrea Carballido

Universidad de Valladolid. Departamento de informática. Campus de Segovia. Estructura de datos Tema 1: Recursividad. Prof. Montserrat Serrano Montero

Capítulo 13 INSTRUCCIONES DE CONTROL REPETITIVAS. Presentación resumen del libro: "EMPEZAR DE CERO A PROGRAMAR EN lenguaje C"

Esquemas repetitivos en Fortran 90

PRÁCTICA FUNDAMENTOS DE ALGORITMOS (Estructuras de Repetición II) Objetivos

Dra. Jessica Andrea Carballido

3.2. Programación estructurada. Principal. Modulo 1 Modulo 2 Modulo 3 Modulo 4. Modulo Modulo Modulo 3 1 Modulo 4 1 Modulo 4 2. Pág.

Slide 1. ordenación de tres números en forma. creciente.

RECORDAR TIPOS DE DATOS

Lógica de programación 1

Informática II para Bachillerato

Trabajo Práctico 7 Recursividad Versión 4

Trabajo Práctico 6 Funciones, Procedimientos y División de Problemas

ESTRUCTURAS DE REPETICIÓN AREA PROGRAMACIÓN 1

Programación Digital 10

Problema 3: Mercado. Dividir y conquistar

Introducción a la Informática Estructuras de control repetitivas

Diagrama de flujo Es un esquema para representar gráficamente un algoritmo. Se basan en la utilización de diversos símbolos para representar operacion

Tema 4. Control de flujo. Programación Programación - Tema 4: Control de Flujo

Estructuras Repe,,vas

Módulo. = Asignación = = Comp. de igualdad!= Com. de desigualdad <= Comp. menor o igual >= Comp. mayor o igual AND lógico OR lógica.

Fundamentos de Informática

DISEÑO ESTRUCTURADO. Herramientas de representación de algoritmos

Unidad 3. Estructuras de control en diagrama de Flujo y pseudocódigo Tema Iteración o Repetitivas (mientras)

14/03/2018. Problemas, Algoritmos y Programas. Problemas, Algoritmos y Programas. Programas y Lenguajes. Programas y Lenguajes. Programas y Lenguajes

1. Calcular mediante un algoritmo repetitivo la suma de los N primeros números naturales.

UTN FRRo Algoritmos y Estructuras de Datos Bibliotecas Un ejemplo : Gestión de Pantalla, Retardo y Sonido

Unidad 4. Lógica de Programación. Prof. Eliana Guzmán U.

Control de Flujo. Estructuras de Control! Experiencia Educativa de Algorítmica CONTROL DE FLUJO

El Pseudo-código de PsInt

Estructuras de Repetición

Programación: Estructuras de Control

Laboratorio de Arquitectura de Redes. Sentencias de control en lenguaje C

DISEÑO ESTRUCTURADO USANDO HERRAMIENTAS DE

Informática Ingeniería en Electrónica y Automática Industrial

1. Lenguaje Pascal. 2. Módulos de un Programa. 3. Tipos de Datos más utilizados. 4. Declaración de Variables

Tema: Estructuras de Repetición en C# [While y Dowhile].

ESTRATEGIA DIDÁCTICA Estructura de control de secuencia: IF THEN ELSE

FUNDAMENTOS PARA LA CONSTRUCCIÓN DEL CÓDIGO A PARTIR DEL ALGORITMO

Transcripción:

Resolución de Problemas y Algoritmos Clase 6: Repetición (continuación) Dr. http://cs.uns.edu.ar/~sag Departamento de Ciencias e Ingeniería de la Computación Universidad Nacional del Sur Bahía Blanca, Argentina

Temario Repaso de estructuras de control repetitivas: Repetición contada: For-to-do y for-downto-do Repetición condicional: While y Repeat-until Ejemplos con while, fory repeat Ejemplos solución a problemas con bucles anidados 2

Repetición contada: Sentencia FOR Permite ejecutar una sentencia (o un bloque de código especificado como una sentencia estructurada) un número entero de veces. fori := A tob do sentencia Sentencia puede referenciar el valor i pero no lo puede modificar. El tipo de i, A y B debe ser el mismo y deben ser de un tipo ordinal. Sentencia se ejecuta max(ord(b)-ord(a)+1,0) veces. i se llama índice del foro variable de control i toma los valores A, Succ(A), Succ(Succ(A)),, B 3

Repetición contada: Sentencia FOR Permite ejecutar una sentencia (o un bloque de código especificado como una sentencia estructurada) un número entero de veces. fori := A downtob do sentencia Sentencia puede referenciar el valor i pero no lo puede modificar. El tipo de i, A y B debe ser el mismo y deben ser de un tipo ordinal. Sentencia se ejecuta max(ord(a)-ord(b)+1,0) veces. i se llama índice del foro variable de control i toma los valores A, Pred(A), Pred(Pred(A)),, B 4

Repetición condicional: While While condición do Sentencia Permite ejecutar una sentencia del cuerpo del while (posiblemente estructurada) mientras se cumple la condición lógica. El bucle puede realizar 0, 1 o más iteraciones. En la sentencia del cuerpo debe haber una primitiva que eventualmente (alguna vez en el futuro) haga falsa a la condición; si esto no ocurre, el programa ingresará en un ciclo infinito (también se dice loop infinito ). Nota:Es imposible detectar automáticamente todos los programas que producen ciclos infinitos ( Halting problem en Teoría de la Computabilidad). 5

Repetición condicional: Repeat-until Repeat sentencia until condición Permite ejecutar una sentencia del cuerpo del repeat (posiblemente estructurada) hasta que se cumple la condición lógica. El bucle puede realizar 1 o más iteraciones. En la sentencia del cuerpo debe haber una primitiva que eventualmente (alguna vez en el futuro) haga verdadera a la condición; si esto no ocurre, el programa ingresará en un ciclo infinito (también se dice loop infinito ). Nota:Es imposible detectar automáticamente todos los programas que producen ciclos infinitos ( Halting problem en Teoría de la Computabilidad). 6

Bucles: Ejemplo Problema:Escriba un programa que dado un número entero positivo y mayor a 0 determine cuántos dígitos pares e impares contiene. Algoritmo: Leer un número n cantidad_pares 0 cantidad_impares 0 paracada dígito d de n hacer si d es par entonces incrementar cantidad_pares sino incrementar cantidad_impares mostrar cantidad_pares y cantidad_impares Ojo:No podemos usar un for porque no sabemos la cantidad de dígitos de n; o quizá sí?. Exploremos implementaciones posibles. 7

Bucles: Ejemplo: Solución con while Problema:Escriba un programa que dado un número entero positivo y mayor a cero determine cuántos dígitos pares e impares contiene. Leer un número n cantidad_pares 0 cantidad_impares 0 mientras n>0 hacer d n mod10 { d es el último dígito de n. } si d es par entonces incrementar cantidad_pares sino incrementar cantidad_impares n n div10 { Le borro el último dígito a n. } finmientras mostrar cantidad_pares y cantidad_impares Ejercicio: Implementar el algoritmo en Pascal. 8

Bucles: Ejemplo: Solución con for Leer un número n { Averiguo cuántos dígitos tiene n. } cantidad_digitos 0; copia_n n mientras copia_n > 0 hacer incrementar cantidad_digitos copia_n copia_ndiv10 Finmientras { Cuento dígitos pares e impares. } cantidad_pares 0; cantidad_impares 0 Para i desde 1 hasta cantidad_digitos hacer d n mod10 { d es el último dígito de n. } si d es par entonces incrementar cantidad_pares sino incrementar cantidad_impares n n div10 { Le borro el último dígito a n. } finpara mostrar cantidad_pares y cantidad_impares Ejercicio: Implementar el algoritmo en Pascal y hacer la traza 9

Bucles anidados: Ejemplo Problema:Realizar un programa para calcular el valor 2 4 de la expresión: ( i + 3 j) Algoritmo: i= 1 j= 1 Suma 0 Parai desde1 hastan hacer paraj desde1 hastam hacer suma suma + i + 3j Program SumaTodo; Var suma : real; Begin suma := 0.0; fori := 1 to2 do forj := 1 to4 do suma := suma + i + 3*j; Write( Suma vale:, suma : 10 : 3 ) End. 10

Bucles anidados: Ejemplo Problema:Realizar un programa para calcular el valor n m de la expresión: 2 (3i + 2seno(5 j)) Algoritmo: i= 1 j= 1 Suma 0 Parai desde1 hastan hacer paraj desde1 hastam hacer suma suma + 3i 2 + 2seno(5j) Program SumaTodo2; Var suma : real; Begin Write( Ingrese n y m: ); Read(n,m); suma := 0.0; fori := 1 ton do forj := 1 tom do suma := suma + 3*sqr(i) + 2*sin(5*j); Write( Suma vale:, suma : 10 : 3 ) End. 11

Bucles anidados Problemapropuesto:Realizar un programa para calcular el valor de la expresión: n m r (3i 2 + 2 tan(5 j ln( k))) i= 1 j= 5 k = 8 12

Bucles anidados: Problema Problema propuesto:realizar un programa para imprimir las tablas de multiplicar de acuerdo a como se muestra en la siguiente captura de pantalla: 13

program tablas_multiplicar; vari, j : integer; resultado : integer; c : char; begin { Imprimo 1era fila con las columnas de multiplicandos derechos. } Write( ' ' ); forj := 1 to10 do Write( j : 5 ); WriteLn; { Imprimo linea separadora. } forj := 1 to11 do Write( '-----' ); WriteLn; 14

{ Imprimo tablas propiamente dichas. } fori := 1 to10 do begin Write( i:2, ' ' ); { Imprimo multiplicando izquierdo. } forj := 1 to10 do begin resultado := i * j; Write( resultado : 5 ); end; WriteLn; end; WriteLn; { Prevengo el cierre de la pantalla. } Write( 'Ingrese enter para terminar...' ); ReadLn( c ); End. 15

Bucles simples: Ejemplo Problema:Dada una secuencia S de caracteres ingresada por teclado y terminada en un punto, determinar cuántas veces aparece la C seguida de la A. Ejemplo: si S = CABEZA DE CALABAZA., la salida del programa es 2. No se conoce el largo de la secuencia => usar while o repeat (y no for ) No es necesario procesar el punto (pues no es ni C ni A) => usar while Notar que ahora en la solución del problema no sólo hay que procesar al elemento actual sino mantener cuál fue el elemento anterior. 16

Bucles simples: Ejemplo Problema:Dada una secuencia S de caracteres ingresada por teclado y terminada en un punto, determinar cuántas veces aparece la C seguida de la A. Algoritmo: Cantidad_de_veces 0 Pedir una secuencia de caracteres terminada en punto Leer un carácter c; anterior _ Mientrasc. hacer sianterior = C yc = A entonces incrementar cantidad_de_veces anterior c Leer un carácter c Finmientras Mostrar la cantidad_de_veces Ejercicio: Escribir la solución en Pascal. 17

Bucles simples: Problema Problema propuesto:dada una secuencia de caracteres terminada en punto, determinar cuántas veces aparece la subsecuenciamomo dentro de la secuencia. Realice un algoritmo e impleméntelo en Pascal. 18

Sumario de temas Repaso de estructuras de control repetitivas: Repetición contada: For-to-do y for-downto-do Repetición condicional: While y Repeat-until Ejemplos con while, fory repeat Ejemplos solución a problemas con bucles anidados 19