Programación I - 2011 Arreglos. Los elementos de un arreglo son todos del mismo tipo de dato (todos integer o real o char o registros o aún arreglos)

Slides:



Advertisements
Presentaciones similares
Arreglos Unidimensionales y Bidimensionales ESTRUCTURAS DE DATOS I
Advertisements

IBD Curso 2007 Clase 2.
Diseño y análisis de algoritmos
Sesión 13 Tipos de datos Estruturados Prof:Eridan Otto Programación de Computadores Lenguaje Pascal.
Programación de Computadores
Programación de Computadores
Iteración La iteración permite modelar problemas en los cuales una secuencia de instrucciones debe ejecutarse varias veces. La cantidad de iteraciones.
Algoritmos & Estructuras de Datos
Diseño y análisis de algoritmos
Estructuras de Datos (ARRAYS)
Las estructuras de arreglos fueron usadas en las primeras computadoras digitales, cuando la programación se hacía todavía en lenguaje máquina, para tablas.
Realizado por: Ing. Mauricio Rivera1 Colas. Realizado por: Ing. Mauricio Rivera2 ¿Qué es una Cola? Una cola es un grupo ordenado de elementos homogéneos.
Departamento de Sistemas Informáticos y Programación Universidad Complutense de Madrid Bloque 1: Introduccion Unidad 1: Consideraciones acerca de la eficiencia.
Unidad 4: Análisis de algoritmos (parte II)
Seminario de Lenguajes A – Opción Ada Seminario de Lenguajes A – Opción Ada – Raúl Champredonde1 Tipos definidos por el usuario –Parámetros array ilimitados.
ALGORÍTMICA Dpto. Ingeniería de Sistemas y Automática
Algoritmos de Búsqueda
Estructuras de control
Arreglos Ing. Nahiby Castillo.
Estructuras de datos M.I.A Daniel Alejandro García López.
C lase 10 COMPUTACION /17/2014Computacion - Fac. Ingeniería2  Ademas de los ya vistos (tipos simples), puede usarse como parámetros variables.
Vectores en java.
Lenguaje Pascal: Ana Laureano_UAM-A Lenguajes de Programación Pascal Profesora Ana Lilia Laureano - Cruces Universidad Autónoma Metropolitana - Azcpotzalco.
Departamento de Informática Universidad Técnica Federico Santa María Tema 7: Subprogramas Programación de Computadores (IWI-131) Luis Pizarro Q.
Sesión 6 Sentencias de Repetición Prof:Eridan Otto Programación de Computadores Lenguaje Pascal.
Clase 12 COMPUTACION 2009 Tipos de Datos PASCAL Estructurados Simples Primitivos No primitivos Estáticos Integer Real Char Boolean String Archivos Registros.
1 Concurrencia Procesos y Programas. 2 Establecer Comunicación entre procesos (memoria común)
Variables y Shapes. Variables ► Lugares de la memoria que reciben un nombre ► En VB no es necesario declarar las variables  A=8 ► Se declaran con Dim.
COMPUTACION 2009 Clase 6 Clase 7.
Clase 10: Estructuras de datos y arreglos.
Microsoft© Visual Basic . Net.
Agosto 2010Programación I - Tipo de Datos1 Programación I Prof. Adjunto: Lic. Jorge O. Scucimarri Universidad Nacional de Luján Licenciatura en Sistemas.
Resolución de Problemas y Algoritmos Uso de iteración con secuencias
Programación en Pascal
Sesión 5 Sentencias de Selección y repetición Prof:Eridan Otto Programación de Computadores Lenguaje Pascal.
Sesión 17 Tipos de datos Estruturados Arreglos de Registros Prof:Eridan Otto Programación de Computadores Lenguaje Pascal.
COMPUTACION 2009 C lase 4 Programa PASCAL SENTENCIAS DATOS Expresiones Tipos Declaración de variables Declaración de variables Asignación Entrada/Salida.
Programación I Arreglos II- Matrices.
75.40 Algoritmos y Programación I
Tipos de datos Estruturados String y ordenamiento Prof:Eridan Otto Programación de Computadores Lenguaje Pascal.
Teoría – Alejandro Gonzalez
Fundamentos de Programación
Vectores y Matrices.
Departamento de Informática Universidad Técnica Federico Santa María Programación de Computadores (IWI-131) Luis Pizarro Q.
Definir un vector Forma general Variable=[tipo]*tamaño Tipo: es el valor inicial con el cual quedarán llenas todas las posiciones creadas del vector. Tamaño:
Conjuntos  Tipo estructurado  Es una lista encerrada entre corchetes  Deben ser elementos de igual tipo y Ordinales. Pueden especificarse subrangos.
Tema 8: Tipos de Datos Estructurados I
Vectores y Matrices.
Tema 6: Estructuras de Control
COMPUTACION 2009 Clase 6 Clase 6.
Departamento de Informática Universidad Técnica Federico Santa María Temas 2,3,4: Estructura de un Programa Pascal Declaraciones Tipos de Datos Simples.
Clase 6 COMPUTACION 2009 C lase 8 Tipos de Datos PASCAL Estructurados Simples Primitivos No primitivos Integer Real Char Boolean String Archivos Registros.
Departamento de Informática Universidad Técnica Federico Santa María Ejercicios Certamen 1: Programación de Computadores (IWI-131) Luis Pizarro Q.
Arreglos y comunicación Usuario
Aun en problemas muy simples surge la necesidad de agrupar valores elementales de alguna manera. Cuando representamos una caja de ahorro bancaria definimos.
Vectores y Matrices.
Programación en Visual Basic
Contenido:  ¿Qué son los Punteros?  Los Procedimientos: New y Dispose.
Visual Basic FUNCIONES Y PROCEDIMIENTOS
Ing. Johanna Macias Algoritmo, Estructura y Programación III.
PHP el Lenguaje Ejercicios Básicos.
Estructura: COLA Profesor: Ing. Erick López Ch. M.R.I.
Algorítmica y Programación
ESTRUCTURAS DE DATOS “Conceptualización de estructuras de datos” Por: Eduardo Robayo.
MODULA Lenguaje de Programación Anabel Martín González
Estructura de Datos PILA Universidad Hispanoamericana Prof. Ing. Erick López.
Prof. Jonathan Silva Ingeniería Civil – Informática I Ingeniería Civil Informática I Clase 5.
UNIVERSIDAD TECNOLÓGICA DE PANAMÁ Facultad de Ingeniería de Sistemas Computacionales Programa de Lic. en Informática Educativa Computación.
String, arreglos y arreglos bidimensionales
String, arreglos y arreglos bidimensionales
Transcripción de la presentación:

Programación I Arreglos

Los elementos de un arreglo son todos del mismo tipo de dato (todos integer o real o char o registros o aún arreglos) por lo tanto se denomina estructura de datos “homogénea” Indices A Es una colección ordenada e indexada de elementos. Ejemplo Arreglo (Array)

var v: vector A los elementos se los accede directamente, indicando simplemente su posición, por eso es una “estructura de datos indexada” y de “acceso directo”. Integer Char enumerativo type vector = array [Rango] of tipo_de_dato; Integer Real Char Boolean String Registro Array Declaración

La memoria ocupada durante la ejecución del programa es fija, por eso se dice que es una “estructura de datos estática”. Un arreglo con un sólo índice se denomina “vector”. Con dos índices, se lo denomina “matriz”. v [1] := 5;  En la posición 1 del arreglo v se almacena el número V Asignación de valores Read( v[1] );  Se lee un dato desde teclado y se almacena en la posición 1. v [1] := 5;Read( v[1] );

Declaración type vector = array [1..5] of integer;  Dimensión Física 5 var v: vector ; dimLog: integer ;  Dimensión Lógica begin DimLog:= 0;  Inicialización de la Dimensión Lógica en 0, pues aún no posee elementos. … end. Dimensión física: 10 Dimensión lógica: 1 5????????? V Dimensión física: 8 Dimensión lógica: ????? V Dimensión Física y Lógica

Realizar un programa que lea números hasta que llegue el número 0 (como máximo 100). Una vez realizada la carga: Informar las posiciones en que se encuentran los números múltiplos de 3. Informar la cantidad de números pares. Enunciado de ejemplo

program Arreglos; type vectorNumeros = array [1..100] of integer; var v : vectorNumeros; dimLog: integer; begin {PROGRAMA PRINCIPAL} llenarVector (v, dimLog); realizarInforme(v, dimLog); end. Solución propuesta Si no sabemos la cantidad de elementos que contendrá un arreglo siempre trabajaremos con su dimensión lógica

procedure llenarVector ( var v: vectorNumeros; var dimLog: integer); var num: integer; begin dimLog := 0; write(‘Ingrese un Número: '); readln(num); while (num <> 0) and (dimLog < 100) do begin dimLog := dimLog + 1; v[dimLog]:= num; write(‘Ingrese un número: '); readln(num); end; Es responsabilidad del programador mantener actualizado el valor de la dimensión lógica

function esPar (a: integer ): Boolean; begin esPar := (a mod 2 = 0); end; procedure realizarInforme (v: vectorNumeros; dimLog: integer); var i, cantPar: integer; begin cantPar:= 0; for i:= 1 to dimlog do begin if (v[i] mod 3 = 0 ) then writeln('En la posición ', i, ' hay un numero múltiplo de 3'); if (esPar(v[i])) then cantPar:= cantPar + 1; end; writeln ('La cantidad de números pares es: ', cantPar); end; Usamos la dimensión lógica para recorrer el vector solo hasta la posición que contiene elementos

Se lee la información del personal administrativo de la Facultad de Informática y se sabe que son exactamente 50 personas. De cada persona se lee la siguiente información: Apellido, Nombre, DNI y Fecha de Nacimiento. Una vez cargado todo el personal informar: Cantidad de personas que posean DNI con mayor cantidad de dígitos pares que impares. Apellido de aquellas personas que cumplen años en el mes de enero. Enunciado de ejemplo

program ejercicio2; const dim = 50; type fecha = record dia : 1..31; mes : 1..12; anio: ; end; persona = record apellido : string[20]; nombre : string[20]; DNI : integer; fecha_nac: fecha; end; personas = array [1..dim] of persona; Var vp: personas; begin {PROGRAMA PRINCIPAL} llenarVector (vp); realizarInforme(vp); end. Solución propuesta El uso de la constante nos ayuda en el mantenimiento La fecha de nacimiento debe ser un registro pues el enunciado nos pide informar datos referentes solo al mes

procedure llenarVector (var vp: personas); var p: persona; i: integer; begin for i := 1 to dim do begin writeln('----Ingrese los datos de una persona----'); leerPersona(p); vp[i] := p; end; Recordar: Siempre que cargamos los datos de un registro usamos un módulo para hacerlo.

procedure leerPersona (var p: persona); begin write(‘Ingrese Apellido: '); readln(p.apellido); write(‘Ingrese Nombre: '); readln(p.nombre); write(‘Ingrese D.N.I.: '); readln(p.DNI); writeln(‘Ingrese fecha de nacimiento'); leerFecha(p.fecha_nac); end; procedure leerFecha (var f:fecha); begin write(‘Ingrese el día: '); readln(f.dia); write(‘Ingrese el mes: '); readln(f.mes); write(‘Ingrese el año: '); readln(f.anio); end; Usamos un proceso aparte para cargar los datos que componen una fecha para que sea mas claro.

procedure realizarInforme (vp: personas); var i, cant_par, cant_impar, cantPersonas: integer; begin cantPersonas:= 0; for i:= 1 to dim do begin desglosarNumero (vp[i].DNI, cant_par, cant_impar); if (cant_par > cant_impar) then cantPersonas := cantPersonas + 1; if (vp[i].fecha_nac.mes = 1 ) then writeln('La persona ', vp[i].apellido, ' cumple años en enero'); end; writeln ('La cantidad de personas es: ', cantPersonas); end; Accedemos a los datos de una persona campo a campo usando el operador ¨.¨

procedure desglosarNumero (n: integer; var cp: integer; var ci: integer); var dig: integer; begin cp := 0; ci := 0; while (n <> 0) do begin dig := n mod 10; if (esPar(dig)) then cp := cp + 1 else ci := ci + 1; n := n div 10; end; function esPar (a: integer ): Boolean; begin esPar := (a mod 2 = 0); end;

¿Preguntas?