Descargar la presentación
La descarga está en progreso. Por favor, espere
Publicada porAlicia Roldán Cárdenas Modificado hace 9 años
1
Introduccion la Programación Magister Oscar R. BRUNO Algoritmos UTN FRBA
2
Introduccion la Programación Magister Oscar R. BRUNO
5
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
6
Introduccion la Programación Magister Oscar R. BRUNO Apredizaje de programacion Observar el universo real y trasladarlo al universo computacional requiere un gran esfuerzo de abstracción. Es por eso que el aprendizaje de programación se hace tan complejo Se da en etapas pero es recursivo
7
Introduccion la Programación Magister Oscar R. BRUNO Aprendizaje de programacion Se da en etapas pero es recursivo. Se orienta hacia objetivos Se debe conceptuar al aprendizaje como pensamiento, usando los conceptos previos
8
Introduccion la Programación Magister Oscar R. BRUNO Riesgos La información se transforma en una carga indigesta si no se la entiende Aprender es vincular la información nueva con elementos previos. Información poco clara, desorganizada o carente de sentido afectan al uso de conocimientos previos. Se debe evitar un conocimiento inerte
9
Introduccion la Programación Magister Oscar R. BRUNO Sugerencias No es suficiente con los conocimientos teóricos o con el análisis de lo que otro escribió, como toda actividad constructiva REQUIERE DE PRACTICA. Pero no se debe transformar en programador compulsivo: adquiera el hábito de pensar la solución antes de escribir código.
10
Introduccion la Programación 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]. Descripción 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 léxico[Scholl, 1988].
11
Introduccion la Programación 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 duración de la ejecución son finitas.
12
Introduccion la Programación Magister Oscar R. BRUNO Algoritmo Finitud: en longitud y duración. Precisión: Determinar sin ambigùedad las operaciones que se deben ejecutar. Efectividad: las reglas pueden ejecutarse sin el ordenador obteniéndose el mismo resultado. Generalidad: Resolver una clase de problema y no un problema particular.
13
Introduccion la Programación Magister Oscar R. BRUNO Programa Tarea Proceso Programa: Algoritmo escrito en un lenguaje cuyas instrucciones son ejecutables por una computadora y que están almacenados en un disco. Tarea: Un programa se vuelve tarea a partir del momento que se lo selecciona para su ejecución y hasta que esta termina. Proceso: programa en ejecución, se ha iniciado pero aún no ha finalizado.
14
Introduccion la Programación Magister Oscar R. BRUNO Lenguajes de programación Lenguajes Naturales - Formales. Lenguajes de programación: Notacion que permite escribir programas a mayor nivel de abstracción que los lenguajes de máquina. Sus instrucciones deben ser traducidas a lenguaje de máquina. Lenguaje de máquina: Instrucciones que son ejecutables por el hardware de una computadora.
15
Introduccion la Programación Magister Oscar R. BRUNO Paradigmas de programación Paradigma: Colección de conceptos que guían 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 – Lógico.
16
Introduccion la Programación Magister Oscar R. BRUNO Dato Información Conocimiento Dato: sin interpretar. Información: añade significado al dato. Conocimiento: Añade propósito y capacidad a la información. Potencial para generar acciones.
17
Introduccion la Programación Magister Oscar R. BRUNO Problema Enunciado con una incógnita, la solución es encontrar el valor de esa incógnita. Problema computacional o algorítmico: tarea ejecutada por una computadora con una especificación precisa de los datos de entrada y de los resultados requeridos en funcion de estos.
18
Introduccion la Programación Magister Oscar R. BRUNO Clase de problemas No computables: No existe un algoritmo. Computables Tratables: Existe un algoritmo eficiente. Intratable: No existe algoritmo eficiente. Un problema intratable puede convertirse en tratable si se encuentra un algoritmo que lo resuelva.
19
Introduccion la Programación Magister Oscar R. BRUNO Informática Disciplina del estudio sistematizado de los procesos algorítmicos que describen y transforman información, su teoría, análisis, diseño, eficiencia, implementación y aplicación. La informática es una disciplina científica, matemática y una ingeniería. Tiene tres formas de pensar propias: Teoría, abstracción y diseño. Las tres se complementan para la resolución de la mayoría de los problemas.
20
Introduccion la Programación Magister Oscar R. BRUNO Especificación Implementación Especificación: 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 autómata. Implementación: Traducir a un conjunto de instrucciones permitidas y definidas por sus reglas sintácticas y valor semántico lo que fue especificado.
21
Introduccion la Programación 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 modificación durante todo el proceso
22
Introduccion la Programación Magister Oscar R. BRUNO Las metas que se persiguen son que el estudiante: Retenga el conocimiento, lo comprenda y haga uso activo del mismo. Adquiera un conocimiento organizado. Desarrolle habilidades intelectuales y haga uso activo de un pensamiento creativo. Fomentar pasiones intelectuales como la curiosidad. Que autogestionar su conocimiento, a sintetizar, a abstraer. Que haga uso de lenguajes del pensamiento, Que sepa como volcar ideas en el papel
23
Introduccion la Programación 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 operación volar
24
Introduccion la Programación Magister Oscar R. BRUNO Expresiones Sentencias Léxico Expresiones: secuencia de operadores y operandos que se reduce a un solo valor. Sentencias: acción produce un efecto, puede ser primitiva o no primitiva. Léxico: Descripción del conjunto de acciones e informaciones a partir de la cual se expresa el esquema de comportamiento del algoritmo.
25
Introduccion la Programación Magister Oscar R. BRUNO Pasos para resolver un algoritmo 1. Comprender el problema. 2. Identificar información y acciones a incluir en el lexico (constantes, tipos, variables y acciones). 3. Encontrar un camino de secuenciar las acciones para obtener el resultado, es decir para alcanzar la postcondición a partir del estado inicial que cumple con la precondición.
26
Introduccion la Programación 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.
27
Introduccion la Programación Magister Oscar R. BRUNO Acciones primitivas Asignacion: De entrada: permite cambiar el valor de una variable. Ya sea en forma interna o a través de algun dispositivo de entrada. De salida: Permite mostrar el valor de una variable a través de algun dispositivo de salida.
28
Introduccion la Programación Magister Oscar R. BRUNO Acciones primitivas Analisis de casos: Permiten especificar la partición del dominio de datos. Instrucción según: Especifica la partición en varios subdominios y asocia acciones a cada uno de ellos. Instrucción si entonces si_no: cuando en un análisis de casos solo se tienen dos.
29
Introduccion la Programación Magister Oscar R. BRUNO Acciones primitivas Repeticiones: permiten ejecutar una determinada cantidad de veces una accion o conjunto de acciones. Exactas: se conoce con precisión la cantidad de veces que las acciones se repetiran. No exactas: la finalización del ciclo depende de alguna condición, pueden ser pre o pos condicionales.
30
Introduccion la Programación 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 : Real // Contiene el valor que representa la temperatura en ºF tempCelsius : Real // Contiene el valor que representa la temperatura en ºC CERO_ABSOLUTO = -459.58 // Representa el valor del cero absoluto en ºF ConvertirFahrenheitCelsius : Accion PRE {TempFahrenheit >= CERO_ABSOLUTO} POS {Convierte a Celsius una temp. En Fahrenheid} tempCelsius = (5.0 / 9.0) * (tempFahrenheit – 32.0) FIN ConvertirFahrenheitCelsius ALGORITMO Leer (tempFahrenheit) ConvertirFahrenheitCelsius Escribir(´La temp. En Celsius es : ´, tempCelcius) FIN
31
Introduccion la Programación Magister Oscar R. BRUNO 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 N 2 dígitos sin repetir 8 1 6 3 5 7 4 9 2 2 + 7 – 118 = 129
32
Introduccion la Programación Magister Oscar R. BRUNO Problemas Paramo de posibilidades Meseta aparente sin indicios Angosto cañon de exploracion Oasis de falsas promesas Salto del pensamiento Larga busqueda Escaso avance aparente Acontecimiento desencadenante Chasquido cognitivo Transfomacion
33
Introduccion la Programación Magister Oscar R. BRUNO 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; write('La nota final es: ‘, notaFinal:5:2); readln end. Ejemplo en Pascal
34
Introduccion la Programación Magister Oscar R. BRUNO #include 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; } Ejemplo en C
35
Introduccion la Programación Magister Oscar R. BRUNO Bibliografía Behrouz Forouzan. Introducción a la ciencia de la computación. 2005. Ciencias e Ingenieria. De Giusti. Algoritmos datos y programas. 2001. Prentice Hall Garcia Molina. Una introducción a la programación. 2005. Thomson. Kernighan - Ritchie. El lenguaje de programacion C. 1988. Pearson Kerighan – Pike. La practica de la programacion. 2000. Pearson Perkins David. La bañera 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
36
Introduccion la Programación Magister Oscar R. BRUNO Contenido Clase 2 Analisis de casos Instrucción SEGUN Instrucción SI ENTONCES SI_NO Acciones y funciones Sin parametros Con parametros Parametros actuales y formales Parametros valor y variables
37
Introduccion la Programación Magister Oscar R. BRUNO Composicion secuencial Tecnica de descomposicion algoritmica que disminuye la complejidad de un problema mediante la division en probemas mas pequeños, cuya solucion se puede abordar en forma independiente y la secuenciacion parcial permite alcanzar la solucion final.
38
Introduccion la Programación 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 : Real // Contiene el valor que representa la temperatura en ºF tempCelsius : Real // Contiene el valor que representa la temperatura en ºC CERO_ABSOLUTO = -459.58 // Representa el valor del cero absoluto en ºF ConvertirFahrenheitCelsius : Accion PRE {TempFahrenheit >= CERO_ABSOLUTO} POS {Convierte a Celsius una temp. En Fahrenheid} tempCelsius = (5.0 / 9.0) * (tempFahrenheit – 32.0) FIN ConvertirFahrenheitCelsius ALGORITMO Leer (tempFahrenheit); ConvertirFahrenheitCelsius; Escribir(“La temp. En Celsius es : ´”, tempCelcius); FIN
39
Introduccion la Programación Magister Oscar R. BRUNO 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.
40
Introduccion la Programación 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.
41
Introduccion la Programación Magister Oscar R. BRUNO Analisis de casos 1. 0 <= N < 5 5<=N < 77<=N<=10 2. 0 <= N<=5 5<=N<=77<=N<=10 3. 0 <= N < 5 5 < N < 77 <N<=10 Ejemplo de posibles descomposiciones de valores entre 1 y 10
42
Introduccion la Programación Magister Oscar R. BRUNO Instrucción segun SEGÚN c1... cn e1 : a1 e2 : a2... en : an FIN_SEGUN SEGÚN c1... cn e1 : a1 e2 : a2... en : an EN_OTRO_CASO : an+1 FIN_SEGUN Especifica la particion del dominio de datos en varios subdominios y asocia acciones a cada uno de ellos.
43
Introduccion la Programación Magister Oscar R. BRUNO PROBLEMA: Desarrollar un programa que simule una calculadoa simple. Que ingrese dos oprandos y un operador. Según el operador que muestre la suma, resta, multiplicacion o division. LEXICO Operando1, Operando2 : Entero; Operador : Carácter; ALGORITMO Leer (Operando1, Operando2, Operador); SEGÚN Operador Operador = ´+´ : Escribir (Operando1 + Operando2) Operador = ´-´ : Escribir (Operando1 - Operando2) Operador = ´*´ : Escribir (Operando1 * Operando2) Operador = ´/´ : Escribir (Operando1 Div Operando2) FIN_SEGUN FIN
44
Introduccion la Programación Magister Oscar R. BRUNO PROBLEMA: Desarrollar un programa que simule una calculadoa simple. Que ingrese dos oprandos y un operador. Según el operador que muestre la suma, resta, multiplicacion o division. LEXICO Operando1, Operando2 : Entero; Operador : Carácter; ALGORITMO Leer (Operando1, Oprando, Operador); SEGÚN Operador Operador = ´+´ : Escribir (Operando1 + Operando2) Operador = ´-´ : Escribir (Operando1 - Operando2) Operador = ´*´ : Escribir (Operando1 * Operando2) Operador = ´/´ : Escribir (Operando1 Div Operando2) EN_OTRO_CASO : Escribir(“Operador no valido”) FIN_SEGUN FIN
45
Introduccion la Programación Magister Oscar R. BRUNO Instrucción SI ENTONCES SI_NO Cuando el analisis de casos solo tiene 2 casos, la instrucción según se puede simplificar con la instrucción SI exp ENTONCES a1 SI_NO a2 FIN_SI Si exp ENTONCES a1 FIN_SI
46
Introduccion la Programación Magister Oscar R. BRUNO PROBLEMA: Obtener el mayor de dos numeros 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
47
Introduccion la Programación Magister Oscar R. BRUNO PROBLEMA: Obtener el mayor de dos numeros LEXICO x, z, mayor : Entero; Operador : Carácter; ALGORITMO PRE { ( x = X) y ( z = Z)} POST { (( x>=z) ->(Mayor = X)) y ((z>x) (Mayor=Z)) } Leer (x, z); Mayor x; SI z >= Mayor ENTONCES Mayor z FIN_SI Escribir(`El mayor es : ´,mayor); FIN
48
Introduccion la Programación Magister Oscar R. BRUNO PROBLEMA: Comprobar si una fecha es correcta LEXICO dia, mes, año : Entero >0 ; EsBisiesto, FechaValida : Booleano ; AñoBisiesto : una accion POST {AñoBisiesto V si año es bisiesto F en caso contrario} ALGORITMO EsBisiesto (año Mod 400 = 0) o ((año Mod = 0)y(año mod 100<>0)) FIN AñoBisiesto
49
Introduccion la Programación Magister Oscar R. BRUNO ALGORITMO Leer (dia, mes, año); SI (dia < 1 ) ENTONCES FechaValida Falso SI_NO SEGÚN mes mes = 1,3,5,7,8,10,12 : FechaValida dia <= 31 mes = 4,6,9,11 : FechaValida dia <= 30 mes = 2 : AñoBisiesto; FechaValida dia <=28 o (AñoBisiesto y dia<=29) EN_OTRO_CASO : FechaValida Falso FIN_SEGUN FIN_SI Escribir (´La fecha ´, dia, ´/´, mes,´/´.año, ´ : ´); SI FechaValida ENTONCES Escribir (“Es Valida”) SI_NO Escribir(“No es valida”) FIN_SI FIN
50
Introduccion la Programación 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 según los billetes legales. 4. Dado un numero entero <= 10 6 descomponerlo en dd hh mm ss.
51
Introduccion la Programación Magister Oscar R. BRUNO Acciones y Funciones El concepto de acción está muy ligado al concepto de abstracción. Se analiza como abstracción por parametrización y abstracción por especificación.
52
Introduccion la Programación Magister Oscar R. BRUNO Acciones El léxico establece el nivel de abstracción 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.
53
Introduccion la Programación Magister Oscar R. BRUNO Utilización de acciones Acción es una secuencia de instrucciones que se identifica por un nombre y que puede ser invocada desde un algoritmo principal o desde otra acción. Una acción debe tener un efecto bien definido, debe ser cohesiva. Entre una acción y el algoritmo que la invoca se debe producir una comunicación de valores. Los parámetros son el mecanismo que posibilita escribir acciones generales, aplicables a cualquier valor de la entrada, e independientes del léxico del algoritmo.
54
Introduccion la Programación Magister Oscar R. BRUNO ALGORITMO Leer (salarioBase, antiguedad); CalcularSalarioBruto; CalcularDescuentos; CalcularSalarioNeto; Escribir (“El sueldo neto es:”, salarioNeto) FIN CalcularSalarioBruto : una acción ALGORITMO numeroQuinquenios = antiguedad DIV 5; numeroAños = antigüedad MOD 5; pagoQuinquenios = numeroQuinquenios * COMPLEMENTO_QUINQUENIO pagoAños = numeroAños * COMPLEMENTO_AÑO salarioBruto = salarioBase + pagoQuinquenios + pagoAños FIN
55
Introduccion la Programación Magister Oscar R. BRUNO P1 P2 P3 P4
56
Introduccion la Programación Magister Oscar R. BRUNO PROBLEMA:Calcular el perímetro de un cuadrilátero definido por los cuatro puntos del plano que constituyen sus vértices LÉXICO Coordenada = TIPO Real; Punto = TIPO p1, p2, p3, p4, po, pd : Punto; dist, perímetro : Real; Distancia : una acción PRE { po y pd almacenan dos puntos } POST { dist es la distancia entre los puntos } ALGORITMO Dist = RaizCuadrada ( Cuadrado (pd.x – po.x) + Cuadrado(pd.y – po.y)); FIN
57
Introduccion la Programación Magister Oscar R. BRUNO ALGORITMO Leer (p1, p2, p3, p4) ; perimetro = 0.0 ; // E 0 po = p1 ; pd = p2 ; Distancia; perímetro = dist; // E 1 po = p2 ; pd = p3 ; Distancia; perímetro = perímetro + dist; // E 2
58
Introduccion la Programación Magister Oscar R. BRUNO po = p3 ; pd = p4 ; Distancia; perímetro = perímetro + dist; // E 3 po = p4 ; pd = p1 ; Distancia; perímetro = perímetro + dist; // E f : Escribir (“El perímetro del cuadrilátero es:”, perímetro) FIN
59
Introduccion la Programación Magister Oscar R. BRUNO Parametros Un parámetro permite la comunicación entre una acción y el algoritmo que la invoca. A los parámetros que proporcionan un valor de entrada se los llaman Parámetros dato, y a los que, además de recoger un valor, retornan un resultado, se los llama dato-resultado. Distancia (dato po, pd : punto; dato- resultado dist : real) : una acción
60
Introduccion la Programación Magister Oscar R. BRUNO Paso de parametros Se denomina paso de parámetros al modo en que se establece la comunicación entre los argumentos pasados a la acción desde el algoritmo y los parámetros de la acción; en la llamada se pasan los datos de entrada, y en el retorno se devuelven los resultados. Cada argumento se liga con el parámetro que ocupa la misma posición en la declaración de la acción y ambos deben coincidir en tipo.
61
Introduccion la Programación Magister Oscar R. BRUNO PROBLEMA:Calcular el perímetro de un cuadrilátero definido por los cuatro puntos del plano que constituyen sus vértices Version 2 LÉXICO Coordenada = TIPO Real; Punto = TIPO p1, p2, p3, p4 : Punto; perímetro, d1, d2, d3, d4 : Real; Distancia(dato po, pd : Punto; dato-resultado dist : Real): una acción 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
62
Introduccion la Programación 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); perímetro = d1 + d2 + d3 + d4 Escribir(“El perímetro del cuadrilátero es:”, perímetro) FIN
63
Introduccion la Programación Magister Oscar R. BRUNO Abstracciones Abstracción se refiere a eliminar detalles, como resultado se obtiene un modelo El concepto de acción conjuga dos técnicas de abstracción que son la parametrización y la especificación. La parametrización es un mecanismo por el cual se generaliza una declaración para que no sea aplicado a un único caso, sino que sirva para cualquier valor que pueda tomar cierto parámetro La abstracción por especificación es la separación entre el Qué y el Cómo).
64
Introduccion la Programación Magister Oscar R. BRUNO Beneficios de las acciones En la actualidad, las clases son los mecanismos mas adecuados para estructurar los programas.. Una acción tiene cuatro propiedades esenciales. Generalidad, Ocultamiento de información, Localidad, Modularidad De estas propiedades, se deducen una serie de beneficios: Dominar la complejidad, Evitar repetir código, Mejorar la legibilidad, Facilitar el mantenimiento, Favorecer la corrección y la reutilización
65
Introduccion la Programación Magister Oscar R. BRUNO Funciones Las funciones devuelven un único valor. La función supone extender el conjunto de operadores primitivos. Nombre_funcion (par 1 : td 1 ;... ; par n : td n ) : tr : una función Una función no debe tener efectos laterales. Es decir, debe limitarse a calcular un valor y no modificar ninguno de los que se describen en el momento de la invocación. Siempre deben utilizarse dentro de una expresión.
66
Introduccion la Programación Magister Oscar R. BRUNO PROBLEMA:Calcular el perímetro de un cuadrilátero definido por los cuatro puntos del plano que constituyen sus vértices Version 3 LÉXICO idem anterior Distancia(po, pd : Punto) Real: una función 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 perímetro del cuadrilátero es:”, perímetro) FIN
67
Introduccion la Programación Magister Oscar R. BRUNO FUNCION para calcular el Maximo de tres valores Max2(a, b : Entero) Entero : una función ALGORITMO SI a>= b ENTONCES Max2 = a SI_NO Max2 = b FIN Max3(a, b,c: Entero) Entero : una función ALGORITMO Max3 = Max2(c, Max2(b, a)) FIN
68
Introduccion la Programación 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? Quedan 9, no esncesario hacer ninguna cuenta, solo leer correctamente. Una botella de vino cuesta 10 $, el vino vale 9 $ mas que la botella. Cuanto vale cada cosa? 9.50 y 0.50 Matriz cuadrada impar N*N colocar N 2 dígitos sin repetir 8 1 6 3 5 7 4 9 2 2 + 7 – 118 = 129 Transformar el + en un 4
69
Introduccion la Programación Magister Oscar R. BRUNO Contenido Clase 3 Iteración Composicion MIENTRAS Composicion REPETIR Composicion PARA Composicion ITERAR Concepto de secuencia Concepto de invariante Coincepto de recursion
70
Introduccion la Programación Magister Oscar R. BRUNO Máquina de acceso secuencial Una secuencia es una colección de elementos del mismo tipo. Pueden representarse de diferentes formas. Para acceder al elemento de la posición p, hay que recorrer los p-1 elementos anteriores. El recorrido termina cuando se alcanza la marca de fin de secuencia.
71
Introduccion la Programación Magister Oscar R. BRUNO Primitivas para el acceso secuencial Nombre_Tipo = TIPO Secuencia de Tipo_Base SC = TIPO Secuencia de Carácter SR = TIPO Secuencia de Real Comenzar (S), Avanzar (S), EA (S), Crear(S), Registrar (S, e), Marcar (S)
72
Introduccion la Programación Magister Oscar R. BRUNO PROBLEMA: Dada una secuencia con solo ceros y unos, calcular el número de ceros y unos que contiene. LÉXICO S: Secuencia de carácter; 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
73
Introduccion la Programación Magister Oscar R. BRUNO Componentes de una iteración Inicialización: instrucciones que se ejecutan para inicializar las variables que participan de la iteración. Condición de terminación: expresión booleana que determina cuando acaba la iteración. Cuerpo: conjunto de instrucciones que se ejecutan mientras no se cumple la condición de terminación. Finalización: conjunto de instrucciones que deben ejecutarse cuando la iteración termina.
74
Introduccion la Programación Magister Oscar R. BRUNO Se presentan tres composiciones iterativas en las que la finalización viene determinada por una condición. Estas son la composición MIENTRAS, REPETIR, ITERAR. Lo que las diferencia es el lugar donde se comprueba la condición: al principio, al final, en un punto intermedio del ciclo. Y también si es una condición de terminación o de continuación. Composiciones iterativas condicionales
75
Introduccion la Programación Magister Oscar R. BRUNO Diseño iterativo: noción de invariante El invariante de un ciclo, INV, es una condición que se cumple al inicio y a cada paso de la iteración. Cuando finaliza la iteración, el hecho de que se satisfaga el invariante y la condición de terminación implica que se alcanzó la solución.
76
Introduccion la Programación Magister Oscar R. BRUNO Pasos para una solucion iterativa Dada una especificación de un problema de recorrido de secuencias, la estrategia de una solución iterativa consta de los siguientes pasos: 1. Identificar qué variables son necesarias a partir de la poscondición. 2. Establecer el invariante del ciclo. 3. Aplicar un razonamiento inductivo. 4. Escribir el algoritmo iterativo.
77
Introduccion la Programación Magister Oscar R. BRUNO Composicion MIENTRAS Esquema General A ini ; //E 0 MIENTRAS Cc HACER //E k A cuerpo //E k+1 FIN_MIENTRAS; //E n A fin
78
Introduccion la Programación 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.
79
Introduccion la Programación 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.
80
Introduccion la Programación Magister Oscar R. BRUNO Otros Ejemplos Escriba algoritmos que : 1. Dado un numero entero en pesos lo desglose según los billetes legales. 2. Dado un numero entero <= 10 6 descomponerlo en dd hh mm ss.
81
Introduccion la Programación Magister Oscar R. BRUNO LEXICO B100, B50, B20, B10, B5, B2, Monedas, Num : Entero; MAXIMO = 65000; Leer(Num) MIENTRAS Numero > 0 HACER SEGÚN Num Num 100.. MAXIMO : B100 Num Div 100; Num Num – B100*100; Num 50.. 99 : B50 Num Div 50; Num Num – B50*50; Num 20.. 49 : B20 Num Div 20; Num Num – B20*20; Num 10.. 19 : B10 Num Div 10; Num Num – B10*10; Num 5.. 9 : B5 Num Div 5; Num Num – B5*5; Num 2.. 4 : B2 Num Div 2; Num Num – B2*2; Num 1 : Monedas = 1; Num = 0; FIN_SEGUN FIN_MIENTRAS
82
Introduccion la Programación Magister Oscar R. BRUNO LEXICO DD, HH, MM, SS; Num : Entero; MAXIMO = 1000000; Leer(Num) MIENTRAS Numero > 0 HACER SEGÚN Num Num 86400..MAXIMO : DD Num Div 86400; Num Num – DD*86400; Num 3600..86399 : HH Num Div 3600; Num Num – HH*3600; Num 60.. 3599 : MM Num Div 60; Num Num – MM*60; Num 1.. 59 : SS = Num; Num = 0; FIN_SEGUN FIN_MIENTRAS
83
Introduccion la Programación Magister Oscar R. BRUNO Composición REPETIR REPETIR S HASTA_QUE COND Composición ITERAR ITERAR S1S1 DETENER: cond S2S2 FIN_ITERAR Otras Composiciones Iterativas Condicionales
84
Introduccion la Programación 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.
85
Introduccion la Programación Magister Oscar R. BRUNO Composicion PARA Esquema General PARA i [j,n]HACER S FIN_PARA; PARA i [n,j](-)HACER S FIN_PARA; I es un ordinal, j y n representan el valor inicial y final del intervalo. CR = n – i + 1
86
Introduccion la Programación Magister Oscar R. BRUNO PROBLEMA:Calcular Valor medio de una secuencia de numeros LÉXICO S : Secuencia de Real; Suma : Real; NumElem : Entero; ALGORITMO Comenzar (S); Suma = 0; NumElem = 0; //E ini : suma = 0 y numElem = 0 y ea = Primero (S) y INV = verdadero
87
Introduccion la Programación 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 Vacía”) FIN_SI FIN
88
Introduccion la Programación 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 leído 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.
89
Introduccion la Programación Magister Oscar R. BRUNO Ejercicios Dado un conjunto de triángulos representados por sus lados L1, L2 y L3 que finaliza con un triángulo con un lado nulo, determinar e imprimir la cantidad de triángulos equiláteros, isósceles y escalenos. Dados dos valores N y M determinar e imprimir cuantos múltiplos 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 múltiplos de 3 que no lo sean de 5, dentro del conjunto de números naturales.
90
Introduccion la Programación Magister Oscar R. BRUNO Trabajo Practico obligtorio TP1 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 La presentación será individual, utilizando la notación algoritmica desarrollada en el curso, debe incluir: Caratula con datos del estudiante y fecha presentacion Enunciado, Lexico y algoritmo. Debe enviarse via a correo electronico y antes de la ultima clase.
91
Introduccion la Programación Magister Oscar R. BRUNO 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 pequeños. Cuando es lo suficientemente chico se resuelve directamente y se combinan soluciones del subproblema hasta que queda resuelto el problema.
92
Introduccion la Programación 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
93
Introduccion la Programación 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
94
Introduccion la Programación 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
95
Introduccion la Programación 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.
96
Introduccion la Programación Magister Oscar R. BRUNO Contenido Clase 4 Estructuras Registros Listas Tablas Archivos
97
Introduccion la Programación Magister Oscar R. BRUNO Datos de tipo estructurado Hemos trabajado con tipos que definen un dominio de valores simples o atomico. Datos de tipo estructurado. Compuestos por mas de un dato. Divisible en datos mas elementales. Unico nombre para todo el conjunto. Acceso directo a cada miembro del conjunto.
98
Introduccion la Programación 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.
99
Introduccion la Programación Magister Oscar R. BRUNO Definicion de tipos LEXICO NombreDelTipo = TIPO <c1 : Td1; c2 : Td2;............. cn : tdn >; Punto = TIPO
100
Introduccion la Programación Magister Oscar R. BRUNO Asignación Interna: Campo campo Estructura completa (de igual tipo); Externa De entrada - salida Campo a campo (dispositivo std) Estructura completa (otro dispositivo)
101
Introduccion la Programación Magister Oscar R. BRUNO Tablas Los lenguajes de programacion usan el termino array para referirse a tablas. Permite almacenar colección de valores y asociar un indice a cada valor almacenado. Es posible el acceso indexado. Son posiciones contiguas de datos homogeneos y de tamaño fijo. El operador de acceso es [ ]. Cada subordinacion incrementa la dimension. Tamaño logico y fisico.
102
Introduccion la Programación 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 TVR = TIPO tabla [1, 50] de TR Tabla : TVR
103
Introduccion la Programación Magister Oscar R. BRUNO Operaciones basicas Asignacion Interna (por elemento o por estructura) Externa de entrada o salida Por elemento Por estructura completa Acceso directo Recorrido Busqueda Secuencial Binaria Directa Ordenamiento
104
Introduccion la Programación Magister Oscar R. BRUNO ESQUEMA DE RECORRIDO PARA i [li, ls] HACER // INV = V f(i) FIN_PARA
105
Introduccion la Programación 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.
106
Introduccion la Programación Magister Oscar R. BRUNO Ejercicios Ingresar un valor N (< 25). Generar un arreglo de N componentes en el cual las mismas contengan los primeros números naturales pares e imprimirlo. Ingresar un valor entero N (< 30) y a continuación un conjunto de N elementos. Si el último elemento del conjunto tiene un valor menor que 10 imprimir los negativos y en caso contrario los demás. Ingresar un valor entero N (< 25). A continuación ingresar un conjunto VEC de N componentes. Si la suma de las componentes resulta mayor que cero imprimir las de índice par, sino las de índice impar.
107
Introduccion la Programación Magister Oscar R. BRUNO 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.
108
Introduccion la Programación 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.
109
Introduccion la Programación 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
110
Introduccion la Programación Magister Oscar R. BRUNO Ejercicios Ingresar dos valores, M = 30 y N = 25. A continuación 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 máximo de cada fila.
111
Introduccion la Programación 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 //accion CargarMatrizPorFila
112
Introduccion la Programación Magister Oscar R. BRUNO ImprimirMatrizPorColumna(Dato Matriz : TME) : una accion LEXICO i, j : Entero; ALGORITMO PARA i[1,COLUMNAS HACER PARA j[1,FILAS] HACER Escribir(Matriz[i, j]; FIN_PARA FIN //accion ImprimirMatrizPorColumna CalcularImprimirPromedio(Dato Matriz : TME) : una accion LEXICO i, j, Total : Entero; ALGORITMO Total = 0; PARA i[1,COLUMNAS HACER PARA j[1,FILAS] HACER Total = Total + Matriz[i, j] ; FIN_PARA Escribir (“El pomedio es : “,Total / Columnas / Filas FIN //accion ImprimirMatrizPorColumna
113
Introduccion la Programación Magister Oscar R. BRUNO CargarVectorMaxFil(Dato Resultado Vector : TVM; Dato Matriz:TME) : una accion LEXICO i, j, : Entero; ALGORITMO PARA i[1,COLUMNAS] HACER Vector[i] = Matriz[i, 1]; PARA j[2,FILAS] HACER SI Matriz[i, j] > Vector[i] ENTONCES Vector[i] = Matriz[i, j] FIN_SI FIN_PARA FIN //accion CargarVectorMaxFil
114
Introduccion la Programación Magister Oscar R. BRUNO MostrarVectorMaxFil(Dato Vector : TVM) : una accion LEXICO i : Entero; ALGORITMO PARA i[1,COLUMNAS] HACER Escribir(“Fila : “, i,“Valor maximo : ”,Vector[i]); FIN_PARA //accion MostrarVectorMaxFil ALGORITMO // Algoritmo principal CargarMatrizPorFila(MATRIZA); ImprimirMatrizPorColumna(MATRIZA); CalcularImprimirPromedio(MATRIZA); CargarVectorMaxFil(MATRIZA, VECMAXFIL); MostrarVectorMaxFil(VECMAXFIL); FIN
115
Introduccion la Programación 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 según 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.
116
Introduccion la Programación Magister Oscar R. BRUNO ARCHIVOS Colección 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.
117
Introduccion la Programación Magister Oscar R. BRUNO Operaciones con archivos Asignar(a,s) Abrir(a) Crear(a) Cerrar(a) Leer(a,d) Escribir(a,d) CantElemntos(a) PosActual(a) FinArchivo(a) Acceder(a,p)
118
Introduccion la Programación Magister Oscar R. BRUNO Contenido Clase 5 Algoritmos puntuales Recorridos. Busquedas. Ordenamientos.
119
Introduccion la Programación Magister Oscar R. BRUNO Definiciones de tipos MAX_FIL = 100; Tinfo = TIPO Entero; TinfoC= TIPO TVector = TIPO Tabla [1,MAX_FIL] de Tinfo;
120
Introduccion la Programación 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 : Tamaño logico del vector Pos:Posic: Posicion donde se encuentra la clave, 0 ( Cero) si no esta. j : Entero;
121
Introduccion la Programación Magister Oscar R. BRUNO ALGORITMO Posic = 0; J = 1; MIENTRAS (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
122
Introduccion la Programación Magister Oscar R. BRUNO Buscar Máximo 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 : Tamaño logico del vector Pos:Posic: Posicion donde se encuentra el maximo Maximo : Valor maximo del vector. j : Entero;
123
Introduccion la Programación Magister Oscar R. BRUNO 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
124
Introduccion la Programación Magister Oscar R. BRUNO Carga sin Repeticion CargaSinRepetirEnVectorV1(Dato_Resultado V: Tvector; Dato_Resultado N: Entero; Dato Clave:Tinfo; Dato_resultado Posic: Entero; Dato_resultado Enc : Booleano): una acccion LEXICO Pre:V: Vector en el que se debe buscar Clave : Valor Buscado N : Tamaño logico del vector Pos:Posic: Posicion donde se encuentra la clave, o donde lo inserta si no esta. Retorna 0 (cero) en caso que el vector esta completo y no encuentra el valor buscado Enc : Retorna True si estaba y False si lo inserto con esta invocacion Carga vector sin orden LEXICO j : Entero;
125
Introduccion la Programación Magister Oscar R. BRUNO ALGORITMO Posic = 0; J = 1; MIENTRAS (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 FIN. // Carga sin repetir en vector
126
Introduccion la Programación 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 : Tamaño 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;
127
Introduccion la Programación 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 = M – 1 FIN_SI FIN_MIENTRAS; FIN. // Busqueda binaria en vector
128
Introduccion la Programación Magister Oscar R. BRUNO ALGORITMO // Version con clave repetida 1ra ocurrencia de la clave Posic = 0; Pri = 1; U = N; MIENTRAS (Pri < U ) HACER M = (Pri + U ) div 2 SI V[M] = Clave ENTONCES Posic = M; U = M; SI_NO SI Clave > V[M] ENTONCES Pri = M+1 SI_NO U = M – 1 FIN_SI FIN_MIENTRAS; FIN. // Busqueda binaria en vector
129
Introduccion la Programación Magister Oscar R. BRUNO Carga Sin repetir V2 ALGORITMO Enc = True; BusquedaBinariaEnVectorV(V; N; Clave; Posic; Pri) SI (Posic = 0) ENTONCES Enc = False ; Posic = Pri; PARA j [N, Pri](-) HACER V[j+1] = V[j]; FIN_PARA; V[Pri] = Clave; Inc(N); FIN_SI FIN. // Carga sin repetir con vector ordenado
130
Introduccion la Programación 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 : Tamaño logico del vector Pos: Vector ordenado por clave creciente I,J, : Entero; Aux : Tinfo;
131
Introduccion la Programación Magister Oscar R. BRUNO ALGORITMO // Metodo burbuja PARA i [1, N - 1] HACER PARA j [1, N - i] HACER SI (v[j] > v[j + 1]) ENTONCES Aux = v[j]; V[j] = v[j + 1]; V[j + 1] = Aux; FIN_SI; FIN_PARA; FIN
132
Introduccion la Programación Magister Oscar R. BRUNO ALGORITMO // Metodo burbuja mejorado j = 0; REPETIR Inc (j); Ord = True: PARA j [1, N - i] HACER SI (v[j] > v[j + 1]) ENTONCES Aux = v[j];V[j] = v[j + 1]; V[j + 1] = Aux; Ord = False; FIN_SI; FIN_PARA; HASTA_QUE ( J = N – 1 o Ord); FIN
133
Introduccion la Programación 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. // Carga los N mejores en vector
134
Introduccion la Programación Magister Oscar R. BRUNO Ejemplo LEXICO TVE = TIPO Tabla [1, 100] de Entero; Tabla : TVE; i, N : Entero; ALGORITMO REPETIR // leer tamaño logico del vector Leer(N); HASTA_QUE (N > 0 y N <= 25); PARA i[1,N] HACER // Cargar vector hasta tamaño logico Tabla[i] = 2 * i; FIN_PARA PARA i[1,N] HACER Escribir(Tabla[i]); //Muestra contenido del vector FIN_PARA FIN Volver
Presentaciones similares
© 2025 SlidePlayer.es Inc.
All rights reserved.