Anderson martinez arreglos

28
República Bolivariana de Venezuela I.U.P. “Santiago Mariño” Extensión Barinas Ingeniería de Sistemas Lenguaje de Programación ARREGLOS Realizado por: TSU. Anderson Martínez C.I: 20.774.148 Ciudad Bolivar, Marzo de 2016

Transcript of Anderson martinez arreglos

República Bolivariana de Venezuela

I.U.P. “Santiago Mariño”

Extensión Barinas

Ingeniería de Sistemas

Lenguaje de Programación

ARREGLOS

Realizado por:

TSU. Anderson Martínez

C.I: 20.774.148

Ciudad Bolivar, Marzo de 2016

Arreglos (array)

• Un arreglo está formado por un número fijo de

elementos contiguos de un mismo tipo. Al tipo se lellama tipo base del arreglo. Los datos individuales se

llaman elementos del arreglo.

• Para definir un tipo estructurado arreglo, se debe

especificar el tipo base y el número de elementos.

Un array se caracteriza por :•• Almacenar

continua.los elementos del array en posiciones de memoria

• Tener un único nombre de variable que representa a todos loselementos, y éstos a su vez se diferencian por un índice o subíndice.

Acceso directo o aleatorio a los elementos individuales del array.•

Arreglos (array)

dominio = I codominio = C

• En términos matemáticos abstractos la transformación (mapeo) puedeanotarse:

A:I C

En Pascal puede anotarse, la definición del nuevo tipo A según:

type A = array [I] of C;

I se denomina tipo del índice, y debe ser un tipo ordinal.

• C es el tipo del contenido,tipo base. Importa insistir

igual tipo.

o de lasen que

componentes. También suele llamarsetodas las componentes deben ser de

• El tipo estructurado A queda completamente definido, si están

previamente definidos los tipos I y C.

Clasificación de los Arreglos

• Los arrays se clasifican en:

• Unidimensionales

(vectores o listas)

• Multidimensionales

( tablas o matrices)

Arreglos Unidimensionales

• Un array de una dimensión – vector o lista – es untipo de datos estructurados compuesto de un número

de elementos finito, tamaño fijo y elementos

homogéneos.

Finitos, indica que hay un último elemento, tamaño•

fijo significa que el tamaño del array debe ser

conocido en tiempo de compilación, homogéneo

significa que todos los elementos son del mismo tipo.

• Los elementos del array se almacenan en posicionescontiguas de memoria, a cada una de las cuales se

puede acceder directamente.

Arreglos Unidimensionales

Elementos

Mi_vector

Nombre dela variable Posición : 1

Contenido : Mi_vector[1] = 9

9 5 6 2 4 8 3

Ejemplos Arreglos Unidimensionales

• Resolvamos este primer ejemplo: (ejemplo 1)

en un vector, sumarlos• Cargar 10 elementos

y mostrar el resultado por pantalla.

Pasos para resolver este problema:•

Leer un vector de 10 elementos

Sumar los elementos

Mostrar el resultado de la suma por pantalla

Ejemplos Arreglos Unidimensionales

Program Ejemplo1; {Version 1}typesumandos = array[1..10] of integer;varsuma, i : integer;vec_sumandos : sumandos;beginsuma := 0;for i:= 1 to 10 do

read(vec_sumandos[i] )for i := 1 to 10 do

suma:= suma +vec_sumandos[i];writeln (´La suma de los números es´, suma);end.

Declaración del tipo arreglo

Declaración de la variable arreglo

Lectura de los elementos del arreglo

Suma de los elementos

Ejemplos Arreglos Unidimensionales

Program Ejemplo1; {Version 2}

type

sumandos = array[1..10] of integer;

var

suma, i : integer;

vec_sumandos : sumandos;

begin

suma := 0;

for i:= 1 to 10 do begin

read(vec_sumandos[i] )

suma:= suma +vec_sumandos[i];

end;

writeln (´La suma de los números es´, suma);

end.

Declaración de Vectores

• Los arreglos son estructuras de datos, por lo tanto las mismas

deben ser declaradas. Esta operación se realiza en la sección

“Type” de un programa en Pascal. (como puede verse en el

ejemplo1)

Formato

type

nombre_del_tipo = array[tipo_subindice * ] of tipo;

Debe ser de tipo ordinal: boolean, char, enumerado o subrango

Luego de la declaración del tipo, se declara la variable.

Formato

var

nombre_variable: nombre_del_tipo;

Ejemplo Declaraciones

Ej1:

type

Valores = array[ -10..10 ] of real;

var

precios: valores;

Ej2:

const

Max= 500;type

T_Texto = array[ 1..Max ] of char;

var

Texto: T_Texto;

Ejemplo Declaraciones(cont.)

Array para almacenar las

Suponiendo lo siguiente:• Numero de cursos 5

• Grupos por curso 3

• Número de evaluaciones 3

• Número de asignaturas 6

• Número de alumnos por curso 20Const

Numcurso=5;

Numasig=6;

Numalum=20;

Type

Cursos=1.. numcurso;

Grupos='A'..'C';

Eval=(primera,segunda,tercera);

Asign=1.. numasin;

Alum=1. .numalum;

notas correspondientes a todos los alumnos de un colegio.

Tiponotas=array[cursos,grupos,eval,asign,alum] of real;

Var

Notas:tiponotas;

Curso:cursos;

Grupo:grupos;

Evaluacion:eval;

Materia:asign;

Alumno:alum;

Con los elementos de un array se puede realizar las mismas operaciones que el tipo base al que

pertenecen.

Vectores – Manejo de Índices

• Asignación de valores

Texto[3] := ´a´;

Precios[0] := 23.50;

Recuerden, los índices de un arreglo pueden ser: entero,

lógico, carácter, enumerado o subrango.

Vectores – Operaciones

• Con la siguiente declaración:type

T_Notas = array [1..30] of integer;

var

Notas: T_Notas;

Lectura de un vector

for i:= 1 to 30 do

read(Notas[i] )

• Escritura de un vectorfor i:= 1 to 30 do

writeln(Notas[i] )

Vectores – Operaciones

• Con la siguiente declaración:type

T_Notas = array [1..30] of integer;

var

Notas, Aux_Notas: T_Notas;

Copia de vectoresfor i:= 1 to 30 do

Aux_Notas[i]:= Notas[i];

Vectores – Ejemplos Resueltos

Program Ej2;

const

max = 50;

type

t_numeros = array[1.. max] of integer;

var

suma, i : integer;

promedio: real;

numeros : t_numeros;

begin

suma := 0;

for i:= 1 to max do

begin

read(numeros[i] )

suma:= su12a +numeros[i];

end;

Promedio:= suma/max;

writeln (´El promedio es ´,Promedio´);

for i := 1 to 50 do

if numeros[i] > promedio

then writeln (´El número´, numeros[i], ´es mayor al promedio´);

end.

Ej2.- Dados 50 números

enteros, obtener el promediode ellos. Mostrar por pantalla

dichonúmeros

promedio y losqueingresados

sean mayores que el mismo.

Vectores – Ejemplos Resueltos

Program Ej3;

const

max = 100;

type

t_numeros = array[1.. max] of integer;

var

suma, i, n : integer;

promedio: real;

numeros : t_numeros;

begin

suma := 0;

write (´Ingrese la cantidad de números a sumar. (Como máximo, 100 números´);

readln(n);

for i:= 1 to n do

begin

read(numeros[i] )

suma:= suma +numeros[i];

end;

writeln (´La suma es ,́suma´);

for i := 1 to n do

writeln (´El sumando ,́ i, ´es ,́ numeros[i]);

end.

Ej3.- Dados n números,

obtener e imprimir la sumade todos ellos. A continuación

mostrar por pantallasumandos.

todos los

Método de Ordenamiento

• Los métodos de ordenamiento son muy útiles porque permiten buscarvalores, tanto por valor y por su posición, de una manera eficiente.

Antes de estudiar algunos de los métodos de ordenamiento es

necesario definir el problema y el entorno en el cual se desea trabajar.

• Para realizar un ordenamiento se necesita un conjunto de valores

ordenables, es decir, que exista un criterio de ordenamiento, por

ejemplo las letras se basan en el alfabeto, los números en la cantidad

representada. Además, se trataran solamente métodos de

ordenamiento en los que la instrucción base es la comparación entredos valores y que se obtiene el ordenamiento por medio de intercambio

de valores. Estas consideraciones son la base de los métodos.

• Son muchos los métodos de ordenamiento, sin embargo, se haráénfasis en los siguientes métodos: Ordenamiento por selección, por

inserción, burbuja.

Método de Ordenamiento

Para tal efecto asuma las siguientes declaraciones: y las siguientes asignaciones:

v[ 2 ] := 25;

v[ 5 ] := 14;

v[ 1 ] := 6;

v[ 3 ] := 7;

v[ 4 ] := 2;

N := 5;

Type

vector = array [ 1 .. 25 ] of integer;

Var

v : vector;

i,j,N,aux,p : integer

Ordenamiento por Burbuja

Ref: Luis Joyanes Aguilar. Programación en Turbo Pascal Ver 5.5, 6.0, 7.0,McGraw-Hill, 2ª. Edición, 1993, pp. 412-417.

Este método es clásico y muy sencillo aunque poco eficiente. La ordenaciónpor burbuja [ bubble sort ] se basa en:

1. La comparación de elementos adyacentes del vector e

2. Intercambio de sus valores si estos están desordenados

De este modo se dice que los valores más pequeños burbujean hacia la parte

superior de la lista [hacia elgrandes se hunden hacia el

ascendente.

primer elemento], mientras que los valores másfondo de la lista en el caso de un ordenamiento

La técnica de ordenación de la lista por burbuja compara elementos

consecutivos de la lista de modo que si en una pasada no ocurrieranintercambios, significaría que la lista esta ordenada.

Ordenamiento por Burbuja

{ Ordenamiento por burbuja mejorado en forma ascendente }

desordenado := true;

while desordenado do

begin

desordenado := false;

for i:= 1 to n - 1 do

if v[ i ] > v[ I + 1 ] then

begin

aux := v[ i ];

v[ i ] := v[ i + 1 ]; v[

i + 1] := aux;

desordenado := true;

end;

end;

End.

Pasada 1

10

5

8

Pasada 2

5

10

8

Pasada 3

5

8

10

Método de Ordenamiento (Cont.)

{ este programa lea n números enteros y/o reales y los ordena por el

ascendente.....compilado en en borland pascal para Windows versión 7.0}

Program burbujas;

uses wincrt; { utilizando la terminal de windows }

{ declaración de variables globales...}

var

n,i,codg_art:integer;

temp:real;

x:array [1..100] of real;

pausa:char;

{ procedimiento aplicando el método de burbuja }

procedure burbuja;

begin

for codg_art:=1 to n-1 do

for i:=codg_art+1 to n do

if x[i]<x[codg_art] then

begin { intercambiando los números...}

temp:=x[codg_art];

x[codg_art]:=x[i];

x[i]:=temp;

end;

end;

método de ordenación burbuja en forma

Método de Ordenamiento (Cont.)

Begin { programa principal}

writeln ('programa de ordenación de datos numéricos enteros y reales....');

writeln ('aplicando el método de burbuja....');

write ('cuantos registros introducira? ');

readln (n);

writeln;

for i:=1 to n do

begin

write ('x[',i:3,']=? ');

readln (x[i]);

end;

burbuja;

writeln;

writeln (' registros ordenados en forma ascendente');

pausa:=readkey;

end.

Arreglos Bidimensionales (Tablas)

• Es un conjunto

el cual el orden

también es en

de elementos, todos del mismo tipo (homogéneo), en

de los componentes es significativo y el acceso a ellos

forma directa por medio de un par de índices para

poder identificar a cada elemento del arreglo.

También se les llama Matriz o Tabla.

Los elementos se referencian con el formato:T [3,4] elemento de la fila 3 y columna 4.

Los arreglos bidimensionales se usan para representar datos que

pueden verse como una tabla con filas y columnas

Matriz

1 2 3 4 5

1

2

3 15.2

4

Declaración Arreglos Bidimensionales

• Al igual que en los arrays unidimensionales o vectores, se crean

con declaraciones type y varsubrango. Se deben indicar:

y deben ser de tipo ordinales o

El nombre del array

Tipo del array

Rango permitido

• Ejemplo:Type

Tabla = array [1..25,1..4] of real;

Var

Grados : Tabla;

• Para localizar o almacenar un valor en el array se deben

especificar dos posiciones opara la columna.

subíndices, uno para la fila y otro

Asignación Arreglos Bidimensionales

• Se considera que este arreglo tiene dos dimensiones (un

subíndice para cada dimensión) y necesita un valor para cada

subíndice, y poder identificar un elemento individual.

• En notación estándar, normalmente el primer subíndice se

refiere a la fila del arreglo, mientrasse refiere a la columna del arreglo.

que el segundo subíndice

Es decir, Matriz(I,J), es el

elementocolumna.

de Matriz que ocupa la I-ésima fila y la J-ésima

• Para tener acceso a un elemento de la matriz se tiene que

especificar primero el renglón después una coma y por último la

columna a la que se quiere tener acceso.Ejemplo:

Matriz [ 3, 2] : = 15.2;•

Lectura/Escritura Arreglos

Bidimensionales

• Si se deseara leer un solo elemento de un arreglo bidimensional debeespecificarse el renglón y la columna a que se refiere, por ejemplo, la

posición 3,2:

• Pero si el objetivo es, leer o escribir la matriz completa entonces al

igual que con los arreglos unidimensionalesiterativas.

Escriturar en una Matriz

For fila := 1 to 3 do

Begin

For Columna := 1 to 4 do

Write (A[Fila, Columna]:4);

End;

se deben usar estructuras

Pseudocódigo Pascal

Leer ( Ventas [ 3, 2] ) ReadLn ( Matriz [ 3, 2] ) ;

Escribir ( Ventas [ 3, 2] ) WriteLn ( Matriz [ 3, 2] ) ;

Ejemplos Matriz

Calcular el promedio de cada estudiante de una lista de veinticinco alumnos de una clase de informática con notas en

cuatro asignaturas.

Program Promedio;

Var

Notas

I,J

: Array [1..25,1..4] of real;

: Integer;

Suma,Prom : Real;

Begin

For I := 1 to 25 do

Begin

Write (`Notas del estudiante: ,́I:1);

Writeln (`En una misma línea digite todas las notas )́;

Suma := 0;

For J := 1 to 4 do

Begin

Read (Notas[I,J]);

Suma := Suma + Notas[I,J]

End;

Readln;

Prom := Suma/4;

Writeln (`La nota promedio del estudiante `,I:1,´ es `,Prom:1:1)

End

End.