You are on page 1of 32

FACULTAD DE INGENIERÍA INDUSTRIAL, SISTEMAS E INFORMATICA

FUNDAMENTOS Y METODOLOGÍA
DE LA PROGRAMACIÓN

ING. HUGO SERRANO RODAS


Luis Hernández Yáñez

Página 1
INFORMÁTICA Y COMPUTADORA
Informática (Ciencia de la computación)
Conjunto de conocimientos cientííficos y teí cnicas
que hacen posible el tratamiento automaí tico
de la informacioí n por medio de ordenadores

Computadora
Maí quina electroí nica, analoí gica o digital,
dotada de una memoria de gran capacidad
y de meí todos de tratamiento de la informacioí n,
capaz de resolver problemas matemaí ticos y loí gicos
Luis Hernández Yáñez

mediante la ejecucioí n de programas informaí ticos

FUNDAMENTOS Y METODOLOGÍA DE LA PROGRAMACIÓN Página 2


COMPUTADORAS
En todas partes y con muchas formas
Luis Hernández Yáñez

FUNDAMENTOS Y METODOLOGÍA DE LA PROGRAMACIÓN Página 3


HARDWARE Y SOFTWARE
Hardware
Componentes que integran
la parte material
de una computadora

Software
Programas, instrucciones
y reglas informaí ticas
para ejecutar tareas
en una computadora
Luis Hernández Yáñez

FUNDAMENTOS Y METODOLOGÍA DE LA PROGRAMACIÓN Página 4


PROGRAMACIÓN DE COMPUTADORAS
Programar
Indicar a la computadora queí es lo que tiene que hacer

Programa
 Secuencia de instrucciones
 Instrucciones que entiende la computadora
 Y que persiguen un objetivo: ¡resolver un problema!
Luis Hernández Yáñez

FUNDAMENTOS Y METODOLOGÍA DE LA PROGRAMACIÓN Página 5


PROGRAMADORES
Trabajo en equipo
Muí ltiples roles...
 Gestores
 Analistas
Parque Jurásico  Disenñ adores
 Programadores
 Probadores
 Administradores de
sistemas
...
Luis Hernández Yáñez

FUNDAMENTOS Y METODOLOGÍA DE LA PROGRAMACIÓN Página 6


COMPUTADORAS
Esquema general

Memoria
Memoria
temporal
temporal

Unidad Central de Proceso


Central Processor Unit

Dispositivos
Dispositivos Dispositivos
C.P.U.
C.P.U.
de
de entrada
entrada de salida

Teclado Monitor
Ratón Impresora
Escáner Altavoz
Luis Hernández Yáñez

Táctil Almacenamiento …
… permanente

FUNDAMENTOS Y METODOLOGÍA DE LA PROGRAMACIÓN Página 7


COMPUTADORAS
La arquitectura de Von Neumann

Dispositivos
Dispositivos de
de E/S
E/S

Una ALU de 2 bits (Wikipedia)


C.P.U.
C.P.U. (Procesador)
(Procesador)

A.L.U.
A.L.U.
Unidad
Unidad Aritmeí
Aritmeíttico-Loí
ico-Loígica
gica
Memoria
Memoria
Luis Hernández Yáñez

Unidad
Unidad de
de Control
Control

FUNDAMENTOS Y METODOLOGÍA DE LA PROGRAMACIÓN Página 8


COMPUTADORAS
La memoria
Memoria
Memoria Cada celda en una direccioí n
01
Celdas de 8 / 16 / 32 / 64 bits
02
03 Informacioí n volaí til
04
05
Bus 06 11 Bit
Bit == 00 // 11
de 07 11 Byte
Byte == 88 bits
bits == 11 caraí
caraícter
cter
datos 08 11 Kilobyte
Kilobyte (KB) (KB) == 1024
1024 Bytes
Bytes
...
11 Megabyte
Megabyte (MB) (MB) == 1024
1024 KB KB
11 Gigabyte
Gigabyte (GB) (GB) == 1024
1024 MBMB
11 Terabyte
Terabyte (TB) (TB) == 1024
1024 GBGB
11 Petabyte
Petabyte (PB) (PB) == 1024
1024 TB
Luis Hernández Yáñez

Dirección TB
Dirección
1024  1000
221010 == 1024 1000

FUNDAMENTOS Y METODOLOGÍA DE LA PROGRAMACIÓN Página 9


PROGRAMACIÓN DE COMPUTADORAS
Los procesadores trabajan con ceros y unos (bits)
Unidad de memoria baí sica: Byte (8 bits)
(2 díígitos hexadecimales: 01011011  0101 1011  5B)

Lenguaje máquina
Coí digos hexadecimales que representan instrucciones,
registros de la CPU, direcciones de memoria o datos
Instrucción Significado Lenguaje de bajo nivel
A0 2F Acceder a la celda de memoria 2F Dependiente de la máquina
3E 01 Copiarlo el registro 1 de la ALU Programación difícil
A0 30 Acceder a la celda de memoria 30
Luis Hernández Yáñez

3E 02 Copiarlo en el registro 2 de la ALU


1D Sumar
B3 31 Guardar el resultado en la celda de memoria 31

FUNDAMENTOS Y METODOLOGÍA DE LA PROGRAMACIÓN Página 10


LENGUAJE ENSAMBLADOR
Nemoteí cnicos para los coí digos hexadecimales:
A0  READ 3E  REG 1D  ADD …

Mayor legibilidad:
READ 2F Coí
Coídigo
digo fuente
fuente
REG 01 (lenguaje
(lenguaje ensamblador)
ensamblador)
READ 30
REG 02
ADD Programa
Programa
ensamblador
ensamblador
WRITE 31

Lenguaje de nivel medio


Coí
Coídigo
digo objeto
objeto
Luis Hernández Yáñez

(lenguaje
(lenguaje maí
maíquina)
quina)

FUNDAMENTOS Y METODOLOGÍA DE LA PROGRAMACIÓN Página 11


LENGUAJES DE PROGRAMACIÓN DE ALTO NIVEL
 Maí s cercanos a los lenguajes natural y matemaí tico
resultado = dato1 + dato2;
 Mayor legibilidad, mayor facilidad de codificacioí n
 Estructuracioí n de datos / abstraccioí n procedimental

FORTRAN Python Prolog C#


C Pascal Cobol Lisp Ruby
BASIC Smalltalk Haskell Ada
Luis Hernández Yáñez

Simula Java Eiffel C++


...
FUNDAMENTOS Y METODOLOGÍA DE LA PROGRAMACIÓN Página 12
LENGUAJES DE PROGRAMACIÓN DE ALTO NIVEL
Traducción #include <iostream>
using namespace std;
Coí digo fuente int main()
{
cout << "Hola Mundo!" <<
Compiladores: endl;
return 0;
Compilan y enlazan Compilador
Compilador
}

programas completos

Inteí rpretes: Coí digo objeto 0100010100111010011100…


Compilan, enlazan
y ejecutan instruccioí n Coí digo
Enlazador
Enlazador objeto de
a instruccioí n
biblioteca
Luis Hernández Yáñez

Programa Para una arquitectura concreta


ejecutable y un sistema operativo

FUNDAMENTOS Y METODOLOGÍA DE LA PROGRAMACIÓN Página 13


LOS LENGUAJES DE PROGRAMACIÓN DE ALTO NIVEL
Genealogía de lenguajes Versiones / Estándares
Prolog
Prolog
1970
1970 Java
Java
COBOL
COBOL PL/I C++
PL/I C++ 1995
1995
1959
1959 1964 1983
1964 1983
FORTRAN
FORTRAN C#
C#
1954
1954 CPL CC
CPL 2000
2000
1963 1971
1971
1963
Python
Python
ALGOL
ALGOL Pascal
Pascal Modula
Modula 1991
1991
1958
1958 1970
1970 1975
1975
BASIC
BASIC
1964
1964 Ada
Ada Eiffel
Eiffel
1979
1979 1986
1986
Simula
Simula
Fuente:
Fuente: 1964
1964 Smalltalk
Smalltalk Ruby
Ruby
http://www.levenez.com/lang/
http://www.levenez.com/lang/ 1971
1971 1993
1993
Luis Hernández Yáñez

Haskell
Haskell
Lisp
Lisp Scheme
Scheme 1987
1987
1958
1958 1975
1975
Logo
Logo
1968
1968

FUNDAMENTOS Y METODOLOGÍA DE LA PROGRAMACIÓN Página 14


UN POCO DE HISTORIA
La prehistoria
El aí baco

Siglo XIX (Wikipedia)


Maí quina analíítica de Charles Babbage

Lady Ada Lovelace


es considerada
la primera
programadora
Luis Hernández Yáñez

FUNDAMENTOS Y METODOLOGÍA DE LA PROGRAMACIÓN Página 15


UN POCO DE HISTORIA
Siglo XX
1936 Maí quina de Turing
1946 ENIAC: Primera computadora digital
de propoí sito 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
Luis Hernández Yáñez

1972 Primer virus informaí tico (Creeper)


Lenguaje de programacioí n C
1974 Protocolo TCP. Primera red local
FUNDAMENTOS Y METODOLOGÍA DE LA PROGRAMACIÓN Página 16
UN POCO DE HISTORIA

1975 Se funda Microsoft


1976 Se funda Apple
1979 Juego Pacman
1981 IBM PC
Sistema operativo MS-DOS Apple II (Wikipedia)

1983 Lenguaje de programacioí n C++


1984 CD-ROM
1985 Windows 1.0
1990 Lenguaje HTML
World Wide Web Linux
Luis Hernández Yáñez

IBM PC (Wikipedia)
1991 Sistema operativo Linux

FUNDAMENTOS Y METODOLOGÍA DE LA PROGRAMACIÓN Página 17


UN POCO DE HISTORIA
1992 Windows 3.1
1995 Lenguaje de programacioí n Java
DVD
1998 Se funda Google
1999 MSN Messenger

Siglo XXI
2001 Windows XP
Mac OS X
2002 Mozilla Firefox
2007 iPhone
Luis Hernández Yáñez

2008 Android ...

FUNDAMENTOS Y METODOLOGÍA DE LA PROGRAMACIÓN Página 18


PROGRAMA INFORMÁTICO
¿Qué es programar?
Decirle a un tonto muy rápido 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

Programa: Transforma entrada en salida

Entrada
Entrada Programa
Programa Salida
Salida

Algoritmo: Secuencia de pasos y operaciones que debe realizar


Luis Hernández Yáñez

el programa para resolver el problema


El programa implementa el algoritmo en un lenguaje concreto

FUNDAMENTOS Y METODOLOGÍA DE LA PROGRAMACIÓN Página 19


LA INGENIERÍA DEL SOFTWARE
La programación es sólo una etapa del proceso de desarrollo

Modelo de desarrollo “en cascada”:

Planificacioí
Planificacioínn Recursos necesarios, presupuesto, plan, …

Anaí
Anaílisis
lisis ¿Queí ?

Disenñ
Disenñ oo ¿Coí mo?

Programacioí
Programacioínn Implementacioí n

Prueba
Prueba yy depuracioí
depuracioínn
Luis Hernández Yáñez

Mantenimiento
Mantenimiento

FUNDAMENTOS Y METODOLOGÍA DE LA PROGRAMACIÓN Página 20


EL LENGUAJE DE PROGRAMACIÓN C++
Bjarne Stroustrup (1983)
Hola
Hola Mundo!
Mundo!
#include <iostream>
using namespace std;

int main()
{
cout << "Hola Mundo!" << endl;
// Muestra Hola Mundo!

return 0;
Luis Hernández Yáñez

FUNDAMENTOS Y METODOLOGÍA DE LA PROGRAMACIÓN Página 21


ELEMENTOS DEL LENGUAJE
Instrucciones
Datos: literales, variables, tipos
Subprogramas (funciones)
Comentarios
Directivas Directiva
Directiva
#include
#include <iostream>
<iostream>
...
using
using namespace
namespace std;
std;

Subprograma
Subprograma int
int main()
main()
{{ Dato
Dato
Instrucción
Instrucción cout
cout <<
<< "Hola
"Hola Mundo!"
Mundo!" <<<< endl;
endl;
//
// Muestra
Muestra Hola
Hola Mundo!
Mundo!
Comentario
Luis Hernández Yáñez

Comentario
Dato
Dato
Instrucción
Instrucción return
return 0;
0;
}}

FUNDAMENTOS Y METODOLOGÍA DE LA PROGRAMACIÓN Página 22


LOS LENGUAJES DE PROGRAMACIÓN
Sintaxis y semántica de los lenguajes
Sintaxis
— Reglas que determinan coí mo se pueden construir
y secuenciar los elementos del lenguaje

Semaí ntica
— Significado de cada elemento del lenguaje
¿Para queí sirve?
Luis Hernández Yáñez

FUNDAMENTOS Y METODOLOGÍA DE LA PROGRAMACIÓN Página 23


UN PRIMER PROGRAMA EN C++
Hola Mundo!
Un programa que muestra un saludo en la pantalla:
#include <iostream>
using namespace std;

int main()
// main() es donde empieza la ejecución
{
cout << "Hola Mundo!" << endl; // Muestra Hola Mundo!
Luis Hernández Yáñez

return 0;
}

FUNDAMENTOS Y METODOLOGÍA DE LA PROGRAMACIÓN Página 24


UN PRIMER PROGRAMA EN C++
Análisis del programa
Biblioteca

Directiva Espacio de nombres


#include <iostream>
Instrucción using namespace std;
Coloreado
Coloreado sintaí
sintaícctico
tico
Tipo Palabras reservadas

Declaración Cabecera de la función


int main()
{ Cadena de caracteres Constante
Bloque de código

Variable
Instrucción
coutOperador
<< "Hola Mundo!"Operador
<< endl;
Datos literales
Luis Hernández Yáñez

Instrucción returnNúmero
0;
} Cuerpo de la función

Las instrucciones terminan en ;

FUNDAMENTOS Y METODOLOGÍA DE LA PROGRAMACIÓN Página 25


UN PRIMER PROGRAMA EN C++
Hola Mundo!
Casi todo es infraestructura
Soí lo
cout << "Hola Mundo!" << endl
hace algo palpable

La infraestructura (notacioí n, bibliotecas y otro soporte)


hace nuestro coí digo simple, completo, confiable y eficiente

¡El estilo importa!


Luis Hernández Yáñez

FUNDAMENTOS Y METODOLOGÍA DE LA PROGRAMACIÓN Página 26


HERRAMIENTAS DE DESARROLLO
Editor
 Bloc de notas, Wordpad, Word, Writer, Gedit, Kwrite, …
(texto simple, sin formatos)
 Editores especííficos: coloreado sintaí ctico
 Recomendacioí n: Notepad++

Instalacioí
Instalacioínn yy uso:
uso:
Seccioí
Seccioínn
Herramientas
Herramientas de
de desarrollo
desarrollo
en
en el
el Campus
Campus Virtual
Virtual
Luis Hernández Yáñez

FUNDAMENTOS Y METODOLOGÍA DE LA PROGRAMACIÓN Página 27


COMPILACIÓN, ENLACE Y EJECUCIÓN

hola.cpp Compilador hola.obj


(código fuente) (código objeto)

Coí digo objeto de


Enlazador
la biblioteca iostream

Hola
Hola Mundo!
Mundo!

Cargador hola.exe
(ejecutable)
Luis Hernández Yáñez

FUNDAMENTOS Y METODOLOGÍA DE LA PROGRAMACIÓN Página 28


MÁS HERRAMIENTAS DE DESARROLLO
Compilador
 Importante: C++ estaí ndar
 Recomendacioí n: GNU G++ (MinGW en Windows)

Instalacioí
Instalacioínn yy uso:
uso:
Seccioí
Seccioínn
Herramientas
Herramientas de
de desarrollo
desarrollo
en
en el
el Campus
Campus Virtual
Virtual
Luis Hernández Yáñez

FUNDAMENTOS Y METODOLOGÍA DE LA PROGRAMACIÓN Página 29


MÁS HERRAMIENTAS DE DESARROLLO
Entornos de desarrollo
 Para editar, compilar y probar el coí digo del programa
 Recomendaciones:
— Windows: MS Visual Studio / C++ Express o Eclipse
— Linux: Netbeans o Eclipse

Instalacioí
Instalacioínn yy uso:
uso:
Seccioí
Seccioínn
Herramientas
Herramientas de
de desarrollo
desarrollo
en
en el
el Campus
Campus Virtual
Virtual
Luis Hernández Yáñez

FUNDAMENTOS Y METODOLOGÍA DE LA PROGRAMACIÓN Página 30


UN PRIMER PROGRAMA EN C++: ejecución
¿Qué hace el programa?
 La ejecucioí n del programa siempre empieza en main()
 Se ejecutan las instrucciones en secuencia de principio a fin

Inicio
Inicio
Pantalla
Pantalla (cout)
(cout)
_ Hola
Hola Mundo!
Mundo!
cout << "Hola Mundo!" << endl; _
Muestra Hola Mundo!
en la pantalla y salta de líínea
return 0;
Devuelve 0 como coí digo
Luis Hernández Yáñez

de terminacioí n del programa


Fin

FUNDAMENTOS Y METODOLOGÍA DE LA PROGRAMACIÓN Página 31


C++: Un mejor C
El lenguaje C
 Lenguaje creado por Dennis M. Ritchie en 1972
 Lenguaje de nivel medio:
— Estructuras tíípicas de los lenguajes de alto nivel

— Construcciones para control a nivel de maí quina

 Lenguaje sencillo (pocas palabras reservadas)


 Lenguaje estructurado (no estrictamente estructurado en bloques)
 Compartimentalizacioí n de coí digo (funciones) y datos (aí mbitos)
 Componente estructural baí sico: la funcioí n (subprograma)
 Programacioí n modular
Luis Hernández Yáñez

 Distingue entre mayuí sculas y minuí sculas


 Palabras reservadas (o clave): en minuí sculas

FUNDAMENTOS Y METODOLOGÍA DE LA PROGRAMACIÓN Página 32

You might also like