Sei sulla pagina 1di 21

Programacin y Computacin

Ingenieras

Dr. Eric Jeltsch F.

___________________________________________________________________ Universidad de La Serena

Programacin y Computacin

Ingenieras

Dr. Eric Jeltsch F.

___________________________________________________________________ Universidad de La Serena

Programacin y Computacin

Ingenieras

Dr. Eric Jeltsch F.

___________________________________________________________________ Universidad de La Serena

Programacin y Computacin

Ingenieras

Dr. Eric Jeltsch F.

___________________________________________________________________ Universidad de La Serena

Programacin y Computacin

Ingenieras

Dr. Eric Jeltsch F.

___________________________________________________________________ Universidad de La Serena

Programacin y Computacin

Ingenieras

Dr. Eric Jeltsch F.

___________________________________________________________________ Universidad de La Serena

Programacin y Computacin

Ingenieras

Dr. Eric Jeltsch F.

___________________________________________________________________ Universidad de La Serena

Programacin y Computacin

Ingenieras

Dr. Eric Jeltsch F.

___________________________________________________________________ Universidad de La Serena

Programacin y Computacin

Ingenieras

Dr. Eric Jeltsch F.

___________________________________________________________________ Universidad de La Serena

Programacin y Computacin

Ingenieras

Dr. Eric Jeltsch F.

___________________________________________________________________ 10 Universidad de La Serena

Programacin y Computacin

Ingenieras

Dr. Eric Jeltsch F.

___________________________________________________________________ 11 Universidad de La Serena

Programacin y Computacin

Ingenieras

Dr. Eric Jeltsch F.

___________________________________________________________________ 12 Universidad de La Serena

Programacin y Computacin

Ingenieras

Dr. Eric Jeltsch F.

APLICACIONES DE LOS CONTENIDOS ORDENAMIENTO DE BURBUJA El algoritmo de ordenamiento de burbuja corresponde a los algoritmos de ordenamiento por intercambio, y operan tomando los elementos de dos en dos, se comparan y se intercambian si no estn en el orden adecuado. Este proceso se repite hasta que se ha analizado todo el conjunto de elementos y ya no hay intercambios. Veamos un ejemplo: Supongamos que tenemos el siguiente conjunto de elementos que deseamos ordenar de manera ascendente: 1 25 2 12 3 48 4 1 5 7

Para operar mediante ordenamiento por intercambio, se debern realizar las siguientes acciones: Se compara el elemento de la posicin 1 con el elemento de la posicin 2, encontrndose que el elemento de la posicin 2 es menor que el elemento de la posicin 1, lo que hace necesario el intercambio, quedando el conjunto como; 1 12 2 25 3 48 4 1 5 7

Se compara el elemento de la posicin 1 con el con el elemento de la posicin 3, y se verifica que no es necesario el intercambio, por lo que se continua comparando el elemento de la posicin 1 con el con el elemento de la posicin 4, encontrndose que el elemento de la posicin 4 es menor que el elemento de la posicin 1, lo que hace necesario el intercambio, quedando el conjunto como; 1 1 2 25 3 48 4 12 5 7

Se compara el elemento de la posicin 1 con el con el elemento de la posicin 5, y se verifica que no es necesario el intercambio. Al realizar esta ltima comparacin, se ha conseguido ubicar en la posicin 1 al menor elemento del conjunto, por lo que las comparaciones continan realizandose a partir del elemento de la posicin 2 hacia adelante. Se compara el elemento de la posicin 2 con el con el elemento de la posicin 3, y se verifica que no es necesario el intercambio, por lo que se continua comparando el elemento de la posicin 2 con el elemento de la posicin 4, encontrndose que el elemento de la posicin 4 es menor que el elemento de la posicin 2, lo que hace necesario el intercambio, quedando el conjunto como; 1 1 2 12 3 48 4 25 5 7

___________________________________________________________________ 13 Universidad de La Serena

Programacin y Computacin

Ingenieras

Dr. Eric Jeltsch F.

Se compara el elemento de la posicin 2 con el elemento de la posicin 5, encontrndose que el elemento de la posicin 5 es menor que el elemento de la posicin 2, lo que hace necesario el intercambio, quedando el conjunto como; 1 2 3 4 5 1 7 48 25 12

Habiendo terminado la comparacin e intercambio (cuando es requerido), del elemento de la posicin 2 con todo el resto de los elementos hacia adelante, sea obtenido un conjunto de elementos donde los elementos de las posiciones 1 y 2 se encuentran ordenados de manera ascendente. Este proceso deber continuar con las comparaciones e intercambio (cuando es requerido), del elemento de la posicin 3 con el resto de los elementos hacia adelante y as sucesivamente, proceso que concluir cuando se compare el penltimo elemento con el ltimo, en este caso camparacin e intercambio (cuando es requerido), entre el elemento de posicin 4 con el de la posicin 5, con lo cual finalmente el conjunto quedar como: 1 1 2 7 3 12 4 25 5 48

IMPLEMENTACIN DEL ALGORITMO DE ORDENAMIENTO DE BURBUJA EN PASCAL El siguiente fragmento de cdigo muestra la implementacin en Pascal del algoritmo de ordenamiento de burbuja, para un arreglo de nombre a y tamao n.
for i:=1 to n-1 do for y:=i+1 to n do if a[i] > a[j] then begin aux:=a[i]; a[i]:=a[j]; a[j]:=aux; end;

{ Este programa usa procedure, para leer N numeros enteros y/o reales y los ordena por el mtodo de ordenacin Burbuja en forma ascendente.....compilado en en Dev_Pascal para Windows Version 7.0} PROGRAM BURBUJAS; USES WINCRT; { Utilizando la terminal de Windows } { Declaracin de variables globales...} VAR N,I,CODG_ART:INTEGER; TEMP:REAL; X:ARRAY [1..100] OF REAL; PAUSA:CHAR; { Procedimiento aplicando el mtodo de Burbuja } PROCEDURE BURBUJA; BEGIN FOR CODG_ART:=1 TO N-1 DO

___________________________________________________________________ 14 Universidad de La Serena

Programacin y Computacin

Ingenieras

Dr. Eric Jeltsch F.

FOR I:=CODG_ART+1 TO N DO IF X[I]<X[CODG_ART] THEN BEGIN { Intercambiando los nmeros...} TEMP:=X[CODG_ART]; X[CODG_ART]:=X[I]; X[I]:=TEMP; END; END; BEGIN { Programa Principal} WRITELN ('programa que ordena datos numericos enteros y reales'); WRITELN; WRITELN ('mtodo burbuja'); WRITELN; WRITE ('Ingrese el n de datos: '); READLN (N); WRITELN; FOR I:=1 TO N DO BEGIN WRITE ('X[',I:3,']=? '); READLN (X[I]); END; BURBUJA; //notar que esta lnea es la que se lleva las palmas. WRITELN; WRITELN (' datos ordenados'); WRITELN; FOR I:=1 TO N DO WRITELN ('X[',I:3,']=',X[I]:4:1); WRITELN; WRITELN; WRITELN ('Con atencin para mis alumnos de Ingenierias ULS. '); WRITELN; WRITELN ('E-Mail: ejeltsch@userena.cl'); WRITELN; PAUSA:=READKEY; END.

___________________________________________________________________ 15 Universidad de La Serena

Programacin y Computacin

Ingenieras

Dr. Eric Jeltsch F.

Escribir un programa en Pascal que rellene un array con cinco nmeros enteros consecutivos y haga una copia de ese array en otro.
PROGRAM EJER84; USES CRT; VAR arr_num1,arr_num2:ARRAY [5..10] of INTEGER; VAR i:INTEGER; BEGIN ClrScr; FOR i:=5 TO 10 DO BEGIN arr_num1[i]:=i; arr_num2[i]:=arr_num1[i]; END; FOR i:=5 TO 10 DO WRITELN (arr_num2[i]);

END.

Escribir un programa en Pascal que rellene un array de 10 elementos con los nmeros comprendidos entre 23 y 32 y copie en otro array esos nmeros multiplicados por 0.35.
PROGRAM EJER85; USES CRT; VAR arr_num1, arr_num2:ARRAY [23..32] of REAL; VAR i:INTEGER; BEGIN ClrScr; FOR i:=23 TO 32 DO BEGIN arr_num1[i]:=i; arr_num2[i]:=(arr_num1[i] * 0.35); END; FOR i:=23 TO 32 DO WRITELN(arr_num2[i]:5:2); END.

Escribir un programa en Pascal que rellene un array con los veinte primeros nmeros pares y calcule su suma.
PROGRAM EJER86; USES CRT; VAR arr_pares:ARRAY [1..40] of INTEGER; VAR i, suma:INTEGER; BEGIN ClrScr; i:=1; FOR i:= 1 TO 40 DO BEGIN IF (i mod 2) = 0 THEN BEGIN arr_pares[i]:=i; suma:= suma + i; END; END; WRITELN('La suma de los 20 primeros numeros pares es: ',suma); END.

___________________________________________________________________ 16 Universidad de La Serena

Programacin y Computacin

Ingenieras

Dr. Eric Jeltsch F.

Escribir un programa en Pascal que solicite cinco nmeros, los almacene en un array y luego calcule la media aritmtica de esos nmeros.
PROGRAM EJER87; USES CRT; VAR arr_num:ARRAY [1..5] of REAL; VAR i, num:INTEGER; VAR media:REAL; BEGIN ClrScr; WRITELN ('Escriba 5 numeros para hacer su media aritmetica: '); FOR i := 1 TO 5 DO BEGIN READLN(num); arr_num[i]:=num; END; FOR i:=1 TO 5 DO media:= media + arr_num[i]; media:= media / i; WRITELN ('La media aritmetica es: ',media:5:2); END.

Escribir un programa en Pascal que tras asignar los nmeros, 23, 45, 68, 99, 10, 15 y 4 a un array, determine la posicin del array en la que se encuentra el mximo valor.
PROGRAM EJER88; USES CRT; CONST arr_num:ARRAY [1..7] of INTEGER=(23,45,68,99,10,15,4); VAR i:INTEGER; BEGIN ClrScr; FOR i:=1 TO 7 DO BEGIN IF arr_num[i]=99 THEN WRITE ('La posicion del mayor numero (',arr_num[i],') es: ',i); END; END.

Escribir un programa en Pascal que tras asignar los nmeros, -2, 5, 8, -9, 10, 15 y 4 a un array calcule, independientemente, la suma de los elementos positivos y negativos.
PROGRAM EJER89; USES CRT; CONST arr_num:ARRAY [1..7] of INTEGER=(-2,5,8,-9,10,15,-4); VAR i:INTEGER; VAR suma_p, suma_i:INTEGER; BEGIN ClrScr;

___________________________________________________________________ 17 Universidad de La Serena

Programacin y Computacin
FOR i:=1 TO 7 DO BEGIN IF arr_num[i] >= 0 suma_p:= suma_p ELSE IF arr_num[i] suma_i:= suma_i END;

Ingenieras

Dr. Eric Jeltsch F.

THEN + arr_num[i] < 0 THEN + arr_num[i];

WRITELN ('La suma de los numeros pares es: ',suma_p); WRITELN ('La suma de los numeros impares es: ',suma_i); END.

Escribir un programa en Pascal que tras asignar los nmeros, 23, 45, 68, 99, 10, 15 y 4 a un array, determine las posiciones del array en las que se encuentran el mximo y el mnimo valor.
PROGRAM EJER90; USES CRT; CONST arr: ARRAY [1..7] of INTEGER=(23,45,68,99,10,15,4); VAR i, mayor, menor,posi_mayor,posi_menor:INTEGER; BEGIN ClrScr; mayor:= arr[1]; menor:= arr[1]; FOR i:=2 TO 7 DO BEGIN IF arr[i] >= mayor THEN BEGIN mayor:= arr[i]; posi_mayor:=i; END ELSE CONTINUE; END; WRITELN ('El numero mayor es: ',mayor:3); WRITELN ('Su posicion es: ',posi_mayor:3); WRITELN (''); FOR i:=2 TO 7 DO BEGIN IF arr[i] <= menor THEN BEGIN menor:= arr[i]; posi_menor:=i; END ELSE CONTINUE; END; WRITELN ('El numero menor es: ',menor:3); WRITELN ('Su posicion es: ',posi_menor:3); END.

Escribir un programa en Pascal que determine la posicin de la siguiente matriz en la que se encuentra el valor mximo. 23 34 25 45 99 78 68 12 89

PROGRAM EJER91B; USES CRT; CONST arr_num:ARRAY[1..3,1..3] of INTEGER=( (23,45,68), (34,99,12), (25,78,89) ); VAR i,j,val_max,pos_max_i,pos_max_j:INTEGER;

___________________________________________________________________ 18 Universidad de La Serena

Programacin y Computacin
BEGIN ClrScr; val_max:=arr_num[1,1];

Ingenieras

Dr. Eric Jeltsch F.

FOR i:=1 TO 3 DO BEGIN FOR j:=1 TO 3 DO BEGIN IF arr_num[i,j] > val_max THEN BEGIN val_max:=arr_num[i,j]; pos_max_i:=i; pos_max_j:=j; END; END; END; WRITELN( END. 'VALOR MAXIMO: ', val_max:3, ' POSICION: ', pos_max_i:3,pos_max_i:3);

Escribir un programa en Pascal que sume, independientemente, los elementos positivos y negativos de la siguiente matriz: -12 45 25 23 -56 78 32 -10 89

PROGRAM EJER92; USES CRT; CONST arr_num:ARRAY [1..3,1..3] of INTEGER=( (-12,23,-32), (45,-56,-10), (25,78,89) ); VAR i,j,suma_p,suma_i:INTEGER; BEGIN ClrScr; FOR i:=1 TO 3 DO BEGIN FOR j:= 1 TO 3 DO BEGIN IF arr_num[i,j] >=0 THEN suma_p:= suma_p + arr_num[i,j] ELSE suma_i:= suma_i + arr_num[i,j]; END; END; WRITELN ('La suma de los numeros pares es: ',suma_p); WRITELN ('La suma de los numeros impares es: ',suma_i); END.

Escribir un programa en Pascal que multiplique por dos los elementos de la siguiente matriz: 4 6 5 7 9 0 8 1 3

PROGRAM EJER93; USES CRT; CONST arr_num:ARRAY [1..3,1..3] of INTEGER=( (4,7,8),

___________________________________________________________________ 19 Universidad de La Serena

Programacin y Computacin

Ingenieras
(6,9,1), (5,0,3) );

Dr. Eric Jeltsch F.

VAR mult,i,j:INTEGER; BEGIN ClrScr; FOR i:= 1 TO 3 DO BEGIN FOR j:=1 TO 3 DO BEGIN mult:=arr_num[i,j] * 2; WRITELN('Elemento (',i,',',j,') multiplicado por 2: ',mult:3); END; END; END.

Escribir un programa en Pascal que sume los datos de cada una de las columnas de la siguiente matriz; el resultado se almacenar en la ltima posicin de cada columna: 3 4 8 0 2 6 9 0

PROGRAM EJER96; USES CRT; CONST arr_num:ARRAY [1..4,1..2] of INTEGER=( (3,2),(4,6), (8,9),(0,0) ); VAR i,j,suma1,suma2:INTEGER; BEGIN ClrScr; FOR j:=1 TO 2 DO BEGIN FOR i:=1 TO 4 DO BEGIN IF j=1 THEN suma1:= suma1 + arr_num[i,j]; IF j=2 THEN suma2:= suma2 + arr_num[i,j]; END; END; WRITELN ('El resultado de la suma 1 es: ',suma1); WRITELN ('El resultado de la suma 2 es: ',suma2); END.

Escribir un programa en Pascal que sume los elementos de cada una de las filas y de las columnas de la siguiente matriz; el resultado de cada suma se almacenar en la ltima posicin de la fila o columna correspondiente. Adems la suma total de todos los elementos de la matriz se almacenar en el elemento de la esquina inferior derecha de la matriz: 1 5 6 7 0 7 6 4 3 0 0 0 0 0 0

PROGRAM EJER97; USES CRT; CONST arr_num:ARRAY [1..5,1..3] of INTEGER=( (1,7,0),(5,6,0), (6,4,0),(7,3,0), (0,0,0) ); VAR i,j,total:INTEGER; VAR suma_h,suma_v:INTEGER; {Es la suma horizontal y vertical}

___________________________________________________________________ 20 Universidad de La Serena

Programacin y Computacin

Ingenieras

Dr. Eric Jeltsch F.

BEGIN ClrScr; FOR i:=1 TO 5 DO BEGIN FOR j:=1 TO 3 DO BEGIN suma_h:= suma_h + arr_num[i,j]; END; WRITELN ('La suma de la fila ',i,' es: ',suma_h:3); total:=total + suma_h; suma_h:=0; END; WRITELN (''); FOR j:=1 TO 2 DO BEGIN FOR i:=1 TO 5 DO BEGIN suma_v:= suma_v + arr_num[i,j]; END; WRITELN ('La suma de la columna ',j,' es: ',suma_v:3); suma_v:=0; total:=total + suma_v; END; WRITELN (''); WRITELN ('La suma total es: ',total); END.

___________________________________________________________________ 21 Universidad de La Serena

Potrebbero piacerti anche