Documentos de Académico
Documentos de Profesional
Documentos de Cultura
1. La computadora 2. Entidades primitivas para el desarrollo de algoritmos. 3. Metodologa a seguir para la resolucin de problemas con computadoras Describir el concepto de algoritmo, diseo de algoritmos como paso previo a la creacin de un programa y representacin de algoritmos: diagramas de flujo. 4. Estructuras algortmicas Estructuras secuenciales, condicionales y cclicas. 5. Codificacin de algoritmos. Compiladores Tipos de lenguajes, paradigmas de programacin, estilos de programacin.
1
2004/2005
1 La computadora
2003/2004
Las computadoras electrnicas modernas son uno de los productos ms importantes del siglo XX. Son una herramienta esencial en muchas reas: industria, ciencia, educacin, etc El papel que juegan los lenguajes de programacin y los programas es esencial; sin una lista de instrucciones a seguir, las computadoras son intiles. Los lenguajes de programacin nos permiten escribir esos programas y por consiguiente comunicarnos con las computadoras. Las computadoras son una herramienta para resolver problemas. La resolucin de un problema exige al menos los siguientes pasos: 1. Definicin o anlisis del problema 2. Diseo del algoritmo 3. Transformacin del algoritmo en un programa: codificacin 4. Ejecucin y validacin del programa
2004/2005
LA COMPUTADORA
Una computadora es un dispositivo electrnico utilizado para procesar informacin y obtener unos resultados.
Computadora
Los datos se pueden introducir en la computadora por la entrada y a continuacin se procesan para producir una salida
Programa
Datos de entrada
Datos de salida
4
LA COMPUTADORA
Los datos de entrada y los datos de salida pueden ser cualquier cosa:
texto sonido dibujos
La computadora tiene 2 partes principales: HARDWARE Es la parte fsica de la computadora. Los componentes fsicos que constituyen la computadora son por ejemplo: ratn, monitor, teclado, ... SOFTWARE Es la parte lgica de la computadora. El conjunto de instrucciones que hacen funcionar a la computadora se llama PROGRAMA. Al conjunto de programas se llama SOFTWARE y se encuentran almacenados en la memoria de la computadora.
5
Procesador
Unidad Aritmtico lgica Unidad de control
Memoria Principal
Programas Datos de salida
Dispositivos Dispositivos deSALIDA SALIDA de
6
Datos de entrada
Dispositivos Dispositivos deENTRADA ENTRADA de
2003/2004
- Se utiliza para almacenar informacin (RAM) - La informacin almacenada puede ser de 2 tipos:
Instrucciones de un programa Datos con los que operan las instrucciones
- Para que un programa se pueda ejecutar debe ser situado en la memoria central (carga del programa). - En la memoria central hay tambin un espacio de almacenamiento temporal que necesita el programa para poder ejecutarse.
Metodologa y Tcnicas de Programacin I 2004/2005 7
Una tecnologa muy utilizada para representar bits en las computadoras es el condensador. Los condensadores son dispositivos electrnicos que pueden estar en uno de dos estados: cargado o descargado
Rara vez se utilizan los trminos cargado o descargado para referirse al estado de un bit en una mquina, ya que no todos los bits se representan mediante la tecnologa de condensadores. En su lugar son ms comunes los trminos uno y cero.
Metodologa y Tcnicas de Programacin I 2004/2005 8
10111010
00101110
10001010
10111100
01001010
10111010
00111111
...
...
...
9
10111010
00101110
10001010
10111100
01001010
10111010
00111111
1 Direcciones
...
...
...
Existen 2 conceptos importantes asociados a cada celda posicin de memoria: Direccin de la celda: indica la posicin en memoria. Contenido de la celda: es la informacin almacenada en dicha posicin de memoria (informacin codificada).
Metodologa y Tcnicas de Programacin I 2004/2005 10
Cada celda consta de 8 bits (1 byte) Un byte tiene capacidad para almacenar un carcter de informacin
Metodologa y Tcnicas de Programacin I 2004/2005 11
Tabla ASCII
Smbolo 0 1 2 3 4 5 6 7 8 9
48 49 50 51 52 53 54 55 56 57
Smbolo A B C D E X Y Z
Cdigo ASCII 1000001 1000010 1000011 1000100 1000101 1011000 1011001 1011010
65 66 67 68 69 88 89 90
Smbolo a b c d w x y z
Cdigo ASCII 1100001 1100010 1100011 1100100 1110111 1111000 1111001 1111010
0 < 1 < 2 . < 9 < A < B < < Z < a < b < < z
12
Este mtodo de almacenar informacin resulta ineficiente cuando los datos que se desean almacenar son numricos. La representacin de valores numricos se realiza de forma diferente, ya que para almacenar el nmero 3000, necesito 4 celdas de memoria (32 bits). Una estrategia ms eficiente consiste en almacenar el valor en su representacin en base dos ( representacin binaria ).
Metodologa y Tcnicas de Programacin I 2004/2005 13
Si contamos con dos bytes, podemos almacenar enteros desde el 0 hasta el 65535
Unidad Aritmtico-lgica Dispositivo fsico capaz de realizar operaciones aritmticas y lgicas (suma, resta, multiplicacin, )
15
16
19
20
2 X O
3 O
3 columnas
O X X
2 3
2003/2004
24
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. El eje central de dicha metodologa es el concepto de algoritmo. 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.
25
ALGORITMOS
Para llegar a ser un programador eficaz se necesita aprender a resolver problemas de un modo riguroso y sistemtico. Esto significa que slo se puede llegar a realizar un buen programa con el diseo previo de un algoritmo. Resolucin de un problema Problema
Diseo del Algoritmo
Programa de computadora
26
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. Entrada: El algoritmo tiene 0 ms entradas. Son datos que se entregan al
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.
Metodologa y Tcnicas de Programacin I 2004/2005 27
28
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 sucesivas (2+4), (2+4+6), etc. El algoritmo es el siguiente:
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. Si el valor de NUMERO 100 entonces ir al paso 3 6. En caso contrario, finalizar el proceso.
29
RESOLUCIN DE PROBLEMAS
Las fases de resolucin de un problema:
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. 3. Transformacin del algoritmo en un programa: codificacin Llevar a cabo el plan, es decir, representar el algoritmo en forma de programa. 4. Ejecucin y validacin del programa Evaluar el programa en cuanto a capacidad para resolver el problema planteado.
Metodologa y Tcnicas de Programacin I 2004/2005 30
Diagramas de flujo
Es la representacin grfica de un algoritmo. Permite representar la secuencia de operaciones que se deben realizar para 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. Dichos smbolos van unidos con flechas que indican el orden de secuencia a seguir.
Metodologa y Tcnicas de Programacin I 2004/2005 32
Pseudocdigo
Es un lenguaje utilizado para definir algoritmos con una sintaxis 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. La ventaja es que es muy fcil pasar de pseudocdigo a un lenguaje de programacin.
33
no
Smbolo de decisin. Indica operaciones de comparacin entre datos. En funcin del resultado se sigue por distintos caminos. Llamada a otro proceso complejo. Llamada a subrutina.
34
Recomendaciones para el diseo de Diagramas de Flujo Se deben usar solamente lneas de flujo horizontales y/o verticales. Se debe evitar cruce de lneas utilizando los conectores.
Metodologa y Tcnicas de Programacin I 2004/2005 35
no
Pseudocdigo
1. SUMA = 0 2. NUMERO = 2. 3. mientras NUMERO 100 SUMA = SUMA + NUMERO NUMERO = NUMERO + 2 fin_mientras 4. visualizar SUMA y finalizar el proceso.
si
? NUMERO100
no
37
EJERCICIOS
Ejercicio 1: Escribir un algoritmo que permita introducir nmeros por teclado hasta que la suma de todos ellos sea mayor que 30. Ejercicio 2: Escribir un algoritmo que escriba en pantalla el nmero de elementos positivos, negativos y ceros que contiene una tabla de 500 posiciones de contenido numrico.
Ejercicio 3: Supongamos que se proporciona una secuencia de nmeros y se desea contar e imprimir el nmero de ceros de la secuencia. Ejercicio 4: Escribir un algoritmo que calcule el rea de un tringulo en funcin de la base y la altura.
Metodologa y Tcnicas de Programacin I 2003/2004 38
EJERCICIOS
Ejercicio 5: 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 6: Escribir un algoritmo que lea 3 nmeros y a continuacin escriba el mayor de los 3. Ejercicio 7: Disear un algoritmo que le un nmero positivo y escriba por pantalla la palabra Hola las veces que indique dicho nmero. Ejercicio 8: Dada una palabra de 10 caracteres, averiguar si es palndroma.(Utilizar el tipo de datos array).
39
EJERCICIOS
Ejercicio 9: 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 10: 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 Ejercicio 11: Disear un algoritmo que lea un nmero positivo y averige si es primo.
Metodologa y Tcnicas de Programacin I 2004/2005 40
EJERCICIOS
Ejercicio 12: Disear un algoritmo para visualizar el siguiente dibujo: * *** ***** ******* ********* ******* ***** *** *
41
EJERCICIOS
Ejercicio 13: Dada una matriz de enteros de tamao 5 5 , disear un algoritmo que calcule la suma de todas las 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
2003/2004
42
4 Estructuras algortmicas
43
CLASIFICACIN
Las estructuras de operacin de programas son un grupo de formas de trabajo, que permiten realizar ciertos procesos especficos que nos lleven a la solucin de problemas. Estas estructuras se clasifican de acuerdo a su complejidad:
Entrada Salida Asignacin Simples Mltiples Hacer para Hacer mientras Repetir hasta
44
Secuenciales
Estructuras Algortmicas
Condicionales
Cclicas
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
Lectura o Entrada
Consiste en recibir desde un dispositivo de entrada, un valor.
leer DATO DATO es la variable que recibe el valor
Escritura
En la pantalla aparece el texto: La suma de los nmeros es: Metodologa y Tcnicas de Programacin I 2004/2005
Estructuras secuenciales
Asignacin
Consiste en el paso de valores o resultados a una zona de memoria. Simples
a = 15
Contador
a=a+1
Acumulador
suma = suma + 4
De trabajo
a = c +b / 4
Consiste en pasar un valor constante a una variable Consiste en usarla como un verificador del numero de veces que se realiza un proceso
Puede recibir el resultado de una operacin matemtica que involucre muchas variables
46
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 N DE HOMBRES y N De MUJERES se leen desde un dispositivo de entrada.
47
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, segn se necesite.
Simples
Si <condicin> entonces Accin 1 Accin 2 .. .. Accin n Fin_Si
si
no
Diagrama de flujo
Metodologa y Tcnicas de Programacin I 2004/2005 48
Estructuras condicionales
Dobles
Acciones a realizar si se cumple la condicin
Si <condicin> entonces Accin 1 Accin 2 .. .. Accin n Si no Accin 1 Accin 2 .. .. Accin n Fin_Si
si
no
Diagrama de flujo
49
Estructuras condicionales
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
50
Estructuras condicionales
Mltiples
Su representacin en diagrama de flujo se puede hacer de varias formas:
si
no
no
51
Estructuras condicionales
Mltiples
Diagrama de flujo para la representacin de CASOS:
Caso DATO op1: Accin(es) op2: Accin(es) ... opN: Accin(es) Fin_caso
op1
? DATO
opN
Accin (es)
op2
Accin (es)
52
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.
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 por pantalla el mes al que corresponde dicho nmero.
53
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. 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:
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.
Hacer Para i = inf hasta i = sup Accin 1 Accin 2 ... Accin N Fin_Para
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
55
Estructuras cclicas
Hacer para
Son aquellos en que el numero de iteraciones se conoce antes de ejecutarse el ciclo.
i k inf
Hacer Para i = inf hasta i = sup Accin 1 Accin 2 ... Accin N Fin_Para
si
no
56
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 si
?
no
condicin Accin(es)
Estructuras cclicas
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. 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>
Accin(es)
si
?
condicin
no
58
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.
59
5 Codificacin de algoritmos
2003/2004
60
61
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, )
Metodologa y Tcnicas de Programacin I 2004/2005
Instrucciones repetitivas
Permiten que unas tareas se repitan un nmero de veces
62
LENGUAJE MQUINA
Los lenguajes mquina son aquellos que son directamente inteligibles por la computadora ya que las instrucciones se expresan con cadenas binarias (0s y 1s). Estas instrucciones se llaman CDIGO MQUINA o CDIGO 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
63
VENTAJA
Ms fciles de codificar que el lenguaje mquina
Metodologa y Tcnicas de Programacin I 2004/2005
INCONVENIENTES
Dependen de la CPU donde se ejecutan Son difciles y lentos de codificar
64
0110
1001
1010
1011
Lenguaje mquina
ADD M, N, P
Lenguaje Ensamblador
P = M + N ;
66
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. Existen 5 estilos de programacin fuertemente conocidos
67
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
ESTILOS DE PROGRAMACIN
4. Programacin Funcional
El Programa es una Funcin (o un grupo de funciones). Una Funcin puede llamar a otra Funcin, o el resultado de una Funcin puede ser usado como el argumento de otra Funcin. Ejemplo: Funcin factorial en ML fun Factorial loop(n,f)= if n>0 then factorial loop(n-1,f*n) else f
Ejemplos: Haskel, CAML.
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
69
ESTILOS DE PROGRAMACIN
1
Metodologa Metodologa y y tcnicas tcnicas de de Programacin Programacin I Iy y II II C++
Ensamblador Arquitectura Arquitectura de de ordenadores ordenadores I Iy y II II CAML ADA Metodologa Metodologa y y tcnicas tcnicas de de Programacin Programacin IV IV
4 y 5
PROLOG Fundamento Fundamento de de Inteligencia Inteligencia Artificial Artificial Tcnicas JAVA Tcnicas de de programacin programacin avanzada avanzada
2003/2004
70
Compilador (traductor)
Montador (Linker)
71
Compilacin de programas
Fases de ejecucin de un programa
Programa fuente Compilador Compilador
si
Existen errores de compilacin?
1. Escritura del programa fuente mediante un editor. 2. Traducir el 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
72
Fases de la compilacin
Bibliotecas Bibliotecas deterceros terceros de Programa(s) Programa(s) fuente fuente Programa Programa ejecutable ejecutable
COMPILADOR
Bibliotecas Bibliotecas estndar estndar
Opciones en C++
Compila cualquier cdigo fuente que ha sido modificado desde la ltima compilacin. Genera el archivo ejecutable, compilando y enlazando los archivos modificados o que no existan. Genera el archivo ejecutable, compilando y enlazando todos los archivos.
73