Professional Documents
Culture Documents
FUNDAMENTOS
DE PROGRAMACIÓN
Asignatura correspondiente al plan de estudios
de la carrera de Ingeniería Informática
UNIDAD 5
INTRODUCCIÓN A LA
PROGRAMACION
UNIDAD 6
Introducción a la la Programación
Resumen de Conceptos
Introducción
En las unidades anteriores se han resuelto numerosos problemas escribiendo
algoritmos mediante un pseudolenguaje o mediante diagramas de flujo. Para
probar estos algoritmos se efectuaron pruebas de escritorio, ejecutando acciones
y simulando lo que haría una computadora. A partir de aquí, se codificarán estas
soluciones algorítmicas empleando un lenguaje de programación interpretable
por una computadora, creando un programa. De esta forma, será la propia
computadora la que ejecute el algoritmo y realice las acciones que conforman la
solución.
En esta unidad temática se abordarán los conceptos básicos relativos a la
creación de programas. En primer lugar se hará una revisión de las etapas más
importantes de la resolución de problemas. Luego, se explicará la forma en que
se ejecutan (prueban) los programas. Como en general los programas no
funcionan correctamente -la primera vez que se ejecutan- será necesario
eliminar los errores, proceso que se denomina depuración de los programas.
Revisión de Conceptos
Se estudió en la Unidad 1 el proceso de resolución de problemas
computacionales, donde se distinguen las etapas siguientes.
Inicio
Definición del
problema
Análisis del
problema
Programación
SI Prueba
Error?
NO
Fin
P1 P2 P3 ................. Pn
Algoritmo
En esta etapa se plantea en base a la estrategia, el conjunto de acciones que
permitirán resolver el problema, mediante pseudocódigo, diagrama de flujo, etc.
Programa
Código Ejecutable
El Proceso de Compilación
El proceso de compilación es una traducción del código fuente a un código
ejecutable por la computadora. El resultado de compilar un archivo o programa
fuente es un nuevo archivo llamado imagen ejecutable.
Programa fuente
COMPILACION
Programa objeto
ENLACE Bibliotecas de
(linking) código objeto
Imagen ejecutable
El Proceso de Interpretación
En este caso el intérprete procesa instrucción por instrucción, sin generar un
código ejecutable completo. Cada vez que el usuarios necesita el ejecutar el
programa deberá llamar al intérprete para que lo ejecute línea por línea.
Ventajas
Compilación Interpretación
Errores de sintaxis antes de la Ejecución en una sola etapa
ejecución Proceso interactivo de depuración
Velocidad de ejecución
Protección del código.
Desventajas
Compilación Interpretación
Proceso en varias etapas y a menudo Errores de sintaxis detectados
engorroso. (*) durante la ejecución.
Depuración laboriosa Baja velocidad de ejecución.
Código abierto.
(*) NOTA: existen compiladores con entornos de desarrollo integrados (IDE) que
simplifican esta tarea.
Depuración de Programas
Depuración o “debugging“ significa eliminar los errores de un programa. En
ciertos casos esa depuración es sencilla, pero a menudo constituye un proceso
penoso. Esto depende de los tipos de errores de un programa.
Errores de un Programa
i) Errores en Tiempo de Compilación: son aquellos en los que se infringen las
reglas que definen la estructura de las declaraciones y sentencias. Estos errores
son denominados también errores de sintaxis. Los errores de sintaxis más
comunes son: errores tipográficos, falta del punto y coma final y utilización de
variables que no han sido declaradas previamente.
ii) Errores en Tiempo de Ejecución: los programas contiene estos errores
cuando, a pesar de contar con sentencias sintácticamente válidas, se producen
errores al ejecutar estas sentencias. Por ejemplo, un programa podría intentar
utilizar un archivo que no existe en el disco o dividir un número por cero.
iii) Errores de Lógica: en muchos casos el programa arroja resultados
incorrectos a pesar de que no posea errores de sintaxis y tampoco de errores al
ejecutarse. En general se trata de los casos en que el programa no realiza las
tareas que originalmente se solicitaron en la definición del problema. Por
ejemplo, puede que un problema requiera multiplicar dos números; por error, se
diseña un algoritmo que los suma. Al probar el programa, se observaría que no
hay errores de sintaxis, tampoco errores de ejecución y, sin embargo, al darle
dos números al programa devolvería un valor inesperado.
Lenguajes de Programación
Los algoritmos se convierten en programas al ser codificados empleando
lenguajes, cuyas instrucciones pueden ser procesadas por una computadora.
Pero las computadoras procesan los programas de acuerdo al tipo de lenguaje
utilizado.
Existen varias decenas de de lenguajes de programación y a su vez muchas
versiones de cada uno de ellos. En base a la similitud de estos lenguajes de
programación respecto de nuestro lenguaje natural se los puede clasificar en 3
tipos: Lenguajes de Máquina, Lenguajes Ensambladores y Lenguajes de alto
Nivel.
Lenguajes de Máquina
Los lenguajes de Máquina generan programas usando instrucciones que pueden
ser resuletas directamente por el procesador de la computadora sin mediar
trraducciones.
Recuérdese que una computadora es un dispositivo electrónico que solo puede
procesar dos estados de señales eléctricas: encendido y apagado; si se
representan estas señales mediante un modelo matemático binario usando ceros
y unos, es posible representar instrucciones que conformen un programa.
Por ejemplo para sumar dos números se puede escribir:
Este tipo de lenguaje tiene la ventaja de que sus programas pueden ser
ejecutado directamente sin un proceso de traducción previo, lo cual implica una
velocidad del proceso óptima. Como contrapartida, puede observarse que aún
en problemas sencillos, el código es complejo de crear, carece de legibilidad, es
muy complejo de depurar ante la presencia de errores, y tiene total dependencia
del procesador del la computadora.
En respuesta a estos problemas se crearon lenguajes intermedios más cercanos
al nivel del lenguaje natural que usan las personas para comunicarse.
Paradigmas de Programación
Tema elaborado por la cátedra Paradigmas de Programación” de la Fec. Reg. Bs.As. de
UTN. Disponible en http://www.tadp.com.ar/paradigmas/3
Paradigmas procedimentales
También llamados operacionales, la característica fundamental de estos
paradigmas es la secuencia computacional realizada etapa a etapa para resolver
el problema.
Los programas realizados con lenguajes procedimentales deben incluir en su
codificación las instrucciones de control para determinar el flujo de la ejecución,
como decisiones, iteraciones y otras, conformando, de esta manera, diferentes
“algoritmos”.
Actúan modificando repetidamente la representación de sus datos, basándose
en asignaciones destructivas con efecto de lado. Utilizan un modelo en el que las
variables están estrechamente relacionadas con direcciones de la memoria del
ordenador. Cuando se ejecuta el programa, el contenido de estas direcciones se
actualiza repetidamente, pues las variables reciben múltiples asignaciones, y al
finalizar el trabajo, los valores finales de las variables representan el resultado.
Su mayor dificultad reside en determinar si el valor computado es una solución
correcta del problema, por lo que se han desarrollado multitud de técnicas de
depuración y verificación para probar la corrección de los problemas
desarrollados basándose en este tipo de paradigmas.
En otras palabras, se basan en “cómo” lograr la solución.
Paradigmas declarativos
Los paradigmas declarativos se basan en desarrollar programas especificando o
“declarando” un conjunto de proposiciones, condiciones, restricciones,
afirmaciones, ecuaciones o transformaciones que caracterizan al problema y
describen su solución.
A partir de esta información el sistema utiliza mecanismos internos de control
que evalúan y relacionan adecuadamente dichas especificaciones, de manera de
obtener la solución. No se necesita de la puntualización de los pasos a seguir
para alcanzar una solución, ni instrucciones de control que conformen
algoritmos.
Estos paradigmas permiten utilizar variables para almacenar valores intermedios,
pero no para actualizar estados de información. Si bien sus variables se
Principales paradigmas
Paradigmas procedimentales:
Paradigma Orientado a Objetos
Paradigma Imperativo
Paradigmas declarativos:
Paradigma Funcional
Paradigma Lógico
Otros paradigmas:
Paradigma Heurístico
Paradigma Concurrente
Síntesis
1. Para poder utilizar un programa la computadora debe interpretarlo o
compilarlo previamente.
Actividades
Ejercicios
Ejercicio 5.1
Encienda su computadora e inicie el sistema operativo instalado en su PC.
Ejecute la aplicación Borland C++ Builder (Windows) o Borland Kylix (Linux) y
desde el menú FILE|NEW seleccione la opción Console Wizard para crear una
aplicación independiente de los componentes visuales del entorno gráfico.
Ejercicio 5.2
i) Escriba en la ventana de edición del programa anterior el código fuente C++
del recuadro siguiente. No escriba los números de línea (solo se indican para
hacer referencias a las sentencias)
16 while (i<n)
17 { i++;
18 cout<<endl<<"Valor "<<i<<"=";
19 cin>>x;
20 suma=suma+x;
21 }
22 float prom=suma/n;
23 cout<<endl<<endl;
24 cout<<"Promedio="<<prom;
25 getch();
return 0;
26 }
ii) Salve el programa fuente en disco en una carpeta nueva con el nombre
g5ejer2.cpp
iii) Compile y ejecute el programa.
iv) Si tuvo errores de sintaxis trate de interpretarlos y corregirlos, hasta que la
compilación sea exitosa.
v) Analice la lógica el programa e incorpore comentarios en el código que
faciliten su interpretación.
vi) Salga del entorno de C++Builder/Kylix y ubique el archivo ejecutable que
generó la compilación y pruebe ejecutarlo directamente.
Ejercicio 5.3
Modifique las siguientes líneas del programa anterior para producir errores de
sintaxis o simplemente algunos cambios. Interprete los errores y las
modificaciones efectuadas.
i) Quite la palabra float de la línea 12.
ii) Elimine <<endl en la línea 13
iii) Quite la línea 4 completa.
Ejercicio 5.4
Modifique el programa C++ del ejercicio 2 para obtener el promedio de un
conjunto de calificaciones de un grupo de alumnos. Los datos terminan con la
nota 9999. Guarde este programa con el nombre g5ejer4.cpp
Cuestionario
5.1. A partir de considerar los tres tipos de errores descriptos en los párrafos
anteriores y las etapas para la resolución de un problema utilizando la
programación responda la siguiente pregunta:
¿Cuáles son los errores más frecuentes en el diseño de un programa?
Recordatorio
Fundamentos de Programación
Régimen de evaluación y promoción 2008
Evaluaciones parciales
Se efectuarán 2 evaluaciones parciales de carácter individual. Para el cálculo del
promedio entre ambas calificaciones, la del 2do parcial se computa doble. Solo se
recupera el 2do Parcial y la nota del recuperatorio sustituye la nota inicial.
Promoción
Promoverán directamente la asignatura sin examen final, aquellos alumnos que
obtengan simultáneamente:
a. Calificación de 75% o más de promedio entre las 2 evaluaciones parciales
(computando doble el 2do parcial)
b. 75% de asistencia a las clases teóricas y prácticas.
Se admite la recuperación del 2do parcial para promover la materia.
Regularidad
Los alumnos que no promuevan directamente la asignatura pero cumplan con las dos
condiciones siguientes, serán considerados alumnos regulares:
a. Promedio de 50% entre los 2 parciales (la nota del 2do parcial vale doble).
b. 75% de asistencia a las clases teóricas y prácticas.
Alumnos Libres
Serán considerados libres quienes no cumplan con las condiciones de regularidad.
Los alumnos libres rendirán el mismo examen final que los alumnos regulares, más
ejercicios y/o preguntas adicionales.