Documente Academic
Documente Profesional
Documente Cultură
UTN FRBA
Introduccion la Programacin
Magister Oscar R. BRUNO
Introduccion la Programacin
Magister Oscar R. BRUNO
Introduccion la Programacin
Magister Oscar R. BRUNO
Introduccion la Programacin
Magister Oscar R. BRUNO
Ejemplo
PROBLEMA: Calculo de la nota final de una materia : Dadas la nota del parcial y la el
trabajo practico, la nota final es el promedio de ambas
LEXICO
NotaParcial : Real;
NotaPractico : Real;
NotaFinal : Real
ALGORITMO
Leer (NotaParcial, NotaPractico);
NotaFinal <- (NotaParcial + NotaPractico) / 2;
Escribir(NotaFinal);
FIN
Introduccion la Programacin
Magister Oscar R. BRUNO
Apredizaje de
programacion
Observar el universo real y
trasladarlo al universo
computacional requiere un gran
esfuerzo de abstraccin. Es por eso
que el aprendizaje de programacin
se hace tan complejo
Se da en etapas pero es recursivo
Introduccion la Programacin
Magister Oscar R. BRUNO
Riesgos
La informacin se transforma en una
carga indigesta si no se la entiende
Aprender es vincular la informacin
nueva con elementos previos.
Informacin poco clara, desorganizada
o carente de sentido afectan al uso de
conocimientos previos. Se debe evitar
un conocimiento inerte
Introduccion la Programacin
Magister Oscar R. BRUNO
Sugerencias
No es suficiente con los conocimientos
tericos o con el anlisis de lo que otro
escribi, como toda actividad constructiva
REQUIERE DE PRACTICA.
Pero no se debe transformar en programador
compulsivo: adquiera el hbito de pensar la
solucin antes de escribir cdigo.
Introduccion la Programacin
Magister Oscar R. BRUNO
Algoritmo
Secuencia finita de instucciones, reglas o
pasos que describen en forma precisa las
operaciones que una computadora debe
realizar para llevar a cabo una tarea en
tiempo finito [Knuth, 1968].
Descripcin de un esquema de
comportamiento expresado mediante un
repertorio finito de acciones y de
informaciones elementales, identificadas,
bien comprendidas y realizables a priori. Este
repertorio se denomina lxico[Scholl, 1988].
Introduccion la Programacin
Magister Oscar R. BRUNO
Algoritmo
Esta formado por reglas, pasos e
instrucciones.
Las reglas especifican operaciones.
La computadora es el agente ejecutor.
La secuencia de reglas y la duracin de
la ejecucin son finitas.
Introduccion la Programacin
Magister Oscar R. BRUNO
Algoritmo
Finitud: en longitud y duracin.
Precisin: Determinar sin ambigedad
las operaciones que se deben ejecutar.
Efectividad: las reglas pueden
ejecutarse sin el ordenador
obtenindose el mismo resultado.
Generalidad: Resolver una clase de
problema y no un problema particular.
Introduccion la Programacin
Magister Oscar R. BRUNO
Lenguajes de
programacin
Lenguajes Naturales - Formales.
Lenguajes de programacin: Notacion que
permite escribir programas a mayor nivel de
abstraccin que los lenguajes de mquina.
Sus instrucciones deben ser traducidas a
lenguaje de mquina.
Lenguaje de mquina: Instrucciones que son
ejecutables por el hardware de una
computadora.
Introduccion la Programacin
Magister Oscar R. BRUNO
Paradigmas de
programacin
Paradigma: Coleccin de conceptos
que guan el proceso de construccion
de un programa. Estos conceptos
controlan la forma en que se piensan y
formulan los programas.
Imperativo Procedural Objetos.
Declarativo Funcional Lgico.
Introduccion la Programacin
Magister Oscar R. BRUNO
Dato Informacin
Conocimiento
Dato: <objeto><atributo><valor> sin
interpretar.
Informacin: aade significado al dato.
Conocimiento: Aade propsito y
capacidad a la informacin. Potencial
para generar acciones.
Introduccion la Programacin
Magister Oscar R. BRUNO
Problema
Enunciado con una incgnita, la
solucin es encontrar el valor de esa
incgnita.
Problema computacional o algortmico:
tarea ejecutada por una computadora
con una especificacin precisa de los
datos de entrada y de los resultados
requeridos en funcion de estos.
Introduccion la Programacin
Magister Oscar R. BRUNO
Clase de problemas
No computables: No existe un algoritmo.
Computables
Tratables: Existe un algoritmo eficiente.
Intratable: No existe algoritmo eficiente.
Especificacin
Implementacin
Especificacin: Es el proceso de analizar los
problemas del mundo real y determinar en
forma clara y concreta el objetivo que se
desea alcanzar. El modelo debe ser
interpretado sin errores por un autmata.
Implementacin: Traducir a un conjunto de
instrucciones permitidas y definidas por sus
reglas sintcticas y valor semntico lo que
fue especificado.
Introduccion la Programacin
Magister Oscar R. BRUNO
Variables Constantes
Variables: Denotan una magnitud o
indicador del proceso. Se caracteriza
por un nombre, un tipo de dato y el
valor que tiene en un momento
determinado. Utilizadas para los datos
de entrada, intermedios y de salida.
Constante: Nombre asociado a un valor
que permanece sin modificacin
durante todo el proceso
Introduccion la Programacin
Magister Oscar R. BRUNO
Tipos de Datos
Identifica o determina un dominio de valores y el
conjunto de operaciones aplicables sobre esos
valores.
Primitivos.
Derivados.
Abstractos.
Concordancia entre valores y operaciones.
Baca la vuela
Errores sintacticos, errores gramaticales
La vaca vuela
Error de concordancia entre objeto vaca y operacin volar
Introduccion la Programacin
Magister Oscar R. BRUNO
Expresiones Sentencias
Lxico
Expresiones: secuencia de operadores y
operandos que se reduce a un solo valor.
Sentencias: accin produce un efecto, puede
ser primitiva o no primitiva.
Lxico: Descripcin del conjunto de acciones
e informaciones a partir de la cual se expresa
el esquema de comportamiento del algoritmo.
Introduccion la Programacin
Magister Oscar R. BRUNO
3.
Comprender el problema.
Identificar informacin y acciones a incluir
en el lexico (constantes, tipos, variables y
acciones).
Encontrar un camino de secuenciar las
acciones para obtener el resultado, es decir
para alcanzar la postcondicin a partir del
estado inicial que cumple con la
precondicin.
Introduccion la Programacin
Magister Oscar R. BRUNO
Acciones primitivas y
derivadas
Acciones primitivas: Incorporadas por el
lenguaje.
Acciones derivadas: realizadas
mediante la combinacion de acciones
primitivas con el objeto de desarrollar
una tarea en particular. Son
complementarias y pueden ser
desarrolladas por el programador.
Introduccion la Programacin
Magister Oscar R. BRUNO
Acciones primitivas
Asignacion:
De entrada: permite cambiar el valor de
una variable. Ya sea en forma interna o a
travs de algun dispositivo de entrada.
De salida: Permite mostrar el valor de una
variable a travs de algun dispositivo de
salida.
Introduccion la Programacin
Magister Oscar R. BRUNO
Acciones primitivas
Analisis de casos: Permiten especificar
la particin del dominio de datos.
Instruccin segn: Especifica la particin
en varios subdominios y asocia acciones a
cada uno de ellos.
Instruccin si entonces si_no: cuando en
un anlisis de casos solo se tienen dos.
Introduccion la Programacin
Magister Oscar R. BRUNO
Acciones primitivas
Repeticiones: permiten ejecutar una
determinada cantidad de veces una
accion o conjunto de acciones.
Exactas: se conoce con precisin la
cantidad de veces que las acciones se
repetiran.
No exactas: la finalizacin del ciclo
depende de alguna condicin, pueden ser
pre o pos condicionales.
Introduccion la Programacin
Magister Oscar R. BRUNO
Ejemplo
PROBLEMA: Dada una temperatura en grados Fahrenheit, escribir un algoritmo que
obtenga la temperatura en grados Celsius.
LEXICO {Nombres significativos para identificadores significativos}
tempFahrenheit
tempCelsius
Ejemplo
PROBLEMAS no algoritmicos.
AA + BB = CBC
DONALD + GERALD = ROBERT
El papa de Rebeca tiene 5 hijos chacha, cheche, chichi, chuchu, como se llama el otro
hijo
Un granjero tenia 20 ovejas, todas menos nueve escaparon. Cuantas le quedaron?
Una botella de vino cuesta 10 $, el vino vale 9 $ mas que la botella. Cuanto vale cada
cosa?
Matriz cuadrada impar N*N colocar N2 dgitos sin repetir
8 1 6
3 5 7
4 9 2
2 + 7 118 = 129
Introduccion la Programacin
Magister Oscar R. BRUNO
Problemas
Paramo de posibilidades
Meseta aparente sin indicios
Ejemplo en Pascal
Program Calculo;
var
notaTeoria, notaPractica, notaFinal : real;
begin
writeln;
writeln('***** Calculo de la nota final*****');
write('Nota de teoria: '); readln(notaTeoria);
write('Nota de practicas: ');
notaFinal := (notaTeoria + notaPractica) / 2;
Ejemplo en C
#include <stdio.h>
#include <conio.h>
int main () {
float notaTeoria, notaPractica; float notaFinal;
printf(" Calculo de la nota final de una asignatura\n");
printf("Nota de teoria: "); scanf(" %f",¬aTeoria);
printf("Nota de practicas: "); scanf(" %f",¬aPractica);
notaFinal = (notaTeoria + notaPractica)// 2. 0;
printf("La nota final es: %.2f\n", notaFinal);
printf("\nPulse enter para continuar");
getchar();
return 0;
}
Introduccion la Programacin
Magister Oscar R. BRUNO
Bibliografa
Behrouz Forouzan. Introduccin a la ciencia de la computacin.
2005. Ciencias e Ingenieria.
De Giusti. Algoritmos datos y programas. 2001. Prentice Hall
Garcia Molina. Una introduccin a la programacin. 2005.
Thomson.
Kernighan - Ritchie. El lenguaje de programacion C. 1988.
Pearson
Kerighan Pike. La practica de la programacion. 2000. Pearson
Perkins David. La baera de Arquimedes y otras historias del
descubrimiento cientifico. Paidos 2004
Iranzo, j. Logica simbolica para informaticos. 2006. Alfaomega.
Perez M. Matematica discreta y algoritmos. 2005. Answer.
Material didactico disponible en la red
Introduccion la Programacin
Magister Oscar R. BRUNO
Contenido Clase 2
Analisis de casos
Instruccin SEGUN
Instruccin SI ENTONCES SI_NO
Acciones y funciones
Sin parametros
Con parametros
Introduccion la Programacin
Magister Oscar R. BRUNO
Composicion secuencial
Tecnica de descomposicion algoritmica
que disminuye la complejidad de un
problema mediante la division en
probemas mas pequeos, cuya
solucion se puede abordar en forma
independiente y la secuenciacion
parcial permite alcanzar la solucion
final.
Introduccion la Programacin
Magister Oscar R. BRUNO
Ejemplo
PROBLEMA: Dada una temperatura en grados Fahrenheit, escribir un algoritmo que
obtenga la temperatura en grados Celsius.
LEXICO {Nombres significativos para identificadores significativos}
tempFahrenheit
tempCelsius
Analisis de casos
Consiste en descomponer el dominio de los
datos en varios subdominios o casos y
asociar a cada uno de ellos con una o mas
acciones.
Cada caso es especificado mediante
expresiones logicas mutuamente excluyentes
y la union de los casos debe cubrir el dominio
inicial de los datos.
Introduccion la Programacin
Magister Oscar R. BRUNO
Analisis de casos
Los estados iniciales de cada caso
deben cubrir el dominio de los datos de
entrada. Debe existir un caso para
cualquier posible entrada.
Las condiciones de cada caso deben
ser mutumente excluyentes.
Introduccion la Programacin
Magister Oscar R. BRUNO
Analisis de casos
Ejemplo de posibles descomposiciones de valores entre 1 y 10
1. 0 <= N < 5
2. 0 <= N<=5
3. 0 <= N < 5
5<=N < 7
5<=N<=7
5<N<7
Introduccion la Programacin
Magister Oscar R. BRUNO
7<=N<=10
7<=N<=10
7 <N<=10
Instruccin segun
Especifica la particion del dominio de datos en varios subdominios y
asocia acciones a cada uno de ellos.
SEGN c1 ... cn
SEGN c1 ... cn
e1 : a1
e1 : a1
e2 : a2
e2 : a2
...
...
en : an
en : an
FIN_SEGUN
EN_OTRO_CASO : an+1
FIN_SEGUN
Introduccion la Programacin
Magister Oscar R. BRUNO
PROBLEMA: Desarrollar un programa que simule una calculadoa simple. Que ingrese dos
oprandos y un operador. Segn el operador que muestre la suma, resta, multiplicacion o division.
LEXICO
Operando1, Operando2 : Entero;
Operador
: Carcter;
ALGORITMO
Leer (Operando1, Operando2, Operador);
SEGN Operador
PROBLEMA: Desarrollar un programa que simule una calculadoa simple. Que ingrese dos
oprandos y un operador. Segn el operador que muestre la suma, resta, multiplicacion o division.
LEXICO
Operando1, Operando2 : Entero;
Operador
: Carcter;
ALGORITMO
Leer (Operando1, Oprando, Operador);
SEGN Operador
Introduccion la Programacin
Magister Oscar R. BRUNO
Instruccin
SI ENTONCES SI_NO
Cuando el analisis de casos solo tiene 2
casos, la instruccin segn se puede
simplificar con la instruccin
SI exp ENTONCES a1 SI_NO a2 FIN_SI
Si exp ENTONCES a1 FIN_SI
Introduccion la Programacin
Magister Oscar R. BRUNO
LEXICO
x, z, mayor : Entero;
ALGORITMO
PRE { ( x = X) y ( z = Z)}
POST { (( x>=z) (Mayor = X)) y ((z>x)(Mayor=Z)) }
Leer (x, z);
SI x >= z
ENTONCES Mayor x
SI_NO
Mayor z;
FIN_SI
Escribir(`El mayor es : ,mayor);
FIN
Introduccion la Programacin
Magister Oscar R. BRUNO
LEXICO
x, z, mayor : Entero;
Operador
: Carcter;
ALGORITMO
PRE { ( x = X) y ( z = Z)}
POST { (( x>=z) ->(Mayor = X)) y ((z>x)(Mayor=Z)) }
Introduccion la Programacin
Magister Oscar R. BRUNO
LEXICO
dia, mes, ao : Entero >0 ;
EsBisiesto, FechaValida : Booleano ;
AoBisiesto : una accion
POST {AoBisiesto V si ao es bisiesto F en caso contrario}
ALGORITMO
EsBisiesto (ao Mod 400 = 0) o ((ao Mod = 0)y(ao mod 100<>0))
FIN AoBisiesto
Introduccion la Programacin
Magister Oscar R. BRUNO
ALGORITMO
Leer (dia, mes, ao);
SI (dia < 1 )
ENTONCES FechaValida Falso
SI_NO
SEGN mes
mes = 2
EN_OTRO_CASO
: FechaValida Falso
FIN_SEGUN
FIN_SI
Escribir (La fecha , dia, /, mes,/.ao, : );
SI FechaValida
FIN
Introduccion la Programacin
Magister Oscar R. BRUNO
Ejercicios
Escriba algoritmos que :
1. Dado un peso en libras calcularlo en
Kg. 1 libra = 0.453952 Kg.
2. Dado un numero binario de 4 digitos
imprima su valor en base 10.
3. Dado un numero entero en pesos lo
desglose segn los billetes legales.
4. Dado un numero entero <= 106
descomponerlo en dd hh mm ss.
Introduccion la Programacin
Magister Oscar R. BRUNO
Acciones y Funciones
El concepto de accin est muy ligado
al concepto de abstraccin.
Se analiza como abstraccin por
parametrizacin y abstraccin por
especificacin.
Introduccion la Programacin
Magister Oscar R. BRUNO
Acciones
El lxico establece el nivel de
abstraccin de un algoritmo. Es decir,
introduce las variables, las constantes,
los tipos de datos y las acciones con
que se construye el algoritmo. Ahora se
profundizara sobre el estudio de las
acciones.
Introduccion la Programacin
Magister Oscar R. BRUNO
Utilizacin de acciones
Accin es una secuencia de instrucciones que se
identifica por un nombre y que puede ser invocada
desde un algoritmo principal o desde otra accin.
Una accin debe tener un efecto bien definido,
debe ser cohesiva.
Entre una accin y el algoritmo que la invoca se
debe producir una comunicacin de valores.
Los parmetros son el mecanismo que posibilita
escribir acciones generales, aplicables a cualquier
valor de la entrada, e independientes del lxico del
algoritmo.
Introduccion la Programacin
Magister Oscar R. BRUNO
ALGORITMO
Leer (salarioBase,
antiguedad);
CalcularSalarioBruto;
CalcularDescuentos;
CalcularSalarioNeto;
Escribir (El sueldo
neto es:,
salarioNeto)
ALGORITMO
FIN
salarioBruto = salarioBase +
pagoQuinquenios + pagoAos
numeroQuinquenios = antiguedad
DIV 5;
FIN
Introduccion la Programacin
Magister Oscar R. BRUNO
P2
< x, y>
P1
P3
P4
Introduccion la Programacin
Magister Oscar R. BRUNO
LXICO
Coordenada = TIPO Real;
Punto = TIPO < X : Coordenada; Y : Coordenada >
p1, p2, p3, p4, po, pd : Punto;
dist, permetro : Real;
Distancia : una accin
ALGORITMO
Leer (p1, p2, p3, p4) ;
perimetro = 0.0 ;
// E0
po = p1 ;
pd = p2 ;
Distancia;
permetro = dist;
// E1
po = p2 ;
pd = p3 ;
Distancia;
permetro = permetro + dist;
Introduccion la Programacin
// E2
Magister Oscar R. BRUNO
po = p3 ;
pd = p4 ;
Distancia;
permetro = permetro + dist;
// E3
po = p4 ;
pd = p1 ;
Distancia;
permetro = permetro + dist;
// Ef :
Escribir (El permetro del
cuadriltero es: , permetro)
FIN
Introduccion la Programacin
Magister Oscar R. BRUNO
Parametros
Un parmetro permite la comunicacin entre una
accin y el algoritmo que la invoca.
A los parmetros que proporcionan un valor de
entrada se los llaman Parmetros dato, y a los
que, adems de recoger un valor, retornan un
resultado, se los llama dato-resultado.
Distancia (dato po, pd : punto; datoresultado dist : real) : una accin
Introduccion la Programacin
Magister Oscar R. BRUNO
Paso de parametros
Se denomina paso de parmetros al modo en
que se establece la comunicacin entre los
argumentos pasados a la accin desde el
algoritmo y los parmetros de la accin; en la
llamada se pasan los datos de entrada, y en
el retorno se devuelven los resultados. Cada
argumento se liga con el parmetro que
ocupa la misma posicin en la declaracin de
la accin y ambos deben coincidir en tipo.
Introduccion la Programacin
Magister Oscar R. BRUNO
LXICO
Coordenada = TIPO Real;
Punto = TIPO < X : Coordenada; Y : Coordenada >
p1, p2, p3, p4 : Punto;
permetro, d1, d2, d3, d4 : Real;
Distancia(dato po, pd : Punto; dato-resultado dist :
Real): una accin
PRE { po y pd almacenan dos puntos }
POST {dist almacena la distancia entre los puntos}
ALGORITMO
Dist = RaizCuadrada ( Cuadrado (pd.x po.x) +
Cuadrado(pd.y po.y));
FIN
Introduccion la Programacin
Magister Oscar R. BRUNO
ALGORITMO
Leer(p1, p2, p3, p4);
Distancia(p1, p2, d1);
Distancia(p2, p3, d2);
Distancia(p3, p4, d3);
Distancia(p4, p1, d4);
permetro = d1 + d2 + d3 + d4
Escribir(El permetro del
cuadriltero es: , permetro)
FIN
Introduccion la Programacin
Magister Oscar R. BRUNO
Abstracciones
Abstraccin se refiere a eliminar detalles, como
resultado se obtiene un modelo
El concepto de accin conjuga dos tcnicas de
abstraccin que son la parametrizacin y la
especificacin.
La parametrizacin es un mecanismo por el cual
se generaliza una declaracin para que no sea
aplicado a un nico caso, sino que sirva para
cualquier valor que pueda tomar cierto parmetro
La abstraccin por especificacin es la separacin
entre el Qu y el Cmo).
Introduccion la Programacin
Magister Oscar R. BRUNO
Funciones
Las funciones devuelven un nico valor. La
funcin supone extender el conjunto de
operadores primitivos.
Nombre_funcion (par1 : td1 ; ... ;
parn : tdn) : tr : una funcin
LXICO
idem anterior
Distancia(po, pd : Punto) Real: una funcin
ALGORITMO
Distancia = RaizCuadrada ( Cuadrado (pd.x po.x) +
Cuadrado(pd.y po.y));
FIN
ALGORITMO
Leer (p1, p2, p3, p4);
Perimetro = Distancia (p1, p2) + distancia (p2,
p3) + distancia (p3, p4) + distancia (p4, p1)
Escribir(El permetro del cuadriltero es:, permetro)
FIN
Introduccion la Programacin
Magister Oscar R. BRUNO
Max2 = b
FIN
Max3(a, b ,c: Entero) Entero : una funcin
ALGORITMO
Max3 = Max2(c, Max2(b, a))
FIN
Introduccion la Programacin
Magister Oscar R. BRUNO
Ejemplo
PROBLEMAS no algoritmicos. Soluciones propuestas
AA + BB = CBC A=9, B=2, C=1
DONALD + GERALD = ROBERT
A 4, B 3, D 5, E 9, G 1, L 8, N 6, O 2, R 7, T 0.
El papa de Rebeca tiene 5 hijos chacha, cheche, chichi, chuchu, como se llama el otro
hijo REBECA, lo dice al principio
Un granjero tenia 20 ovejas, todas menos nueve escaparon. Cuantas le quedaron?
2 + 7 118 =
Introduccion la Programacin
129 Transformar elMagister
+ en unOscar
4 R. BRUNO
Contenido Clase 3
Iteracin
Composicion MIENTRAS
Composicion REPETIR
Composicion PARA
Composicion ITERAR
Concepto de secuencia
Concepto de invariante
Coincepto de recursion
Introduccion la Programacin
Magister Oscar R. BRUNO
Primitivas para el
acceso secuencial
Nombre_Tipo = TIPO Secuencia de
Tipo_Base
SC = TIPO Secuencia de Carcter
SR = TIPO Secuencia de Real
PROBLEMA: Dada una secuencia con solo ceros y unos, calcular el nmero de ceros y
unos que contiene.
LXICO
S: Secuencia de carcter;
NumCeros, NumUnos : Entero;
ALGORITMO
NumCeros = 0; NumUnos = 0;
Comenzar (S);
MIENTRAS EA (S) < > MarcaFin HACER
SI EA (S) = 0 ENTONCES numCeros = numCeros + 1
SI_NO numUnos = numUnos + 1
FIN_SI;
AVANZAR (S)
FIN_MIENTRAS;
Escribir(Ceros = , numCeros,unos = , numUnos)
FIN
Introduccion la Programacin
Magister Oscar R. BRUNO
Componentes de una
iteracin
Composiciones
iterativas condicionales
Se presentan tres composiciones iterativas en las
que la finalizacin viene determinada por una
condicin.
Estas son la composicin MIENTRAS, REPETIR,
ITERAR.
Lo que las diferencia es el lugar donde se
comprueba la condicin: al principio, al final, en
un punto intermedio del ciclo. Y tambin si es una
condicin de terminacin o de continuacin.
Introduccion la Programacin
Magister Oscar R. BRUNO
Composicion MIENTRAS
Esquema General
Aini;
//E0
MIENTRAS Cc HACER
//Ek
Acuerpo
//Ek+1
FIN_MIENTRAS;
//En
Afin
Introduccion la Programacin
Magister Oscar R. BRUNO
EJERCICIO
Dado un conjunto de valores enteros,
calcular e imprimir : promedio de los
valores
positivos,
sumatoria
de
negativos. El lote termina cuando se
ingresa un valor cero.
Introduccion la Programacin
Magister Oscar R. BRUNO
LEXICO
SumaPos, CanPos, SumaNeg, Numero : Entero;
ALGORITMO
SumaPos 0; CanPos 0; SumNeg 0;
Leer(Numero);
MIENTRAS Numero <> 0 HACER
SI Numero > 0
ENTONCES
Inc(CanPos); SumaPos = SumaPos + Numero;
SI_NO
SumaNeg = SumaNeg + Numero
FIN_SI
FIN_MIENTRAS;
Escribir(SumaPos, SumaNeg);
FIN.
Introduccion la Programacin
Magister Oscar R. BRUNO
Otros Ejemplos
Escriba algoritmos que :
1. Dado un numero entero en pesos lo
desglose segn los billetes legales.
2. Dado un numero entero <= 106
descomponerlo en dd hh mm ss.
Introduccion la Programacin
Magister Oscar R. BRUNO
LEXICO
B100, B50, B20, B10, B5, B2, Monedas, Num : Entero;
MAXIMO = 65000;
Leer(Num)
MIENTRAS Numero > 0 HACER
SEGN Num
Num 100 .. MAXIMO : B100Num Div 100; NumNum B100*100;
Num 50 .. 99
: B50Num Div 50; NumNum B50*50;
Num 20 .. 49
: B20Num Div 20; NumNum B20*20;
Num 10 .. 19
: B10Num Div 10; NumNum B10*10;
Num 5 .. 9
: B5Num Div 5; NumNum B5*5;
Num 2 .. 4
: B2Num Div 2; NumNum B2*2;
Num 1
: Monedas = 1; Num = 0;
FIN_SEGUN
FIN_MIENTRAS
Introduccion la Programacin
Magister Oscar R. BRUNO
LEXICO
DD, HH, MM, SS; Num : Entero;
MAXIMO = 1000000;
Leer(Num)
MIENTRAS Numero > 0 HACER
SEGN Num
Num 86400..MAXIMO
Num 3600..86399
Num 60.. 3599
Num 1 .. 59
FIN_SEGUN
FIN_MIENTRAS
Introduccion la Programacin
Magister Oscar R. BRUNO
Otras Composiciones
Iterativas Condicionales
Composicin REPETIR
REPETIR
S
HASTA_QUE COND
Composicin ITERAR
ITERAR
S1
DETENER: cond
S2
FIN_ITERAR
Introduccion la
Programacin
Magister Oscar R. BRUNO
Composicion PARA
Permite expresar el numero de veces
que se ejecuta el cuerpo del ciclo.
Este numero esta expresado por el
recorrido de un intervalo de valores de
tipo ordinal.
Introduccion la Programacin
Magister Oscar R. BRUNO
Composicion PARA
Esquema General
PARA i [j,n]HACER
S
FIN_PARA;
PARA i [n,j](-)HACER
S
FIN_PARA;
Introduccion la Programacin
Magister Oscar R. BRUNO
I es un ordinal, j y n
representan el valor
inicial y final del
intervalo.
CR = n i + 1
LXICO
S : Secuencia de Real;
Suma : Real;
NumElem : Entero;
ALGORITMO
Comenzar (S);
Suma = 0;
NumElem = 0;
//Eini : suma = 0 y numElem = 0 y ea = Primero (S) y INV
= verdadero
Introduccion la Programacin
Magister Oscar R. BRUNO
ALGORITMO
MIENTRAS EA (S) < > MarcaFin HACER
suma = suma + EA (S)
numElem = numElem + 1
Avanzar (S)
FIN_MIENTRAS;
//Efin : INV y (EA (S) = MarcaFin)
SI numElem > 0
ENTONCES Escribir(Valor medio de las
notas = , suma/num)
SI_NO Escribir(Secuencia Vaca)
FIN_SI
FIN
Introduccion la Programacin
Magister Oscar R. BRUNO
EJERCICIOS
Dado un conjunto de valores enteros, calcular e
imprimir : cuantos valores cero hubo, promedio de
los valores positivos, sumatoria de negativos
Resolver el problema para :
100 valores enteros.
N valores, N debe ser ledo previamente.
El conjunto termina con un valor igual al anterior.
Se dan N valores, pero el proceso deber finalizar
si se procesan todos los valores o la cantidad de
ceros supera a cuatro.
Introduccion la Programacin
Magister Oscar R. BRUNO
Ejercicios
Dado un conjunto de tringulos representados por
sus lados L1, L2 y L3 que finaliza con un tringulo
con un lado nulo, determinar e imprimir la
cantidad de tringulos equilteros, issceles y
escalenos.
Dados dos valores N y M determinar e imprimir
cuantos mltiplos de M hay dentro del conjunto 1
a N.
Dados dos valores enteros A y B determinar e
imprimir el producto de ambos obtenido por
sumas sucesivas.
Dado un valor M, determinar e imprimir los M
primeros mltiplos de 3 que no lo sean de 5,
Introduccion la Programacin
dentro del conjunto
de nmeros naturales.
Magister Oscar R. BRUNO
Ejercicios 2, 3, 10, 11 y 12
TP2
Ejercicios 2, 3 y 5
TP3
Ejercicios 1, 3, 4, 6 y 8
TP4
Ejercicios 8, 9, 10 y 11
Recursividad
Una funcion con sentencias entre las
cuales se encuentra una llamada a si
misma se dice que es recursiva.
Divide el problema original en
subproblemas mas pequeos. Cuando es
lo suficientemente chico se resuelve
directamente y se combinan soluciones
del subproblema hasta que queda resuelto
el problema.
Introduccion la Programacin
Magister Oscar R. BRUNO
Requerimientos
El flujo de controlde una funcion
recursiva requiere tres condiciones para
una terminacion normal:
1 Un test para detener o continuar con la
recursion.
2 una llamada recursiva para continuar la
recursion
3 un caso base para terminar la recursion
Introduccion la Programacin
Magister Oscar R. BRUNO
A tener en cuenta
Define el problema en terminos de un
problema mas simple de la misma
naturaleza.
Debe disminuir el espacio del problema
en cada llamada recursiva
Hay una instancia particular que se
conoce como caso base o caso
degenerado
Introduccion la Programacin
Magister Oscar R. BRUNO
Iteracion vs Recursion
Considerar solucion recursiva solo si una solucion iterativa
sencilla no es posible.
Solo utilice recursividad dentro de limites aceptables de
ejecucion y uso de memoria.
Si son posibles las soluciones iterativas y recursivas esta
ultima requerira mas tiempo y mas recursos de memoria.
En ciertos problemas la recursion produce soluciones mas
simples de leer. Los beneficios de la claridad compensan el
costo extra
Ambas implican repeticion. iteracion explicitamente y
recursion con llamadas repetidas.
Ambas consideran un test de salida. Iteracion en la
condicion, recursividad en el caso base
Introduccion la Programacin
Magister Oscar R. BRUNO
Ejemplo
Factorial (dato N : Entero) Entero : Funcion
ALGORITMO
SI N = 0
Entonces
Factorial = 1
SI_NO
Factorial = N * Factorial (N 1)
FIN_SI
FIN.
Introduccion la Programacin
Magister Oscar R. BRUNO
Contenido Clase 4
Estructuras
Registros
Listas
Tablas
Archivos
Introduccion la Programacin
Magister Oscar R. BRUNO
Introduccion la Programacin
Magister Oscar R. BRUNO
Tipo Registro
Compuesto por una enumeracion de
otros valores de tipo ya definidos.
El termino campo refire a cada
elemento del registro.
El operador de acceso a cada miembro
es el operador . (punto).
NombreEstructura.NombreCampo.
La cardinalidad de un tipo es el numero
de valores de su dominio.
Introduccion la Programacin
Magister Oscar R. BRUNO
Definicion de tipos
LEXICO
NombreDelTipo = TIPO <c1 : Td1;
c2 : Td2;
.............
cn : tdn >;
Punto = TIPO <abs: Real ; ord: Real>
Introduccion la Programacin
Magister Oscar R. BRUNO
Asignacin
Interna:
Campo campo
Estructura completa (de igual tipo);
Externa
De entrada - salida
Campo a campo (dispositivo std)
Estructura completa (otro dispositivo)
Introduccion la Programacin
Magister Oscar R. BRUNO
Tablas
Los lenguajes de programacion usan el termino
array para referirse a tablas.
Permite almacenar coleccin de valores y asociar
un indice a cada valor almacenado.
Es posible el acceso indexado.
Son posiciones contiguas de datos homogeneos y
de tamao fijo.
El operador de acceso es [ ].
Cada subordinacion incrementa la dimension.
Tamao logico y fisico.
Introduccion la Programacin
Magister Oscar R. BRUNO
Declaraciones
NombreTipo = TIPO Tabla [li, lf] de
TipoBase
TVR = TIPO Tabla [1, 100] de Real
La variacion del indice determina la
cantidad de elementos, el tipoBase de
que tipo es cada componente.
TR = TIPO <absc : Real; ord : Real>
TVR = TIPO tabla [1, 50] de TR
Tabla : TVR
Introduccion la Programacin
Magister Oscar R. BRUNO
Operaciones basicas
Asignacion
Por elemento
Por estructura completa
Acceso directo
Recorrido
Busqueda Secuencial Binaria Directa
Ordenamiento
Introduccion la Programacin
Magister Oscar R. BRUNO
ESQUEMA DE
RECORRIDO
PARA i [li, ls] HACER
// INV = V f(i)
FIN_PARA
Introduccion la Programacin
Magister Oscar R. BRUNO
Tablas vs Registros
Registro permite agrupar datos no
homogeneos, la tabla homogeneos.
Las tablas permiten el acceo directo a
sus miembros por un indice y los
registros por el operador punto.
En un registro el numero de miembros
lo de sus campos en una tabla el
intervalo de los indices.
Introduccion la Programacin
Magister Oscar R. BRUNO
Ejercicios
Tablas Multidimensionales
Si una tabla representa una funcion de un
argumento las tablas multidimensionales
representan una funcion de n argumentos,
uno por cada dimension.
Se utilizan para representar colecciones de
objetos de la misma naturaleza a los que se
puede acceder mediante un conjunto de
indices.
La nocion matematica de matriz se puede
representar mediante un atabla de dos
dimensiones. Introduccion la Programacin
Magister Oscar R. BRUNO
Declaraciones
NombreTipo = TIPO Tabla [fi, fj; ck,cl]
de TipoBase
TTR = TIPO Tabla [1, 100; 1,10] de
Real
El producto del intervalo de sus indices
determina la cantidad de elementos, el
tipoBase de que tipo es cada
componente.
El tipo puede ser primitivo o derivado.
Introduccion la Programacin
Magister Oscar R. BRUNO
ESQUEMA DE RECORRIDO
INV = T
PARA i [1, nfilas] HACER
INV = T
A = f(fila(i))
PARA j [1, ncol] HACER
INV = T
A = f(fila(i),col(j)
FIN_PARA
FIN_PARA Introduccion la Programacin
Magister Oscar R. BRUNO
Ejercicios
Ingresar dos valores, M = 30 y N = 25. A
continuacin por filas todos los componentes
de una matriz MATRIZA de M filas y N
columnas. Desarrollar un programa que:
Imprima la matriz MATRIZA por columnas.
Calcule e imprima el valor promedio de los
componentes de la matriz.
Genere e imprima un vector VECMAXFIL
donde cada componente sea el valor
mximo de cada fila.
Introduccion la Programacin
Magister Oscar R. BRUNO
Ejemplo
LEXICO
FILAS = 30; COLUMNAS = 25;
TVM = TIPO Tabla [1, COLUMNAS] de Entero // Vector de maximos
TME = TIPO Tabla [1, FILAS; 1,COLUMNAS] de Entero;
MATRIZA : TME; VECMAXFIL : TVM; Promedio : Real;
CargarMatrizPorFila(Dato Resultado Matriz : TME) : una accion
LEXICO
i , j : Entero;
ALGORITMO
PARA i[1,FILAS] HACER
PARA j[1,COLUMNAS] HACER
Leer(Matriz[i, j];
FIN_PARA
FIN_PARA
Introduccion la Programacin
FIN //accion CargarMatrizPorFila
Magister Oscar R. BRUNO
Introduccion la Programacin
Magister Oscar R. BRUNO
Ejercicios
Ingresar un valor N = 20 y luego por filas una
matriz cuadrada CUADRA de N filas y columnas.
Desarrollar un programa que determine e
imprima:
Todos los elementos de la diagonal principal o
secundaria segn de cual resulte mayor la
sumatoria de elementos.
Los elementos del cuarto (N/2 filas y N/2
columnas) cuya sumatoria resulte mayor
(considerando que N es par).
Los elementos de la triangular superior o inferior
dependiendo de cual tenga mayor sumatoria
de elementos.
Introduccion la Programacin
Magister Oscar R. BRUNO
ARCHIVOS
Coleccin de datos almacenada en unidad
externa, por ejemplo disco que se asocia con
un nombre.
Puede ser de texto o binario.
El acceso puede ser secuencial o indexado.
Introduccion la Programacin
Magister Oscar R. BRUNO
Contenido Clase 5
Algoritmos puntuales
Recorridos.
Busquedas.
Ordenamientos.
Introduccion la Programacin
Magister Oscar R. BRUNO
Definiciones de tipos
MAX_FIL
Tinfo
TinfoC
TVector
Tinfo;
= 100;
= TIPO Entero;
= TIPO <C1 : Td1, C2 : Td2>
= TIPO Tabla [1,MAX_FIL] de
Introduccion la Programacin
Magister Oscar R. BRUNO
Busqueda Secuencial
BusqSecEnVector(Dato V: Tvector; Dato N:
Entero; Dato Clave:Tinfo; Dato_resultado
Posic: Entero): una acccion
LEXICO
Pre: V: Vector en el que se debe buscar
Clave : Valor Buscado
N : Tamao logico del vector
Pos:Posic: Posicion donde se encuentra la
clave, 0 ( Cero) si no esta.
j : Entero;
Introduccion la Programacin
Magister Oscar R. BRUNO
ALGORITMO
Posic = 0;
J = 1;
MIENTRAS (j <= MAX_FIL y j <= N y V[j] <>
Clave) HACER
Inc (j)
FIN_MIENTRAS;
SI (j > N)
ENTONCES
Posic =0 // No encontro la clave buscada
SI_NO
Posic = j // Encontro la clave en la posicion de indice
j
FIN_SI;
FIN. // Busqueda secuencial En Vector
Introduccion la Programacin
Magister Oscar R. BRUNO
Buscar Mximo
BusqMaxEnVector(Dato V: Tvector; Dato N:
Entero; Dato_resultado Maximo :Tinfo;
Dato_resultado Posic: Entero): una acccion
LEXICO
Pre: V: Vector en el que se debe buscar
N : Tamao logico del vector
Pos: Posic: Posicion donde se encuentra el
Maximo : Valor maximo del vector.
j : Entero;
Introduccion la Programacin
Magister Oscar R. BRUNO
maximo
ALGORITMO
Posic = 1;
Maximo = V[1];
PARA j [2, MAX_FIL] HACER
SI (v[j] > Maximo)
ENTONCES
Posic = j;
Maximo = v[j];
FIN_SI;
FIN_PARA;
FIN. // Busqueda maximo En Vector
Introduccion la Programacin
Magister Oscar R. BRUNO
LEXICO
j : Entero;
Introduccion la Programacin
Magister Oscar R. BRUNO
ALGORITMO
Posic = 0; J = 1;
MIENTRAS (j <= MAX_FIL y j <= N y V[j] <> Clave) HACER
Inc (j)
FIN_MIENTRAS;
SI j > MAX_FIL
ENTONCES
Posic = 0
SI_NO
Posic = j:
SI (j > N)
ENTONCES
Enc =FALSE; // No encontro la clave buscada
Inc(N);
V[N] = Clave;
SI_NO
Enc = True // Encontro la clave en la posicion de indice j
FIN_SI;
FIN_SI
Introduccion la Programacin
FIN. // Carga sin repetir en vector
Magister Oscar R. BRUNO
Busqueda Binaria
BusquedaBinariaEnVectorV1(Dato V: Tvector;
Dato N: Entero; Dato Clave:Tinfo;
Dato_resultado Posic: Entero; Dato_resultado
Pri : Entero): una acccion
LEXICO
Pre: V: Vector en el que se debe buscar con clave sin repetir
Clave : Valor Buscado
N : Tamao logico del vector
Pos: Posic: Posicion donde se encuentra la clave, o 0 (cero) si no esta
Pri : Retorna la posicion del limite inferior
J,u,m : Entero;
Introduccion la Programacin
Magister Oscar R. BRUNO
ALGORITMO
Posic = 0; Pri = 1; U = N;
MIENTRAS (Pri < = U y Pos = 0) HACER
M = (Pri + U ) div 2
SI V[M] = Clave
ENTONCES
Posic = M;
SI_NO
SI Clave > V[M]
ENTONCES
Pri = M+1
SI_NO
U=M1
FIN_SI
FIN_SI
FIN_MIENTRAS;
FIN. // Busqueda binaria en vector
Introduccion la Programacin
Magister Oscar R. BRUNO
la Programacin
Magister Oscar R. BRUNO
Ordenamiento Vector
OrdenarVectorBurbuja(Dato_Resultado V:
Tvector; Dato N: Entero): una acccion
LEXICO
Pre: V: Vector en el que se debe ordenar
N : Tamao logico del vector
Pos: Vector ordenado por clave creciente
I,J, : Entero;
Aux : Tinfo;
Introduccion la Programacin
Magister Oscar R. BRUNO
N Mejores
ALGORITMO
SI (N < MAX-FIL)
ENTONCES
Inc (N);
V[n] = Clave
SI_NO
BusqMaxEnVector(V,N, Maximo, Posic);
SI (Clave > Maximo)
ENTONCES
V[Posic] = Clave;
FIN_SI;
FIN_SI;
FIN. // Carga los N mejores en vector
Introduccion la Programacin
Magister Oscar R. BRUNO
Ejemplo
LEXICO
TVE = TIPO Tabla [1, 100] de Entero;
Tabla : TVE;
i, N : Entero;
ALGORITMO
REPETIR // leer tamao logico del vector
Leer(N);
HASTA_QUE (N > 0 y N <= 25);
PARA i[1,N] HACER // Cargar vector hasta tamao logico
Tabla[i] = 2 * i;
FIN_PARA
PARA i[1,N] HACER
Escribir(Tabla[i]); //Muestra contenido del vector
FIN_PARA
Introduccion la Programacin
FIN
Magister Oscar R. BRUNO
Volver