solución de problemas elementos

32
Ing. Sonia Alexandra Pinzón Nuñez - Ing. Rocío Rodríguez Guerrero FUNDAMENTOS DE PROGRAMACIÓN

Upload: mimi-bruna

Post on 17-Jan-2016

38 views

Category:

Documents


1 download

DESCRIPTION

Fundamentos de Programacion

TRANSCRIPT

Page 1: Solución de Problemas Elementos

Ing. Sonia Alexandra Pinzón Nuñez - Ing. Rocío Rodríguez Guerrero

FUNDAMENTOS DE

PROGRAMACIÓN

Page 2: Solución de Problemas Elementos

Objetivos

1. ¿Qué es un Computador?2.Programas y algoritmos3.Lenguajes de programación4.Java

1. ¿Qué es un Computador?2.Programas y algoritmos3.Lenguajes de programación4.Java

Page 3: Solución de Problemas Elementos

3

¿Qué es un Computador?• “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.

Page 4: Solución de Problemas Elementos

4

Elementos de un Computador

Memoria Principal (RAM)

Unidad de Control (CU)

Unidad aritmetica y logica (ALU)

Programa

Dispositivos de entrada Dispositivos de salida Dispositivos de almacenamiento de datosteclado

ratónpantallaimpresora disco duro

lector/grabador de CD-ROMlector/grabador de disquete

Procesador(CPU)

(hardware)

Page 5: Solución de Problemas Elementos

5

Representación de los datos en el Computador

• 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

Page 6: Solución de Problemas Elementos

6

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

Page 7: Solución de Problemas Elementos

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-4618 bytes

Page 8: Solución de Problemas Elementos

8

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 00 0 1 1 0 1 1 00 0 1 0 0 0 1 00 0 1 0 0 0 1 00 0 1 1 0 1 1 00 0 0 0 0 0 0 00 0 1 1 0 1 1 00 0 0 0 0 0 0 0

Page 9: Solución de Problemas Elementos

9

Representación de sonido

• Discretización de la amplitud• Un byte para cada valor

4 8 12 13 12 10 8…

Page 10: Solución de Problemas Elementos

10

¿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.

Page 11: Solución de Problemas Elementos

11

Acceso a la memoria

9

8

7

6

5

4

3

2

1

15

64

32

10

0

2

45

125

12

RAM

CPU

Page 12: Solución de Problemas Elementos

12

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 Computador :

1. Diseño de un algoritmo

2. Codificación de un programa

3. Ejecución y validación

Page 13: Solución de Problemas Elementos

13

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

Page 14: Solución de Problemas Elementos

14

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: 1) Añadir los dos números

2) Guardar el resultado en la memoria

3) Imprimir el resultado por pantalla

Page 15: Solución de Problemas Elementos

15

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:

1. Poner la bolsa de té en la taza2. Poner el agua a hervir en la tetera3. Verter el agua hervida en la taza 4. Añadir leche5. Remover

Page 16: Solución de Problemas Elementos

16

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: 1. Leer el pedido

2. Examinar la ficha del cliente

3. Si el cliente es solvente, aceptar pedido

4. En caso contrario, rechazar pedido

Page 17: Solución de Problemas Elementos

17

Lenguajes de programación

• Lenguajes máquina

• Lenguajes ensamblador

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

Page 18: Solución de Problemas Elementos

18

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

Page 19: Solución de Problemas Elementos

19

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

Page 20: Solución de Problemas Elementos

20

Lenguajes de alto nivel• Diseñados para ser más parecidos a lenguaje natural.

• Ventajas:– Mucho más fácil de dar instrucciones.

• Desventajas:– Más complicado convertir en lenguajes máquina.

Page 21: Solución de Problemas Elementos

21

Lenguajes de programación:¿Por qué hay tantos?

¿Cómo nacen, sobreviven y caducan?

1. 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)

Page 22: Solución de Problemas Elementos

22

Lenguajes de programación:¿Por qué hay tantos?

¿Cómo nacen, sobreviven y caducan?

1. Diferentes necesidades:• Fiabilidad: Ada• Escabilidad, paradigma orientado a objeto: C C++ • Portabilidad: Java

2. Evolución: • Mejora del hardware• Mejor comprensión de como reforzar criterios de

legibilidad, facilidad de aprender y escribir, fiabilidad…

3. Importancia de la estandardización4. ¡Número de usuarios!

Page 23: Solución de Problemas Elementos

23

Traductores de lenguaje: intérpretes

PROGRAMA FUENTE

INTERPRETE

EJECUCION DE LA(S)INSTRUCCION(ES) INTERPRETADA(S)

Page 24: Solución de Problemas Elementos

24

Traductores de lenguaje: compiladores

PROGRAMA FUENTE

COMPILADOR

ENLAZADOR(binder, linker)

EJECUCION

Fase de compilación

Fase de ejecución

OPCION 1

programaejecutable

Fase de compilación

Fase de ejecución

OPCION 2

programaobjeto

Page 25: Solución de Problemas Elementos

25

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

Page 26: Solución de Problemas Elementos

26

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

Page 27: Solución de Problemas Elementos

27

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

Page 28: Solución de Problemas Elementos

28

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

crear el programaen un editor

Page 29: Solución de Problemas Elementos

29

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

Page 30: Solución de Problemas Elementos

30

Errores de programación

Modificar o crear un archivo .java

Editar para corregir errores

Compilar

Ejecutar programaDepurar

(debugging)

errores de compilación (sintaxis)

no hay errores

errores de ejecución (semántica)

Page 31: Solución de Problemas Elementos
Page 32: Solución de Problemas Elementos

BIBLIOGRAFIA

• Fundamentos de Programación. Algoritmos y Estructuras. Luis Joyanes Aguilar. Editorial Mc Graw Hill.