eip intro lógica programación (b) 2014-2015
DESCRIPTION
matlabTRANSCRIPT
-
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