Intro programacion conceptos_2012
Upcoming SlideShare
Loading in...5
×
 

Intro programacion conceptos_2012

on

  • 288 views

 

Statistics

Views

Total Views
288
Views on SlideShare
288
Embed Views
0

Actions

Likes
0
Downloads
1
Comments
0

0 Embeds 0

No embeds

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

Intro programacion conceptos_2012 Intro programacion conceptos_2012 Presentation Transcript

  • Introducci´on a la Programaci´on Conceptos B´asicos Programaci´on I Licenciatura en Ciencias de la Computaci´on Programaci´on I Introducci´on a la Programaci´on
  • Algoritmos y Programas Nuestro objetivo es aprender a programar, esto es, a dise˜nar algoritmos y expresarlos como programas escritos en un lenguaje de programaci´on para poder ejecutarlos en una computadora. Un algoritmo es, sencillamente, una secuencia de pasos finita orientada a la consecuci´on de un objetivo. Para “dise˜nar algoritmos” primero vamos a describir de una manera rigurosa el problema que queremos resolver (especificaci´on) para luego mediante pasos met´odicos finamenente obtener el algoritmo (derivaci´on). Programaci´on I Introducci´on a la Programaci´on
  • Computadoras El diccionario de la Real Academia define computador electr´onico como: “M´aquina electr´onica, anal´ogica o digital, dotada de una memoria de gran capacidad y de m´etodos de tratamiento de la informaci´on, capaz de resolver problemas matem´aticos y l´ogicos mediante la utilizaci´on autom´atica de programas inform´aticos’. La propia definici´on nos da indicaciones acerca de algunos elementos b´asicos del computadora: la memoria, y alg´un dispositivo capaz de efectuar c´alculos matem´aticos y l´ogicos. Programaci´on I Introducci´on a la Programaci´on
  • Computadoras En la memoria es un gran almac´en de informaci´on. Tenemos un dispositivo encargado de realizar operaciones matem´atico l´ogicas, que recibe el nombre de Unidad Aritm´etico l´ogica (UAL) (o ALU en ingl´es). Otro dispositivo se encarga de transportar la informaci´on de la memoria a la UAL, y de controlarla para que haga las operaciones correspondientes, la unidad de control. Programaci´on I Introducci´on a la Programaci´on
  • Codificaci´on de la informaci´on Cada uno de los “cajones” que conforman la memoria recibe el nombre de celda (de memoria) y el n´umero que lo identifica es su posici´on o direcci´on. Cada posici´on de memoria permite almacenar una secuencia de unos y ceros de tama˜no fijo, o sea un numero binario. Se usan ceros y unos porque es f´acil representarlos con la tecnolog´ıa actual (hay corriente o no) (encendido / apagado). A una variable que s´olo puede tomar 2 valores se la llama bit y una secuencia de 8 bits se conoce como byte. Programaci´on I Introducci´on a la Programaci´on
  • Programas La CPU, el cerebro del ordenador, es capaz de ejecutar acciones especificadas mediante secuencias de instrucciones. Una instrucci´on describe una acci´on muy simple. Las instrucciones se representan mediante combinaciones particulares de unos y ceros (valores binarios) y, por tanto, se pueden almacenar en la memoria. Combinando inteligentemente las instrucciones en una secuencia podemos hacer que la CPU ejecute c´alculos m´as complejos. Una secuencia de instrucciones es un programa. Programaci´on I Introducci´on a la Programaci´on
  • Lenguajes Las secuencias de instrucciones que el ordenador puede ejecutar reciben el nombre de programas en c´odigo de m´aquina, porque el lenguaje de programaci´on en el que est´an expresadas recibe el nombre de c´odigo de m´aquina. Un lenguaje de programaci´on es cualquier sistema de notaci´on que permite expresar programas. Programaci´on I Introducci´on a la Programaci´on
  • C´odigo m´aquina El c´odigo de m´aquina codifica las secuencias de instrucciones como sucesiones de unos y ceros que siguen ciertas reglas. Un programa que, por ejemplo, calcula la media de tres n´umeros almacenados en las posiciones de memoria 10, 11 y 12, respectivamente, y deja el resultado en la posici´on de memoria 13, podr´ıa tener el siguiente aspecto expresado de forma comprensible para nosotros Programaci´on I Introducci´on a la Programaci´on
  • C´odigo m´aquina En realidad, el contenido de cada direcci´on estar´ıa codificado como una serie de unos y ceros . . . La CPU es un ingenioso sistema de circuitos electr´onicos capaz de interpretar el significado de cada una de esas secuencias de bits y llevar a cabo las acciones que codifican. Programaci´on I Introducci´on a la Programaci´on
  • Lenguaje ensamblador En los primeros tiempos de la inform´atica los programas se introduc´ıan en el ordenador directamente en c´odigo de m´aquina, indicando uno por uno el valor de los bits de cada una de las posiciones de memoria. Engorroso! El ensamblador es un programa traductor que lee el contenido de las direcciones de memoria en las que hemos almacenado c´odigos mnemot´ecnicos y escribe en otras posiciones de memoria sus instrucciones asociadas en c´odigo de m´aquina. El repertorio de c´odigos mnemot´ecnicos traducible a c´odigo de m´aquina y las reglas que permiten combinarlos, expresar direcciones, codificar valores num´ericos, etc., recibe el nombre de lenguaje ensamblador. Programaci´on I Introducci´on a la Programaci´on
  • Lenguaje ensamblador Nuestro programa que calcula la media de tres n´umeros almacenados en las posiciones de memoria 10, 11 y 12, respectivamente, y deja el resultado en la posici´on de memoria 13, ahora se ver´ıa algo as´ı: SUM #10, #11, #13 SUM #13, #12, #13 DIV #13 3, #13 FIN Programaci´on I Introducci´on a la Programaci´on
  • ¿Un programa diferente para cada ordenador? Cada CPU tiene su propio juego de instrucciones y, en consecuencia, un c´odigo de maquina y uno o m´as lenguajes ensambladores propios. Si queremos que un programa se ejecute en m´as de un tipo de ordenador, ¿habr´a que escribirlo de nuevo para cada CPU particular? Programaci´on I Introducci´on a la Programaci´on
  • ¿Un programa diferente para cada ordenador? Programaci´on I Introducci´on a la Programaci´on
  • Lenguajes de programaci´on de alto nivel Por esto surgen los lenguajes de alto nivel con tienen una alta abstracci´on de los detalles de la computadora, adem´as est´an “m´as cerca” del lenguaje natural. En contraposici´on los lenguajes anteriores son llamados lenguajes de bajo nivel.(Finales de 1950) a = 5 b = 10 c = 6 media = (a + b + c)/3 Para cada lenguaje de alto nivel y para cada CPU se puede escribir un programa que se encargue de traducir las instrucciones del lenguaje de alto nivel a instrucciones de c´odigo de m´aquina, Programaci´on I Introducci´on a la Programaci´on
  • Lenguajes de Programaci´on - Composici´on Sintaxis: Es forma visible de un lenguaje de programaci´on, los simbolos que forman el lenguaje y las reglas para combinarlos. Suele describirse mediante una gram´atica. Sem´antica: Las reglas que determina el significado de los programas constituyen la sem´antica de los lenguajes de programaci´on. La definici´on precisa de cada una de estas partes define a un lenguaje de programaci´on. Programaci´on I Introducci´on a la Programaci´on
  • Compiladores e int´erpretes Hemos dicho que los lenguajes de alto nivel se traducen autom´aticamente a c´odigo de m´aquina, pero existen dos tipos diferentes de traductores. Un compilador lee completamente un programa en un lenguaje de alto nivel y lo traduce en su integridad a un programa de c´odigo de m´aquina equivalente. Un int´erprete act´ua de un modo distinto: lee un programa escrito en un lenguaje de alto nivel instrucci´on a instrucci´on y, para cada una de ellas, efect´ua una traducci´on a las instrucciones de c´odigo de m´aquina equivalentes y las ejecuta inmediatamente. Programaci´on I Introducci´on a la Programaci´on
  • Compiladores e int´erpretes Por regla general, los int´erpretes ejecutar´an los programas m´as lentamente, pues al tiempo de ejecuci´on del c´odigo de m´aquina se suma el que consume la traducci´on simult´anea. Adem´as, un compilador puede examinar el programa de alto nivel abarcando m´as de una instrucci´on cada vez, por lo que es capaz de producir mejores traducciones. Pero, por regla general, los interpretes permiten una mayor flexibilidad que los compiladores y ciertos lenguajes de programaci´on de alto nivel han sido dise˜nados para explotar esa mayor flexibilidad. Programaci´on I Introducci´on a la Programaci´on
  • Compiladores e int´erpretes Aunque nada impide que compilemos o interpretemos cualquier lenguaje de programaci´on, ciertos lenguajes se consideran apropiados para que la traducci´on se lleve a cabo con un compilador y otros no. Es m´as apropiado hablar, pues, de lenguajes de programaci´on t´ıpicamente interpretados y lenguajes de programaci´on t´ıpicamente compilados. Entre los primeros podemos citar Python, Perl, Tcl, Ruby, Bash, PHP o Lisp. Entre los segundos, C, Pascal, C++ o Fortran. Programaci´on I Introducci´on a la Programaci´on
  • Etapas en el desarrollo del software Para crear correctamente software es necesario pasar por las distintas etapas en el desarrollo del software. Las cuales son: Especificaci´on Definici´on precisa del problema. Dise˜no Elecci´on de una soluci´on y divisi´on del problema en partes. Implementaci´on Escritura de la soluci´on en un lenguaje de programaci´on Validaci´on Prueba de que el programa es correcto respecto a la especificaci´on. Mantenimiento Correcci´on de errores y adaptaci´on a nuevos requisitos. Programaci´on I Introducci´on a la Programaci´on
  • Especificaci´on Consiste en definir el problema inicial de forma clara y precisa. Suele utilizarse un lenguaje formal(por ejemplo, el lenguaje de la l´ogica matem´atica). Puede considerarse como un contrato que debe cumplir el programa para ser soluci´on del problema. Para escribir una especificaci´on debemos evitar pensar en una soluci´on para el problema y limitarnos a describir cual es el problema a resolver. Esta debe proveernos una respuesta a la pregunta, ¿qu´e hace el programa? y no a la pregunta ¿c´omo lo hace? Generalmente existen distintas formas de crear un programa que cumpla con la especificaci´on. Programaci´on I Introducci´on a la Programaci´on
  • Dise˜no En esta etapa se decide como dividir el software en partes, que porci´on del problema resuelve cada una y como interact´uan las partes. Existen muchos estilos a seguir, los cuales proveen descripciones de tipos de elementos y relaciones, junto con restricciones sobre como deben usarse. Programaci´on I Introducci´on a la Programaci´on
  • Implementaci´on En la etapa de implementaci´on se debe pensar en la soluci´on al problema y escribir la misma en un lenguaje de programaci´on. Un algoritmo es un conjunto finito ordenado de pasos que especifican la secuencia de operaciones que se han de realizar para resolver un determinado problema. Un algoritmo debe ser de f´acil lectura e interpretaci´on e independiente del lenguaje de programaci´on. Para representar los algoritmos se suelen usar pseudoc´odigos (mezcla de lenguaje natural y expresiones matem´aticas que permiten describir de un modo preciso un programa). Programaci´on I Introducci´on a la Programaci´on
  • Validaci´on Puede ocurrir que el programa no resuelva correctamente el problema. En la etapa de validaci´on se intenta asegurar que un programa cumple con su especificaci´on. Existen dos formas de llevar a cabo dicha tarea, aplicando la t´ecnica testing o realizando una verificaci´on formal. Programaci´on I Introducci´on a la Programaci´on
  • Testing Testing: consiste en preparar un conjunto de datos de entrada, lo mas amplio posible, probar el programa con estos datos y ver si el resultado es el esperado. En general los datos de entrada con que se tienen que probar los programas son infinitos. El testing NO garantiza que el programa no tenga errores. Existen muchas t´ecnicas para hacer testing. Programaci´on I Introducci´on a la Programaci´on
  • Validaci´on Formal Verificaci´on formal: consiste en demostrar matem´aticamente que un programa cumple su especificaci´on. Tal demostraci´on puede cubrir infinitos valores de entrada. Permite probar que un programa es correcto (respecto a su especificaci´on). Es mas dif´ıcil de realizar que el testing. Programaci´on I Introducci´on a la Programaci´on
  • Mantenimiento Es com´un que se encuentren errores un tiempo despu´es de que el software comenz´o a ser utilizado, o que se cambien los requerimientos del mismo. Algunos tipos de errores que pueden encontrarse son: Errores de especificaci´on: fallos cometidos en la fase de especificaci´on. Su correcci´on es muy compleja ya que hay que modificar el trabajo realizado durante las fases siguientes. Errores logicos: se detectan al ejecutar el programa con cierta entrada y comprobar que se obtuvieron datos incorrectos como salida. En este caso el programa no cumple con su especificaci´on. Programaci´on I Introducci´on a la Programaci´on
  • Documentaci´on Es importante que la documentaci´on se lleve a cabo en cada una de las etapas de desarrollo del software. Tiene como objetivo que cualquier persona externa al desarrollo pueda modificar el software. Por ejemplo, en la etapa de implementaci´on se puede proveer: Documentaci´on interna: viene contenida en el propio programa fuente. Documentaci´on externa: esta constituida por una serie de archivos que acompa˜nan al programa. Entre ellos pueden estar: descripci´on de las versiones,descripci´on de archivos y estructuras de datos, descripci´on del programa principal y subprogramas, manual de mantenimiento. Programaci´on I Introducci´on a la Programaci´on
  • Referencias Andr´es Marzal, Isabel Garcia Introducci´on a la programaci´on con Python, Cap´ıtulo 1, 2003. C.Mancino, M Notti, G Amadio. Introducci´on a la programaci´on, apunte 2009. Programaci´on I Introducci´on a la Programaci´on