Sie sind auf Seite 1von 45

COMPUTACION BASICA

Ing. Arturo Daz Pulido.

Ing. Arturo Diaz Pulido.

Fundamentos de la programacin

Ing. Arturo Diaz Pulido.

Informtica y computadora
Informtica

(Ciencia de la computacin)

Conjunto de conocimientos cientficos y tcnicas


que hacen posible el tratamiento automtico
de la informacin por medio de Computadoras.
El nombre INFORMTICA, viene de la unin de los nombres
INFORmacin y automtica.
La Informtica es una Ciencia. Es la Ciencia que estudia el
Tratamiento Automtico de la Informacin.
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
Ing. Arturo Diaz Pulido.

Hardware y software
Hardware (tangible - fsica)
Componentes que integran
la parte material
de una computadora

Software (intangible - lgica)


Programas, instrucciones
y reglas informticas
para ejecutar tareas
en una computadora

Ing. Arturo Diaz Pulido.

Programacin de computadoras
Programar
Indicar a la computadora qu es lo que tiene que
hacer. Es una tcnica para desarrollar a travs de
una computadora a medida.

Programa
Representacin

de un algoritmo mediante un
lenguaje de programacin concreto. Secuencia de
instrucciones de un lenguaje de programacin que
resuelven el problema planteado por un algoritmo.

Ing. Arturo Diaz Pulido.

Computadoras

Esquema general
Memoria
temporal
Unidad Central de Proceso
Central Processor Unit

Dispositivos
de entrada
Teclado
Ratn
Escner
Tctil

Ing. Arturo Diaz Pulido.

C.P.U.

Almacenamiento
permanente

Dispositivos
de salida
Monitor
Impresora
Altavoz

Computadoras

La arquitectura de Von Neumann


Dispositivos de E/S

Una ALU de 2 bits (Wikipedia)

C.P.U. (Procesador)
A.L.U.
Unidad Aritmtico-Lgica

Unidad de Control

Ing. Arturo Diaz Pulido.

Memoria

Computadoras

La memoria
Memoria

Cada celda en una direccin

01

Celdas de 8 / 16 / 32 / 64 bits

02

Informacin voltil

03
04

Bus
de
datos

05
06
07

08
...

1 Bit = 0 / 1
1 Byte = 8 bits = 1 carcter
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
Ing. Arturo Diaz Pulido.

Fundamentos de la programacin

Ing. Arturo Diaz Pulido.

Programacin de computadoras

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
InstruccinSignificado

A0
3E
A0
3E
1D
B3
Ing. Arturo Diaz Pulido.

2F
01
30
02
31

Lenguaje de bajo nivel

Acceder a la celda de memoria 2F Dependiente de la mquina


Copiarlo el registro 1 de la ALU
Programacin difcil
Acceder a la celda de memoria 30
Copiarlo en el registro 2 de la ALU
Sumar
Guardar el resultado en la celda de memoria 31

Lenguaje ensamblador
Nemotcnicos para los cdigos hexadecimales:
A0 READ

3E REG

1D ADD

Mayor legibilidad:
READ 2F
REG 01
READ 30
REG 02
ADD
WRITE 11

Lenguaje de nivel medio

Cdigo fuente
(lenguaje ensamblador)
Programa
ensamblador

Cdigo objeto
(lenguaje mquina)
Ing. Arturo Diaz Pulido.

Fundamentos de la programacin

Ing. Arturo Diaz Pulido.

Lenguajes de programacin de alto nivel


Ms

cercanos a los lenguajes natural y matemtico

resultado = dato1 + dato2;


Mayor

legibilidad, mayor facilidad de codificacin

Estructuracin

Ing. Arturo Diaz Pulido.

de datos / abstraccin procedimental

Lenguajes de programacin de alto nivel

Traduccin

Cdigo fuente

Compiladores:
Compilan y enlazan
programas completos

Intrpretes:
Compilan, enlazan
y ejecutan instruccin
a instruccin

int main()
{
cout << "Hola Mundo!" << endl;
return 0;
}

Compilador

Cdigo objeto
Enlazador

Programa
ejecutable
Ing. Arturo Diaz Pulido.

#include <iostream>
using namespace std;

0100010100111010011100

Cdigo
objeto de
biblioteca
Para una arquitectura concreta
y un sistema operativo

Los lenguajes de programacin de alto nivel

Genealoga de lenguajes

Versiones / Estndares

Prolog
COBOL
1959

PL/I

1970

1964

1995

1983

FORTRAN
1954

Java

C++

C#

CPL

2000

1971

1963

Python

ALGOL
1958

BASIC

Pascal

Modula

1970

1975

1964

Simula
1964

1991

Ada

Eiffel

1979

1986

Smalltalk

Ruby

1971

1993

Haskell
Lisp

Scheme

1958

1975

Logo
Ing. Arturo Diaz Pulido.

1968

1987

Fundamentos de la programacin

Ing. Arturo Diaz Pulido.

Un poco de historia
La prehistoria
El baco

Siglo XIX

(Wikipedia)

Mquina analtica de Charles Babbage

Lady Ada Lovelace


es considerada
la primera
programadora

Ing. Arturo Diaz Pulido.

Un poco de historia
Siglo XX
1936

Mquina de Turing

1946

ENIAC: Primera computadora digital


de propsito general

1947

El transistor

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
Ing. Arturo Diaz Pulido.

1974

Protocolo TCP. Primera red local

ENIAC (Wikipedia)

Un poco de historia

Ing. Arturo Diaz Pulido.

1975

Se funda Microsoft

1976

Se funda Apple

1979

Juego Pacman

1981

IBM PC
Sistema operativo MS-DOS

1983

Lenguaje de programacin C++

1984

CD-ROM

1985

Windows 1.0

1990

Lenguaje HTML
World Wide Web

1991

Sistema operativo Linux

Apple II (Wikipedia)

Linux

IBM PC (Wikipedia)

Un poco de historia
1992

Windows 3.1

1995

Lenguaje de programacin Java


DVD

1998

Se funda Google

1999

MSN Messenger

Siglo XXI

Ing. Arturo Diaz Pulido.

2001

Windows XP
Mac OS X

2002

Mozilla Firefox

2007

iPhone

2008

Android ...

Fundamentos de la programacin

Ing. Arturo Diaz Pulido.

Programa informtico

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
Programa: Transforma entrada en salida

Entrada

Programa

Salida

Algoritmo: Secuencia de pasos y operaciones que debe realizar


el programa para resolver el problema
El programa implementa el algoritmo en un lenguaje concreto
Ing. Arturo Diaz Pulido.

La Ingeniera del Software

La programacin es slo una etapa del proceso de desarrollo

Modelo de desarrollo en cascada:


Planificacin

Recursos necesarios, presupuesto, plan,


Qu?

Anlisis
Diseo

Cmo?

Programacin

Implementacin

Prueba y depuracin
Mantenimiento
Ing. Arturo Diaz Pulido.

Fundamentos de la programacin

Ing. Arturo Diaz Pulido.

El lenguaje de programacin C++

Bjarne Stroustrup (1983)


Hola Mundo!

#include <iostream>

using namespace std;


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

// Muestra Hola Mundo!


return 0;
}
Ing. Arturo Diaz Pulido.

Elementos del lenguaje


Instrucciones
Datos: literales, variables, tipos

Subprogramas (funciones)
Comentarios

Directivas
...

#include <iostream>
using namespace std;

Directiva

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

Subprograma

Comentario

return 0;

Instruccin

}
Ing. Arturo Diaz Pulido.

Dato

Fundamentos de la programacin

Ing. Arturo Diaz Pulido.

Los lenguajes de programacin

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?

Ing. Arturo Diaz Pulido.

Sintaxis de los lenguajes de programacin


Especificacin
Lenguajes

(BNF)

Diagramas
Ejemplo: Nmeros enteros (sin decimales)
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
+23
| significa
<nada> ::=
-159

0 .. 9
Ing. Arturo Diaz Pulido.

1374
1-34
3.4
002

Backus-Naur Form (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
<nada> ::=

Ing. Arturo Diaz Pulido.

+23
<numero entero> ::= <signo opcional><secuencia de dgitos>
::= +<secuencia de dgitos> ::= +<dgito><secuencia de
dgitos>
::= +2<secuencia de dgitos> ::= +2<dgito> ::= +23
1374
<numero entero> ::= <signo opcional><secuencia de dgitos>
::= <secuencia de dgitos> ::= <dgito><secuencia de dgitos>
::= 1<secuencia de dgitos> ::= 1<dgito><secuencia de dgitos>
::= 13<secuencia de dgitos> ::= 13<dgito><secuencia de dgitos>
::= 137<secuencia de dgitos> ::= 137<dgito> ::= 1374
1-34
<numero entero> ::= <signo opcional><secuencia de dgitos>
::= <secuencia de dgitos> ::= <dgito><secuencia de dgitos>
::= 1<secuencia de dgitos> ::= ERROR (- no es <dgito>)

Diagramas de sintaxis
+23

+
0 .. 9

+23

0 .. 9

137 4

1374

+
-

1-34

+
0 .. 9

Ing. Arturo Diaz Pulido.

1-

Fundamentos de la programacin

Ing. Arturo Diaz Pulido.

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 ejecucin

cout << "Hola Mundo!" << endl; // Muestra Hola Mundo!


return 0;
}
Ing. Arturo Diaz Pulido.

Un primer programa en C++

Anlisis del programa


Biblioteca
Directiva
Instruccin

Espacio de nombres

#include <iostream>

using namespace std;


Coloreado sintctico

Tipo

Bloque de cdigo

Declaracin

Ing. Arturo Diaz Pulido.

Palabras reservadas
Cabecera de la funcin

int main()
{

Variable

Cadena de caracteres

Constante

cout << "Hola Mundo!" << endl;

Instruccin

Operador

Operador
Datos literales

return 0;

Instruccin

Nmero
Cuerpo de la funcin

Las instrucciones terminan en ;

Un primer programa en C++

Hola Mundo!
#include<iostream>
Using namespace std;
void main() {
cout << "Hola Mundo!" << endl;
}

Ing. Arturo Diaz Pulido.

La infraestructura (notacin, bibliotecas y otro soporte)


hace nuestro cdigo simple, completo, confiable y eficiente

Fundamentos de la programacin

Ing. Arturo Diaz Pulido.

Herramientas de desarrollo

Editor

Bloc de notas, Wordpad, Word, Writer, Gedit, Kwrite,


(texto simple, sin formatos)

Editores especficos: coloreado sintctico

Recomendacin: Notepad++

Instalacin y uso:
Seccin
Herramientas de desarrollo
en el Campus Virtual

Ing. Arturo Diaz Pulido.

Compilacin, enlace y ejecucin


hola.cpp
(cdigo fuente)

Compilador

Cdigo objeto de
la biblioteca iostream

hola.obj
(cdigo objeto)

Enlazador

Hola Mundo!

Cargador

Ing. Arturo Diaz Pulido.

hola.exe
(ejecutable)

Ms herramientas de desarrollo

Compilador

Importante: C++ estndar

Recomendacin: GNU G++ (MinGW en Windows)

Instalacin y uso:
Seccin
Herramientas de desarrollo
en el Campus Virtual

Ing. Arturo Diaz Pulido.

Ms herramientas de desarrollo

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
Herramientas de desarrollo
en el Campus Virtual

Ing. Arturo Diaz Pulido.

Un primer programa en C++: ejecucin

Qu hace el programa?

La ejecucin del programa siempre empieza en main()

Se ejecutan las instrucciones en secuencia de principio a fin

Inicio

cout << "Hola Mundo!" << endl;


Muestra Hola Mundo!
en la pantalla y salta de lnea
return 0;
Devuelve 0 como cdigo
de terminacin del programa

Fin
Ing. Arturo Diaz Pulido.

Pantalla (cout)
_ Hola Mundo!
_

Fundamentos de la programacin

Ing. Arturo Diaz Pulido.

Que es un Lenguaje de Programacin?

Est formado por un conjunto de smbolos y reglas sintcticas y


semnticas que definen su estructura y el significado de sus elementos
y expresiones. Al proceso por el cual se escribe, se prueba, se depura,
se compila (de ser necesario) y se mantiene el cdigo fuente de un
programa informtico se le llama programacin.

Ing. Arturo Diaz Pulido.

C++:

El lenguaje C

Lenguaje creado por Dennis M. Ritchie en 1972

Lenguaje de nivel medio:

Ing. Arturo Diaz Pulido.

Estructuras tpicas de los lenguajes de alto nivel


Construcciones para control a nivel de mquina

Lenguaje sencillo (pocas palabras reservadas)

Lenguaje estructurado (no estrictamente estructurado en bloques)

Compartimentalizacin de cdigo (funciones) y datos (mbitos)

Componente estructural bsico: la funcin (subprograma)

Programacin modular

Distingue entre maysculas y minsculas

Palabras reservadas (o clave): en minsculas

PUBLICACION EN WEB

Ing. Arturo Diaz Pulido.