Professional Documents
Culture Documents
a la programacin
M. Jess Marco Galindo
Josep Vilaplana Past
P05/75062/00108
FUOC P05/75062/00108 Introduccin a la programacin
ndice
Introduccin .............................................................................................. 5
Objetivos ..................................................................................................... 6
Resumen ...................................................................................................... 22
Glosario ....................................................................................................... 23
Bibliografa ................................................................................................ 23
FUOC P05/75062/00108 5 Introduccin a la programacin
Introduccin
Antes de entrar en materia tenemos que saber de qu hablamos. Para poder se-
guir el discurso de la asignatura es indispensable conocer, en primer lugar, el
significado de los conceptos con que trabajaremos. En el primer apartado de
este mdulo definiremos estos conceptos bsicos.
A partir de los conceptos podremos dar un paso adelante y seguir con el segun-
do apartado, que nos presenta la programacin como una disciplina de la in-
geniera y nos muestra cmo hay que emprender el desarrollo de un programa
para convertirse en un buen profesional. Pensad que la programacin no es un
arte, sino una tcnica.
Una vez situados y conocidos todos estos aspectos, en el mdulo siguiente es-
taremos en condiciones de empezar el aprendizaje de las herramientas y m-
todos que necesitamos para desarrollar un programa.
FUOC P05/75062/00108 6 Introduccin a la programacin
Objetivos
Para entender en qu consiste la programacin como disciplina y cules son Encontraris los objetivos
de los fundamentos de la
los objetivos de esta asignatura, necesitamos, antes que nada, comprender los programacin en el apartado 3
de este mdulo.
conceptos bsicos que deberemos utilizar. As pues, los definiremos de una
manera sencilla y clara.
1.1. Definiciones
Situmonos primero en uno de los conceptos ms importantes con los que tra-
bajaremos: el concepto de algoritmo.
Definicin de algoritmo
Un algoritmo se define como una descripcin no ambigua y precisa de segn el diccionario
las acciones que hay que realizar para resolver un problema bien defini- Segn el Diccionario de la
do en un tiempo finito. Lengua Espaola de la R.A.E,
algoritmo es:
Conjunto ordenado y finito de
operaciones que permite hallar
la solucin de un problema.
Por lo tanto, podemos pensar en un algoritmo como una receta o guin que
hay que seguir para resolver un problema determinado, normalmente a partir
de una informacin que tenemos de entrada (por ejemplo, una receta para co-
cinar un plato). Un algoritmo, sin embargo, es un mtodo general para resol-
ver todos los casos posibles del mismo problema y, por lo tanto, debe ser
independiente de los datos de entrada de cualquier caso concreto.
El entorno es el conjunto de objetos necesario para llevar a cabo una tarea de-
Ejemplo de entorno
terminada. El estado del entorno en un momento determinado es la descrip- y estado
cin del estado de los objetos del entorno en aquel momento concreto. Un En el caso de una receta de
algoritmo acta de manera que hace cambiar progresivamente el estado de su cocina, el entorno estara con-
formado por los utensilios de
entorno. cocina (ollas, sartenes, etc.)
y los ingredientes.
El estado de las sartenes, por
Una accin es un suceso finito en el tiempo y que tiene un efecto definido y ejemplo, cambiar de limpias
a sucias.
previsto. Una accin puede actuar sobre un entorno y lo puede modificar, es
decir, se parte de un estado inicial y se llega a un estado final diferente. Una
accin elemental es una accin que el destinatario de un algoritmo entiende
y sabe procesar.
Una vez hemos llegado a este punto, ya hemos definido la mayora de los con-
ceptos principales con los que trabajaremos; y prestad atencin al hecho de
que, curiosamente, todava no hemos hablado de programas.
Ejemplos de lenguajes
Aunque ya tenemos una idea de lo qu es, un ordenador se puede defi- de programacin
nir formalmente como una mquina compuesta por circuitos electrni- Algunos lenguajes de programa-
cos que tiene la capacidad de resolver problemas bajo el control de unas cin son Pascal, C, C++, Cobol,
Fortran, VisualBasic, Java, etc.
instrucciones dadas. Un ordenador est formado bsicamente por un
procesador, la memoria y los dispositivos de entrada y salida que permi-
ten su comunicacin con el exterior.
Otra definicin
de ordenador
El ordenador procesar nuestros algoritmos, pero para hacerlo es necesario
que entienda nuestro lenguaje algortmico. Ser preciso, pues, transcribir En este punto, podemos defi-
nir tambin un ordenador
nuestros algoritmos a un lenguaje de programacin, es decir, a un lenguaje ca- como un autmata de clculo
gobernado por un programa.
paz de ser comprendido por un ordenador.
FUOC P05/75062/00108 9 Introduccin a la programacin
Ejemplos de lenguajes
de programacin
En esta asignatura estudiaremos slo la programacin imperativa, que tradicio-
a) Ejemplos de lenguajes
nalmente ha sido la ms extendida y utilizada. imperativos: Pascal, Cobol y C.
b) Ejemplos de lenguajes
declarativos:
Algunos lenguajes de programacin facilitan el seguimiento de una metodo- Lenguajes funcionales: Lisp.
loga concreta de programacin. Una de las ms ampliamente aceptada actual- Lenguajes lgicos: Prolog.
1.2. Ejemplos
En realidad, algunos de los conceptos que hemos visto son aplicables a cualquier
entorno del mundo real, no estn restringidos al entorno de la informtica.
Si pedimos a nuestra lavadora que nos lave la ropa blanca, la lavadora seguir
el proceso siguiente:
Todo este conjunto de acciones que la lavadora ha llevado a cabo sera el al-
Otros ejemplos
goritmo que este aparato sigue para lavar la ropa blanca. de algoritmos
As pues, un algoritmo nos indica las acciones que hay que seguir para
resolver un problema concreto, pero necesitamos un autmata (proce-
sador) que sea capaz de ejecutarlo y un entorno afectado (ropa, agua,
bombo, etc.).
Tambin es importante observar el hecho de que puede haber ms de un algo- Es importante que recordis
esto cuando hablemos de la
ritmo que resuelva el mismo problema, as como algn problema para el que especificacin, en el mdulo
Introduccin a la algortmica
de esta asignatura.
no existe ningn algoritmo que lo solucione.
Volviendo a nuestro entorno, el ordenador es el autmata que debe ser capaz * Por ejemplo, que nos calcule
la media de cuatro nmeros
enteros determinados.
de resolver los problemas que le planteemos*.
algoritmo media;
var
n, suma, i: entero ;
resultado: real;
fvar
suma := 0;
i := 1;
mientras i 4 hacer
leerEntero(n);
suma := suma + n;
i := i + 1
fmientras
resultado := enteroAReal(suma)/4.0;
escribirReal(resultado)
falgoritmo
FUOC P05/75062/00108 12 Introduccin a la programacin
Para comprender mejor los objetivos concretos de la asignatura, veremos ahora a Encontraris los objetivos que
se especifican en el apartado 3
grandes rasgos cules son las etapas que clsicamente se siguen para desarrollar de este mdulo didctico.
un programa.
Para obtener un programa que resuelva un problema, hay que pasar por las si-
Observacin
guientes etapas:
Recordad que nos movemos
dentro del paradigma de
la programacin imperativa. Si
1. Anlisis de requerimientos. Definicin del problema
siguisemos otros tipos de pro-
2. Diseo del algoritmo gramacin, el ciclo de desarro-
llo podra ser ligeramente
3. Implementacin del programa diferente.
4. Pruebas
5. Operacin, mejoras y mantenimiento
Por motivos de eficiencia, las empresas quieren que el desarrollo de cada una
de las etapas se efecte de manera secuencial en el tiempo y que ninguna etapa
obligue a retroceder a la anterior (excepto, como ya hemos indicado, la ltima).
Actualmente se dispone de conocimientos suficientes para que esto se pueda lle-
var a cabo.
Uno o varios clientes platean un problema que necesita una solucin mediante
la construccin de un programa. De entrada, hay que realizar un anlisis del
problema, que puede ser laborioso, ya que a veces el problema es difcil de com-
prender. Una vez que se ha aclarado el problema, se realiza un anlisis minucio-
so de los requerimientos que ayudarn a definir el problema que queremos
resolver.
A partir del enunciado debemos realizar un diseo que nos lleve a la so-
lucin deseada.
2.1.4. Pruebas
No obstante, tened en cuenta que los juegos de pruebas slo sirven para compro-
bar que el programa no es correcto (si algn juego de pruebas no da los resultados
esperados), pero no para asegurar que s lo es (excepto que se comprueben todas
las entradas posibles, que es prcticamente imposible). Correccin del programa
Si la nueva mejora obliga a modificar partes del programa o si, por cuestiones de
mantenimiento, hay que hacer correcciones, esto slo se puede llevar a cabo con
eficiencia si el diseo del programa se realiza de manera inteligible.
Un programa se escribe una vez, pero se lee muchas veces ms. Conviene, pues,
elaborar diseos claros, comprensibles y sencillos para que ayuden a hacer que
esta etapa sea eficiente y eficaz.
El diseo tambin deber estar bien documentado. Por lo tanto, ser necesario
aprender a documentar correctamente los programas y saber distinguir entre
una documentacin buena y una documentacin que no aporta nada.
2) La etapa de diseo es costosa y hay que dedicarle todos los esfuerzos que
sean necesarios, puesto que de la calidad de sta depender el coste y el xito
del resto de las etapas.
te. Tal vez pensaris que esto es un poco exagerado, pero no es as. Tened pre-
sente que los errores de un programa en funcionamiento pueden detener la
produccin de una gran empresa, con los graves prejuicios econmicos que esto
puede ocasionar.
Alguien podra decir que sabe jugar a tenis porque alguna vez ha lanzado una pelota con
una raqueta. Pero para llegar a ser un profesional de alto nivel deber tener destreza en
un conjunto de tcnicas y mtodos que deber dominar para ser competitivo. En reali-
dad, es muy poco frecuente, por no decir nada frecuente, ver a un aficionado en un par-
tido de tenis de alto nivel. Lo mismo sucede en el mundo de la programacin.
FUOC P05/75062/00108 17 Introduccin a la programacin
3. Objetivos de la asignatura
Cuando diseis vuestros algoritmos, tened en cuenta siempre estos cuatro cri-
terios. La metodologa que propondremos en esta asignatura os ayudar a dise-
ar algoritmos que los cumplan. Sin embargo, pensad tambin que no slo hay
que seguir la metodologa, sino que, para alcanzar una cierta destreza en el di-
seo, es necesaria bastante prctica, puesto que tanto los conceptos como la me-
todologa necesitan un tiempo de asimilacin, y esto slo se consigue mediante
la prctica continua.
Las etapas para disear un algoritmo son prcticamente las mismas que se ne-
cesitan para resolver cualquier problema de otras disciplinas. Bsicamente son
las siguientes:
3) Formular la solucin: la notacin o lenguaje algortmico nos permitir El lenguaje algortmico se describe
en el mdulo Introduccin a la
algortmica de esta asignatura.
definir el algoritmo con precisin y sin ambigedades.
Hay que asegurarse de que hemos ledo correctamente el enunciado. Hay que sa- La especificacin de algoritmos se
estudia en el mdulo Introduccin
ber qu se pide y de qu estado inicial se parte. En esta etapa se pretende ordenar a la algortmica de esta asignatura.
Un algoritmo es una descripcin clara y precisa de acciones que hay que rea-
lizar para resolver un problema bien definido en un tiempo finito. El algorit-
mo debe solucionar estrictamente lo que pide el enunciado, ni ms ni menos.
As pues, en esta etapa hay que fijar las ideas que nos permitirn continuar en
las etapas sucesivas.
El objetivo de una lavadora es lavar la ropa que hemos introducido en la misma. Para al-
canzar este objetivo es necesario que est conectada a la corriente y al suministro de agua;
pero en ningn momento hemos pensado cmo acta la lavadora.
En el mdulo Tratamiento
Lo primero que hay que hacer es ver si el problema corresponde a un secuencial de esta asignatura
se estudian diferentes esquemas
de resolucin para algunos tipos de
tipo de problema que ya se ha estudiado en la teora. Si es as, se aplican problemas.
Para resolver problemas complejos, no ser suficiente con la aplicacin de es- La tcnica de diseo descendente
se ve en el mdulo Introduccin
quemas, por lo que ser necesario aplicar la metodologa de diseo descenden- a la metodologa del diseo
descendente, en el que
sabremos en qu consiste.
te. Esta metodologa nos permitir abordar problemas de mayor complejidad
y convertir el problema complejo en un conjunto de problemas menores a
los que podremos aplicar lo que hayamos aprendido para problemas de menor
complejidad.
Una vez tengamos el diseo del algoritmo, lo codificaremos para obtener un Esta etapa se aprende con las
prcticas del laboratorio y con la
programa. La codificacin se debe introducir en el ordenador en el lenguaje ayuda de material complementario
de estos mdulos. Este material os
ensear a traducir las sentencias del
de programacin elegido mediante un editor que crear un fichero de texto lenguaje algortmico al lenguaje de
programacin elegido y a utilizar el
denominado fichero fuente. software necesario (editor y compilador)
para ejecutar vuestros programas.
Para la etapa de ejecucin, es muy positivo disear un buen juego de pruebas que Aparicin de errores en la
ejecucin del programa
incluya todas las posibilidades que pensamos que el programa debe afrontar.
En la ejecucin del programa
pueden aparecer errores por-
que no nos hemos fijado bien
Cuando se producen errores en la ejecucin del programa, seguramente no se
en la traduccin o en la edicin
ha realizado correctamente alguna de las etapas previas. del programa, o porque se haya
producido alguna equivocacin
a la hora de planificar y plantear
el diseo del algoritmo. En el
Podramos caer en la tentacin de realizar las etapas al revs o de saltarnos ltimo caso, deberis estudiar
muy bien el diseo de algorit-
alguna. Es decir, editar un programa directamente, compilarlo, ejecutarlo y, mos y poner ms atencin en
las primeras etapas de diseo.
si funciona, hacer el diseo. Este sistema, conocido como ensayo y error, crea Recordad que el esfuerzo reali-
programas complicados a causa de las modificaciones introducidas en la idea zado y el tiempo dedicado
a estas etapas hace que el resto
original durante cada fracaso del programa. Como consecuencia, el progra- de etapas sean mucho ms
sencillas y directas.
ma resulta poco o nada inteligible. Recordad que la programacin es una dis-
FUOC P05/75062/00108 21 Introduccin a la programacin
ciplina de la ingeniera y, por lo tanto, hay que seguir una metodologa para
no caer en la trampa del ensayo y error, y aprender a programar con el rigor
necesario.
Os acabamos de presentar los objetivos que hay que alcanzar en esta asignatura.
Estara bien que los releyeseis de vez en cuando durante el curso para no perder-
los nunca de vista. Ms adelante tambin los podris entender mejor.
FUOC P05/75062/00108 22 Introduccin a la programacin
Resumen
Con los conceptos que hemos introducido hasta ahora, ya estamos en condi-
ciones de enumerar el objetivo general de esta asignatura: aprender a disear
algoritmos para resolver problemas de complejidad media y a implementar el
programa correspondiente dentro del paradigma de la programacin estructu-
rada e imperativa.
Los primeros cinco objetivos se alcanzan de manera gradual a partir del estu-
dio de los mdulos didcticos combinados con la realizacin de las actividades
y los ejercicios propuestos. Los tres ltimos, a partir de las prcticas de labora-
torio y el uso del software y del material complementario del aula.
FUOC P05/75062/00108 23 Introduccin a la programacin
Glosario
algoritmo
Conjunto explcito de reglas para resolver un problema en un nmero finito de pasos.
codificacin
Traduccin de un algoritmo a un lenguaje de programacin.
computador
Autmata de clculo gobernado por un programa.
entorno
Conjunto de objetos necesarios para llevar a cabo una tarea determinada.
especificacin
Formalizacin del enunciado de un problema.
estado
Descripcin del entorno en un momento determinado.
implementacin
Realizacin de un proyecto.
lenguaje algortmico
Lenguaje artificial que se utiliza para expresar algoritmos.
lenguaje natural
Cualquier lenguaje que se utiliza como forma natural de comunicacin: cataln, castellano,
ingls, etc.
lenguaje de programacin
Lenguaje creado para expresar programas y que es capaz de ser interpretado por un ordenador.
notacin algortmica
Vase lenguaje algortmico.
ordenador
Vase computador.
programa
Codificacin de un algoritmo en un lenguaje de programacin que el ordenador entienda.
sintaxis
Reglas de estructura de un lenguaje.
semntica
Significado de los smbolos de un lenguaje.
Bibliografa
Botella, P.; Bofill, M.; Burgus, X.; Franch, X.; Lagonigro, R; Vancells, J. (1998). Funda-
mentos de programacin I. Barcelona: Ediuoc.
Castro, J.; Cucker, F.; Messeguer, X.; Rubio, A.; Solano, L.; Valles, B. (1992). Curs de
programaci. Madrid: McGraw-Hill.
Vancells, J.; Lpez E. (1992). Programaci: introducci a lalgorsmica . Vic: Eumo Editorial
(Tecno-Cincia).