Descargar la presentación
La descarga está en progreso. Por favor, espere
Publicada porMiguel Poblete Gallego Modificado hace 6 años
1
INFORMATICA DEL CBU Clase 10 Año 2016 ARREGLOS
2
PRIMERA PARTE ARREGLOS ARRAY. Unidimensionales: Vectores.
Declarar arreglos. Type: tipo de datos definido por el usuario. Operaciones con vectores. Asignación. Mg. Ing. Fátima Martínez
3
ARREGLOS Un arreglo es una sucesión consecutiva de bytes en memoria.
Colección finita de datos (variables) del mismo tipo. Los arreglos pueden representar: Vectores (una sola dimensión). Matrices (2 ó más dimensiones). Mg. Ing. Fátima Martínez
4
ARREGLOS Datos estructurados.
Un único identificador representa a múltiples datos individuales. Pueden ser manipulados colectiva o individualmente. 7.50 4.75 6.55 5.25 6 … (1) (2) (3) (4) (…) (n) Calificaciones Mg. Ing. Fátima Martínez
5
Mg. Ing. Fátima del C. Martínez
ARREGLOS Se le asigna una cantidad fija de memoria. El mismo identificador (nombre de variable). Cada elemento identificado por un índice. El número de índices determina su dimensionalidad. Acceso directo a cada elemento del arreglo: x[1], x[2], x[3]… x[n] Mg. Ing. Fátima del C. Martínez 9/21/2018
6
Declarar ARREGLOS (ARRAY)
Se declaran especificando: Nombre del arreglo. Tamaño. Tipo de datos de los elementos del arreglo. Su índice comienza en 1. Mg. Ing. Fátima Martínez
7
Declaración formal de un arreglo
En una declaración de variable: Var nombreArreglo: array[tipo de indice] Of tipo Ejemplo: Arreglo de 100 elementos de tipo real Var lista : array[1..100] Of real; Mg. Ing. Fátima Martínez
8
Declarativa type Crear un “alias” mediante una declarativa type.
El bloque type permite construir nuevos tipos de datos basados en los que ya se encuentran predefinidos en el lenguaje. type Vect = array[1..100] Of real; var lista: Vect; type TMat = array[1..DIM1,1..DIM2] Of integer; var Mat : TMat; Mg. Ing. Fátima Martínez
9
El límite inferior y superior
type TArre = array[‘A’..’Z’] of char; TVect = array[ ] of double; En el primer caso la variable de control de lazo deberá ser de tipo char y moverse entre estos dos límites: var c : char; for c:=’A’ to ‘Z’ do ..... Mg. Ing. Fátima Martínez
10
OPERACIONES CON VECTORES
Asignación: igual a cualquier variable, pero poniendo el número de índice del elemento entre [ ]. Var Notas: Vect; For i := 1 To 100 begin Notas[i] := 1 + random(10); suma = suma + Notas[i]; End; Promedio := suma/100; … Mg. Ing. Fátima del C. Martínez 9/21/2018
11
Ejemplo 1 Leer una lista de N cantidades de temperaturas.
Calcular la media y obtener la desviación de cada uno de las temperaturas respecto de la media: desviación = x[i] - media Mg. Ing. Fátima Martínez
12
Leer datos de la lista Emplearemos un bucle: For i:=1 To final do
Begin write(‘La temperatura ’,i, ‘ -> ’); readln(lista[i]); End; Mg. Ing. Fátima Martínez
13
Calcular la media suma:=0; For i:=1 To final do Begin
suma := suma + lista[i]; End; media := suma/final; Mg. Ing. Fátima Martínez
14
Calcular las desviaciones
For i:=1 To final do Begin desviacion[i]:= media - lista[i]; End; Desviaciones Mg. Ing. Fátima Martínez
15
Las cadenas. Caso particular de arreglos
El tipo char o carácter: un elemento de la tabla ASCII (American Standard Code Information Interchange) o Código Standard Americano para el Intercambio de Información. Al pulsar un caracter del teclado, se genera automáticamente uno de estos códigos. Varios caracteres conforman palabras y texto. Tipo string: tipo especial de dato, arreglo de char. var Texto : string; Frase : string[80]; 255 espacios para almacenar caracteres Mg. Ing. Fátima Martínez
16
El domicilio 0 (cero) Se almacena allí (en forma de equivalente char) la cantidad de caracteres que han ingresado a la cadena. Frase:=’Programación en Turbo Pascal’; contiene 28 caracteres, se almacena como: P r o g r a m a c i ó n e n T u r b o P a s c a l Devuelve 28 Longitud:=length(Frase) Mg. Ing. Fátima Martínez
17
Ejemplo 2 Transformar en mayúscula una cadena de caracteres, considerando el CODIGO ASCII de los caracteres. Mayusculas Mg. Ing. Fátima Martínez
18
Ejemplo 3 En una frase, detectar la cantidad de vocales a, e, i, etc., presentes en la misma. Mg. Ing. Fátima Martínez
19
type TVoc = array[1..5]of integer; var Voc : TVoc; Frase : string; i : integer; begin clrscr; Frase:=’Esta es una frase breve de prueba’; for i:=1 to 5 do Voc[i]:=0; for i:=1 to lenght(Frase) do case Frase[i] of ‘a’,’A’ : Voc[1]:=Voc[1]+1; ‘e’,’E’ : Voc[2]:=Voc[2]+1; ‘i’,’I’ : Voc[3]:=Voc[3]+1; ‘o’,’O’ : Voc[4]:=Voc[4]+1; ‘u’,’U’ : Voc[5]:=Voc[5]+1; end; Vocales Mg. Ing. Fátima Martínez
20
Estructura Case Admite un subrango: case VarOrdinal of
Valor1 .. Valor2 : begin instruc1; end; Valor3 .. Valor4 : begin instruc2; end; etc. end; case Edad of : writeln(‘categoría infantil’); : writeln(‘ categoría superjuvenil’); etc. end; Mg. Ing. Fátima Martínez
21
Ejemplo 4 Convertir un número binario en su equivalente decimal.
Mg. Ing. Fátima Martínez
22
Los digitos binarios La primera posición es cero, pero a fin de trabajar con potencias de 2, le llamaremos 1. Los dígitos binarios sólo pueden ser: 1 o 0. Posiciones 1x x x x x x x x 1 Mg. Ing. Fátima Martínez
23
uses crt; type TBin = array[1
uses crt; type TBin = array[1..8]of byte; var NBin : TBin; NDec : integer; PesoDig : integer; i : byte; begin clrscr; highvideo; PesoDig:=128; NDec:=0; for i:=8 downto 1 do begin write('NBin ',i,'='); readln(NBin[i]); NDec:=NDec+NBin[i]*PesoDig; PesoDig:=PesoDig DIV 2; end; Binarios Mg. Ing. Fátima Martínez
24
Ordenar los elementos de un vector. Método de la burbuja
Consiste en acomodar el vector moviendo el mayor hasta la última casilla comenzando desde la casilla 1 del vector. Deja el número más grande en la última posición. Prosigue a encontrar y acomodar el siguiente más grande comparando de nuevo los números desde el inicio del vector. Así sigue hasta ordenar todo los elementos el arreglo. Es muy deficiente porque en cada pasada vuelve a comparar las ya ordenadas. Es el más usado en todos los lenguajes de programación. Mg. Ing. Fátima Martínez
25
Comparar a1 con a2 e intercambiarlos si a1>a2 (o a1<a2).
Dado un vector a1, a2, a3, ... an Comparar a1 con a2 e intercambiarlos si a1>a2 (o a1<a2). Seguir hasta que todo se haya comparado an-1 con an. Repetir el proceso anterior n-1 veces Mg. Ing. Fátima Martínez
26
Mg. Ing. Fátima Martínez
27
Mg. Ing. Fátima Martínez
28
Ingresa datos al vector Dimension datos[5] i <- 1
Mientras i<=5 Hacer Escribir 'Ingrese el dato ',i,':' Leer datos[i] i <- i+1 FinMientras Mg. Ing. Fátima Martínez
29
Si datos[i]>datos[j] Entonces aux <- datos[i]
Mientras i<=4 Hacer j <- i+1 Mientras j<=5 Hacer Si datos[i]>datos[j] Entonces aux <- datos[i] datos[i] <- datos[j] datos[j] <- aux FinSi j <- j+1 FinMientras i <- i+1 Mg. Ing. Fátima Martínez
30
SEGUNDA PARTE ARREGLOS De dos dimensiones: Matrices.
Type: tipo de datos definido por el usuario. Operaciones con matrices. Asignación. Mg. Ing. Fátima Martínez
31
Matriz de m x n La forma clásica de una matriz de m x n que la representamos como: n [columnas] m [filas] Mg. Ing. Fátima Martínez
32
Declaración formal var Mat : array[DIM1,DIM2]of <Tipo>; var Mat: array[1..4,1..5] of integer; DIM1 y DIM2 se especifican como un subrango de tipo ordinal que tiene un límite inferior y un límite superior. Conviene crear un “alias” para los arreglos, mediante una declarativa type. Mg. Ing. Fátima Martínez
33
Leer o escribir Para asignar por completo un arreglo:
for i:=1 to DIM1 do for j:=1 to DIM2 do M[i, j]:=20+random(81); for i:=1 to DIM1 do begin for j:=1 to DIM2 do write(M[i, j]:4); writeln; end; Mg. Ing. Fátima Martínez
34
Procedimiento CargarMatriz( )
Recibirá como único parámetro una matriz de enteros de 10 x 15 y le asignará valores aleatorios en el rango 10, 50. Calculará la suma de cada fila, y dicho resultado será mostrado a la derecha de la matriz (a continuación de cada fila). Como forma de verificación, se imprimirá la matriz, desde un procedimiento llamado en el main( ). Mg. Ing. Fátima Martínez
35
uses crt; const DIM1 = 10; DIM2 = 15; type TMat = array[1. DIM1,1
uses crt; const DIM1 = 10; DIM2 = 15; type TMat = array[1..DIM1,1..DIM2]of integer; var Mat : TMat; i, j : integer; { } procedure CargarMatriz( var M : TMat); var SumaFila : integer; i, j : integer; begin for i:=1 to DIM1 do begin SumaFila:=0; Mg. Ing. Fátima Martínez
36
for j:=1 to DIM2 do begin M[i, j]:=10+random(41); SumaFila:=SumaFila+M[i,j]; write(M[i, j]:3); end; //finalizan las columnas writeln(SumaFila:6); end;//finalizan las filas end;//finaliza el procedimiento Mg. Ing. Fátima Martínez
37
Llamada al procedimiento
Begin (* main *) clrscr; randomize; CargarMatriz(Mat); readkey; for i:=1 to DIM1 do begin for j:=1 to DIM2 do write(Mat[i,j]:3); writeln; end; End. Carga Matriz Mg. Ing. Fátima Martínez
38
Tabla de factoriales n n/3 n! 1 0 1 3 1 6 5 1 120 7 2 5040 : : :
1 0 1 3 1 6 : : : Escribe una función de nombre Factorial que calcule el factorial de un número y otra función de nombre Cociente3 que calcule el cociente indicado. Presenta los valores calculados en forma de una Tabla. Mg. Ing. Fátima Martínez
39
M Factorial Entrada n: entero Salida fact: entero Variable c: entero
Inicia Proceso Leer n fact <- 1 c <- 1 Mientras c <= n Hacer fact <- fact * c c <- c + 1 Fin Mientras Escribir fact Parar Factorial Mg. Ing. Fátima Martínez
40
Suma Diagonal principal
Escribir un procedimiento CargarMatriz( ) que cargará una matriz de DIM x DIM con números aleatorios entre 10 y 50. Escribir una función SumarDiagonal( ) que recibirá como parámetro la matriz y determinará la suma de su diagonal principal. Desde el programa principal invocar al procedimiento y presentar la suma de la diagonal. Suma Diagonal Mg. Ing. Fátima Martínez
41
Mg. Ing. Fátima Martínez
Presentaciones similares
© 2025 SlidePlayer.es Inc.
All rights reserved.