Sie sind auf Seite 1von 26

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

Anlisis

Algoritmo

Codificacin

Programa

Ejecucin

Resultado

Algoritmos por doquier:


Un algoritmo de ejemplo para cocinar una tarta de queso

Inicio
Aadir 200gr queso fresco

T = 0 min.

Aadir 150gr azcar

Al horno

Aadir 50gr harina

Aadir 2 huevos

Hecho?

no
Batir

Masa fina?

s
T = T+5 min.

no
Fin

Sacar del horno

Lgica de programacin
Programacin estructurada
Cdigos legibles, no solo para iniciados
Buena estructura (formato que se usa al redactar un programa)

Cada bloque realiza una funcin bien definida

Estructurado o constituido en bloques

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:

Reglas

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.

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.

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
Tiempo
0
Listo
0

Do
If Hecho
Listo

El pseudocdigo vara de un programador a


otro (sintxis y semntica personal).

Else
Listo

End If
Tiempo

While Listo

Tiempo
1

Print Sacar del horno


End

5 min.

Elementos de programacin (con Diagramas de flujo y Pseudocdigo)


Cmo poner en funcionamiento un algoritmo
Inicio / Fin

Diagramas de Flujo

% En pseudo cdigo no es
usual indicar el principio y
el final de un algoritmo

Todos los programas tienen un


inicio y un final: son finitos

Diagramas de Flujo

Tipos de datos

Pseudocdigo

% Los datos no es necesario


declararlos (i.e. especificar el
tipo), pero es conveniente
inicializarlos

Pseudocdigo
% Los datos no es necesario
declararlos (i.e. especificar el
tipo), pero es conveniente
inicializarlos (asignacin)

5.0

Print N

Tipos de datos enteros


Tipo

Tamao en bits

Rango representado

byte / char

short int

16

215,215

32768, 32767

int

32

231,231

2.1 109,2.1 109

long int

64

263,263

9 1018, 9 1018

27 ,27

128,127

Tipos de datos reales

Tipo

Long. palabra

Mantisa en bits

Exponente en bits

Rango representado

double

64

52 (+1)

10 (+1)

10308 ,10308

~ 15

float

32

23 (+1)

7 (+1)

1038 ,1038

~7

(vase Sistemas numricos y errores)

Precisin en dgitos

Operaciones artimticos

Operadores aritmticos

Operadores lgicos

Suma

Igual a (distinguir de asignacin)

Resta

Mayor que

*
/

Producto

Menor que

Divisin

Mayor o igual que

Potencia

Menor o igual que

Parntesis (precedencia)

Distinto de

...

...

AND

Producto lgico

OR

Suma lgica

...

...

Resultado: 1 0 (TRUE o FALSE)

Estructuras de control del flujo


Estructuras de seleccin (operacin lgica y decisin)
If < condicin >
Bloque_if

Simple
La estructura general es
Diagramas de Flujo

End If
Pseudocdigo
Input numero
If numero

Output Mayor que 5.


End If

If < condicin >

Doble

Bloque_if

La estructura general es

Else
Bloque_else
End If
Diagramas de Flujo

Pseudocdigo
Input numero
If numero

Output Mayor que 5.

Else
Output Menor que 5.
End If

If < condicin1 >


Bloque_if1
Else
If < condicin2 >
Bloque_if2
Else
Bloque_else
End If
End If

Anidada
La estructura general es

Diagramas de Flujo

Pseudocdigo

numero

Input
If

numero

Output Mayor que 5.


Else

Output Menor o igual a 5.


If

numero

Output Igual a 5.
Else
Output Menor que 5.
End If
End If

Switch (<expresin entera o carcter>)


Case <valor1>:
Bloque_valor1
End Case

Mltiple
Para enteros o carcteres
La estructura general es

Diagramas de Flujo

Case <valor2>:
Bloque_valor2
End Case

Default :
Bloque_default
End Case
End Switch

Pseudocdigo
Input numero
Switch numero
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

Estructuras de iterativas

For <asignacin inicial> To <expr. relacional>

Bloque_for

Controladas por contador


End For

Instrucciones se ejecutan una o varias veces


Se sabe el nmero de veces que se va a ejecutar
La estructura general es:
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

Controladas por centinela I (while)

While <condicin>

Instrucciones se ejecutan una o varias veces


No se sabe el nmero de veces que se va a
ejecutar
La condicin est antes del bloque
La estructura general es:

Bloque_while
End While

Diagramas de Flujo

Pseudocdigo
i=1
While i<11
Print I
i = i +1
End For

Controladas por centinela II (do-while)

Do

Instrucciones se ejecutan una o varias veces


No se sabe el nmero de veces que se va a
ejecutar
La condicin est despus del bloque (i.e.
siempre se ejecuta al menos una vez)
La estructura general es:

Bloque_do-while
While <condicin>

Diagramas de Flujo

Pseudocdigo
i=1
do
Print I
i = i +1
While i<11

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

h(t )

40 e

0.005 t

0.15 t

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.
2.

Ordene de mayor a menor los valores de precipitacin.


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.

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.

Lenguajes de bajo nivel (prximos a la mquina):


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
....

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


programas escritos en ensamblador? (programas traductores)

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

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;
}

....

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)
....

Intrprete

if (tiempo == 1800){
printf(Saca tarta del horno. \n);
}
else{
printf(Incrementa el tiempo. \n);
tiempo = tiempo + 600;
}
....

Instruccin en leng. mquina


....
10101101
10111100
....

Compilador

Programa Objeto

L1

M1

L2

M2

L3

M3

(Lenguajes)

(Mquinas)

x6 traductores

x9 traductores

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.
L1

L2

L3

(Lenguajes)
(L. Intermedio)

M1

M2

M3

(Mquinas)

Editor de texto

Cdigo fuente

Compilador
Otros objetos
y bibliotecas

Objeto

Enlazador

Ejecutable

Interpretado por el SO.

Definiciones

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

Das könnte Ihnen auch gefallen