Fundamentos de Programación/Programación I



Descargar 14,78 Kb.
Fecha de conversión24.09.2017
Tamaño14,78 Kb.

Fundamentos de Programación/Programación I

  • Anders Jonsson
  • 2007-2008

Administración

  • Página web: http://www.tecn.upf.es/~jonsson/fp07
  • (en construcción)
  • Teoría: Miércoles 17-18:30, Aula 119
  • Práctica: P1 Jueves 18:40-19:25, Aula 202
  • P2 Jueves 19:35-20:20, Aula 202
  • Tutoría: Para confirmar
  • anders.jonsson@upf.edu, Edificio França 399

Administración

  • Evaluación:
  • Prácticas: 40%
  • Controles: 20%
  • Examen final: 40%
  • Las prácticas se hacen en grupos de dos
  • Después de cada dos prácticas hay un control en clase sobre el conocimiento de estas prácticas (últimos 15 minutos de teoría)

Clase de introducción

  • ¿Qué es un ordenador?
  • Programas y algoritmos
  • Lenguajes de programación
  • Java

¿Qué es un ordenador?

  • “Un sistema digital con tecnología microelectrónica capaz de procesar información a partir de un grupo de instrucciones denominado programa”
  • Componentes principales:
    • Procesador (CPU: Central Processing Unit)
    • Memoria (RAM: Random Access Memory)
  • Componentes auxiliares:
    • Disco duro
    • Lector CD-ROM
    • Teclado
    • Pantalla
    • etc.

Elementos de un ordenador

  • Memoria Principal
  • (RAM)
  • Unidad de
  • Control (CU)‏
  • 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)

Representación de los datos en el ordenador

  • El único código que entiende la CPU son los bits.
  • Los bits son representados en circuitos electrónicos que pueden estar en estado “on” (1) u “off” (0)
  • Las instrucciones se mandan a la CPU en forma de bytes, que son palabras de 8 bits
  • 1 byte = 8 bits
  • 1 kilobyte = 1 024 bytes
  • 1 megabyte = 1 024 kilobytes = 1 048 576 bytes

Representación de los datos en el ordenador

  • Base 10:
    • Dígitos = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9}
    • 1111 = 1*103 + 1*102 + 1*101 + 1*100
  • Base 2:
    • Dígitos = {0, 1}
    • 1111 = 1*23 + 1*22 + 1*21 + 1*20 = 8 + 4 + 2 + 1 = 15
  • ¿Cuántos valores puede representar un byte?
    • 1 byte = 8 bits (Ej: 01100101)
    • Cada bit puede representar 2 valores (0 y 1)
    • Un byte puede representar 28 = 256 valores

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

Representación de imagen

  • División de la imagen en una matriz de pixels (unidad de la imagen)
  • Cada pixel asociado con un color
  • 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

Representación de sonido

  • Discretización de la amplitud
  • Un byte para cada valor
  • 4 8 12 13 12 10 8…

¿Qué es un programa?

  • Un programa es una secuencia de instrucciones a la CPU
  • Cada instrucción es un conjunto de bytes
  • Ejemplos de instrucciones:
    • Leer un dato del teclado
    • Guardar un dato en la memoria
    • Ejecutar una operación sobre dos datos
    • Mostrar un dato en la pantalla
    • etc.

Acceso a la memoria

  • 9
  • 8
  • 7
  • 6
  • 5
  • 4
  • 3
  • 2
  • 1
  • 15
  • 64
  • 32
  • 10
  • 0
  • 2
  • 45
  • 125
  • 12
  • RAM
  • CPU

Algoritmo

  • Un esquema para resolver cierto tipo de problema
  • Se puede traducir en un programa para ejecutarlo en un ordenador
  • Pasos para la resolución de un problema con ordenador:
    • Diseño de un algoritmo
    • Codificación de un programa
    • Ejecución y validación

Algoritmo

  • Componentes:
    • Entrada: datos del problema a resolver
    • Salida: el resultado de la resolución
    • Proceso: pasos a seguir para la resolución
  • Propiedades:
    • Preciso: orden estricto + expresiones precisas
    • Definido: con la misma entrada, siempre resulta la misma salida
    • Finito: número finito de pasos

Algoritmo 1

  • Problema: Sumar dos números
  • Solución:
    • Entrada: dos números
    • Salida: guardar la suma en la memoria y imprimirla por pantalla
    • Proceso:
      • Añadir los dos números
      • Guardar el resultado en la memoria
      • Imprimir el resultado por pantalla

Algoritmo 2

  • Problema: hacer una taza de té a la inglesa
  • Solución:
    • Entrada: agua, bolsa de té, leche, tetera, taza, cuchara
    • Salida: una taza de té a la inglesa
    • Proceso:
      • Poner la bolsa de té en la taza
      • Poner el agua a hervir en la tetera
      • Verter el agua hervida en la taza
      • Añadir leche
      • Remover

Algoritmo 3

  • Problema: averiguar la solvencia de un cliente que ejecuta un pedido a una fábrica.
  • Solución:
    • Entrada: el pedido
    • Salida: mensaje de aceptación o rechazo
    • Proceso:
      • Leer el pedido
      • Examinar la ficha del cliente
      • Si el cliente es solvente, aceptar pedido
      • En caso contrario, rechazar pedido

Lenguajes de programación

  • Lenguajes máquina
  • Lenguajes ensamblador
  • Lenguajes de alto nivel: C, C++, Visual Basic, Java, Pascal, Prolog, LISP,…

Lenguajes máquina

  • Programas son secuencias de instrucciones compuestas de bytes:
    • 16 29 156 9 82 75
  • Ventajas:
    • La CPU entiende estos programas
  • Desventajas:
    • Pensar en modo de 0’s y 1’s es muy difícil para nosotros

Lenguajes ensamblador

  • Instrucciones compuestas de palabras cortas y números:
    • LOD 15 6
    • LOD 16 8
    • ADD 15 16 17
    • JMP 10
  • Ventajas:
    • Más fácil a entender
  • Desventajas:
    • Todavía bastante abstracto
    • Necesita traducir el código a lenguajes máquina

Lenguajes de alto nivel

  • Diseñados para ser más parecidos a lenguaje natural
  • Ventajas:
  • Desventajas:
    • Más complicado convertir en lenguajes máquina

Lenguajes de programación: ¿Por qué hay tantos? ¿Cómo nacen, sobreviven y caducan?

  • Diferentes dominios de aplicación:
    • Programación de sistemas – rapidez y acceso de bajo nivel: C
    • Inteligencia artificial – computación simbólica: LISP, Prolog
    • Programación científica – fórmulas matemáticas: Fortran
    • Negocios – transacciones: COBOL
    • Uso específico: SQL (bases de datos), Perl (manipulación de textos), JavaScript (páginas web), Pascal (formación)

Lenguajes de programación: ¿Por qué hay tantos? ¿Cómo nacen, sobreviven y caducan?

  • Diferentes necesidades:
    • Fiabilidad: Ada
    • Escabilidad, paradigma orientado a objeto: C  C++
    • Portabilidad: Java
  • Evolución:
    • Mejora del hardware
    • Mejor comprensión de como reforzar criterios de legibilidad, facilidad de aprender y escribir, fiabilidad…
  • Importancia de la estandardización
  • ¡Número de usuarios!

Traductores de lenguaje: intérpretes

  • PROGRAMA FUENTE
  • INTERPRETE
  • EJECUCION DE LA(S)‏
  • INSTRUCCION(ES)
  • INTERPRETADA(S)‏

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

Java

  • Se desarrolló en los comienzos de los años 1990
  • La intención era crear una herramienta para escribir programas cortos y efectivos
  • Ventajas:
    • Básico, fácil de entender
    • Portátil: el mismo código sirve para todos los sistemas operativos
    • Soporta interfaz gráfica de usuario (GUI)
    • Apropiado para programas en Internet
  • Desventajas:
    • La ejecución es más lenta que algunos otros lenguajes

Java

  • El código fuente se guarda en un archivo con extensión .java
  • Un compilador traduce el código fuente en código de byte, y lo guarda en un archivo con extensión .class
  • Las instrucciones son diferentes para diferentes sistemas operativos
  • Un intérprete específico al sistema operativo interpreta el código byte para ejecutar el programa
  • Un programa puede ser compuesto de varios archivos

La Máquina Virtual Java (JVM)‏

  • PROGRAMA FUENTE
  • COMPILADOR JAVA
  • PROGRAMA OBJETO
  • .java
  • .class
  • Programa bytecode para JVM
  • INTERPRETE (JVM)
  • para Windows
  • INTERPRETE (JVM)
  • para Linux
  • INTERPRETE (JVM)
  • para Macintosh
  • WINDOWS
  • LINUX
  • MACINTOSH

Ejecución de un programa Java

  • HolaMundo.java
  • HolaMundo.class
  • javac HolaMundo.java
  • System.class
  • java HolaMundo
  • SISTEMA OPERATIVO
  • compilador Java
  • llamar a la JVM

Componentes de un lenguaje

  • Sintaxis (gramática): reglas que determinan de manera estricta el vocabulario, orden y formato de las instrucciones permitidas
    • Errores sintácticos: el programa no compila y/o no se puede interpretar
  • Semántica (sentido): el programa, al ejecutarlo, produce el resultado correcto que uno quiere

Errores de programación

  • Modificar o crear un
  • archivo .java
  • Editar para
  • corregir errores
  • Compilar
  • Ejecutar programa
  • Depurar
  • (debugging)‏
  • errores de compilación (sintaxis)‏
  • errores de ejecución (semántica)‏


La base de datos está protegida por derechos de autor ©absta.info 2016
enviar mensaje

    Página principal