Documentos de Académico
Documentos de Profesional
Documentos de Cultura
ndice de contenidos
1. 2. 3. 4. 5. 6.
Introduccin. Conceptos bsicos Elementos bsicos de un algoritmo. Representacin de algoritmos. Metodologa de diseo. Lenguajes de programacin. Ejercicios de diseo de algoritmos simples.
Programacin
Establecer una secuencia de acciones que: puedan ser ejecutadas por el procesador realicen una determinada tarea Fases: 1. Resolucin del problema propuesto => determinacin de un algoritmo. 2. Adaptacin del algoritmo a la computadora => codificar el algoritmo en un lenguaje que el ordenador pueda comprender
Accin primitiva
Accin que el procesador puede ejecutar sin necesidad de informacin suplementaria
Algoritmo
Secuencia ordenada de acciones primitivas que realizan un trabajo Ejemplos de algoritmos:
Ir al trabajo Clculo de la media aritmtica de dos nmeros con una calculadora
1. 2. 3. 4. 5.
1. 2. 3. 4. 5. 6. 7. 8.
Pulsar la tecla AC Teclear el primer nmero Pulsar la tecla + Teclear el segundo nmero Pulsar la tecla + Pulsar la tecla / Teclear el nmero 2 Pulsar la tecla =
Modificaciones y adaptaciones
Datos
Informacin con la que trabaja una computadora Se clasifican atendiendo a: Propiedades que poseen Operaciones que se pueden realizar con ellos Datos simples Numrico
Real, entero Letras (a, A,...), smbolos (*, %,...), nmeros (1, 2,...) Verdadero o Falso Direccin de memoria de otro dato
Tipos de datos
Carcter
Lgico Puntero
Operaciones primitivas
Se pueden realizar directamente en un lenguaje de programacin sin necesidad de indicar cmo hay que llevarla a cabo
Conjuntos de operaciones primitivas para los distintos tipos de datos Numrico + Suma - Resta Lgico / Divisin A B A Y B A O B No B MOD Resto de una divisin entera V V V V F V F F V V Carcter y Numrico F V F V F < Menor que F F F F V > Mayor que = = Igual que <= Menor o igual que >= Mayor o igual que ! = Distinto
10
Entidad que posee un valor y es conocida en un programa o algoritmo por un nombre (identificador) El valor de una variable puede cambiar a lo largo del algoritmo En un instante concreto slo puede tener un valor Todas las variables son de un determinado tipo y slo pueden tomar valores de ese tipo
Ejemplos de variables
11
Entidad que posee un valor y es conocida en un programa o algoritmo por un nombre (identificador) El valor de una constante NO puede cambiar a lo largo del algoritmo Inicializacin de la constante Accin por la que el identificador toma su primer y nico valor Todas las constantes son de un determinado tipo y slo pueden ser inicializadas con valores de ese tipo
Valores constantes
Valores que aparecen explcitamente en un algoritmo y no tienen identificador asociado
12
Vlido No S No No S
13
Expresiones
Combinacin de: Variables Constantes Valores constantes Operadores Parntesis Nombres de funciones especiales (raz cuadrada, valor absoluto, etc.) Toda expresin tiene en todo momento un valor constante que es el resultado de evaluarla de izquierda a derecha
0.052
Valor
Depende del valor de x en el momento de su evaluacin Depende de los valores de a, b y c en el momento de su evaluacin
Ejemplos de expresiones
14
Operacin que permite darle a una variable un determinado valor A una variable se le puede asignar Un valor constante El valor de otra variable El valor de una constante El resultado de evaluar una expresin Los valores asignados deben ser del mismo tipo que la variable Es una operacin destructiva, cualquier valor que tuviese la variable se pierde y se reemplaza por el nuevo
Se utilizan para intercambiar informacin con un medio externo Entrada Se le asigna a una variable un valor dado desde el exterior (p.ej. un teclado) Salida Se transfiere el valor de una variable a un dispositivo de salida (p.ej. la pantalla)
16
Condicional Se realiza una accin u otra dependiendo del resultado de la evaluacin de una expresin lgica
A B C
Si se cumple X Si no se cumple X
A B
Repetir 10 veces
17
3.1. Pseudolenguaje
3. Representacin de algoritmos
Existen varios mtodos para representar un algoritmo
Pseudolenguaje Diagramas de flujo
Pseudolenguaje
Es un lenguaje especfico de descripcin de algoritmos La traduccin de un algoritmo escrito en pseudolenguaje a un programa en un lenguaje de programacin determinado es relativamente simple
3.1. Pseudolenguaje
3. Representacin de algoritmos
Pseudolenguaje que usaremos en clase
ALGORITMO nombre declaraciones INICIO acciones FIN
Algoritmo
Declaracin de una constante Declaracin de una variable Operacin de entrada Operacin de salida 19
3.1. Pseudolenguaje
3. Representacin de algoritmos
Pseudolenguaje que usaremos en clase
Accin 1 Accin 2 Accin 3 ... Accin n
Secuencia
SI condicin ENTONCES conjunto de acciones verdad EN OTRO CASO conjunto de acciones falso FINSI
...
valoresn: acciones
Condicin Es una expresin (combinacin vlida de operadores, constantes y variables) en la que los operadores son:
relacionales: >, <, >=, <=, ==, != lgicas: Y, O, NO Verdadero Falso
Condicin
10
3.1. Pseudolenguaje
3. Representacin de algoritmos
Pseudolenguaje que usaremos en clase
PARA (inicializacin; condicin; incremento_o_decremento) conjunto de acciones FINPARA MIENTRAS condicin HACER conjunto de acciones FINMIENTRAS HACER conjunto de acciones MIENTRAS condicin
Estructuras de iteracin o repetitivas
Incremento o decremento Expresin que indica en qu cantidad se incrementa o decrementa la variable de control en cada iteracin
Ejemplos: x = x -2; a = a + 1;
21
3.1. Pseudolenguaje
3. Representacin de algoritmos
Ejemplo de un algoritmo escrito con nuestro pseudolenguaje
Sumar los n (n>0) primeros nmeros naturales
ALGORITMO SumaNaturales VARIABLES: Naturales num, contador, suma INICIO LEER num suma = 0 contador = 1 HACER suma = suma + contador contador = contador + 1 MIENTRAS (contador != num + 1) ESCRIBIR La suma resultante es ESCRIBIR suma FIN
22
11
3. Representacin de algoritmos
Diagramas de flujo
Herramienta grfica para la descripcin de algoritmos
Herramientas de los diagramas de flujo para para representar los elementos bsicos de un algoritmo
Secuencia
Bifurcaciones
23
3. Representacin de algoritmos
Inicio
contador != num +1
escribir (suma)
Fin
24
12
4. Metodologa de diseo
DEFINICIN DESARROLLO Diseo
Codificacin Prueba
Fallos de definicin
MANTENIMIENTO
Errores
Modificaciones y adaptaciones
La fase de diseo es la fase de resolucin del problema, es aqu donde el programador debe disear un algoritmo Es necesario emplear una metodologa, prescindir de ella puede acarrear problemas como: Rigidez e inflexibilidad de los programas Prdida excesiva de tiempo en la correccin de errores Documentacin deficiente Imposibilidad de reutilizacin de cdigo
25
4. Metodologa de diseo
Un problema => muchos algoritmos para resolverlo Cmo elegir el ms adecuado? Basndonos en las siguientes caractersticas:
Legibilidad Portabilidad Modificabilidad Eficiencia Modularidad Estructuracin
Programacin estructurada
Conjunto de tcnicas que aumentan la productividad de un programa, reduciendo el tiempo para: Depurar Escribir Mantener el programa Verificar Utiliza un nmero limitado de estructuras de control que minimizan la complejidad de los problemas Teorema de BOHM-JACOPINI Cualquier programa, por complejo que sea, puede escribirse utilizando slo tres estructuras de control:
Secuencial Selectiva Repetitiva
26
13
4. Metodologa de diseo
27
4. Metodologa de diseo
Abstracto (descripcin funcional del problema)
Nivel 0
Nivel 1
Nivel 2
Nivel 3
28
14
4. Metodologa de diseo
Ejemplo de diseo descendente
Nivel 0
Clculo de la media
Imprimir resultado
Nivel 1
Nivel 2
29
5. Lenguajes de programacin
Lenguaje de programacin
30
15
5. Lenguajes de programacin
Lenguaje mquina Utiliza cdigo binario Cada procesador posee su propio lenguaje mquina Una instruccin se compone de:
Cdigo de operacin Operandos
Ventajas
Directamente entendible por el ordenador Es muy eficiente
Inconvenientes
Es complicado trabajar con cdigo binario El programador debe conocer la arquitectura fsica del ordenador Lenguaje dependiente de la mquina No se pueden introducir comentarios Conjunto de instrucciones muy reducido
31
5. Lenguajes de programacin
Lenguaje ensamblador Cada instruccin en ensamblador se corresponde con una instruccin en lenguaje mquina a la que luego ser traducida Cada procesador posee su propio lenguaje ensamblador NO es necesario que el programador conozca la arquitectura fsica del ordenador Caractersticas:
Cdigo de operacin es una palabra con pocas letras ADD, MOV,... Direcciones de memoria y operandos se pueden escribir de forma simblica mediante identificadores Se pueden incluir comentarios
32
16
5. Lenguajes de programacin
Lenguajes de alto nivel Se aproxima al lenguaje natural Cada instruccin de un lenguaje de alto nivel se corresponde con varias instrucciones mquina No dependen de la arquitectura de la mquina Son menos eficientes FORTRAN, COBOL, C, C++, Pascal, etc.
33
5. Lenguajes de programacin
Traductores de lenguajes
Programas que traducen un programa escrito en un lenguaje de alto nivel a su correspondiente en lenguaje mquina Programa fuente Cdigo binario
Clasificacin
Compiladores
Traducen un programa completo (fuente) a cdigo binario (objeto) El programa objeto se almacena en memoria y puede ser ejecutado sin necesidad de realizar otra vez la traduccin En el proceso de traduccin se detectan errores de escritura en el programa fuente
Intrpretes
Traducen un programa (fuente) instruccin a instruccin La ejecucin del programa se realiza a la vez que la traduccin => se lee una instruccin, se traduce y se ejecuta Cada vez que se desea ejecutar el programa hay que traducirlo La ejecucin de un programa interpretado es ms lenta que la de un programa compilado
34
17
Bibliografa
Bibliografa principal
A. Prieto, A. Lloris y J.C. Torres. "Introduccin a la Informtica". (1 2 Edicin). McGraw-Hill, 1995. Galindo, Snchez, Yez, Escolano, Del Jesus, Aguilera, Rodrguez, Snchez y Argudo. "Fundamentos Informticos". Servicio de Publicaciones de la Universidad de Cdiz, 1996. Tremblay, Bunt. "Introduccin a la Ciencia de las Computadoras. Enfoque algortmico". McGraw-Hill, 1988. Peter Norton. "Introduccin a la Computacin". McGraw-Hill, 1995.
Bibliografa adicional
Roger S. Walker. "Informtica B sica". Anaya Multimedia. Peter Bishop. "Conceptos de Informtica". Anaya Multimedia. Ll. Guilera Agera. "Introduccin a la Informtica". Edunsa. R. Pea Mar . "Diseo de Programas: Formalismo y Abstraccin". Prentice Hall, 1998.
35
18