Fundamentos de programacion

581 views
499 views

Published on

Published in: Education
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
581
On SlideShare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
34
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Fundamentos de programacion

  1. 1. Fundamentos de Programación
  2. 2. Clase de introducción <ul><li>¿Qué es un ordenador? </li></ul><ul><li>Programas y algoritmos </li></ul><ul><li>Lenguajes de programación </li></ul><ul><li>Java </li></ul>
  3. 3. ¿Qué es un ordenador? <ul><li>“ Un sistema digital con tecnología microelectrónica capaz de procesar información a partir de un grupo de instrucciones denominado programa” </li></ul><ul><li>Componentes principales: </li></ul><ul><ul><li>Procesador (CPU: Central Processing Unit) </li></ul></ul><ul><ul><li>Memoria (RAM: Random Access Memory) </li></ul></ul><ul><li>Componentes auxiliares: </li></ul><ul><ul><li>Disco duro </li></ul></ul><ul><ul><li>Lector CD-ROM </li></ul></ul><ul><ul><li>Teclado </li></ul></ul><ul><ul><li>Pantalla </li></ul></ul><ul><ul><li>etc. </li></ul></ul>
  4. 4. Elementos de un ordenador Memoria Principal (RAM) Unidad de Control (CU) ‏ Unidad aritmetica y logica (ALU) ‏ Programa Dispositivos de entrada Dispositivos de salida Dispositivos de almacenamiento de datos teclado rat ó n pantalla impresora disco duro lector/grabador de CD-ROM lector/grabador de disquete Procesador (CPU) (hardware)
  5. 5. Representación de los datos en el ordenador <ul><li>El ú nico c ó digo que entiende la CPU son los bits . </li></ul><ul><li>Los bits son representados en circuitos electrónicos que pueden estar en estado “on” (1) u “off” (0) </li></ul><ul><li>Las instrucciones se mandan a la CPU en forma de bytes , que son palabras de 8 bits </li></ul><ul><li>1 byte = 8 bits </li></ul><ul><li>1 kilobyte = 1 024 bytes </li></ul><ul><li>1 megabyte = 1 024 kilobytes = 1 048 576 bytes </li></ul>
  6. 6. Representación de los datos en el ordenador <ul><li>Base 10: </li></ul><ul><ul><li>Dígitos = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9} </li></ul></ul><ul><ul><li>1111 = 1*10 3 + 1*10 2 + 1*10 1 + 1*10 0 </li></ul></ul><ul><li>Base 2: </li></ul><ul><ul><li>Dígitos = {0, 1} </li></ul></ul><ul><ul><li>1111 = 1*2 3 + 1*2 2 + 1*2 1 + 1*2 0 = 8 + 4 + 2 + 1 = 15 </li></ul></ul><ul><li>¿Cuántos valores puede representar un byte? </li></ul><ul><ul><li>1 byte = 8 bits (Ej: 01100101) </li></ul></ul><ul><ul><li>Cada bit puede representar 2 valores (0 y 1) </li></ul></ul><ul><ul><li>Un byte puede representar 2 8 = 256 valores </li></ul></ul>
  7. 7. Representaci ó n de textos TEXTO: My name is Anders. ASCII: 77-121-32-110-97-109-101-32-105-115-32-65-110-100-101-114-115-46 18 bytes
  8. 8. Representaci ó n de imagen <ul><li>División de la imagen en una matriz de pixels (unidad de la imagen) </li></ul><ul><li>Cada pixel asociado con un color </li></ul>0 0 0 0 0 0 0 0 0 0 1 1 0 1 1 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0 1 1 0 1 1 0 0 0 0 0 0 0 0 0
  9. 9. Representación de sonido <ul><li>Discretización de la amplitud </li></ul><ul><li>Un byte para cada valor </li></ul>4 8 12 13 12 10 8…
  10. 10. ¿Qué es un programa? <ul><li>Un programa es una secuencia de instrucciones a la CPU </li></ul><ul><li>Cada instrucción es un conjunto de bytes </li></ul><ul><li>Ejemplos de instrucciones: </li></ul><ul><ul><li>Leer un dato del teclado </li></ul></ul><ul><ul><li>Guardar un dato en la memoria </li></ul></ul><ul><ul><li>Ejecutar una operación sobre dos datos </li></ul></ul><ul><ul><li>Mostrar un dato en la pantalla </li></ul></ul><ul><ul><li>etc. </li></ul></ul>
  11. 11. Acceso a la memoria RAM CPU 9 8 7 6 5 4 3 2 1 15 64 32 10 0 2 45 125 12
  12. 12. Algoritmo <ul><li>Un esquema para resolver cierto tipo de problema </li></ul><ul><li>Se puede traducir en un programa para ejecutarlo en un ordenador </li></ul><ul><li>Pasos para la resolución de un problema con ordenador: </li></ul><ul><ul><li>Diseño de un algoritmo </li></ul></ul><ul><ul><li>Codificación de un programa </li></ul></ul><ul><ul><li>Ejecución y validación </li></ul></ul>
  13. 13. Algoritmo <ul><li>Componentes: </li></ul><ul><ul><li>Entrada: datos del problema a resolver </li></ul></ul><ul><ul><li>Salida: el resultado de la resolución </li></ul></ul><ul><ul><li>Proceso: pasos a seguir para la resolución </li></ul></ul><ul><li>Propiedades: </li></ul><ul><ul><li>Preciso: orden estricto + expresiones precisas </li></ul></ul><ul><ul><li>Definido: con la misma entrada, siempre resulta la misma salida </li></ul></ul><ul><ul><li>Finito: número finito de pasos </li></ul></ul>
  14. 14. Algoritmo 1 <ul><li>Problema: Sumar dos números </li></ul><ul><li>Solución: </li></ul><ul><ul><li>Entrada: dos números </li></ul></ul><ul><ul><li>Salida: guardar la suma en la memoria y imprimirla por pantalla </li></ul></ul><ul><ul><li>Proceso: </li></ul></ul><ul><ul><ul><li>Añadir los dos números </li></ul></ul></ul><ul><ul><ul><li>Guardar el resultado en la memoria </li></ul></ul></ul><ul><ul><ul><li>Imprimir el resultado por pantalla </li></ul></ul></ul>
  15. 15. Algoritmo 2 <ul><li>Problema: hacer una taza de té a la inglesa </li></ul><ul><li>Solución: </li></ul><ul><ul><li>Entrada: agua, bolsa de té, leche, tetera, taza, cuchara </li></ul></ul><ul><ul><li>Salida: una taza de té a la inglesa </li></ul></ul><ul><ul><li>Proceso: </li></ul></ul><ul><ul><ul><li>Poner la bolsa de té en la taza </li></ul></ul></ul><ul><ul><ul><li>Poner el agua a hervir en la tetera </li></ul></ul></ul><ul><ul><ul><li>Verter el agua hervida en la taza </li></ul></ul></ul><ul><ul><ul><li>Añadir leche </li></ul></ul></ul><ul><ul><ul><li>Remover </li></ul></ul></ul>
  16. 16. Algoritmo 3 <ul><li>Problema: averiguar la solvencia de un cliente que ejecuta un pedido a una fábrica. </li></ul><ul><li>Solución: </li></ul><ul><ul><li>Entrada: el pedido </li></ul></ul><ul><ul><li>Salida: mensaje de aceptación o rechazo </li></ul></ul><ul><ul><li>Proceso: </li></ul></ul><ul><ul><ul><li>Leer el pedido </li></ul></ul></ul><ul><ul><ul><li>Examinar la ficha del cliente </li></ul></ul></ul><ul><ul><ul><li>Si el cliente es solvente, aceptar pedido </li></ul></ul></ul><ul><ul><ul><li>En caso contrario, rechazar pedido </li></ul></ul></ul>
  17. 17. Lenguajes de programación <ul><li>Lenguajes máquina </li></ul><ul><li>Lenguajes ensamblador </li></ul><ul><li>Lenguajes de alto nivel: C, C++, Visual Basic, Java, Pascal, Prolog, LISP,… </li></ul>
  18. 18. Lenguajes máquina <ul><li>Programas son secuencias de instrucciones compuestas de bytes: </li></ul><ul><ul><li>16 29 156 9 82 75 </li></ul></ul><ul><li>Ventajas: </li></ul><ul><ul><li>La CPU entiende estos programas </li></ul></ul><ul><li>Desventajas: </li></ul><ul><ul><li>Pensar en modo de 0’s y 1’s es muy difícil para nosotros </li></ul></ul>
  19. 19. Lenguajes ensamblador <ul><li>Instrucciones compuestas de palabras cortas y números: </li></ul><ul><ul><li>LOD 15 6 </li></ul></ul><ul><ul><li>LOD 16 8 </li></ul></ul><ul><ul><li>ADD 15 16 17 </li></ul></ul><ul><ul><li>JMP 10 </li></ul></ul><ul><li>Ventajas: </li></ul><ul><ul><li>Más fácil a entender </li></ul></ul><ul><li>Desventajas: </li></ul><ul><ul><li>Todavía bastante abstracto </li></ul></ul><ul><ul><li>Necesita traducir el código a lenguajes máquina </li></ul></ul>
  20. 20. Lenguajes de alto nivel <ul><li>Diseñados para ser más parecidos a lenguaje natural </li></ul><ul><li>Ventajas: </li></ul><ul><ul><li>Mucho más fácil de dar instrucciones </li></ul></ul><ul><li>Desventajas: </li></ul><ul><ul><li>Más complicado convertir en lenguajes máquina </li></ul></ul>
  21. 21. Lenguajes de programación: ¿ Por qué hay tantos? ¿Cómo nacen, sobreviven y caducan? <ul><li>Diferentes dominios de aplicación: </li></ul><ul><ul><li>Programación de sistemas – rapidez y acceso de bajo nivel: C </li></ul></ul><ul><ul><li>Inteligencia artificial – computación simbólica: LISP, Prolog </li></ul></ul><ul><ul><li>Programación científica – fórmulas matemáticas: Fortran </li></ul></ul><ul><ul><li>Negocios – transacciones: COBOL </li></ul></ul><ul><ul><li>Uso específico: SQL (bases de datos), Perl (manipulación de textos), JavaScript (páginas web), Pascal (formación) </li></ul></ul>
  22. 22. Lenguajes de programación: ¿ Por qué hay tantos? ¿Cómo nacen, sobreviven y caducan? <ul><li>Diferentes necesidades: </li></ul><ul><ul><li>Fiabilidad: Ada </li></ul></ul><ul><ul><li>Escabilidad, paradigma orientado a objeto: C  C++ </li></ul></ul><ul><ul><li>Portabilidad: Java </li></ul></ul><ul><li>Evolución: </li></ul><ul><ul><li>Mejora del hardware </li></ul></ul><ul><ul><li>Mejor comprensión de como reforzar criterios de legibilidad, facilidad de aprender y escribir, fiabilidad… </li></ul></ul><ul><li>Importancia de la estandardización </li></ul><ul><li>¡Número de usuarios! </li></ul>
  23. 23. Traductores de lenguaje: intérpretes PROGRAMA FUENTE INTERPRETE EJECUCION DE LA(S) ‏ INSTRUCCION(ES) INTERPRETADA(S) ‏
  24. 24. Traductores de lenguaje: compiladores PROGRAMA FUENTE COMPILADOR ENLAZADOR (binder, linker) EJECUCION Fase de compilación Fase de ejecución OPCION 1 programa ejecutable Fase de compilación Fase de ejecución OPCION 2 programa objeto
  25. 25. Componentes de un lenguaje <ul><li>Sintaxis (gramática): reglas que determinan de manera estricta el vocabulario, orden y formato de las instrucciones permitidas </li></ul><ul><ul><li>Errores sintácticos: el programa no compila y/o no se puede interpretar </li></ul></ul><ul><li>Semántica (sentido): el programa, al ejecutarlo, produce el resultado correcto que uno quiere </li></ul>
  26. 26. Errores de programación Modificar o crear un archivo .java Editar para corregir errores Ejecutar programa Depurar (debugging) ‏ errores de compilación (sintaxis) ‏ no hay errores errores de ejecución (semántica) ‏ Compilar

×