introduccion aprogramacion

Upload: aprender-libre

Post on 07-Apr-2018

215 views

Category:

Documents


0 download

TRANSCRIPT

  • 8/3/2019 INTRODUCCION APROGRAMACION

    1/10

    Introduccin ala programacin

    Qu es un lenguaje

    de programacin? 16

    Lenguaje de mquina 16

    Lenguaje de bajo nivel 16

    Lenguaje de alto nivel 17

    Tipos de programacin 18

    Programacin secuencial 18

    Programacin estructurada 18

    Programacin orientada a objetos 19

    Programacin lgica 19

    Resolver problemas

    con una computadora 20

    Anlisis del problema 20

    Construccin de un algoritmo 21

    Codificacin del algoritmo 24

    Pruebas, ajustes y documentacin 24

    Captulo 1

    Escribir programas de computacin

    es un arte que tiene muchsimos aos

    y que cada da adquiere ms adeptos.

    En este libro trataremos de introducirnos

    en los conceptos bsicos paraempezar a desarrollar y disfrutar

    de este arte. Y qu mejor para empezar

    a programar que C y Pascal, dos

    lenguajes maduros y especialmente

    pensados para programadores?

    PROGRAMACIN Y ALGORITMOS

    SERVICIO DE ATENCIN AL LECTOR: [email protected]

  • 8/3/2019 INTRODUCCION APROGRAMACION

    2/10

    PROGRAMACIN Y ALGORITMOS

    16

    Qu es un lenguajede programacin?

    Los lenguajes de programacin son un conjunto de reglas, herramientas y condicionesque nos permiten crear programas o aplicaciones dentro de una computadora. Estos pro-gramas son los que nos permitirn ordenar distintas acciones a la computadora en unidioma comprensible por ella. Como su nombre lo indica, un lenguaje tiene su partesintctica y su parte semntica. Qu quiere decir esto? Que todo lenguaje de progra-macin posee reglas acerca de cmo se deben escribir las sentencias y de qu forma.A su vez, los lenguajes de programacin se dividen en tres grandes grupos: los lengua-

    jes de mquina, los de bajo nivel y los de alto nivel. A continuacin explicaremos bre-vemente cada uno de ellos.

    Lenguaje de mquina

    Los lenguajes de mquina son los que entiende una computadora sin la necesidad derealizar ninguna conversin. Escribirlos resulta extremadamente difcil para unprogramador convencional. Hoy en da, nadie programa en este lenguaje, pero como

    es necesario para que la computadora entienda lo que tiene que hacer, existenprogramas que se encargan de transformar el cdigo comprensible por unprogramador en cdigo comprensible por una computadora.Las instrucciones en este tipo de lenguaje se componen en la unidad de memoria mspequea que existe dentro de una computadora, que se llama bit. Cada una de estasunidades puede tener slo dos valores posibles: 1 o 0. Veamos algunos ejemplos desentencias en este tipo de lenguaje:

    0101 1001 0000 11010000 1111 1010 1011

    Para facilitar la tarea del programador, se han diseado otros tipos de lenguajes, queson ms comprensibles que el de mquina. stos son el de bajo nivel y el de alto nivel.

    Lenguaje de bajo nivel

    Los lenguajes de bajo nivel, tambin llamados ensambladores, son aquellos cuyas sen-tencias estn formadas por cdigos nemotcnicos (abreviaturas de palabras inglesas).

  • 8/3/2019 INTRODUCCION APROGRAMACION

    3/10

    Son lenguajes que, por ms complejos que sean, resultan mucho ms comprensiblesque los lenguajes de mquina.A continuacin vemos un ejemplo de cdigo para este tipo de lenguaje:

    Estos lenguajes son, adems, dependientes de la arquitectura de cada procesador, ya

    que cada procesador ofrece un conjunto de instrucciones distinto para trabajar en estenivel de programacin. Una vez escrito el programa en este lenguaje, se necesita otrollamado programa ensamblador, para que traduzca las sentencias en instruccionescomprensibles por la mquina.

    Lenguaje de alto nivel

    Los lenguajes de alto nivel son aquellos que poseen sentencias formadas por palabrassimilares a las de los lenguajes humanos. Por lo tanto, resulta mucho ms sencillo es-cribir un programa en un lenguaje de alto nivel para luego traducirlo en cdigo com-prensible para una computadora.Algunos ejemplos de este tipo de lenguaje son: Pascal, Delphi, Cobol, FoxPro, JAVAy la mayora de los lenguajes visuales, como Visual Basic, Visual FoxPro, etc. Adems,podemos decir que, dentro de este conjunto de lenguajes de programacin, algunosson de ms alto nivel que otros, pero, en general, todos entran en esta categora.En el caso de C, muchos autores opinan que este lenguaje es de nivel medio, o sea,

    que posee una escritura sencilla y comprensible por los programadores, pero a la vezofrece una potente y variada gama de posibilidades para realizar miles de tareas con

    ...

    inicio: mov cx,25

    ini: mov ah,6

    mov dl,13

    int 21h

    mov dl,10

    int 21h

    loop ini

    mov ah,9lea dx,nombre

    push cs

    pop ds

    int 21h

    ...

    Qu es un lenguaje de programacin?

    17

    Introduccinalaprogramacin

    1

  • 8/3/2019 INTRODUCCION APROGRAMACION

    4/10

    una computadora. Yo dira que se puede hacer casi lo mismo que con un lenguajeensamblador. Fjese en que hasta es posible insertar cdigo assembler dentro del c-digo de C. En conclusin, C pertenece a un nivel intermedio entre un lenguaje debajo nivel y uno de alto nivel.

    Tipos de programacin

    No slo existen varios tipos de lenguajes de programacin, sino que tambin podemos en-contrar distintas formas de programar una aplicacin. Hay diversos paradigmas que nos

    permiten encontrar una solucin ms adecuada a nuestros problemas. La idea es que elprogramador los conozca y sepa seleccionar el adecuado para cada situacin particular. Loque es verdad es que para cada paradigma conviene utilizar ciertos lenguajes de programa-cin, y no cualquiera. Esto se debe a que la mayora de los lenguajes fueron creados paraser utilizados en determinados ambientes de programacin.A continuacin veremos las formas de programar ms conocidas y utilizadas en laactualidad.

    Programacin secuencialEste tipo de programacin se basa en la creacin de programas a partir de un conjunto desentencias escritas de forma secuencial y cuya ejecucin sigue dicha secuencia. Aqu se uti-liza la sentencia como goto o similar para realizar una bifurcacin en la ejecucin del pro-grama hacia una etiqueta determinada. Una etiqueta es una marca en el cdigo de un pro-grama para que sea referenciado en algn momento de su ejecucin.Algunos lenguajes que se utilizan para este tipo de programacin son Basic, Assembler,Fortram y Cobol, entre otros.

    Programacin estructurada

    La programacin estructurada es una de las ms conocidas y antiguas que existen. Susfundamentos los expuso Edsgar Dijkstra hace ya mucho tiempo. Hoy en da, ms allde que nuevos tipos de programacin estn copando el mercado, la programacin es-tructurada perdura en el fondo de los lenguajes modernos.

    Este tipo de programacin se basa en la modularidad de los programas. Esto quieredecir que los programas se dividen en mdulos ms pequeos, y cada uno realiza una

    PROGRAMACIN Y ALGORITMOS

    18

  • 8/3/2019 INTRODUCCION APROGRAMACION

    5/10

    Tipos de programacin

    19

    Introduccinalaprogramacin

    1tarea especfica. As, la complejidad de un problema determinado tambin se ve redu-cida al dividir las tareas, que, en su conjunto, permiten la resolucin de ste.Los programas para este tipo de programacin poseen un procedimiento central, quees el encargado de llamar y controlar el correcto funcionamiento de cada mdulo que

    compone la aplicacin.La programacin estructurada hace uso de estructuras de control bsicas: secuencia, se-leccin yrepeticin. Adems, no permite el uso de sentencias como goto o similares queproduzcan bifurcaciones en la ejecucin de las sentencias de un programa.Los lenguajes que se utilizan en esta programacin son C y Pascal, entre otros.

    Programacin orientada a objetos

    La programacin orientada a objetos(POO) es una forma de estructurar un progra-ma sobre la base de objetos. Cada elemento o componente en un programa que sebase en esta tcnica es concebido como un objeto que tiene propiedadesymtodos.La ejecucin de un programa depende pura y exclusivamente de una interaccin delos objetos que lo componen.Las propiedades y los mtodos de los objetos se especifican en su clase. Una clase deobjeto vendra a ser el molde de cada instancia particular del objeto. Por lo tanto, cuan-do uno programa una aplicacin orientada a objetos, define clases y luego crea instan-

    cias de objetos a travs de esas clases para que interaccionen entre s.Existen otros conceptos importantes sobre objetos, que son la herencia y elpolimor-fismo. stos se explicarn con ms detalle en el captulo correspondiente a este tipode programacin.Los lenguajes que se utilizan en este tipo de programacin son muchos, pero los msimportantes hoy en da son: JAVA, C++, Delphi, Smalltalk y la gran mayora de loslenguajes de la nueva plataforma de Microsoft .NET, entre los cuales podemos encon-trar Visual Basic.NET, C# y ASP.NET.

    Programacin lgica

    La programacin lgica es una forma de programar donde lo ms importante es de-finir un conjunto de hechos, que se conocen con anterioridad, y un conjunto de re-glas que nos definen las distintas relaciones que existen entre los componentes delprograma. Estos hechos y reglas conforman lo que se llama la base del conocimiento.La programacin lgica utiliza lenguajes de alto nivel que se asemejan mucho a los len-

    guajes humanos. Una de las utilidades ms importantes de esta tcnica de programa-cin es la inteligencia artificial. Uno de los lenguajes que se utilizan para este tipo de

  • 8/3/2019 INTRODUCCION APROGRAMACION

    6/10

    desarrollos es Prolog, un lenguaje de programacin lgica antiguo pero potente. Tam-bin se usa C, que provee ms velocidad de procesamiento.Por lo general, este tipo de programacin hace uso de algoritmos recursivos. Estos al-goritmos son explicados en los prximos captulos.

    Resolver problemascon una computadora

    Hoy en da, las computadoras estn presentes no slo en ambientes especficos a losque slo unos pocos tienen acceso, sino que tambin en muchos hogares podemos en-contrar una. Esto hace que, con el paso de los das, ms y ms personas se interesenpor desarrollar aplicaciones que corran en computadoras con el simple objetivo de so-lucionar problemas, tanto de negocios como cotidianos.La tarea del programador es indicarle a la computadora un conjunto de instrucciones pa-ra que ella solucione su problema. El idioma que el programador utiliza para indicarletodo esto a una computadora es lo que ya conocimos como lenguaje de programacin.Para resolver un problema mediante una computadora, se suelen seguir ciertos pa-

    sos, que son parte de una metodologa. Aclaremos, antes de ver dichos pasos, quecon la prctica algunos se pueden omitir, pero ante cualquier duda es recomendableefectuar los siguientes: Anlisis del problema. Construccin de un algoritmo mediante un diagrama de flujo y pseudocdigo. Codificacin del algoritmo. Pruebas, ajustes y documentacin.

    Debemos aclarar que los pasos de la metodologa son ms, pero, para centrarnos en losms importantes, slo explicaremos los recin mencionados.En este libro detallaremos cada uno de estos pasos, pero en los ejemplos que se plan-tean en captulos posteriores slo se desarrollarn diagramas de flujo y la codificacinde los algoritmos.

    Anlisis del problema

    La primera etapa de la metodologa para resolver un problema mediante una com-putadora es el anlisis. Esta etapa se basa en recolectar y analizar informacin que

    PROGRAMACIN Y ALGORITMOS

    20

  • 8/3/2019 INTRODUCCION APROGRAMACION

    7/10

    nos permita identificar tres componentes bsicos: los datos de entrada, los de salidadeseablesy unproceso que nos permita obtener dichos datos de salida (Figura 1).

    Figura 1. Componentes de la etapa de anlisis de un problema.

    Los datos de entrada son los datos que se ingresarn de alguna forma o mediante al-gn mtodo en el programa. stos pueden ser desde una planilla de alumnos de unafacultad hasta un archivo binario con informacin codificada que contiene los sal-dos de cuentas bancarias.

    Los datos de salida son aquellos que resultan de aplicar el algoritmo, y constituyen el ob-jetivo de todo este proceso. stos pueden no ser datos propiamente dichos, sino el re-sultado de aplicar un proceso especfico a los datos de entrada. Algunos ejemplos pue-den ser un listado de los clientes morosos de un club deportivo, el ordenamiento de al-guna estructura de datos determinada, u operaciones matemticas como por ejemplo laobtencin del factorial de un determinado nmero.Si analizamos un problema determinado e identificamos que es necesario listar losclientes que deban ms de dos cuotas de su crdito, un proceso que se puede aplicarpara resolver dicho problema es una simple bsqueda en que la condicin de filtro sea

    que deba ms de dos cuotas. Entonces, en esta etapa de la metodologa se deben ana-lizar los posibles procesos que nos permitan llegar a la solucin del problema. Deacuerdo con la complejidad del problema, existir uno o ms.

    Construccin de un algoritmo

    La siguiente etapa de la metodologa es el diseo y la construccin del algoritmo quenos permitir obtener el resultado deseado. Cuando se analiz el problema, se deter-min quse deba hacer para llegar a los objetivos buscados, y ahora, en la etapa deldiseo del algoritmo, se debe determinar cmo se llevar a cabo esto.Una recomendacin a esta altura de la metodologa es dividir el proceso en tareas mssencillas y ms fciles de implementar. Por ejemplo, si queremos imprimir las facturasde los clientes que pagaron el ltimo mes, podramos definir dos tareas especficas: laprimera es generar las facturas en alguna estructura de datos acorde con la informacinrequerida, y la segunda es recorrer las estructuras e imprimirlas. As, el proceso central,

    que era obtener las facturas de los clientes, se dividi en dos tareas ms sencillas e in-dependientes entre s: por un lado, generar las facturas, y por otro, imprimirlas.

    ProcesoDatos de entrada Datos de salida

    Resolver problemas con una computadora

    21

    Introduccinalaprogramacin

    1

  • 8/3/2019 INTRODUCCION APROGRAMACION

    8/10

    PROGRAMACIN Y ALGORITMOS

    22

    Una vez determinadas las tareas o los mdulos que componen el algoritmo, lo que de-bemos hacer es escribirlo utilizando tanto diagramas de flujo como pseudocdigo.Cualquiera de estas dos herramientas son vlidas para crear algoritmos; se puede usaruna u otra, o bien ambas. En la prctica, solan usarse ms los diagramas de flujo, pe-

    ro ltimamente se est utilizando con ms frecuencia el pseudocdigo.Con la experiencia, esta etapa se suele saltear, y se escribe el algoritmo directamente enalgn lenguaje de programacin. Pero lo recomendable en todo momento es no dejarestos diagramas (o el pseudocdigo) a un lado, porque constituyen una fuente muy im-portante en la documentacin del sistema que estamos desarrollando.Pero qu son un diagrama de flujo y un pseudocdigo? Bueno, en los siguientesprrafos explicaremos un poco mejor cada uno de ellos.

    Diagramas de flujo

    Los diagramas de flujo sirven para indicar cmo es el flujo de ejecucin de las ac-ciones que debe realizar el programa, ms all del lenguaje de programacin que seutilice. Existen diversas formas de hacerlos, pero se han fijado algunas pautas gene-rales para este tipo de diagramas. A continuacin, en la Tabla 1 veremos cada unade las figuras que se pueden utilizar en un diagrama de flujo, como tambin unabreve descripcin.

    Este smbolo se utiliza tanto para indicar el comienzo de un programa como

    su fin. Si en su interior dice INICIO, indica el comiezo del algoritmo.

    Si, al contrario, en su interior figura FIN, indica que es el fin del programa.

    Este smbolo sirve para representar un proceso. Este proceso puede contener

    una o ms sentencias. Las asignaciones se representan con una flecha (

  • 8/3/2019 INTRODUCCION APROGRAMACION

    9/10

    Resolver problemas con una computadora

    23

    Introduccinalaprogramacin

    1

    Figura 2. Simple ejemplo de un diagrama de flujo.

    Los diagramas de flujo suelen estar acompaados de pseudocdigo, pero no siempre es as.

    Para empezar a programar es recomendable tenerlos en cuenta, porque son de gran utili-dad, ya que nos fijan muchos conceptos.

    Pseudocdigo

    El pseudocdigo es otra forma de diagramar algoritmos o, mejor dicho, especificar las ac-ciones que debe ejecutar un programa. La forma de hacerlo es mediante un lenguaje muysencillo y similar al nuestro. La idea es ir escribiendo con palabras sencillas las accionesque debe seguir el programa para alcanzar los objetivos. Por ejemplo, escribamos el pseu-docdigo del programa que se muestra en el diagrama de flujo de la Figura 2.

    Inicio

    Numero =

    Si Numero es menor o igual que 100 entonces

    Mostrar por pantalla: Numero

    Incrementar Numero

    Fin del si

    Fin del programa

    Inicio

    Fin

    I

  • 8/3/2019 INTRODUCCION APROGRAMACION

    10/10

    Como vemos en el ejemplo anterior, escribir un programa en pseudocdigo es muysencillo. Esto se puede hacer antes o despus de realizar el diagrama de flujo. Es ms,uno se puede basar en el otro para realizarlo. Con la prctica notar que teniendo uno,el otro sale como si fuese una traduccin.

    Codificacin del algoritmo

    La etapa siguiente a la construccin del algoritmo es su codificacin. En este punto dela metodologa es donde podemos optar por infinidad de alternativas, dado que existenmiles y miles de lenguajes de programacin para crear programas. Algunos se adaptanms que otros a determinadas necesidades, todo depende de lo que deseemos hacer.

    En este libro proponemos C y Pascal, dos lenguajes que tienen mucha historia y quehoy en da estn presentes en la mayora de los libros de enseanza en el campo de laprogramacin. Pero aclaramos que muchas de las tcnicas que presentaremos en estelibro son aplicables a otros lenguajes de programacin.En los prximos captulos explicaremos los fundamentos de la programacin que nospermitirn escribir algoritmos rpidos, eficientes, claros y concisos.

    Pruebas, ajustes y documentacin

    Una vez escrito el algoritmo, no terminamos nuestra tarea como programadores. Faltaprobar que todo funcione bien y, en el caso de que esto no sea as, realizar los ajustesnecesarios para el correcto funcionamiento de nuestro programa.En esta etapa es donde se profundizan tareas como la depuracin, una tcnica para en-contrar errores y seguir la ejecucin de un programa paso a paso. Esto se explicar me-jor en el prximo captulo.Por ltimo, cuando tenemos nuestra aplicacin funcionando correctamente, debemosdocumentar todo. Lo importante de esto es que, muchas veces, debemos retocar cdi-go fuente antiguo, o que hace mucho que no vemos, y no recordamos qu es lo quehaca dicho programa. Cuando son muchas lneas de cdigo y las tareas del programano son sencillas, nos costar mucho tener que leer de nuevo todo el cdigo para enten-derlo. Por lo tanto, es recomendable comentar el cdigo: dejar escrito, en un archivoo en un soporte de papel, un diagrama de flujo o pseudocdigo del programa, de mo-do que podamos analizar la aplicacin ms rpidamente.La documentacin tambin incluye, si es necesario, los manuales de usuario. Estos do-cumentos son instrucciones acerca de cmo se debe usar la aplicacin en caso de que

    deba utilizarla una persona que no conoce de programacin.

    PROGRAMACIN Y ALGORITMOS

    24