Beruflich Dokumente
Kultur Dokumente
Fundamentos de Informtica
Qu es la programacin?
La programacin como acto de resolver un problema Precondiciones y postcondiciones Denicin de algoritmo Datos, tipos de datos y expresiones Representaciones y diseo de algoritmos
Programacin
Programacin como acto de resolver un problema El conjunto de actividades implicadas en la descripcin, desarrollo e implementacin ecaz de soluciones algortmicas a problemas bien especicados. Computing Curricula 1991 ACM e IEEE
Programacin
Ejemplo
Supongamos que tenemos un montn de chas, cada una de las cuales tiene escrito el nombre y el primer apellido de una persona, junto con otros detalles personales como fecha de nacimiento, direccin y nmero de telfono. Las chas estn ordenadas alfabticamente segn el apellido. Supongamos que creamos una nueva cha, con el apellido de la persona X, y que deseamos incorporarla al montn existente. El problema que debemos resolver es cmo dividir el montn original en dos montones, tales que todas las chas del primer montn, precedan a X en la ordenacin y todas las del segundo no le precedan, pudiendo estar uno de los
4
Pre y Postcondiciones
Precondiciones del problema -> el conjunto de descripciones y relaciones entre los datos de entrada. Postcondiciones del problema -> el conjunto de descripciones y relaciones entre los datos de salida
Pre y Postcondiciones
Ejemplo Precondiciones
La entrada la componen un montn de chas accesibles, cada una de ellas, de forma individual, y otra cha externa al montn (cha problema). Cada cha consta de cuatro campos distintos. Cada campo es susceptible de explorarse independientemente, pero los cuatro forman un todo indivisible. Las chas del montn estn clasicadas de tal forma que, para cualquier valor de i, el valor del campo apellido de la cha i-sima es siempre no menor alfabticamente, que el de la cha que le precede (ordenacin alfabtica ascendente).
Pre y Postcondiciones
Ejemplo Postcondiciones
La salida constar de dos submontones de chas del montn original, y la cha problema. Llamemos a estos submontones montn izquierdo y montn derecho. Los montones izquierdo y derecho tienen que estar constituidos de tal forma, que todas las chas del montn izquierdo precedan, alfabticamente a la cha problema, y ninguna de las chas del montn derecho precedan, alfabticamente a la cha problema.
Algoritmo
Secuencia nita y ordenada de pasos que conducen a la solucin de un problema dado
Problema
Programa
Algoritmo
Independiente del lenguaje de programacin y la computadora Caractersticas Preciso
Debe indicar orden de los pasos y lo que hace cada uno
Denido
Si se ejecuta sobre los mismos datos debe dar mismo resultado
Finito
Tiene que acabar alguna vez
9
Ejemplo de Algoritmo
ALGORITMO Tabla_del_5 Constante Multiplicando=5; Variable Multiplicador:Entero; Inicio Multiplicador <-1; Repetir mientras Multiplicador<11 Escribe (Multiplicando * Multiplicador); Multiplicador <- Multiplicador+1; Fin_Repetir; Fin.
10
Datos
Informacin que ha sido puesta en forma utilizable por un ordenador Cualquier posicin de memoria con un nombre. Es diferente del dato que lo contiene Ej: Multiplicando y Multiplicador Constantes: Datos cuyo contenido no vara Variables: Datos cuyo contenido puede variar
11
Tipos de Datos
Simples Ordinales Enteros Carcter Lgico Enumerado Subrango No Ordinales Real Cronolgico Puntero Compuestos o complejos Cadena de caracteres Estructura de Datos Tipo de dato Abstracto
12
Enteros
Conjunto nito de los nmeros enteros. Operaciones: +, -, *, /, <, >, =, <=, >= Mdulo Valor absoluto Cuadrado Raz cuadrada
13
Carcter
Conjunto nito y ordenado de caracteres alfanumricos que incluyen dgitos, letras y caracteres especiales Cdigo estndar: ASCII Operaciones Obtener el valor numrico asociado (cdigo ASCII) Obtener el carcter del cdigo ASCII Los caracteres van entre para diferenciarlos P.e. 8 vs 8
14
Lgico
Solo dos valores: verdadero (1) y falso (0) En algunos lenguajes verdadero se representa como cualquier cosa que no sea falso (0) Operaciones NOT: Negacin AND: Da verdadero solo si ambos operandos lo son OR: Da falso solo si ambos operandos lo son Otras: XOR, NAND, <, >, =, >=, <=
15
ASCII
American Standard Code for Information Utiliza 7 bits para representar caracteres, ms uno de paridad A menudo se utiliza ASCII (de forma incorrecta) para denominar a estndares como el ISO-8859-1 que es una extensin que usa 8 bits para proporcionar caracteres utilizados en otros idiomas (como el Castellano).
16
17
Reales
Subconjunto nito de los nmeros reales. Operaciones: las mismas de los enteros y... Truncado (elimina la parte decimal) Redondeo (aproxima al entero ms prximo)
18
Enumerados
Se denen dando un conjunto nito de valores Ejemplo Tipo da={Lunes, Martes, Mircoles, Jueves, Viernes, Sbado, Domingo} Tipo licor={Whisky, Ginebra, Vodka, Ron}
19
Subrango
Toma una serie de valores a partir de otro tipo de datos Ejemplos laborable=Lunes..Viernes; minsculas=a..z; maysculas=A..Z;
20
Estructura de Datos
Organizacin de datos elementales con el objetivo de facilitar la manipulacin de los datos como un todo o individualmente. Ejemplo: Si nuestro programa va a gestionar clientes... Tipo Cliente{ id_Cliente: entero; nombre: cadenaCaracteres; dni: cadenaCaracteres; ... }
21
Estructuras de Datos
Arrays Vectores Matrices Registro Listas Pilas Colas rboles Conjuntos Grafos Tablas Hash Otros
22
Arrays
Tambin denominado arreglo, vector, alineacin. Conjunto de variables del mismo tipo cuyo acceso se realiza por ndices
4 Elemento 5
23
Matrices
Arrays de dos o ms dimensiones 0 1 2 Elemento 1,2 0 1 ... ... ... ...
24
Matrices
25
Registro
Conjunto de datos referentes a un mismo ente A los elementos del registro se les denomina campos Ejemplo: Tipo Cliente{ id_Cliente: entero; nombre: cadenaCaracteres; dni: cadenaCaracteres; ... }
26
Listas
Formadas por un nmero variable de datos (elementos) de un mismo tipo, ordenados de forma lineal. La diferencia con los arrays es que los primeros tienen un nmero jo de elementos, mientras que estas son dinmicas
27
Listas
Primer elemento
28
Listas
Operaciones Aadir elemento Eliminar un elemento Acceder al primer elemento de la lista Acceder al siguiente elemento del ltimo procesado Saber si la lista est vaca
29
Pila
Estructura de datos del tipo LIFO (Last In First Out) Dos operaciones Push: Apila un dato Pop: Desapila un dato Las operaciones se realizan sobre la cima de la pila
30
Pila
31
Cola
Estructura de datos del tipo FIFO (First In First Out) Mismas operaciones que la pila pero distinto comportamiento
32
rboles
Pepe Paco Juan
Jos
Mara
Sergio
Marisa
Julia
33
Grafos
Valencia 360 Madrid 95 610 300 Barcelona
Toledo
34
Expresiones
Elemento de un algoritmo que toma un valor. Puede ser una constante, una variable simple o una combinacin de estas con operadores Pueden ser aritmticas, lgicas o de caracteres Cuidado con el orden de evaluacin
35
Expresiones
Orden de evaluacin de operaciones aritmticas Entre parntesis *, / +, -
36
Expresiones
Orden de evaluacin de operaciones lgicas Negacin AND OR Operadores relacionales
37
Expresiones
38
Representaciones de Algoritmos
Hay diferentes mtodos para representar algoritmos Es necesario saber representar algoritmos pues es el paso intermedio entre el problema y la programacin de la solucin
39
Representaciones de Algoritmos
Pseudocdigo Grcas o diagramas Diagramas de ujo Diagramas de Chapin Diagramas de Nassi-Schneiderman (N-S)
40
Pseudocdigo
41
Pseudocdigo
Secuencial Instruccin 1; Instruccin 2; ...... Instruccin N;
42
Pseudocdigo
Selectiva Si ( condicin ) entonces Grupo de Instrucciones 1; Si_no Grupo de Instrucciones 2; Fin de si;
43
Pseudocdigo
Selectiva (varias posibilidades) Si ( condicin ) entonces Grupo de Instrucciones 1; Si_no_pero_si(condicion) entonces Grupo de Instrucciones ; ... Si_no Grupo de Instrucciones 2; Fin de si;
44
Pseudocdigo
Iterativa (en funcin de condicin) Mientras ( condicin ) hacer Grupo de Instrucciones; Fin_de_mientras;
45
Pseudocdigo
Iterativa (nmero jo de iteraciones) Para i entre min y max hacer Grupo de Instrucciones; Fin_de_para;
46
Ejemplo pseudocdigo
Determinar si un nmero es par leer N mientras (N>2) repetir N = N -2; si N=2 entonces escribe es par si no escribe es impar
47
Ejemplo pseudocdigo
48
Ejemplo pseudocdigo
Suma de los elementos de un Array Suma de dos matrices Determinar la raz cuadrada de un nmero (sabiendo que es entera)
49
Diagramas de Flujo
Representacin grca de los algoritmos Serie de smbolos unidos por echas Los smbolos son acciones Las echas representan el orden de realizacin de las acciones
50
Diagramas de Flujo
C N=N-2 F Si N>2 No Si N=2
No
N=1
51
Diagramas de Flujo
52
Diagramas de Flujo
Asignacin X=X*2
53
Diagramas de Flujo
Decisin Si Y=X/2 No
54
Diagramas de Flujo
Entrada/Salida Leer X
55
Diagramas de Flujo
Llamada a Procedimiento Mod(A,B)
56
Diagramas de Flujo
Ciclo Repetir para I=1..20
Acciones a repetir
57
Diagramas de Flujo
Comienzo C F Fin
58
Procedimientos
Trozo de programa que realiza una tarea concreta Tiene un nombre mediante el cul puede ser llamado desde otra parte del programa Puede tener argumentos que son variables que se le pasan desde el programa
59
Procedimientos
Usar procedimientos evita la duplicacin de fragmentos de cdigo Facilita la construccin y comprensin de programas pues es ms fcil disear y probar un fragmento de cdigo relativamente pequeo y que realiza una funcin concreta
60
Procedimientos
Ej: Programa de gestin de una tienda Tener un procedimiento ConsultarCliente( DNI, nombre) puede resultar muy til. Ser invocado desde muchos sitios, tanto para consultar los datos del cliente como para comprobar su existencia
61
Recursividad
Se basa en la utilizacin de procedimientos Tcnica especial de resolucin aplicable a problemas con estructura recursiva Por ejemplo, si quieres romper un papel en cuadraditos pequeos, lo rompes por la mitad y luego juntas las dos mitades y las vuelves a romper por la mitad...
62
Recursividad
Procedimiento romperMitad( papel ) mitades=romperAlaMitad(papel); resultado=romperMitad(mitades[0]); resultado+=romperMitad(mitades[1]);
63
Recursividad
Importante: Denir muy bien cundo ha de parar En nuestro ejemplo diremos que pare cundo el papel resultante tenga un tamao menor o igual a X,Y.
64
Recursividad
Ejemplo: Ordenar de forma inversa una lista ordenada Procedimiento Invertir( Lista ) X=Lista[ Lista.longitud - 1 ]; Si (Lista.longitud > 1) Lista2 = Invertir( Lista[0..Lista.longitud - 2]); Escribir(X);
65
Diseo de un Algoritmo
Hay problemas complejos que no son abordables directamente Para estos casos habr que descomponer el problema en subproblemas ms pequeos que podamos resolver directamente
66
Diseo Descendente
67
Diseo Descendente
Ej: Tenemos que leer de chero una base de datos con clientes, calcular la media de gasto por mes y otras mtricas y nalmente mostrar una grca con estos resultados
68
Diseo Descendente
Principal
LeerClientes