Professional Documents
Culture Documents
Fundamentos de la programacin
1
Grado en Ingeniera Informtica
Grado en Ingeniera del Software
Grado en Ingeniera de Computadores
Facultad de Informtica
Universidad Complutense
1
01/10/2013
Computadora
Mquina electrnica, analgica o digital,
dotada de una memoria de gran capacidad
y de mtodos de tratamiento de la informacin,
capaz de resolver problemas matemticos y lgicos
mediante la ejecucin de programas informticos
2
01/10/2013
Hardware
Componentes que integran
la parte material
de una computadora
Software
Programas, instrucciones
y reglas informticas
para ejecutar tareas
en una computadora
3
01/10/2013
Trabajo en equipo.
Mltiples roles...
Analistas
Parque Jursico Diseadores
Programadores
Probadores
Administradores de
sistemas
Etctera...
Anlisis Qu?
Diseo Cmo?
Programacin Implementacin
Prueba y depuracin
Mantenimiento
4
01/10/2013
La prehistoria
El baco
Siglo XX
1936 Mquina de Turing
1946 ENIAC: Primera computadora digital
de propsito general
1947 El transistor
ENIAC (Wikipedia)
1953 IBM 650: Primera
computadora a gran escala
1966 ARPANET: Origen de Internet
1967 El disquete
1970 Sistema operativo UNIX
1972 Primer virus informtico (Creeper)
Lenguaje de programacin C
1974 Protocolo TCP. Primera red local
5
01/10/2013
Siglo XXI
2001 Windows XP
Mac OS X
2002 Mozilla Firefox
2007 iPhone
2008 Android ...
6
01/10/2013
Esquema general
Memoria
temporal
Dispositivos Dispositivos
C.P.U.
de entrada de salida
Teclado Monitor
Ratn Impresora
Escner Altavoz
Tctil Almacenamiento
permanente
Dispositivos de E/S
A.L.U.
Unidad Aritmtico-Lgica
Memoria
Unidad de Control
7
01/10/2013
La memoria
Memoria Cada celda tiene
01
una direccin asociada
02
Celdas de 8 / 16 / 32 / 64 bits
03 Informacin voltil
04
05
Bus
06 1 Bit = 0 / 1
de
07 1 Byte = 8 bits = 1 carcter / n (0-255)
datos
08 1 Kilobyte (KB) = 1024 Bytes
... 1 Megabyte (MB) = 1024 KB
1 Gigabyte (GB) = 1024 MB
1 Terabyte (TB) = 1024 GB
1 Petabyte (PB) = 1024 TB
Direccin
210 = 1024 1000
Registro C Instruccin
Registro D
Registro E
Registro R
Bus de datos
8
01/10/2013
Bus de datos
9
01/10/2013
Mayor legibilidad:
READ 2F Cdigo fuente
REG 01 (lenguaje ensamblador)
READ 30
REG 02 Programa
ADD ensamblador
WRITE 31
10
01/10/2013
El sistema operativo:
Software bsico encargado de manejar el hardware y facilitar el
trabajo a los programas de aplicacin, proporcionndoles un
conjunto de servicios genricos.
Interfaz con el usuario.
Asignacin de tiempos de CPU.
Control y asignacin racional de los recursos de la computadora.
Ejecucin de programas.
Administracin de discos y dispositivos.
...
Modelo de ejecucin
#include <iostream>
using namespace std;
Cdigo fuente
basado en compilacin: int main()
{
programas completos
}
Compilador
Otros modelos:
Cdigo objeto 0100010100111010011100
Intrpretes,
Mquinas virtuales Cdigo
Enlazador objeto de
biblioteca
11
01/10/2013
FORTRAN C#
1954 C
CPL 2000
1971
1963
Python
ALGOL Pascal Modula 1991
1958 1970 1975
BASIC
1964
Ada Eiffel
1979 1986
Simula
1964 Smalltalk Ruby
Fuente: http://www.levenez.com/lang/ 1971
1993
Haskell
Lisp Scheme 1987
1958 1975
Logo
1968
12
01/10/2013
Programacin modular
Elementos de un lenguaje
Instrucciones
Datos (literales, variables, tipos)
Subprogramas (funciones)
Comentarios
Directivas
Directiva
... #include <iostream>
using namespace std;
Subprograma
int main()
{ Dato Comentario
Instruccin cout << "Hola Mundo!" << endl; // Muestra Hola Mundo!
Instruccin return 0;
Dato
}
13
01/10/2013
Semntica
Significado de cada elemento del lenguaje
Para qu sirve?, Qu hace?
Especificacin
Lenguajes (BNF)
Diagramas
Ejemplo: Nmeros enteros
BNF
<numero entero> ::= <signo opcional><secuencia de dgitos>
<signo opcional> ::= +|-|<nada>
<secuencia de dgitos> ::= <dgito>|<dgito><secuencia de dgitos>
<dgito> ::= 0|1|2|3|4|5|6|7|8|9
| significa +23
<nada> ::= -159
1374
1-34
+
3.4
0 .. 9 002
-
14
01/10/2013
+23 +
-
0 .. 9 +23
1374 +
-
0 .. 9 1374
1-34 + ?
-
0 .. 9 1-
15
01/10/2013
Hola Mundo!
Un programa que muestra un saludo en la pantalla:
Hola Mundo!
#include <iostream>
using namespace std;
int main()
{
cout << "Hola Mundo!" << endl; // Muestra Hola Mundo!
return 0;
}
{
Bloque de cdigo
16
01/10/2013
Qu hace el programa?
La ejecucin del programa siempre empieza en la funcin main()
Se ejecutan las instrucciones en secuencia de principio a fin
Fin
Editor
Bloc de notas, Wordpad, Writer, Gedit, Kwrite,
(texto simple, sin formatos)
Editores especficos, coloreado sintctico: Emacs, Notepad++
17
01/10/2013
Cdigo objeto de
Enlazador
la biblioteca iostream
Hola Mundo!
Cargador hola.exe
(ejecutable)
Compilador
Importante: C++ estndar (C++11)
GNU G++ (MinGW en Windows),
MS Visual Studio, Borland C++,
18
01/10/2013
19
01/10/2013
Semntica
Significado de cada elemento del lenguaje
Para qu sirve?, Qu hace?
Reglas que determinan el efecto da cada instruccin
20
01/10/2013
instruccin Stop ;
avanzar
North 1
East 2
direccin num 3
South
4
West
5
N
El problema a resolver
Estando el coche en la posicin A,
conseguir llegar al Cine B. B
Qu pasos hay que seguir ?
Arrancar
Ir un bloque al Norte
Ir dos bloques al Este
Ir cinco bloques al Norte
Ir dos bloques al Este A
Parar
Bloque:
21
01/10/2013
N
El algoritmo
Secuencia de pasos que hay que
seguir para resolver el problema.
1.- Arrancar
2.- Ir un bloque al Norte
3.- Ir dos bloques al Este
4.- Ir cinco bloques al Norte
5.- Ir dos bloques al Este
6.- Parar
N
El programa
Escribir el algoritmo en el
lenguaje de programacin. B
Start;
Go North 1 Blocks;
Go East 2 Blocks;
Go North 5 Blocks;
Go East 2 Blocks;
Stop; A
22
01/10/2013
El programa
Escribimos el cdigo del programa
en un editor y lo guardamos
en un documento programa.prg.
Stat;
Go North 1 Blocks
Go East Blocks;
Go Noth 5 Blocks; Copiamos el archivo
Go West 2 Blocks; en una llave USB
Stop;
y lo llevamos al coche.
La compilacin
Introducimos la llave USB en el coche y pulsamos el botn
de ejecutar el programa:
Stat;
----^ Unknown word.
Go North 1 Blocks
-----------------^ ; missing.
Go East Blocks;
--------^ Number missing. Errores
Go Noth 5 Blocks;
de sintaxis
-------^ Unknown word.
Go West 2 Blocks;
Stop;
There are errors. Impossible to run the program.
23
01/10/2013
Depuracin
Editamos el cdigo para arreglar los errores de sintaxis.
Stat; Start;
Go North 1 Blocks Go North 1 Blocks;
Go East Blocks; Go East 3 Blocks;
Go Noth 5 Blocks; Go North 5 Blocks;
Go West 2 Blocks; Go West 2 Blocks;
Stop; Stop;
N
La ejecucin
Se realiza lo que pide
cada instruccin. B
Start;
Go North 1 Blocks;
Go East 3 Blocks;
!
Error de ejecucin
Una instruccin no se puede ejecutar!
24
01/10/2013
Depuracin
Editamos el cdigo para arreglar el error de ejecucin.
Start; Start;
Go North 1 Blocks; Go North 1 Blocks;
Go East 3 Blocks; Go East 2 Blocks;
Go North 5 Blocks; Go North 5 Blocks;
Go West 2 Blocks; Go West 2 Blocks;
Stop; Stop;
N
La ejecucin
Se realiza lo que pide ?
cada instruccin. B
Start;
Go North 1 Blocks;
Go East 2 Blocks;
Go North 5 Blocks;
Go West 2 Blocks;
Stop;
Error lgico
El programa se ejecuta, pero no obtiene el resultado deseado!
25
01/10/2013
Depuracin
Editamos el cdigo para arreglar el error lgico.
Start; Start;
Go North 1 Blocks; Go North 1 Blocks;
Go East 2 Blocks; Go East 2 Blocks;
Go North 5 Blocks; Go North 5 Blocks;
Go West 2 Blocks; Go East 2 Blocks;
Stop; Stop;
N
La ejecucin
Se realiza lo que pide
cada instruccin.
Start;
Go North 1 Blocks;
Go East 2 Blocks;
Go North 5 Blocks;
Go East 2 Blocks;
Stop;
Conseguido!
26
01/10/2013
Reconocimiento (Attribution):
En cualquier explotacin de la obra autorizada por la licencia
har falta reconocer la autora.
No comercial (Non commercial):
La explotacin de la obra queda limitada a usos no comerciales.
Compartir igual (Share alike):
La explotacin autorizada incluye la creacin de obras derivadas
siempre que mantengan la misma licencia al ser divulgadas.
27