Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Programación I G: Grado en Estadística Aplicada Curso 2009-2010 Curso 2009 2010
Programación I G: Grado en Estadística Aplicada Curso 2009-2010 Curso 2009 2010
Grado en Estadstica Aplicada Curso 2009-2010 2009 2010 Introduccin a la ciencia de la computacin p y a la programacin , g p g Problemas, algoritmos y programas
Yolanda Garca Ruiz D17C ygarciar@fdi.ucm.es http://gpd.sip.ucm.es/yolanda/
Departamento de Sistemas Informticos y Computacin (UCM) Introduccin a la Programacin 1
Importante: Estas transparencias son un material de apoyo a las clases presenciales y no sustituyen a la bibliografa bsica ni a l propias clases presenciales para el estudio d l i las i l i l l t di de la asignatura.
Introduccin a la Programacin
Introduccin a la Programacin
Introduccin a la Programacin
LA COMPUTADORA
Una computadora es un dispositivo electrnico utilizado para procesar informacin y obtener unos resultados.
LA COMPUTADORA
Computadora
Los datos de entrada son procesados para producir una salida
Programa
Los componentes fsicos que constituyen la computadora se conocen con el trmino HARDWARE. Son por ejemplo: ratn, monitor, teclado, El conjunto de instrucciones que hacen funcionar a la computadora se llama j t d i t i h f i l t d ll PROGRAMA. Al conjunto de programas se llama SOFTWARE y se e cue a almacenados e a e o a encuentran a ace ados en la memoria de la computadora. a co pu ado a.
Datos de entrada d
Datos de D t d salida
5 Introduccin a la Programacin 6
Introduccin a la Programacin
Memoria Principal
Datos de entrada
Dispositivos de ENTRADA
- P que un programa se pueda ejecutar debe ser situado en la memoria Para d j t d b it d l i central (carga del programa) - En la memoria central hay tambin un espacio de almacenamiento temporal que necesita el programa para poder ejecutarse - La memoria principal est organizada en millares de celdas de memoria Cada celda consta de 8 bits (1 byte) Un byte tiene capacidad para almacenar un carcter de informacin
Introduccin a la Programacin 8
Introduccin a la Programacin
- La informacin numrica se almacena de forma diferente. Veremos que los datos numricos ocupan 2, 4 y hasta 8 bytes consecutivos 2 dependiendo del tipo de dato. - Existen 2 conceptos importantes asociados a cada celda posicin de memoria Direccin de la celda Contenido de la celda
Direcciones
2 1 0
Introduccin a la Programacin
Introduccin a la Programacin
Unidad Aritmtico-lgica Aritmtico lgica Realiza operaciones aritmticas y lgicas (suma, resta, multiplicacin, )
11
Introduccin a la Programacin
12
n_primo num_horas
14
Introduccin a la Programacin
Datos Numricos: son los nmeros enteros y los reales. Este tipo de datos p permiten realizar operaciones aritmticas comunes. p Datos Lgicos: Son aquellos que slo pueden tener dos valores (cierto o falso). Son el resultado de una comparacin entre otros datos (numricos o alfanumricos). lf i ) Datos Alfanumricos: Es una secuencia de caracteres, por ejemplo, nombres de personas, direcciones, etc. Este tipo de datos se representan encerrados entre comillas. Ejemplos: Hola amigos 1997
Introduccin a la Programacin
15
Introduccin a la Programacin
16
2 X O
3 O
3 columnas
O X X
Introduccin a la Programacin
19
Introduccin a la Programacin
20
RESOLUCIN DE PROBLEMAS
Concepto de ALGORITMO El objetivo fundamental de ste curso es ensear a resolver problemas mediante una computadora. Para ello necesitamos estudiar una metodologa que nos ayudar en dicha tarea. t d l d di h t El eje central de dicha metodologa es el concepto de algoritmo.
ALGORITMOS
Para llegar a ser un programador eficaz se necesita aprender a resolver p problemas de un modo riguroso y sistemtico. Esto significa q slo se g g que puede llegar a realizar un buen programa con el diseo previo de un algoritmo. Resolucin de un problema
Diseo del i d l Algoritmo
Problema Un algoritmo es una serie de pasos ordenados que describen el proceso que se debe seguir para dar solucin a un problema especfico. Un algoritmo es un conjunto finito de instrucciones que especifican la secuencia de operaciones a realizar en orden para resolver un problema.
Programa de computadora
Introduccin a la Programacin
21
Introduccin a la Programacin
22
ALGORITMOS
Sin algoritmo no puede existir programa. Los algoritmos son independientes tanto del lenguaje de programacin en que se expresan como de la computadora donde se ejecutan. Un lenguaje de programacin es un medio para expresar un algoritmo y una computadora es un procesador para ejecutarlo. La definicin de un algoritmo debe describir tres partes: 1. 1 Entrada: El algoritmo tiene 0 ms entradas. Son datos que se entregan al entradas
algoritmo antes de su ejecucin.
2. Proceso: Pasos del algoritmo 3. Salida: El algoritmo tiene 1 ms salidas. Es el resultado de aplicar los
pasos del algoritmo.
23
Introduccin a la Programacin
Introduccin a la Programacin
24
ALGORITMO
Ejemplo: Realizar la suma de todos los nmeros pares entre 2 y 100. El problema consiste en sumar 2+4+6+ + 98+100. Utilizamos las palabras SUMA y NUMERO para representar las sumas ili l l b l sucesivas (2+4), (2+4+6), etc. El algoritmo es el siguiente: l l i l i i
SUMA Y NUMERO son variables 1. Inicialmente SUMA vale 0 2. Inicialmente el valor de NUMERO es 2 3. Sumar NUMERO a SUMA 4. Aumentar el valor de NUMERO en dos unidades 5. 5 Si el valor de NUMERO 100 entonces i al paso 3 l l d 100 ir l 6. En caso contrario, finalizar el proceso.
RESOLUCIN DE PROBLEMAS
Las fases de resolucin de un problema:
1. 1 Definicin o anlisis del problema Consiste en entender el problema que se quiere resolver. En sta fase se determina QU debe hacer el algoritmo. 2. Diseo del algoritmo Pensar e idear un plan para resolver el problema. En sta fase de determina CMO se hace la tarea solicitada solicitada. 3. Transformacin del algoritmo en un programa: codificacin Llevar a cabo el plan es decir representar el algoritmo en forma de plan, decir, programa. 4. Ejecucin y validacin del programa. Correccin. j p g Evaluar el programa en cuanto a capacidad para resolver el problema planteado. Juegos de pruebas.
25 Introduccin a la Programacin 26
Introduccin a la Programacin
Diagramas de flujo
Es la representacin grfica de un algoritmo. Permite representar la secuencia de operaciones que se deben realizar para p , ,p p j la resolucin de un problema, es decir, permite representar el flujo de informacin desde su entrada hasta su salida. Dispone de un conjunto de smbolos grficos con significado referente al tipo de instruccin que se va a realizar. realizar Dichos smbolos van unidos con flechas que indican el orden de secuencia a seguir.
27 Introduccin a la Programacin 28
Introduccin a la Programacin
Pseudocdigo
E un lenguaje utilizado para definir algoritmos con una sintaxis Es l j ili d d fi i l i i i muy parecida a la de un lenguaje de programacin. Las instrucciones se escriben en palabras similares al ingls o al espaol, facilitando as la comprensin el algoritmo. j q y p p g La ventaja es que es muy fcil pasar de pseudocdigo a un lenguaje de programacin.
no
Smbolo de decisin. Indica operaciones de comparacin entre datos. En funcin del resultado se sigue por distintos caminos. caminos Llamada a otro proceso complejo. Llamada a subrutina.
Introduccin a la Programacin
29
Introduccin a la Programacin
30
Conector. Representa la continuidad del diagrama. Lnea de flujo. flujo Indica el sentido de ejecucin de las operaciones
1. Inicialmente SUMA vale 0. 2. Inicialmente el valor de NUMERO es 2. 3. Sumar NUMERO a SUMA. 4. Aumentar el valor de NUMERO en dos
si
? NUMERO100
Recomendaciones para el diseo de Diagramas de Flujo Se deben usar solamente lneas de flujo horizontales y/o verticales. j y Se debe evitar cruce de lneas utilizando los conectores.
unidades. 5. Si el valor de NUMERO 100 entonces ir al paso 3. 6. En caso contrario, devolver el valor de SUMA y finalizar el proceso.
no
Introduccin a la Programacin
31
Introduccin a la Programacin
EJERCICIOS
Ejercicio 1: Realizar la suma de una serie de nmeros positivos, suponiendo que los datos l d t se leen desde un dispositivo de entrada. Si el nmero ledo es un cero, d d di iti d t d l l d indicar que se ha alcanzado el final de la serie de nmeros. Ejercicio 2: Realizar la MEDIA aritmtica de una serie de nmeros positivos, suponiendo que los datos se leen desde un dispositivo de entrada. Si el nmero ledo es un cero, indicar que se ha alcanzado el final de la serie de nmeros. Ejercicio 3:
si
? NUMERO100
Pseudocdigo
1. SUMA = 0 2. NUMERO = 2. 3. mientras NUMERO 100 SUMA = SUMA + NUMERO NUMERO = NUMERO + 2 fin_mientras fin mientras 4. visualizar SUMA y finalizar el proceso.
Escribir E ibi un algoritmo que calcule el rea de un tringulo en funcin de la base y la l i l l l d i l f i d l b l altura.
no
Introduccin a la Programacin
33
Introduccin a la Programacin
34
EJERCICIOS
Ejercicio 4: Dados 3 nmeros, determinar si la suma de cualquiera de ellos es igual al tercer nmero. Si se cumple esta condicin, escribir IGUALES y, en caso contrario, escribir DISTINTAS. Ejercicio 5: Escribir un algoritmo que lea 3 nmeros y a continuacin escriba el mayor de los 3. Ejercicio 6: Disear un algoritmo que le un nmero positivo y escriba por pantalla la palabra Hola nmero Hola las veces que indique dicho nmero.
EJERCICIOS
Ejercicio 7: Disear un algoritmo que lea un nmero positivo y escriba por pantalla todos los nmeros positivos menores que l en orden descendente. (Si se lee el nmero 6, entonces se escribe 5 4 3 2 1) Ejercicio 8: Escribir un algoritmo que visualice una tabla de ceros de tamao M*N, donde M y N son datos ledos por pantalla. Por ejemplo si M = 3 y N=4, se visualiza la siguiente tabla: 0 0 0 0 0 0 0 0 0 0 0 0
Introduccin a la Programacin
35
Introduccin a la Programacin
36
EJERCICIOS
Ejercicio 9: Disear un algoritmo para visualizar el siguiente dibujo: * *** ***** ******* ********* ******* ***** *** *
EJERCICIOS
Ejercicio 10: Dada una matriz de enteros de tamao 5 5 , disear un algoritmo que calcule la suma de todas las componentes. componentes Por ejemplo, si la matriz es: 1 1 2 0 2 2 1 2 0 1 3 1 2 1 3 2 1 2 0 1 1 1 2 1 2
Introduccin a la Programacin
37
Introduccin a la Programacin
38
CLASIFICACIN
Las estructuras de operacin de programas son un grupo de formas de trabajo, que permiten realizar ciertos procesos especficos q nos lleven j q p p p que a la solucin de problemas. Estas estructuras se clasifican de acuerdo a su complejidad:
4 Estructuras algortmicas Et t l t i
Estructuras Algortmicas
Secuenciales
Entrada Salida Asignacin Simples Mltiples Hacer para Hacer mientras Repetir hasta
40
Condicionales
Cclicas
Introduccin a la Programacin
39
Introduccin a la Programacin
Estructuras secuenciales
La estructura secuencial es aquella en la que una accin o instruccin sigue a otra en un orden secuencial.
Representacin en pseudocdigo
Inicio Accin 1 Accin 2 .. .. Accin n Fin
Estructuras secuenciales
Asignacin
Consiste en el paso de valores o resultados a una zona de memoria. Simples
a = 15
Lectura o Entrada
Consiste en recibir desde un dispositivo de entrada, un valor.
leer DATO DATO es la variable que recibe el valor
Contador
a=a+1
Acumulador
suma = suma + 4
De trabajo
a = c +b / 4
Escritura
Consiste en mandar por un dispositivo de salida un resultado o mensaje.
escribir La suma de los nmeros es: SUMA La es SUMA es la variable que contiene un valor 41
Consiste en pasar un valor constante a una variable Consiste en usarla como un ve cado de u e o verificador del numero de veces que se realiza un proceso
Puede recibir el resultado de una operacin matemtica que involucre muchas variables
Introduccin a la Programacin
42
Estructuras secuenciales
Ejemplo: Se desea conocer el porcentaje de hombres y el porcentaje de mujeres que realizan un Mster al finalizar su carrera universitaria. Se supone que los datos universitaria N DE HOMBRES y N De MUJERES se leen desde un dispositivo de entrada.
Estructuras condicionales
Las estructuras condicionales comparan una variable con otro(s) valor(es), para que en base al resultado de esta comparacin, se siga un camino dentro del programa. La comparacin se puede hacer contra otra variable o contra una constante, constante segn se necesite. necesite
Simples
Si <condicin> entonces Accin 1 Accin 2 .. .. Accin n Fin_Si
si
no
Diagrama de flujo
Introduccin a la Programacin 43 Introduccin a la Programacin 44
Estructuras condicionales
Estructuras condicionales
Dobles
Acciones a realizar si se cumple la condicin A i li i l l di i
Si <condicin> entonces Accin 1 Accin 2 .. .. Accin n Si no Accin 1 Accin 2 .. .. Accin n Fin_Si
Mltiples
Son tomas de decisin que permiten comparar una variable con distintos valores posibles, ejecutando para cada caso una serie de instrucciones especficas.
Caso DATO op1: Accin(es) op2: Accin(es) ... opN: Accin(es) Fin_caso Fin caso
si
no Si <condicin> entonces Accin(es) Si no Si <condicin> entonces Accin(es) Si no Accin(es) Fin_Si Fin_Si Fin Si
Diagrama de flujo
45 Introduccin a la Programacin
46
Estructuras condicionales
Estructuras condicionales
Mltiples
Su representacin en diagrama de flujo se puede hacer de varias formas:
Mltiples
Diagrama d fl j para la representacin de CASOS Di de flujo l t i d CASOS:
si
no
no
Caso DATO op1: Accin(es) op2: op2 Accin(es) ... opN: Accin(es) Fin_caso
op1
? DATO
opN
Accin (es)
op2
Accin (es)
Introduccin a la Programacin
47
Introduccin a la Programacin
48
Estructuras condicionales
Ejemplo 1: En un almacn se hace un 20% de descuento a los clientes cuya compra supere los 1000 Cual ser el cantidad que pagar un cliente por su compra? Suponemos que . el importe de la compra es un dato que se lee desde un dispositivo de entrada.
Estructuras cclicas
Se llaman problemas repetitivos o cclicos a aquellos en cuya solucin es necesario utilizar un mismo conjunto de acciones que se puedan ejecutar una cantidad especifica de veces. id d ifi d Esta cantidad puede ser fija (previamente determinada por el programador) o puede ser variable (estar en funcin de algn dato dentro del programa). Los ciclos se clasifican en:
Ejemplo 2: Escribir un algoritmo que lea 3 nmeros y a continuacin escriba el mayor de los 3.
Ejemplo 3: Escribir un algoritmo que lea un nmero comprendido entre el 1 y el 12, y que imprima 12 por pantalla el mes al que corresponde dicho nmero.
Introduccin a la Programacin
49
Introduccin a la Programacin
Estructuras cclicas
Estructuras cclicas
Hacer para
Ciclos con un Numero Determinado de Iteraciones. Son aquellos en que el numero de iteraciones se conoce antes de ejecutarse el ciclo. ciclo
Hacer Para i = inf hasta i = sup Accin 1 Accin 2 ... Accin N Fin_Para
Hacer para
Son aquellos en que el numero de iteraciones se conoce antes de ejecutarse el ciclo.
i inf
Hacer Para i = inf hasta i = sup Accin 1 Accin 2 ... Accin N Fin_Para
si
no
La variable i es la variable de control del ciclo. El ciclo se repite desde el lmite inferior, hasta que la variable de control llegue la lmite superior
Introduccin a la Programacin
51
Introduccin a la Programacin
52
Estructuras cclicas
Estructuras cclicas
Hacer Mientras
Ciclos con un Numero Indeterminado de Iteraciones. Son aquellos en que el numero de iteraciones no se conoce con exactitud, ya que est dado en funcin de un dato dentro del programa
Hacer Mientras <condicin> Accin 1 Accin 2 ... Accin N Fin_Mientras Fin Mientras si
?
Repetir Hasta
Repite un proceso una cantidad de veces, pero a diferencia de la anterior, lo hace hasta que la condicin se cumple y no mientras, como en el HacerMientras. Mientras Por otra parte, esta estructura permite realizar el proceso al menos una vez, ya que la condicin se evala al final del proceso, mientras que en el Hacer-Mientras puede ser que nunca llegue a entrar si la condicin no se cumple desde un principio.
Repetir Accin 1 Accin 2 ... Accin N Hasta <condicin>
no
condicin Accin(es)
si
Accin(es)
condicin
no
Introduccin a la Programacin
54
Estructuras condicionales
Ejemplo 1: La calificacin final de un alumno en la asignatura de clculo se obtiene como media aritmtica de 7 notas. Calcular dicha calificacin suponiendo que las 7 notas se leen desde un dispositivo de entrada. Ejemplo 2: Encontrar el mayor valor de un conjunto de nmeros ledos desde un dispositivo de entrada. entrada
Introduccin a la Programacin
55
Introduccin a la Programacin
56
Instrucciones Selectivas
Permiten la seleccin de tareas alternativas en funcin del resultado de expresiones condicionales
Instrucciones aritmtico-lgicas
Instrucciones que ejecutan operaciones aritmticas ( suma, resta, ) y lgicas (or, and, )
Introduccin a la Programacin
Instrucciones repetitivas i ii
Permiten que unas tareas se repitan un nmero de veces
58
Introduccin a la Programacin
LENGUAJE MQUINA
Los lenguajes mquina son aquellos que son directamente inteligibles por la computadora y q las instrucciones se expresan con g p p ya que p cadenas binarias (0s y 1s). Estas instrucciones se llaman CDIGO MQUINA o CDIGO BINARIO. BINARIO INCONVENIENTES VENTAJA La velocidad de ejecucin de los programas es superior a cualquier otro lenguaje. Son difciles y lentos de codificar Difciles de mantener y comprender Dependen de la CPU donde se ejecutan Son poco fiables
VENTAJA
Ms fciles de codificar que el lenguaje mquina
INCONVENIENTES
Dependen de la CPU donde se ejecutan Son difciles y lentos de codificar
60
Introduccin a la Programacin
59
Introduccin a la Programacin
0110 INCONVENIENTES
1001
1010
1011
Lenguaje mquina
ADD M N P M, N,
Lenguaje Ensamblador
P = M + N ;
Introduccin a la Programacin
62
ESTILOS DE PROGRAMACIN
1. Programacin Imperativa / Secuencial / Estructurada
Se dispone de un conjunto de operaciones primitivas con una ejecucin secuencial. Para programar es necesario disear una secuencia adecuada de instrucciones.
Ejemplos: PASCAL ADA y C PASCAL,
Estilos de programacin Es importante tener claro las caractersticas o estilos de programacin para lograr determinar cual es la herramienta o lenguaje ideal segn las caractersticas del sistema a implementar. p Existen 5 estilos de programacin fuertemente conocidos
Introduccin a la Programacin
63
Introduccin a la Programacin
64
ESTILOS DE PROGRAMACIN
4. Programacin Funcional
El Programa es una Funcin (o un grupo de funciones). Una Funcin puede og a a u a u c u g upo u c o es). U a u c llamar a otra Funcin, o el resultado de una Funcin puede ser usado como el argumento de otra Funcin. Ejemplo: F i factorial en ML Ej l Funcin f t i l fun Factorial loop(n,f)= if n>0 then factorial loop(n-1,f*n) else f
Ejemplos: Haskel, CAML. j p
5. Programacin lgica
La programacin Lgica est basada en la nocin de relacin, debido a que en la relacin es un concepto ms general de una aplicacin. Los lenguajes de Programacin Lgica se utilizan en el campo de la Inteligencia Artificial.
Ejemplo: PROLOG
Compilador (traductor)
Montador (Linker)
Introduccin a la Programacin
65
Introduccin a la Programacin
66
Compilacin de programas
Fases de ejecucin de un programa
Programa fuente Compilador
si
Existen errores de compilacin?
1. Escritura del programa fuente mediante un editor. . aduc el p og a a ed a te u co p ado . 2. Traducir e programa mediante un compilador. 3. Verificar y corregir los errores de compilacin. 4. Obtencin del programa objeto. 5. Obtener el programa ejecutable mediante el montador. 6. Se ejecuta el programa y si no existen errores, se tendr una salida.
no
67