Anda di halaman 1dari 69

Qu es la programacin?

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.

Programa => transformador de precondiciones en postcondiciones


7

Algoritmo
Secuencia nita y ordenada de pasos que conducen a la solucin de un problema dado

Problema

Diseo del Algoritmo

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

Tabla Caracteres ASCII

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

A igual prioridad, de izquierda a derecha

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

No hay un estndar para la representacin de algoritmos mediante 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

El algoritmo anterior no es el nico que resuelve el problema Algn otro?

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

Escribe Par Escribe Impar

No

N=1
51

Diagramas de Flujo

Cada smbolo usado representa una accin distinta

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

Trabajar a un nivel abstracto, dividiendo el problema en sus partes naturales

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

Calcular Mtricas Dibujar Ejes

Mostrar Grca ...


69