UNIVERSIDAD TECNOLÓGICA NACIONAL INGENIERIA EN

Anuncio
Algoritmos y Estructuras de Datos
Unidad 1
UNIVERSIDAD TECNOLÓGICA NACIONAL
INGENIERIA EN SISTEMAS
Cátedra:
"ALGORITMOS Y ESTRUCTURAS DE DATOS”
UNIDAD Nº 1
CONCEPTOS BÁSICOS SOBRE PROGRAMACIÓN
Ing. Esp. Rosanna M. MAINIERI
Ing. Esp. Rosanna M. MAINIERI – Página 1 de 10
Algoritmos y Estructuras de Datos
Unidad 1
UNIDAD 1:
CONCEPTOS BASICOS SOBRE PROGRAMACION








Objetivo General de la Materia ........................................................ 3
Conceptos básicos sobre programación.......................................... 3
Lenguajes de Programación............................................................ 5
Resolución de un Problema............................................................. 6
Diagramación................................................................................... 6
Programación .................................................................................. 7
Programación Estructurada ............................................................. 7
o Programación Modular.......................................................... 7
o Diseño Descendente............................................................. 8
o Programación Estructurada .................................................. 9
Bibliografía..................................................................................... 10
Ing. Esp. Rosanna M. MAINIERI – Página 2 de 10
Algoritmos y Estructuras de Datos
Unidad 1
Objetivo General de la materia:
“Desarrollar la destreza o habilidad en los alumnos de crear programas
para resolver problemas, no solo funcionalmente efectivos, sino
fundamentalmente correctos desde un punto de vista metodológico, en
procura de la eficiencia durante todo su ciclo de vida”.
CONCEPTOS BASICOS SOBRE PROGRAMACION
Contenidos: Algoritmo, acción, autómata, programa, lenguaje de
programación, sentencia, codificación, diagramación, programación,
Programación Estructurada.
A diario nos enfrentamos, ya sea en la vida como en la carrera universitaria, con
problemas.

Qué debemos hacer con ellos?
Resolverlos.
Para ello se necesita una serie de pasos que lo resuelvan. Esa serie de pasos o
acciones se llama algoritmo. Este término, como se ve, es el primer término del
nombre de la asignatura.
Algoritmo: es una serie de pasos o acciones necesarios para resolver un
problema.
PROBLEMA
ALGORITMO
Por ejemplo, una receta de cocina es un algoritmo, ya que contiene una serie de
pasos que hay que ejecutar para preparar un plato de comida. En estas recetas
además figuran los ingredientes, que son los objetos que se deben procesar para
preparar el plato. En nuestra materia, los datos (información) serán los objetos a
“procesar” para llegar a obtener la solución del problema. En el nombre de la
materia aparece en segundo lugar el término “estructura de datos”, que hace
referencia a la forma en que se debe manejar a los datos, que serán los objetos
con los que se trabajará.
Acción: es un hecho que se desarrolla en un lapso finito.
Ing. Esp. Rosanna M. MAINIERI – Página 3 de 10
Algoritmos y Estructuras de Datos
Unidad 1
Ahora bien, en nuestra materia ¿quién será el encargado de ejecutar esas
acciones? La computadora o autómata. Necesitamos entonces, darle
al
autómata una serie de órdenes para que pueda ejecutar las acciones en
respuesta a esas órdenes y así resolver el problema.
Autómata: máquina o instrumento que produce acciones en respuestas a
órdenes para resolver un problema.
Estas acciones surgen como respuesta a órdenes, estas órdenes o instrucciones
componen el programa que le será dado al autómata para que pueda trabajar. El
autómata no es el autor, sino el ejecutante de la acción.
Acción <> Orden
Programa: es un texto compuesto por un conjunto de órdenes que al ser
ejecutadas por un autómata produce una secuencia de acciones que resuelven un
problema.
Una acción produce un resultado, es decir, se obtiene una modificación del
entorno del sistema en estudio. Hay un estado inicial del sistema, luego de
ejecutarse la acción o conjunto de acciones, hay un estado final del sistema, que
es distinto al inicial.
Por ejemplo, si la acción fuera ABRIR LA PUERTA :


Estado inicial: Puerta cerrada
Estado final: Puerta abierta
Existen dos tipos de acciones:
1) Primitivas o Simple
2) Compuestas
1) Acción primitiva, elemental o simple: Acontecimiento ejecutable por un
instrumento en respuesta a una única orden.
2) Acción compuesta o proceso: es una secuencia de acciones, organizadas en
el tiempo
El hombre debe informarle a la máquina cómo resolver un problema, esto lo hace
por medio de un programa, como ya se dijo, es un texto, y debe estar escrito en
un lenguaje que la máquina entienda.
Lenguaje de Programación: Conjunto de elementos y reglas que deben tenerse
en cuenta para escribir un programa, para un cierto autómata.
Sentencia: es una orden escrita en un lenguaje de programación.
El algoritmo es entendido por los hombres, pero para que pueda ser entendido
por el autómata se lo debe traducir mediante un lenguaje que la máquina
comprenda, es decir, mediante un lenguaje de programación y así se obtiene un
programa.
Ing. Esp. Rosanna M. MAINIERI – Página 4 de 10
Algoritmos y Estructuras de Datos
Unidad 1
PROBLEMA
ALGORITMO
PROGRAMA
LENGUAJES DE PROGRAMACION
Los lenguajes se clasifican en lenguajes de Bajo Nivel y de Alto Nivel.
Lenguajes de Bajo Nivel
Lenguaje de Máquina: Es el lenguaje que entiende la computadora y está
compuesto por instrucciones codificadas en binario, es decir por 0 y 1. Es el
primer lenguaje que se empleó en la programación de ordenadores.
Lenguaje Ensamblador: Fue el primer intento de sustituir el lenguaje de máquina
por un lenguaje parecido al utilizado por las personas. Se utilizan conjuntos de
caracteres para representar las instrucciones del lenguaje de máquina, para una
computadora en particular.
Para este lenguaje se necesita un programa llamado ensamblador que traduce las
instrucciones escritas en lenguaje ensamblador a lenguaje de máquina.
Lenguajes de Alto Nivel
Son posteriores a los de bajo nivel. Las instrucciones se escriben con palabras
específicas, con significado para el hombre, y se crearon con los siguientes
objetivos:



Lograr la independencia del ordenador
Aproximar aún más sus instrucciones al lenguaje humano. Utilizan palabras
en lugar de cadenas de símbolos sin aparente significado
Suministran librerías de rutinas con las funciones de uso frecuente
(entrada, salida, etc.)
Traductores
Los programas que no están escritos en lenguaje de máquina deben ser
traducidos a código binario para que puedan ser comprendidos por el autómata.
Existen dos tipos de traductores: los intérpretes y los compiladores.
Intérprete: Es un programa que toma al programa escrito en lenguaje de alto nivel
y lo traduce y ejecuta, línea por línea.
Compilador: Es un programa que traduce todo el programa escrito en lenguaje de
alto nivel (Programa Fuente) y obtiene un programa escrito en código de máquina
(Programa Objeto). Luego, el programa objeto es el que se ejecuta.
RESOLUCION DE UN PROBLEMA
Ing. Esp. Rosanna M. MAINIERI – Página 5 de 10
Algoritmos y Estructuras de Datos
Unidad 1
Al encarar la resolución de un problema debe diferenciarse dos etapas:
1) Obtención del algoritmo
1.1) Estudio del enunciado
1.2) Creación del algoritmo
2) Codificación del algoritmo
La primera es la de mayor importancia y la más delicada, la codificación puede
incluso resultar un trabajo rutinario y hasta existen herramientas que lo resuelven
automáticamente.
Obtener un algoritmo: es inventar la resolución de un problema, sin tener en
cuenta el lenguaje con el cual se va a programar, por lo tanto, la actividad
principal es pensar en el problema
Codificar: es aplicar sistemáticamente las definiciones y reglas de un lenguaje de
programación a las acciones especificadas en el algoritmo.
De las dos partes de ‘Obtención del algoritmo’ la primera, el ‘Estudio del
enunciado’, es la prioritaria, pues si el problema no está perfectamente definido y
comprendido, cualquier algoritmo que se obtenga va a ser incorrecto, con él no se
resolverá nada, o se resolverá un problema distinto al deseado.
El estudio del enunciado es conocer perfectamente cuál es el problema que se
debe resolver, a este punto se le debe dedicar todo el tiempo que sea necesario.
Se deberá determinar muy claramente:


¿Qué se pretende obtener como resultado?
¿Cuáles son los datos de los que se dispone?
DIAGRAMACION
Al crear un algoritmo, éste debe ser entendido por las personas, no por las
máquinas, por lo cual no requieren serias restricciones sintácticas ni semánticas
para ser entendidas, pero es conveniente usar una representación generalizada
para representarlos, esto es diagramar.
Diagramar: representar un algoritmo sobre un soporte físico
La diagramación puede ser:


Esquemática: se representa al algoritmo como un texto (pseudocódigo).
Gráfica: se representa al algoritmo como un gráfico. (Diagrama de Chapin o
Nassi-Schneiderman, de Flujo, de Jackson)
Ing. Esp. Rosanna M. MAINIERI – Página 6 de 10
Algoritmos y Estructuras de Datos
Unidad 1
PROGRAMACION
Entendemos a la programación como la planificación, proyección, desarrollo e
implementación de la resolución de un problema, la que abarca obviamente a la
creación del algoritmo.
Un profesional en la programación debe encarar la solución del problema de
forma tal que su producto sea útil ahora y en el futuro, estando o no él en el centro
de cómputos. Para lograr esto debe tener muy presentes las futuras posibles
modificaciones del mismo.
Las características, entonces, que debe tener un programa son:
1) Claridad algorítmica
2) Legibilidad
3) Modificabilidad
1) Que sea claro significa, que su resolución algorítmica sea sencilla, que esté
correctamente estructurado, resultando de fácil comprensión.
2) Que sea legible significa que cuando se codificó se eligió bien los nombres de
los objetos utilizados, se agregaron comentarios para indicar lo que se va
haciendo y se diagramó bien el texto para resaltar el contenido semántico
sobre lo sintáctico.
3) Que sea fácilmente modificable, implica que cualquier modificación del
problema que genere un agregado, supresión o cambio de alguna de sus
partes, no debe obligar a cambiar todo el programa, sino sólo una parte.
PROGRAMACIÓN ESTRUCTURADA
Para entender el concepto de programación estructurada debemos antes tener en
claro dos conceptos previos: Programación Modular y Diseño Descendente.
Programación Modular
La programación modular es uno de los métodos de diseño más flexible y
potentes para mejorar la productividad de un programa. En programación modular
el programa se divide en módulos (partes independientes), cada una de las cuales
ejecuta una única actividad o tarea y se codifican independientemente de otros
módulos. Cada uno de estos módulos se analizan, codifican y ponen a punto por
separado.
Módulo, Acción Compuesta, Proceso, Subprograma o Subalgoritmo:: Es un
conjunto de acciones (sentencias), agrupadas bajo un nombre, que resuelven
una tarea o subproblema.
Ing. Esp. Rosanna M. MAINIERI – Página 7 de 10
Algoritmos y Estructuras de Datos
Unidad 1
Cada programa contiene un módulo denominado programa principal que controla
todo lo que sucede. Este programa principal es el que transfiere el control a los
otros módulos (subprogramas), de modo que ellos pueden ejecutar sus funciones.
Cuando el módulo haya completado su tarea devuelve el control al módulo
principal. Si la tarea asignada a un módulo es demasiada compleja, éste deberá
romperse en otros módulos más pequeños.
Los módulos son unidades estancas, es decir son independientes entre sí, en el
sentido en que ningún módulo puede tener acceso directo a cualquier otro módulo
excepto a sus propios submódulos.
Diseño Descendente
(Metodo Descendente, Top Dwn o de Refinamientos Sucesivos)
El diseño descendente consiste en encontrar la solución de un problema mediante
la aplicación sistemática de descomposición en subproblemas cada vez más
simples. Aplicando la máxima de divide para vencer.
En este proceso se descompone al problema en subproblemas, cada uno de los
cuales debe resolverse mediante un subprograma. Se determinan una serie de
niveles o pasos sucesivos de refinamientos (subproblemas). Se establecen
etapas o estructuras jerárquicas, de forma que se puede considerar cada
estructura desde dos puntos de vista: ¿qué hace? y ¿cómo lo hace?
Se debe encarar la resolución de un problema en una primera instancia, como
una secuencia de pocos y sencillos pasos (procesos o subproblema) que
abarquen todo el problema, sin entrar en detalles. Esto, sin tener en cuenta quién
o cómo los va a ejecutar.
Se debe proponer una buena definición para cada uno de esos pasos para
transformarlos en nuevos subproblemas independientes, con las correctas
especificaciones de sus datos y sus resultados.
Luego, en una segunda instancia, se trata a cada uno de ellos en mayor
profundidad, aplicándole a su vez el mismo método. Es decir, se toma a cada
subproblema como un nuevo problema y se lo resuelve en pocos pasos. Este
proceso continúa, tomando a cada nuevo subproblema como un nuevo problema,
el cual hay que resolver encontrando nuevamente una serie de pasos. Se sigue
así hasta que todos los sub-algoritmos estén compuestos por acciones primitivas.
Lo más interesante del método, es que mediante este proceso reiterativo, se trata
en forma separada lo global de los detalles. Resulta más sencillo resolver al
problema subdividiéndolo en subproblemas siendo así más fácil llegar a la
solución y además es conveniente aplicar este método ya que habitualmente se
trabaja en equipo y cada grupo del equipo, entonces, puede encargarse de
resolver una parte, ensamblando luego todas las soluciones de estos
subproblemas.
Ing. Esp. Rosanna M. MAINIERI – Página 8 de 10
Algoritmos y Estructuras de Datos
Unidad 1
Programación Estructurada
La programación estructurada es una técnica de programación, que se introdujo
en la segunda mitad de la década del sesenta, y significa escribir un programa de
acuerdo a las siguientes reglas:



El programa tiene un diseño modular
Los módulos son diseñados de modo descendente
Cada módulo utiliza sólo las tres estructuras básicas de control: secuencia,
selección y repetición
Estas técnicas aumentan considerablemente la productividad del programa
reduciendo en elevado grado el tiempo requerido para escribir, verificar, depurar y
mantener los programas.
La programación estructurada es el conjunto de técnicas que incorporan:



Recursos abstractos
Diseño Descendente
Estructuras Básicas de control
Esta programación se auxilia de los recursos abstractos en lugar de los recursos
concretos de que dispone un determinado lenguaje de programación.
Ing. Esp. Rosanna M. MAINIERI – Página 9 de 10
Algoritmos y Estructuras de Datos
Unidad 1
BILBIOGRAFÍA
DALE Nell, WEEMS Chip, (1989), PASCAL, Ed. Mc. Graw Hill, España
DE GIUSTI Armando, (2001), Algoritmos, Datos y programas, Ed. Prentice Hall,
Fac. de Informática, Univ. Nac. La Plata, Argentina.
JENSEN Kathleen, WIRTH Niklaus, (1987), PASCAL Manual del usuario e
informe, Ed. El Ateneo, Argentina.
JOYANES AGUILAR Luis, (1996), Fundamentos de Programación, Ed. Mc GrawHill, España.
Ing. Esp. Rosanna M. MAINIERI – Página 10 de 10
Descargar