Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Intro PDF
Intro PDF
Intro PDF
Programacin
Departamento de Informtica
Universidad de Valladolid
Curso 2012-13
Modular Imperativo
zCdigo
Mdulos Procedimental
Procedimientos
Estructurado Declarativo
Control de flujo
Acciones Funcional
elementales
Orientado a Eventos
Lgico
Relacin
mcd(a, b) = max{d : a | d , b | d }
z donde a | d significa que a es divisible exactamente por d:
a | d n : a = n d b | d m : b = m d
z si a y b son divisibles por d, y a > b, entonces:
a b = ( n m) d ( a b ) | d
z y por lo tanto (restar sucesivamente b es equivalente a hallar el resto de
dividir a por b):
a > b mcd(a, b) = mcd(a b, b) = mcd(a mod b, b)
zmcd zresto
zA Entrada #1 zA Entrada #1
zB Entrada #2 zB Entrada #2
zA B zNO
zC resto(A,B)
zB C A>B
zSI
zNO
C=0 zA A-B
zSI
zSalida #1 B zSalida #1 A
z#1 z#1
11 Feb. 2011 Csar Vaca Rodrguez, Dpto. de Informtica, UVa 11
FORTRAN-77
z Imperativo, procedural, no estructurado
function MCD(a,b:integer):integer;
var c:integer;
begin Paso por valor
while b<> 0do
begin Tipado explcito
c:=a;
a:=b;
b:=cmod b
end;
MCD:=b
end;
mcd(A,0,D): A= D.
mcd(A,B,D): B> 0, Cis Amod B,mcd(B,C,D).
Actuadores
Sensores
Mundo Mquina Mundo
Resultados
Externo
Datos
de Externo
Cmputo
zSecuencias
Nmeros
zde bits
Texto
Smbolos
Imgenes
Sonido
Medidas
Contexto
...
z1/1/1930
zLunes
z2/1/1930
zMartes
z31/2/1930
zMircoles
z...
zJueves
z14/2/2010
zViernes
z15/2/2010
zSbado
z...
zDomingo
z31/12/2099
AND XOR
z Video: http://www.youtube.com/watch?v=MqhuAnySPZ0
zMemoria
z(estados) zReloj
zControlador
zEntrada z(circuito combinacional zSalida
z o similar)
Memoria
z Video: http://www.youtube.com/watch?v=0pGXL5OKGqs
11 Feb. 2011 Csar Vaca Rodrguez, Dpto. de Informtica, UVa 22
Mquina Analtica
z La primera mquina computadora universal (si se hubiera
construido)
z Charles Baggage, 1837
z Primer programa de la historia: Ada Lovelace
z Video: http://www.youtube.com/watch?v=88GYbyMaaN8&NR=1
Lista de transiciones
Registro de estado
Controlador
Motor izda/dcha
Cabeza
lectora / escritora
21011003110145
01101001010001110101001011110111110
| | || | ||| | | || | | |
2 101 100 3 1 10 1 4 5
z1 0 00D 10D
z3
z0 1 21I 11D
2 30D 40D
z0
z0 0 z1 1 0 z1 1 z1 3 01S 31D
z0 z1 z2 z4 z5
z1 z0 z1 z0 4 51I 41D
z0
1 5 21I 51I
z1 z0 2 30I 21D
1
3 01S 40I
z1
z1
z0
0 4 51I 41I
0 z7 z6 z5
z1 z0
5 60D 21D
z El algoritmo se basa en que para 6 00D 71D
incrementar un nmero en binario basta 7 31D 70D
con localizar el ltimo 0 y cambiarlo por 1 y
todos los siguientes 1 por 0:
10100111 + 1 = 10101000
00D11D01S11D
z Quitando primera transicin y convirtiendo 01S en 1S:
11214112
z Conviertiendo a binario expandido:
0101011010111101010110
z Quitando los tres dgitos finales y traduciendo a decimal:
z La mquina de Turing INC unaria es la 177.642-ava
mquina de Turing
h(0, x ) = f ( x )
z Recursin primitiva:
h( y + 1, x ) = g ( y, h( y, x ), x )
11 Feb. 2011 Csar Vaca Rodrguez, Dpto. de Informtica, UVa 42
Funciones Primitivas Recursivas
z Suma:
suma(0, b) = b suma(0, b) = P11 ( x)
suma(a + 1, b) = suma(a, b) + 1 suma(a + 1, b) = S ( P23 (a, suma(a, b), b))
[ f ( y, x )] = min{y : f ( y, x ) = 0}
z Equivalentes a lenguajes con bucles tipo while.
( a , b, 2 ) = a b = a b = a a a
b veces
a
(a, b,3) = a aa
= a b = a (a ( a ))
b veces b veces
(a, b,4) = a b = a (a ( a ))
b veces
( a , b, n ) = a b = a (a ( a ))
n veces n 1 veces n 1 veces n 1 veces
b veces
( x, y ) x 2 + y 2
z Toda funcin de ms de un argumento se puede considerar
como una funcin de un solo argumento que devuelve no un
valor sino una funcin: Currificacin
x y x2 + y2
z No se necesitan nmeros: Todo puede ser representado
nicamente mediante funciones.
zCompilacin zEjecucin
Entorno
(SO)
Libreras Libreras
Mdulos estticas dinmicas
Programa
(Sesin interactiva) Intrprete
Ejecucin
Interpretacin
I/O
Estado
Sesin
Comando actual
Resultado
Mdulos
Estado
Interaccin S.O.
Libreras estndard
Universal Especfico
Orientacin a Objetos
Programacin Genrica
COBOL
ALGOL Pascal Modula-2
FORTRAN
C C++ Scheme
Prolog
LISP
Simula Smalltalk Objective C
Computacin Distribuida
90s 00s
Erlang Ruby
Modula-2
VB
FORTRAN PASCAL
Delphi
ADA C#
Java
ALGOL
SIMULA Eiffel
JavaScript
C++ PHP
COBOL C
AWK Perl
CLisp
Modula-2
FORTRAN PASCAL VB
Delphi
ADA C#
Java
ALGOL
SIMULA Eiffel
Imperativo
JavaScript
Funcional PHP
Orient. Objeto
C++
Scripting C
AWK Perl
DATA DIVISION.
WORKING-STORAGE SECTION.
01 LoopCount PIC 9 VALUE ZEROS.
01 LoopCount2 PIC S9 VALUE ZEROS.
PROCEDURE DIVISION.
Begin.
DISPLAY "Start WHILE Iteration of LoopBody"
PERFORM LoopBody WITH TEST BEFORE
VARYING LoopCount FROM 1 BY 2
UNTIL LoopCount GREATER THAN 5.
DISPLAY "Finished WHILE iteration. LoopCount = " LoopCount.
...