Вы находитесь на странице: 1из 44

FUNDAMENTOS DE PROGRAMACION

La programacin de computadoras consiste en escribir cdigo en algn lenguaje de programacin para que una computadora realice una tarea especfica. Esta actividad es considerada por muchas personas como arte, para otros una ciencia, para otros una mera actividad econmica, para algunos una actividad divertida, un pasatiempo.
Sin embargo, para algunos, es una actividad tediosa, aburrida y muy difcil.

Algo que es indiscutible, es que el desarrollo de programas (o de software como se le conoce comnmente) es uno de los factores ms importantes en la conformacin de los grandes cambios econmicos, sociales y polticos de los tiempos recientes. Se han creado grandes fortunas.

Se han iniciado movimientos sociales, Algunos de estos movimientos han llegado incluso a derrocar gobiernos! Se ha cambiado la forma en la que la gente se entretiene, comunica y aprende. Aunque es cierto que el software no es el nico factor que ha provocado estos cambios, es un hecho que ha jugado un papel muy importante y seguramente lo seguir haciendo en el futuro.

Requisitos para POO Se asume que el estudiante conoce algn lenguaje de programacin estructurada, como el lenguaje C Tambin deber conocer y dominar el desarrollo estructurado de algoritmos para la solucin algortmica de problemas.

Existen varios tipos de habilidades y conocimientos que un programador que utiliza el paradigma orientado a objetos debe tener. Primero, debe saber resolver problemas algortmicamente.

Esta habilidad est relacionada con la aplicacin de estructuras de datos simples y estructuras algortmicas: secuenciales, de decisin y de repeticin.

Otra habilidad necesaria para desarrollar programas orientados a objetos es precisamente la de crear buenos diseos.

Es decir, programas mantenibles (fciles de entender y modificar), eficientes (que no desperdicien recursos) y robustos (que funcione adecuadamente en cualquier situacin).

Este tipo de habilidades slo se puede desarrollar con la prctica pues cada problema presenta retos y alternativas diferentes y la experiencia es insustituible para lograr esta habilidad.

Cmo se logra esta habilidad? Haciendo muchos diseos de algoritmos individualmente, nunca en equipo!!!

En el curso de POO, despus de Fundamentos de Programacin; no se incluye el diseo estructurado de algoritmos. Se asume que el lector conoce ya los conceptos bsicos de la programacin estructurada: tipos de datos, variables, operaciones aritmticas, asignacin, estructuras de decisin, seleccin, estructuras iterativas, etc.

Les quedo CLARO?

Qu es una computadora? Una computadora es una mquina capaz de procesar datos y mostrar resultados tiles (informacin) en muy diversas reas del quehacer humano Desde un videojuego hasta el clculo de la trayectoria de un misil, o las estadsticas del censo de un pas, o prcticamente cualquier actividad que requiera algn procesamiento de datos.

La computadora, junto con los avances en las comunicaciones digitales, ha acortado distancias, provocado movimientos sociales masivos, generado las fortunas ms grandes de la historia y muchos otros cambios sociales y econmicos.

Cmo funciona una computadora? Esta es una pregunta se puede contestar de muchas formas. Una forma posible sera describir los circuitos, dispositivos y dems piezas fsicas que la forman.

Otra forma sera describir su funcionamiento desde el punto de vista terico a travs de definiciones matemticas precisas, teoremas y demostraciones.

Otra ms, que es la que nosotros usaremos en este libro, es describir el funcionamiento de la computadora desde el punto de vista de un programador que la utiliza como una herramienta para el diseo y desarrollo de sus programas. Esta ltima sera una definicin prctica. Es decir, lo que debemos saber para poder programarla y as resolver los problemas que se presenten.

Podemos ver una computadora como un dispositivo que contiene los siguientes componentes
Una memoria, o almacn de datos, en donde almacenamos informacin sobre los objetos que estamos representando y en la cual podemos aadir, grabar, eliminar y modificar informacin.
Esta memoria recibe el nombre de memoria heap porque heap es una palabra inglesa que significa montn en espaol y se refiere a la forma en la cual se almacenan los objetos.

Otra memoria que contiene la computadora es una memoria temporal que slo se utiliza al realizar operaciones y que se limpia al terminar de realizar dichas operaciones.
Esta memoria recibe el nombre de stack o pila porque los datos almacenados en esta memoria son accedidos en orden inverso al cual fueron introducidos.

Adems de las dos memorias descritas anteriormente, las computadoras tienen un cerebro llamado CPU (Central Processor Unit) que es el que interpreta las instrucciones y las ejecuta.
Generalmente estas instrucciones cambiarn los datos almacenados en las dos primeras memorias mencionadas.

Finalmente, tenemos los dispositivos llamados perifricos que son impresoras, discos duros, la pantalla, teclado (tambin llamado consola por razones histricas), ratn, etc. Estos dispositivos nos permiten comunicarnos con la computadora.
El disco duro se le llama tambin memoria secundaria porque tambin almacena informacin pero esta no es directamente accesible para procesarla, es necesaria cargarla primero en cualquiera de las dos memorias mencionadas anteriormente.

Esta es pues la computadora como la usaremos en este curso. En realidad, las computadoras son ms complejas y existen an ms componentes. Sin embargo, por ahora con esto nos basta para escribir nuestros primeros programas.

Lenguajes de Programacin.
Un lenguaje de programacin nos permite comunicarle a la computadora qu debe hacer para resolver un problema. Los lenguajes de programacin nos permiten escribir programas. Los programas son las series de smbolos escritos siguiendo las reglas gramaticales de los lenguajes de programacin que instruyen a la computadora lo que debe hacer para resolver un problema.

Los programas son las series de smbolos escritos siguiendo las reglas gramaticales de los lenguajes de programacin que instruyen a la computadora lo que debe hacer para resolver un problema.

Paradigmas de los Lenguajes de Programacin. Existen varios tipos, estilos o paradigmas de los lenguajes de programacin: Programacin secuencial o imperativa, concurrente, funcional, orientada a objetos, simblica, orientada a eventos, entre otros.

Estos paradigmas o formas de programar producen lenguajes muy diferentes no slo en su sintaxis sino en la forma como el programador ve a la computadora. Por ejemplo, el paradigma orientado a objetos permite al programador concebir a la computadora como fue descrita anteriormente.

Programacin imperativa. Este paradigma fue el primero que se utiliz porque est estrechamente ligado al funcionamiento real de las computadoras. En este paradigma, se describe el estado de la computadora y el cambio de estado que va sufriendo la mquina a travs de la ejecucin de instrucciones.

La computadora slo tiene un rea de memoria en donde se almacenan datos y programas. A este modelo se le llama Mquina de Von Neumann

Los tipos de datos que pueden almacenarse son simples: enteros, flotantes, caracteres, etc. No existe la posibilidad de almacenar objetos con sus caractersticas (atributos y mtodos).

Lenguajes como C, Pascal, pertenecen a este paradigma.

Basic

Entre los conceptos principales que tiene este tipo de programacin se encuentran los siguientes:
Tipos de datos. Un tipo de dato define el conjunto de valores posibles que se pueden almacenar en un rea de la memoria. Por ejemplo, enteros, flotantes, caracteres, etc.
Variables. Las variables son reas de la memoria representadas por un identificador que pueden almacenar un dato.

Estructuras de control. Una variante de la programacin imperativa es la programacin estructurada, en la cual los programas se escriben utilizando una serie de estructuras de control que representan el orden en el que se ejecutarn las instrucciones.
Existen estructuras de seleccin como el if-then, el if-then-else y estructuras iterativas como el while, do-while y el for.

Instrucciones de Entrada/Salida. Para que el programa pueda interactuar con el usuario, son necesarias las instrucciones de entrada/salida, las cuales permiten introducir informacin a la computadora y mostrar informacin en algn dispositivo como la pantalla o la impresora. Constantes. Existen valores que son conocidos y que no cambian bajo ninguna circunstancia. Por ejemplo, la constante (Pi) cuyo valor aproximado es 3.1415926535897932384626433.

Funciones. El concepto de funcin en programacin es muy similar al concepto de funcin matemtica.


Es un mapeo entre uno o varios valores de entrada llamados argumentos de la funcin y un valor de salida el cual decimos que es el valor que regresa la funcin

Es importante y relevante que quede claro el concepto de que todo programa de computadora, requiere de valores (datos) de entrada, un proceso y una salida de resultados.

ENTRADA (DATOS)

PROCESO

SALIDA
(RESULTADOS)

Lo anterior tambin es valido al momento de disear el algoritmo del programa, el algoritmo deber tener ENTRADA, PROCESO y SALIDA

A continuacin presentamos un programa escrito en lenguaje C que lee un nmero y calcula e imprime su factorial. Recordemos que el factorial de un nmero es la multiplicacin de todos los nmeros enteros entre 1 y el nmero. As, el factorial de 4 es: 1x2x3x4 = 24. La operacin del factorial se representa por el smbolo de admiracin. Entonces 4! = 24.

Programa en C que calcula y muestra el factorial de un nmero.

Las lneas 1 y 2 incluyen funciones estndar que son necesarias para la entrada y salida de datos las cuales se realizan en las lneas 8,9 y 14. Las lneas 5,6 y 7 declaran variables enteras. La lnea 5 no asigna un valor inicial a la variable numero a diferencia de las lneas 6 y 7 las cuales si asignan valores iniciales a las variables i y factorial respectivamente. Esto es debido a que el valor que tomar la variable numero ser dado por el usuario del programa.

Para esto se requiere que el programa lea el valor del teclado de la computadora. La instruccin que realiza esa lectura est en la lnea 9. El uso de la funcin printf, lnea 8, se hace necesario para establecer el dialogo entre el programa y el usuario del programa (ENTRADA de datos).

La lnea 10 corresponde a la estructura iterativa while. Esta estructura indica a la computadora que mientras el valor de la variable i sea menor o igual al valor de la variable numero se ejecutarn las instrucciones de las lneas 11 y 12 (PROCESO). Palabras claves que hay que conceptualizar muy bien, pues su uso ser continuo e intenso en el uso del lenguaje C son: FUNCION, CONDICION

La lnea 14 muestra en la pantalla el valor del nmero y de su factorial (SALIDA).

La lnea 16 hace una pausa en la ejecucin del programa para que el usuario pueda ver el resultado.

Resultado de la ejecucin del programa en C del clculo del factorial de un nmero

Programacin Lgica Este tipo de programacin utiliza definiciones matemticas a travs de predicados lgicos. Este paradigma de programacin se le llama declarativa debido a que el programador no especifica de manera procedural (o sea, instruccin por instruccin) el programa, sino que escribe declaraciones a travs de predicados que le permiten razonar a la computadora y obtener un resultado. Utilizando la definicin matemtica del factorial: es realmente muy simple escribir un programa en el lenguaje PROLOG que calcule el factorial de un nmero.

Como puede observarse fcilmente, el programa en PROLOG est basado en la definicin matemtica del factorial. El programador no tiene que preocuparse por escribir estructuras iterativas, ni pensar en el estado de la computadora ni como las instrucciones afectan dicho estado.

Programacin Orientada a Objetos


Como una breve introduccin a este paradigma, presentaremos a continuacin el mismo ejemplo del factorial resuelto en el lenguaje Java, el cual es uno de los lenguajes ms representativos del paradigma orientado a objetos. El programador que utiliza el paradigma orientado a objetos visualiza a la computadora como una mquina capaz de representar internamente objetos con sus propiedades (atributos y mtodos). Los programas orientados a objetos constan de un grupo de objetos que se comunican a travs del paso de mensajes.

Programa en Java para el clculo del factorial de un nmero

Resultado de la ejecucin del programa en Java

Lo primero que salta a la vista del listado del programa en Java es que es ms complicado que los otros dos ejemplos presentados. Entonces Para qu complicarse la vida? Para qu usar Java si usando C (o PROLOG) podramos resolver el problema de manera ms sencilla? La respuesta es que para muchos problemas ms complejos (que son los que probablemente tengamos que resolver en la vida profesional) es ms adecuado este paradigma.
Realizar un trabajo de investigacin sobre la historia de los lenguajes de programacin.

Tarea:
1.- Cul es la relacin entre paradigma de programacin, lenguaje de programacin y programa? 2.- De los lenguajes de programacin mencionados en este captulo, cul sera el ms conveniente para calcular el rea de un crculo dado su radio? Justifique su respuesta 3.- Cul es la diferencia entre un lenguaje de alto nivel y un lenguaje de bajo nivel?