EIP Intro Lógica Programación (b) 2014-2015

download EIP Intro Lógica Programación (b) 2014-2015

of 26

description

matlab

Transcript of EIP Intro Lógica Programación (b) 2014-2015

  • Introduccin a la lgica de programacin y entorno Matlab (II) Manuel Dez Minguito

    Grupo de Dinmica de Flujos Ambientales

    Universidad de Granada

  • ndice

    Lgica de programacin Programacin estructurada Diagramas de flujo Pseudocdigo Elementos de programacin

    Inicio y fin Tipos de datos Estructuras de control del flujo

    Estructuras de seleccin Simple Doble Anidada Mltiple

    Estructuras iterativas Controladas por contador Controladas por centinela I Controladas por centinela II

    Problemas propuestos

    Lenguajes de alto y bajo nivel, intrpretes y compiladores

  • La programacin de ordenadores es un conjunto de tcnicas, mtodos y reglas para poder

    construir programas de ordenador legibles, correctos y eficientes

    Un programa es una secuencia de instrucciones (tambin llamadas sentencias u rdenes)

    escritas en un lenguaje determinado que el ordenador (el SO) es capaz de comprender. Las

    instrucciones que forman un programa desencadenan una serie de acciones por parte del

    ordenador.

    Lenguaje de programacin es un lenguaje utilizado para construir programas de ordenador.

    - Se especifican smbolos y reglas para construir rdenes sintctica (cmo se escriben) y

    semnticamente (significado) correctas, para que las interprete el ordenador.

    - Diferentes lenguajes de programacin segn su aplicacin (Fortran, C, C++, SQL, etc.)

    - Lenguajes de ato y bajo nivel.

    Algoritmo: Secuencia de pasos que permite, sin ambigedad, obtener la solucin a un

    problema en un nmero finito de pasos:

    - Repetitividad: son deterministas.

    - Finitos

    - Precisin (sin ambigedad)

    Problema Algoritmo

    Programa Resultado

    Anlisis

    Ejecucin

    Codificacin Problema

    Anlisis Algoritmo Problema

    Programa

    Algoritmo Problema

    Resultado Programa

    Algoritmo Problema Anlisis

    Ejecucin

  • Algoritmos por doquier:

    Un algoritmo de ejemplo para cocinar una tarta de queso Inicio

    Aadir 200gr queso fresco

    Aadir 150gr azcar

    Aadir 50gr harina

    Aadir 2 huevos

    Batir

    Masa fina? s

    no

    T = 0 min.

    Al horno

    Hecho?

    T = T+5 min.

    Fin

    s

    no

    Sacar del horno

  • Lgica de programacin

    Programacin estructurada

    Cdigos legibles, no solo para iniciados Buena estructura (formato que se usa al redactar un programa)

    Estructurado o constituido en bloques

    Cada bloque realiza una funcin bien definida

    Entradas y salidas bien definidas

    No saltos entre instrucciones tipo GOTO (Basic, Fortran)

    Tipos de bloques

    (suficientes)

    Secuencial

    Bucle o iteracin

    Seleccin

    (Otros: programacin orientada a objetos, a eventos...)

  • Diagramas de flujo

    Diagramas de flujo u organigramas son esquemas que se emplean para representar grficamente un algoritmo.

    Representan el flujo de informacin.

    Smbolos estndar:

  • Los Diagramas de flujo deben escribirse de arriba hacia abajo, y/o de izquierda a derecha.

    Los smbolos se unen con lneas, las cuales tienen en la punta una flecha que indica la direccin que fluye la informacin, se deben de utilizar solamente lneas de flujo

    horizontal o verticales (nunca diagonales).

    Se debe evitar el cruce de lneas, para lo cual se quisiera separar el flujo del diagrama a un sitio distinto, se pudiera realizar utilizando los conectores.

    Se debe tener en cuenta que solo se deben utilizar conectores cuando sea estrictamente necesario.

    No deben quedar lneas de flujo sin conectar.

    Todo texto escrito dentro de un smbolo debe ser legible, preciso, evitando el uso de muchas palabras.

    Todos los smbolos pueden tener ms de una lnea de entrada, a excepcin del smbolo final.

    Solo los smbolos de decisin pueden y deben tener ms de una lnea de flujo de salida. El smbolo inicial slo tiene una salida.

    Reglas

  • Pseudocdigo

    Lenguaje de alto nivel para describir algoritmos, aunque algo ms prximos a la computadora que

    los diagramas de flujo.

    Emplea palabras y convenciones como lenguajes de programacin tipo C o Fortran, pero

    omite declaracin de variables y no sigue reglas

    estructurales estrictas.

    El pseudocdigo vara de un programador a otro (sintxis y semntica personal).

    Print Aadir 200gr de queso fresco Print Aadir 150gr de azcar Print Aadir 50gr de harina Print Aadir 2 huevos Do

    Batir

    While Masa_no_fina

    Print Mezcla al horno

    Do

    If Hecho

    Else

    End If

    While

    Print Sacar del horno

    End

    0Tiempo

    0Listo

    5min.Tiempo Tiempo

    1Listo

    0Listo

    1Listo

  • Elementos de programacin (con Diagramas de flujo y Pseudocdigo)

    Cmo poner en funcionamiento un algoritmo

    Inicio / Fin

    Todos los programas tienen un

    inicio y un final: son finitos

    % En pseudo cdigo no es

    usual indicar el principio y

    el final de un algoritmo

    Diagramas de Flujo Pseudocdigo

    Tipos de datos % Los datos no es necesario declararlos (i.e. especificar el

    tipo), pero es conveniente

    inicializarlos (asignacin)

    Diagramas de Flujo Pseudocdigo

    % Los datos no es necesario

    declararlos (i.e. especificar el

    tipo), pero es conveniente

    inicializarlos

    5.0N

    Print N

  • (vase Sistemas numricos y errores)

    Tipo Long. palabra Mantisa en bits Exponente en bits Rango representado Precisin en dgitos

    double 64 52 (+1) 10 (+1) ~ 15

    float 32 23 (+1) 7 (+1) ~ 7 38 3810 ,10

    308 30810 ,10

    Tipo Tamao en bits Rango representado

    byte / char 8

    short int 16

    int 32

    long int 64

    7 72 ,2 1 128,127

    15 152 ,2 1 32768,3276731 31 9 92 ,2 1 2.1 10 ,2.1 1063 63 18 182 ,2 1 9 10 ,9 10

    Tipos de datos enteros

    Tipos de datos reales

  • Operadores aritmticos

    Suma

    Resta

    Producto

    Divisin

    Potencia

    Parntesis (precedencia)

    ... ...

    Operaciones artimticos

    Operadores lgicos

    Igual a (distinguir de asignacin)

    Mayor que

    Menor que

    Mayor o igual que

    Menor o igual que

    Distinto de

    Producto lgico

    Suma lgica

    ... ...

    Resultado: 1 0 (TRUE o FALSE)

    AND

    OR

    *

    /

    ^

  • Estructuras de control del flujo

    Estructuras de seleccin (operacin lgica y decisin)

    Simple

    Diagramas de Flujo Pseudocdigo

    Input

    If

    Output Mayor que 5.

    End If

    numero

    5numero

    La estructura general es

    If < condicin >

    Bloque_if

    End If

  • Doble

    Diagramas de Flujo Pseudocdigo

    Input

    If

    Output Mayor que 5.

    Else

    Output Menor que 5.

    End If

    numero

    5numero

    La estructura general es

    If < condicin >

    Bloque_if

    Else

    Bloque_else

    End If

  • Anidada

    Diagramas de Flujo Pseudocdigo

    Input

    If

    Output Mayor que 5.

    Else

    Output Menor o igual a 5.

    If

    Output Igual a 5.

    Else

    Output Menor que 5.

    End If

    End If

    numero

    5numero

    La estructura general es

    If < condicin1 >

    Bloque_if1

    Else

    If < condicin2 >

    Bloque_if2

    Else

    Bloque_else

    End If

    End If

    4numero

  • Mltiple

    Diagramas de Flujo Pseudocdigo

    Input

    Switch

    Case 4:

    Output Igual a 4. End Case

    Case 3:

    Output Igual a 3. End Case

    Case 2:

    Output Igual a 2. End Case

    Case 1:

    Output Igual a 1. End Case

    Default :

    Output Otro caso. End Case

    End Switch

    numero

    Para enteros o carcteres La estructura general es

    Switch ()

    Case :

    Bloque_valor1

    End Case

    Case :

    Bloque_valor2

    End Case

    Default :

    Bloque_default

    End Case

    End Switch

    numero

  • Controladas por contador

    Diagramas de Flujo Pseudocdigo

    % Contiene 4 partes importantes:

    1. El valor en el que comienza el bucle

    2. La condicin bajo la cual el bucle

    continua

    3. Los cambios que tienen lugar en cada

    bucle

    4. Las instrucciones del bucle

    For i=1 To i=10

    Print I

    End For

    Instrucciones se ejecutan una o varias veces Se sabe el nmero de veces que se va a ejecutar La estructura general es:

    For To

    Bloque_for

    End For

    Estructuras de iterativas

  • Controladas por centinela I (while)

    Diagramas de Flujo Pseudocdigo

    i = 1

    While i

  • Controladas por centinela II (do-while)

    Diagramas de Flujo Pseudocdigo

    i = 1

    do

    Print I

    i = i +1

    While i

  • Ejercicios propuestos: Se pide representar mediante diagramas de flujo y pseudocdigo

    los algoritmos asociados a los siguientes programas, que piden:

    1. Sumar los primeros 50 nmeros (con ciclos for, while y do-while)

    2. Determinar el producto escalar de dos vectores (ciclo for)

    3. Determinar el mximo de un vector

    4. Calcular una aproximacin a orden N para la funcin exponencial

    5. Calcular una aproximacin a orden N para la funcin coseno

  • Problemas (slo en pseudocdigo)

    1. Un laboratorio encuentra un polmero que puede implantarse para liberar una

    determinada hormona en cantidades dadas por la ecuacin

    estando h dada en nanogramos por decilitro de sangre (ng/dl) y t en das. Encuentre

    la mxima concentracin de esta hormona en el cuerpo y el instante en el que ocurre.

    Ayuda: represente la funcin y determine el mximo analticamente.

    2. Suponga que dispone de un fichero de entrada con datos de precipitacin en la

    cuenca del ro Guadalfeo ordenados por columnas. La primera columna representa

    la fecha, la segunda la duracin del evento de lluvia y la tercera los valores de la

    precipitacin total.

    1. Ordene de mayor a menor los valores de precipitacin.

    2. Determina el mximo y el mnimo de precipitacin y la fecha en que se

    produjeron.

    3. Determina cuntos valores estn por encima de la media y el percentil 9.

    0.005 0.15( ) 40

    t th t e e

  • Las rdenes que se le suministran a una computadora tienen un sintxis estricta y una semntica bien

    definida (despus de todo son mquinas). En analoga a un lenguaje hablado y escrito, todo lo

    relacionado con las reglas y los smbolos que pueden utilizarse para desarrollar un programa constituyen

    un lenguaje de programacin.

    Lenguaje Mquina: La computadora slo entiende de unos y ceros 1010001010101001.... Acorde a las seales discretas internas de un ordenador +5V (1), -5V (0) El inconveniente es que es casi ininteligible para el usuario (no hay diferencia entre datos e instrucciones).

    .... 10101101 10111100 ....

    Lenguaje Ensamblador: Es un intermedio entre un lenguaje mquina y el que nosotros empleamos Incorporan caracteres. Reglas nemotcnica para especificar operaciones a nivel de registro y direccin de memoria. .... MOV r1, d3

    ADD d3, d6

    ....

    Lenguajes de bajo nivel (prximos a la mquina):

    Si el computador slo es capaz de entender 1s y 0s qu ocurre con los

    programas escritos en ensamblador? (programas traductores)

  • Ms naturales que el lenguaje ensamblador. Facilitan la labor del programador Proporcionan un repertorio de instrucciones amplio, potente y fcilmente comprensible.

    ....

    if (tiempo == 1800){

    printf(Saca tarta del horno. \n); }

    else{

    printf(Incrementa el tiempo. \n); tiempo = tiempo + 600;

    }

    ....

    Lenguajes de alto nivel (prximos al lenguaje hablado y escrito):

  • Programas traductores

    Intrpretes

    Trata un programa fuente instruccin a instruccin Comprueba el lxico y la semntica Y va ejecutando las instrucciones una a una p.ej Basic, Matlab (ojo)

    Compiladores

    A partir del programa fuente genera un programa objeto (en binario o lenguaje mquina) Comprueba el lxico y la semntica Slo realiza una vez la traduccin A veces, no genera directamente la traduccin a L. Mquina, sino a un lenguaje intermedio.

    ....

    if (tiempo == 1800){

    printf(Saca tarta del horno. \n); }

    else{

    printf(Incrementa el tiempo. \n); tiempo = tiempo + 600;

    }

    ....

    ....

    10101101

    10111100

    ....

    Intrprete

    Compilador Programa Objeto

    Instruccin en leng. mquina

    (Lenguajes)

    (Mquinas)

    L1

    M1

    L2 L3

    M2 M3 x9 t

    radu

    cto

    res

    L1

    M1

    L2 L3

    M2 M3

    x6 t

    radu

    cto

    res

    (Lenguajes)

    (Mquinas)

    (L. Intermedio)

  • Cdigo fuente

    Objeto

    Ejecutable

    Compilador

    Editor de texto

    Enlazador

    Otros objetos

    y bibliotecas

    Interpretado por el SO.

  • Compilador: es un programa que toma un cdigo fuente y genera un programa

    en lenguaje mquina (en binario) llamado cdigo objeto.

    Intrprete: es un programa que toma el cdigo fuente y lo traduce y ejecuta

    instruccin a instruccin.

    Traductor: realiza la conversin de un programa escrito en lenguaje de alto nivel

    aun programa en lenguaje mquina.

    Enlazador: es un programa que toma uno o ms objetos generados por un

    compilador y los junta en un nico programa ejecutable.

    Cdigo objeto: programa en lenguaje mquina generado por un compilador o

    ensamblador a partir de un cdigo fuente.

    Cdigo fuente: serie de sentencias o instrucciones escritas mediante reglas

    asociadas a lenguajes de alto nivel

    Definiciones