Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
1
Grado en Ingeniera Informtica
Grado en Ingeniera del Software
Grado en Ingeniera de Computadores
Informtica,computadorasyprogramacin 3
Lenguajemquinayensamblador 12
Lenguajesdeprogramacindealtonivel 15
Unpocodehistoria 19
ProgramacineIngenieradelSoftware 24
EllenguajedeprogramacinC++ 27
Sintaxisdeloslenguajesdeprogramacin 30
UnprimerprogramaenC++ 35
Herramientasdedesarrollo 39
C++:UnmejorC 45
LuisHernndezYez
Fundamentosdelaprogramacin:Computadorasyprogramacin
LuisHernndezYez
Fundamentosdelaprogramacin:Computadorasyprogramacin Pgina 3
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
LuisHernndezYez
Fundamentosdelaprogramacin:Computadorasyprogramacin Pgina 4
En todas partes y con muchas formas
LuisHernndezYez
Fundamentosdelaprogramacin:Computadorasyprogramacin Pgina 5
Hardware
Componentes que integran
la parte material
de una computadora
Software
Programas, instrucciones
y reglas informticas
para ejecutar tareas
en una computadora
LuisHernndezYez
Fundamentosdelaprogramacin:Computadorasyprogramacin Pgina 6
Programar
Indicar a la computadora qu es lo que tiene que hacer
Programa
Secuencia de instrucciones
Instrucciones que entiende la computadora
Y que persiguen un objetivo: resolver un problema!
LuisHernndezYez
Fundamentosdelaprogramacin:Computadorasyprogramacin Pgina 7
Trabajo en equipo
Mltiples roles...
Gestores
Analistas
ParqueJursico Diseadores
Programadores
Probadores
Administradores de
sistemas
...
LuisHernndezYez
Fundamentosdelaprogramacin:Computadorasyprogramacin Pgina 8
Esquema general
Memoria
temporal
UnidadCentraldeProceso
CentralProcessorUnit
Dispositivos Dispositivos
C.P.U.
de entrada de salida
Teclado Monitor
Ratn Impresora
Escner Altavoz
LuisHernndezYez
Tctil Almacenamiento
permanente
Fundamentosdelaprogramacin:Computadorasyprogramacin Pgina 9
Dispositivos de E/S
UnaALUde2bits(Wikipedia)
C.P.U. (Procesador)
A.L.U.
Unidad AritmticoLgica
Memoria
LuisHernndezYez
Unidad de Control
Fundamentosdelaprogramacin:Computadorasyprogramacin Pgina 10
La memoria
Memoria Cada celda en una direccin
01 Celdas de 8 / 16 / 32 / 64 bits
02
03
Informacin voltil
04
Bus 05 1 Bit = 0 / 1
de 06 1 Byte = 8 bits = 1 carcter
datos 07
1 Kilobyte (KB) = 1024 Bytes
08
1 Megabyte (MB) = 1024 KB
...
1 Gigabyte (GB) = 1024 MB
1 Terabyte (TB) = 1024 GB
1 Petabyte (PB) = 1024 TB
LuisHernndezYez
Direccin
210 =1024 1000
Fundamentosdelaprogramacin:Computadorasyprogramacin Pgina 11
LuisHernndezYez
Fundamentosdelaprogramacin:Computadorasyprogramacin Pgina 12
Los procesadores trabajan con ceros y unos (bits)
Unidad de memoria bsica: Byte (8 bits)
(2 dgitos hexadecimales: 01011011 0101 1011 5B)
Lenguaje mquina
Cdigos hexadecimales que representan instrucciones,
registros de la CPU, direcciones de memoria o datos
Instruccin Significado Lenguajedebajonivel
A02F Acceder a la celda de memoria 2F Dependientedelamquina
3E01 Copiarlo el registro 1 de la ALU Programacindifcil
A030 Acceder a la celda de memoria 30
LuisHernndezYez
Fundamentosdelaprogramacin:Computadorasyprogramacin Pgina 13
Mayor legibilidad:
READ2F Cdigo fuente
REG01 (lenguaje ensamblador)
READ30
REG02
ADD Programa
WRITE31 ensamblador
(lenguaje mquina)
Fundamentosdelaprogramacin:Computadorasyprogramacin Pgina 14
LuisHernndezYez
Fundamentosdelaprogramacin:Computadorasyprogramacin Pgina 15
Fundamentosdelaprogramacin:Computadorasyprogramacin Pgina 16
Traduccin #include<iostream>
usingnamespacestd;
Cdigo fuente intmain()
{
cout<<"HolaMundo!"<<endl;
Compiladores: }
return0;
Programa Paraunaarquitecturaconcreta
ejecutable yunsistemaoperativo
Fundamentosdelaprogramacin:Computadorasyprogramacin Pgina 17
Haskell
Lisp Scheme 1987
1958 1975
Logo
1968
Fundamentosdelaprogramacin:Computadorasyprogramacin Pgina 18
LuisHernndezYez
Fundamentosdelaprogramacin:Computadorasyprogramacin Pgina 19
La prehistoria
El baco
Fundamentosdelaprogramacin:Computadorasyprogramacin Pgina 20
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)
LuisHernndezYez
Lenguaje de programacin C
1974 Protocolo TCP. Primera red local
Fundamentosdelaprogramacin:Computadorasyprogramacin Pgina 21
IBMPC(Wikipedia)
1991 Sistema operativo Linux
Fundamentosdelaprogramacin:Computadorasyprogramacin Pgina 22
1992 Windows 3.1
1995 Lenguaje de programacin Java
DVD
1998 Se funda Google
1999 MSN Messenger
Siglo XXI
2001 Windows XP
Mac OS X
2002 Mozilla Firefox
2007 iPhone
LuisHernndezYez
Fundamentosdelaprogramacin:Computadorasyprogramacin Pgina 23
LuisHernndezYez
Fundamentosdelaprogramacin:Computadorasyprogramacin Pgina 24
Qu es programar?
Decirle a un tonto muy rpido exactamente lo que tiene que hacer
Especificar la estructura y el comportamiento de un programa,
as como probar que el programa realiza su tarea
adecuadamente y con un rendimiento aceptable
Fundamentosdelaprogramacin:Computadorasyprogramacin Pgina 25
Anlisis Qu?
Diseo Cmo?
Programacin Implementacin
Prueba y depuracin
LuisHernndezYez
Mantenimiento
Fundamentosdelaprogramacin:Computadorasyprogramacin Pgina 26
LuisHernndezYez
Fundamentosdelaprogramacin:Computadorasyprogramacin Pgina 27
#include<iostream>
usingnamespacestd;
int main()
{
cout<<"HolaMundo!"<<endl;
//MuestraHolaMundo!
LuisHernndezYez
return 0;
}
Fundamentosdelaprogramacin:Computadorasyprogramacin Pgina 28
Instrucciones
Datos: literales, variables, tipos
Subprogramas (funciones)
Comentarios
Directivas Directiva
#include<iostream>
...
usingnamespacestd;
Comentario
Dato
Instruccin return 0;
}
Fundamentosdelaprogramacin:Computadorasyprogramacin Pgina29
LuisHernndezYez
Fundamentosdelaprogramacin:Computadorasyprogramacin Pgina 30
Sintaxis y semntica de los lenguajes
Sintaxis
Reglas que determinan cmo se pueden construir
y secuenciar los elementos del lenguaje
Semntica
Significado de cada elemento del lenguaje
Para qu sirve?
LuisHernndezYez
Fundamentosdelaprogramacin:Computadorasyprogramacin Pgina 31
Especificacin
Lenguajes (BNF)
Diagramas
Ejemplo: Nmeros enteros (sin decimales)
BNF
<numeroentero>::=<signoopcional><secuenciadedgitos>
<signoopcional>::=+||<nada>
<secuenciadedgitos>::=<dgito>|<dgito><secuenciadedgitos>
<dgito>::=0|1|2|3|4|5|6|7|8|9 +23
<nada>::= |significa
159
1374
134
+
3.4
LuisHernndezYez
0..9 002
Fundamentosdelaprogramacin:Computadorasyprogramacin Pgina 32
<numeroentero>::=<signoopcional><secuenciadedgitos>
<signoopcional>::=+||<nada>
<secuenciadedgitos>::=<dgito>|<dgito><secuenciadedgitos>
<dgito>::=0|1|2|3|4|5|6|7|8|9
<nada>::=
+23
<numeroentero>::=<signoopcional><secuenciadedgitos>
::=+<secuenciadedgitos>::=+<dgito><secuenciadedgitos>
::=+2<secuenciadedgitos>::=+2<dgito> ::=+23
1374
<numeroentero>::=<signoopcional><secuenciadedgitos>
::=<secuenciadedgitos>::=<dgito><secuenciadedgitos>
::=1<secuenciadedgitos>::=1<dgito><secuenciadedgitos>
::=13<secuenciadedgitos>::=13<dgito><secuenciadedgitos>
::=137<secuenciadedgitos>::=137<dgito> ::=1374
LuisHernndezYez
134
<numeroentero>::=<signoopcional><secuenciadedgitos>
::=<secuenciadedgitos>::=<dgito><secuenciadedgitos>
::=1<secuenciadedgitos>::=ERROR ( noes<dgito>)
Fundamentosdelaprogramacin:Computadorasyprogramacin Pgina 33
+23 +
0..9 +23
1374 +
0..9 1374
134 + ?
0..9 1
LuisHernndezYez
Fundamentosdelaprogramacin:Computadorasyprogramacin Pgina 34
LuisHernndezYez
Fundamentosdelaprogramacin:Computadorasyprogramacin Pgina 35
Hola Mundo!
Un programa que muestra un saludo en la pantalla:
#include<iostream>
usingnamespacestd;
int main()
//main()esdondeempiezalaejecucin
{
cout<<"HolaMundo!"<<endl;//MuestraHolaMundo!
LuisHernndezYez
return 0;
}
Fundamentosdelaprogramacin:Computadorasyprogramacin Pgina 36
Anlisis del programa
Biblioteca
Instruccin usingnamespacestd;
Coloreado sintctico
Tipo Palabrasreservadas
{
Bloquedecdigo
Instruccin
Nmero
} Cuerpodelafuncin
Lasinstruccionesterminanen;
Fundamentosdelaprogramacin:Computadorasyprogramacin Pgina 37
Hola Mundo!
Casi todo es infraestructura
Slo
cout<<"HolaMundo!"<<endl
hace algo palpable
El estilo importa!
LuisHernndezYez
Fundamentosdelaprogramacin:Computadorasyprogramacin Pgina 38
LuisHernndezYez
Fundamentosdelaprogramacin:Computadorasyprogramacin Pgina 39
Editor
Bloc de notas, Wordpad, Word, Writer, Gedit, Kwrite,
(texto simple, sin formatos)
Editores especficos: coloreado sintctico
Recomendacin: Notepad++
Instalacin y uso:
Seccin
Herramientasdedesarrollo
en el Campus Virtual
LuisHernndezYez
Fundamentosdelaprogramacin:Computadorasyprogramacin Pgina 40
hola.cpp Compilador hola.obj
(cdigofuente) (cdigoobjeto)
Cdigo objeto de
Enlazador
la biblioteca iostream
HolaMundo!
Cargador hola.exe
LuisHernndezYez
(ejecutable)
Fundamentosdelaprogramacin:Computadorasyprogramacin Pgina 41
Compilador
Importante: C++ estndar
Recomendacin: GNU G++ (MinGW en Windows)
Instalacin y uso:
Seccin
Herramientasdedesarrollo
en el Campus Virtual
LuisHernndezYez
Fundamentosdelaprogramacin:Computadorasyprogramacin Pgina 42
Entornos de desarrollo
Para editar, compilar y probar el cdigo del programa
Recomendaciones:
Windows: MS Visual Studio / C++ Express o Eclipse
Linux: Netbeans o Eclipse
Instalacin y uso:
Seccin
Herramientasdedesarrollo
en el Campus Virtual
LuisHernndezYez
Fundamentosdelaprogramacin:Computadorasyprogramacin Pgina 43
Qu hace el programa?
La ejecucin del programa siempre empieza en main()
Se ejecutan las instrucciones en secuencia de principio a fin
Inicio
Pantalla(cout)
_ HolaMundo!
cout<<"HolaMundo!" <<endl; _
Muestra HolaMundo!
en la pantalla y salta de lnea
return0;
Devuelve 0 como cdigo
LuisHernndezYez
Fundamentosdelaprogramacin:Computadorasyprogramacin Pgina 44
LuisHernndezYez
Fundamentosdelaprogramacin:Computadorasyprogramacin Pgina 45
El lenguaje C
Lenguaje creado por Dennis M. Ritchie en 1972
Lenguaje de nivel medio:
Estructuras tpicas de los lenguajes de alto nivel
Fundamentosdelaprogramacin:Computadorasyprogramacin Pgina 46
Licencia CC (Creative Commons)
Este tipo de licencias ofrecen algunos derechos a terceras personas
bajo ciertas condiciones.
Este documento tiene establecidas las siguientes:
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.
LuisHernndezYez
Fundamentosdelaprogramacin:Computadorasyprogramacin Pgina 47