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

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

Estructuras de Control. Secuencia y Selección

Introducción a la calidad de código

UTN FRR Ingeniería en Sistemas de Información Algoritmos y Estructuras de Datos Archivos Directos GUIA DE ESTUDIO: ARCHIVOS DIRECTOS

Enteros. Son los números que no contienen componentes fraccionarios y, por tanto, no contienen punto decimal.

Este es un arreglo de números enteros, o sea que guarda una serie de variables de tipo INTEGER, todas agrupadas en una sola estructura.

Manual de turbo pascal

Estructura de datos (arreglos) Vectores y Matrices

Módulo 8: Primitivas en Pascal

Guía práctica de estudio 03: Algoritmos

Programación y Computación Ingenierías. Dr. Eric Jeltsch F. FUNCIONES Y PROCEDIMIENTOS. Universidad de La Serena.

ESTRUCTURAS REPETITIVAS EN PHP

Estructuras de Control

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

Estudiemos el siguiente problema, propuesto por Wirth y desarrollado por Dijkstra: Una lista de las primeras secuencias que cumplen es:

Diseño Estructurado de Algoritmos

EJERCICIOS EN PASCAL 1.- Área de un triángulo (Entrada y salida estándar - Pascal) 1.- Escribir un programa (en Pascal) que:

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

Estructura de Datos: Archivos

5. Subprogramas Fundamentos de Informática

Academia técnica de computación A.T.C.

Estructuras de control

ALGORITMOS Y ESTRUCTURAS DE DATOS. Ejercicios Resueltos CUADERNILLO DE PRACTICA

FUNDAMENTOS DE INFORMÁTICA

Computación II. Introducción a Visual Basic

Programación en Pascal

Tema 3. Aplicaciones de Tipo Consola

Estatutos de Control C# Estatutos de Decisión (Selección)

Universidad de Valladolid. Departamento de informática. Campus de Segovia. Estructura de datos Tema 4: Ordenación. Prof. Montserrat Serrano Montero

Guía práctica de estudio 03: Algoritmos

Calculemos inicialmente el logaritmo en base 10 de las siguientes potencias de 10:

Estructuras de Repetición (Repita para)

3. Estructuras iterativas

llamada a la función Val(num) cambiosigno(n) redondeo(num,3)

SUBRANGO ENUMERADOS CONJUNTOS

Examen de Introducción a las Redes de Computadoras y Comunicación de Datos (ref: sirc0503.doc) 28 de febrero de 2005

Estructuras Repetitivas

Objetivos de la sesión. Aplicación de consola 7/30/11. Código con que se inicia un programa en Visual C# (aplicación de consola)

Curso de Programación 1

Ficheros conceptos. Manejo de ficheros en C. Apertura del fichero Función fopen: nombre del fichero. Apertura del fichero Función fopen

Estructuras de repetición

UNIVERSIDAD NACIONAL EXPERIMENTAL DE GUAYANA VICERRECTORADO ACADÉMICO COORDINACION DE PRE-GRADO PROYECTO DE CARRERA DE INGENIERIA INDUSTRIAL

Estructuras de Repetición (Hacer-Mientras)

Complejidad computacional (Análisis de Algoritmos)

Aprender a programar con Turbo Pascal. Turbo pascal

Unidad Didáctica 2. Elementos básicos del lenguaje Java Tipos, declaraciones, expresiones y asignaciones

Carrera: Participantes Miembros de la academia de Metal- Mecánica


Procedimiento para usar la Tabla 1 (Tabla de Logaritmos)

Herramientas de Programación. M.C. Juan Carlos Olivares Rojas

Programación en Visual Basic Ricardo Rodríguez García

Parte 4: Estructuras de Control

Programación en C. Algoritmo y Estructura de Datos. Ing. M. Laura López. Programación en C

Universidad de Guadalajara del 24 al 26 de Octubre del 2012.

Estructura de datos Tema 3: El TAD Lista lineal. Universidad de Valladolid. Departamento de informática. Campus de Segovia

Algoritmos. Medios de expresión de un algoritmo. Diagrama de flujo

Universidad Autónoma del Estado de México Licenciatura en Ingeniería en Sistemas Energéticos Sustentables

Universidad de Managua

PROGRAMACIÓN UNIDADES

Programas ejemplo. Lenguaje de Programación PASCAL. Miguel Murguía

UTN FRLP Ing. en Sistemas de Información Algoritmos y Estructura de Datos Trabajos Prácticos Curso 2010

#include <stdio.h> /*..\me2000\ejemp12.cpp */ #include <ctype.h> #define MF '.' /* defino la constante Marca Final */

Taller de Resolución de Problemas Computacionales

4.- Leer tres números y escribirlos en orden decreciente

Estructura de Datos: Archivos. Programacion I Mgter. Vallejos, Oscar A.

Programación. Carrera: MAE 0527

6. Vectores. 1. Introducción. 2. Declaración (I) Fundamentos de Informática Dpto. Lenguajes y Sistemas Informáticos.

PHP: Lenguaje de programación

Tema 3.- Predicados y sentencias condicionales

Aprender a desarrollar con JavaScript

Java Avanzado. Guía 1. Java Avanzado Facultad de Ingeniería. Escuela de computación.

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

Programación Básica. Martin Méndez Facultad de Ciencias Universidad Autónoma de San Luis Potosí

Laboratorio 02: Ejercicios de programación en C

PRÁCTICA ALGORÍTMICA: EJERCICIOS PROPUESTOS

SISTEMAS INFORMÁTICOS PROGRAMACION I - Contenidos Analíticos Ing. Alejandro Guzmán M. TEMA 2. Diseño de Algoritmos

Tema: Autómata de Pila

Tema: Entorno a C# y Estructuras Secuenciales.

Flujo del programa. Este flujo puede alterarse mediante: El ordenador ejecuta cada sentencia y va a la siguiente hasta el final del programa.

Guía práctica de estudio 03: Solución de problemas y Algoritmos.

Java para programadores

Que es PHP? Que se puede hacer con PHP? Sintaxis del lenguaje. Variables. Operadores básicos. Condicionales. Ciclos.

Estructura If Esta sentencia, es considerada de alternativa doble (si se cumple condición entonces..., sino... / If... then... else... ).

ALGORITMOS Y ESTRUCTURAS DE DATOS

Guía práctica de estudio 05: Diagramas de flujo

El lenguaje C. 3. Una instrucción que se ejecutará si la condición es verdadera.

Algoritmos. Intro. Prof. Raquel Torres Peralta / Gerardo Sanchez S. Unison

FUNDAMENTOS DE INFORMÁTICA

DIAGRAMAS DE FLUJOS. Qué son Los Diagramas de Flujo y Para qué se Usan?

Algoritmos glotones. mat-151

ARBOLES ARBOLES BINARIOS ORDENADOS. REPRESENTACIÓN Y OPERACIONES

PROGRAMACIÓN CONCURRENTE. Tema 5 Monitores

Práctica 2. Controles Básicos.

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

TEMA 2: Estructuras de Control: Condicionales

UNIDAD 3: TIPOS ABSTRACTOS DE DATOS

MANUAL DE PRÁCTICAS DEL TALLER DE PROGRAMACIÒN PRACTICA NO.6

Trabajo Práctico 8 División de Problemas en Subproblemas Uso de Procedimientos y Funciones

Fundamentos de programación

RESOLUCIÓN DE TRIÁNGULOS FUNCIONES TRIGONOMÉTRICAS DE UN ÁNGULO AGUDO (0º a 90º) DEFINICIÓN DE FUNCIONES TRIGONOMÉTRICAS

Transcripción:

Un tipo particular de problemas para el cual resulta adecuada la iteración es el procesamiento de secuencias de valores. Dra. Jessica Andrea Carballi jac@cs.uns.edu.ar Dpto. de Ciencias e Ingeniería de la Computación UNIVERSIDAD NACIONAL DEL SUR Los valores pueden ser leís por consola o desde algún otro dispositivo (archivos por ejemplo, no se ven en esta materia). Cuan los valores se ingresan por consola es posible: Conocer la cantidad de valores antes de comenzar a leerlos. Utilizar un valor específico para indicar fin de la secuencia. Preguntarle al usuario, luego de leer cada valor, si desea ingresar otro. Problema: Leer una secuencia de n valores y calcular la suma de los cuadras de tos los valores. for i := 1 to n suma:= suma + sqr(v); end Consumir toda la cadena de n elementos. se conoce el número de valores que van a leerse. function sumasec(n: integer): integer; var suma, v: integer; for i := 1 to n suma:= suma + sqr(v); sumasec:=suma; Problema: Leer una secuencia de n valores y calcular la suma de los cuadras de tos los valores. program SumaDeCuadras; var i, n, v, suma: integer; write ( Ingrese la long. de la secuencia ); readln (n); for i := 1 to n suma := suma + sqr(v); Problema: Leer una secuencia de N números enteros y calcular la cantidad de veces que aparece el entero M. N y M son valores ingresas por el usuario inicialmente. Casos de prueba: N=5 M= 10 y la secuencia es 1 2 3 10 2 N=8 M=-1 y la secuencia es -1 2 3-1 -1 2 3-1 N=4 M=4 y la secuencia es 2 5 6 2 Cuáles son los datos de entrada? Cuáles son los datos de salida? Conocemos la cantidad de iteraciones? program contarensecuencia; {Lee una secuencia de N elementos enteros y cuenta cuantos son iguales a M con N y M leis previamente} var N, M, si, i, cont: integer; 1

write ('Ingrese el elemento a buscar: '); readln (M) ; cont := 0; write ('Ingrese una secuencia de ', N, ' enteros'); for i:=1 to N cont := cont+1; writeln (M, ' está ', cont, ' veces '); function vecesm(n, M: integer): integer; var veces: integer; veces:=0; for i := 1 to N if (v=m) veces:= veces+1; vecesm:=veces; Problema: Leer una secuencia de N números enteros y determinar si el entero M aparece al menos una vez. N y M son valores ingresas por el usuario inicialmente. Casos de prueba: N=5 M= 10 y la secuencia es 1 2 3 10 2 11 N=8 M=-1 y la secuencia es -1 2 3-1 -1 2 3-1 N=4 M=4 y la secuencia es 2 5 6 2 Conozco la longitud de la secuencia, uso un for?? write ('Ingrese el elemento a detectar: '); readln (M) ; esta := false; write ('Ingrese la secuencia de ', n, ' enteros'); for i:=1 to N read (si); esta:=true; SE CONOCE el número de valores que van a leerse pero puede suceder que NO NECESITEMOS leerlos tos para conocer la solución. write ('Ingrese el elemento a detectar: '); readln (M) ; esta := false; i:=1; write ('Ingrese la secuencia de ', n, ' enteros'); while (i<=n) and (not esta) read (si); i:=i+1; esta:=true; Puede suceder que no necesitemos consumir toda la secuencia. OPTIMIZAMOS!! Problema: Leer una secuencia de números enteros terminada en 0 y contar cuántos son múltiplos de n, con n positivo e ingresa previamente por el usuario. hayelem:=true; Mientras que haya elementos en la secuencia, contar :=0; while (hayelem) leo un elemento y si es múltiplo de n incremento el contar. Consumir toda la secuencia hasta llegar al 0. hayelem:=false if (si mod n = 0) contar := contar + 1; NO SE CONOCE el número de valores que van a leerse. program ContarMultiplosSecuencia; var si, contar, n: integer; hayelem: boolean; write ('Ingrese n '); readln (n); writeln( Ingrese la secuencia ); hayelem:=true; contar :=0; while (hayelem) hayelem:=false if (si mod n = 0) contar := contar + 1; writeln('cantidad de multiplos: ', contar); 2

fin:=false; contar := 0; while (not fin) OTRA FORMA fin:=true if (si mod n = 0) contar := contar + 1; Problema: Leer una secuencia de números enteros terminada en 0 y determinar si hay algún múltiplo de n, con n positivo e ingresa previamente por el usuario. hayelem:=true; encontre:=false; while (hayelem) and (not encontre) Puede no ser necesario consumir toda la secuencia hasta llegar al 0. Condición múltiple hayelem:=false if (si mod n = 0) econtre:=true; Problema: Leer una secuencia de números positivos terminada en 0 y obtener el mayor. El mayor es 19 read (numero) mayor := numero; mayor := numero; read (numero) mayor := numero; mayor := numero; while (numero <> 0) mayor := numero; end Considere la secuencia VACÍA Problema: A partir de los montos de un resumen bancario ingresas por tecla, computar el total de créditos (valores positivos) y de débitos (valores negativos). La secuencia termina en 0. program resumenbanco; var totcre, totdeb:integer; writeln( Ingrese los montos finalizan en 0. ); sumardyc(totcre, totdeb); writeln('creditos: ', totcre); writeln('debitos: ', totdeb); La sintaxis de la llamada a un procedimiento es siempre la misma, tanto para los procedimientos predefinis como para los definis por el programar. 3

Necesito recorrerla completa? NO SI 28/10/2016 Datos de salida = parámetros por referencia procedure sumardyc(var cc, cd: integer); var num :integer; cd:=0; cc:= 0; repeat readln(num); if (num < 0) cd := cd + num if (num > 0) cc := cc + num; until (num = 0); program p; var totcre, totdeb: integer; procedure sumardyc(var cc, cd: integer); var num :integer; cd:=0; cc:= 0; repeat readln(num); if (num < 0) cd := cd + num if (num > 0) cc := cc + num; until (num = 0); writeln( Ingrese los montos finalizan en 0. ); sumardyc(totcre, totdeb); writeln('creditos: ', totcre); writeln('debitos: ', totdeb); Problema: Leer una secuencia de números positivos terminada en 0 (que se considera elemento de la misma) y obtener el mayor y el menor elementos de la secuencia. Implemente un procedimiento para resolver este problema. Problema: Leer una secuencia de números positivos terminada en 0 y obtener la posición del mayor. Implemente una función para resolver este problema. El mayor es el 19 y el menor es el 2. La posición del mayor es 8 Preguntas que deberíamos hacernos antes de diseñar el algoritmo: La longitud de la secuencia, es conocida? Es necesario analizar tos los elementos de la secuencia para conocer el resulta? Si no es necesario, optimizamos!! SI for i:=1 to long i:=1; encontre:=false; while (i<=long) and (not encontre). i:=i+1; Conozco la longitud de la secuencia? fin:=false; while (not fin) NO fin:=false; encontre:=false; while (not fin) and (not encontre) 4

5