You are on page 1of 52

PROGRAMACIN BSICA

1 INTRODUCCIN A LA COMPUTACIN
INSTITUTO TECNOLGICO SUPERIOR DE COATZACOALCOS

Jos Mara Crdoba Lagunes

Definiciones

Lenguaje de computacin: Conjunto de signos y reglas


que permite la comunicacin con un ordenador.

Consiste en un conjunto de reglas sintcticas (definen las


secuencias correctas de los elementos de un lenguaje de
programacin) y semnticas (define el significado de los
signos lingsticos y de sus combinaciones) que definen su
estructura
y
el
significado
de
sus
elementos,
respectivamente

Jerarqua entre los lenguajes de


programacin

Lenguaje Mquina
Conjunto
de
instrucciones
codificadas (binario) que una
computadora puede interpretar y
ejecutar directamente.
Caractersticas:

nico lenguaje que entiende el


ordenador.

Difcil de
humanos.

Permite aprovechar al mximo los


recursos.

Instrucciones
binario.

Particular de cada procesador.

entender

para

codificadas

los

en

Lenguaje ensamblador
Lenguaje muy similar al de mquina, con pequeas
modificaciones mnemotcnicas que facilitan su uso. Es
de un nivel inmediatamente superior al de mquina.
Caractersticas:
Representacin mnemotcnica del cdigo maquina.
Particular de cada procesador.
Cada instruccin en ensamblador equivale a una instruccin
en lenguaje maquina.
Smbolos
para representar las instrucciones y para las
direcciones de memoria.
Se
requiere un programa traductor. (llamado tambin
ensamblador)

Ejemplo lenguaje
ensamblador

Ejemplos de los Mnemnicos del


lenguaje emsamblador para
microcontrolador PIC16f84

Lenguajes de alto nivel


Lenguaje que facilita la comunicacin con un computador
mediante signos convencionales ms cercanos a los de un
lenguaje natural.
Caractersticas:

Independientes de la estructura concreta del ordenador.

Se aproxima mas al lenguaje natural.

Utiliza variables y estructuras de datos para representar la


informacin.

Utiliza estructuras de control: condicionales y bucles.

Se han de traducir a lenguaje maquina.

Una instruccin del LA se traduce a varias

instrucciones en lenguaje maquina (LB).

Lenguajes de programacin

Algoritmos

Algoritmo: es una secuencia finita de instrucciones, reglas


o pasos que describen de modo preciso las operaciones que
una computadora debe realizar para ejecutar una tarea
determinada en un tiempo finito [Knuth 68]. Las dos
herramientas ms comnmente utilizadas para disear
algoritmos son: diagramas de flujo y pseudocdigos.

Programa: Algoritmo (secuencia no ambigua, finita y


ordenada de instrucciones para la resolucin de un
determinado problema) traducido a un lenguaje de
programacin, de modo que un ordenador es capaz de
ejecutarlo.

En la prctica, un algoritmo es un mtodo para resolver


problemas mediante los pasos o etapas siguientes:

1. Diseo del algoritmo que describe la secuencia


ordenada de pasos sin ambigedades conduncentes a
la solucin de un problema dado (Anlisis del problema y
desarrollo del algoritmo).

2. Expresar el algoritmo como un programa en un


lenguaje de programacin adecuado. (Fase de
codificacin Escritura de cdigo fuente).

3. Ejecucin
computadora.

validacin

del

programa

por

la

Programacin: La elaboracin de un programa debe ser de


manera:

Correcta - Un programa ser correcto si hace lo que debe hacer,


de modo que se deben especificar de manera muy clara cules son
los datos sobre los que se trabajarn y lo que se debe hacer con
ellos. Todo debe ser documentado y probado antes de
desarrollarlo.

Eficiente - Debe consumir la menor cantidad de recursos (tiempo


y/o memoria) posible.

Clara - Es muy importante la claridad y legibilidad de todo


programa, ya que facilitar al mximo la tarea de mantenimiento
posterior del software.

Modular - Los programas suelen subdividirse en subprogramas


(mdulos), para reducir la complejidad de aquella parte que se est
implementando y facilitar la reutilizacin de cdigo.

Pseudocdigo

Pseudocdigo. Lenguaje de especificacin de algoritmos,


mediante palabras similares al ingls o espaol.

Diagrama de flujo

Diagrama de flujo (flowchart). Representacin


grfica de un algoritmo

Cdigo fuente

Se le da el nombre de cdigo fuente a los programas


escritos en un determinado lenguaje de programacin y que
est compuesto por instrucciones escritas por el usuario. El
cdigo fuente no constituye software propiamente dicho
pero es una instancia mediante la cual se logra el software.

Programas traductores
Los traductores son programas que traducen el
cdigo fuente, escritos en lenguajes de alto nivel,
a programas escritos en lenguaje mquina.
Los traductores pueden ser:
Compiladores
Interpretes
Mquinas virtuales.

Compilador

Un compilador es un programa que lee el cdigo escrito en


un lenguaje de programacin especfico (cdigo fuente), y
lo traduce en un programa equivalente escrito en otro
lenguaje (cdigo objeto). En este paso el compilador hace
notar al usuario la presencia de errores en el cdigo fuente.
Luego el compilador invoca al linker que convierte al
archivo objeto en un ejecutable con extensin exe; este
ltimo archivo est en formato binario (ceros y unos) y
puede funcionar por s slo.

Caractersticas de los compiladores

Traducen completamente un
programa fuente, generando
el
programa
objeto
equivalente
en
lenguaje
maquina.

El programa objeto se guarda


en un fichero y se puede
ejecutar sin necesidad del
compilador.

Ejemplos
de
lenguajes
compilados: C, C++, Pascal,
Fortran

Intrpretes
Un intrprete lee el cdigo fuente de un programa lnea a
lnea y las traduce online para que la CPU las pueda
interpretar, pero no genera ningn programa objeto.
Intrpretes
Traduce y ejecuta instruccin a instruccin
en el interprete.
No se guarda ningun fichero de programa
objeto:
Menos eficiente: mas lento.
Mas interactivo.
Ejemplo de lenguajes interpretados: Java (no
del todo), Javascript, Matlab, Basic, PHP

Mquinas Virtuales
Caractersticas:
Es el enfoque ms actual de traduccin de cdigo fuente.
Es un software que simula una computadora sistema operativo.
Traduce un cdigo fuente a un lenguaje mquina que no tiene hardware: cdigo
intermedio.
Para la ejecucin del programa se necesita un traductor (Mquina virtual)
apropiado para cada tipo de sistema operativo.

Se agrega gran complejidad al sistema en tiempo de ejecucin. Esto tiene como


efecto la ralentizacin del sistema, es decir, el programa no alcanzar la misma
velocidad de ejecucin que si se instalase directamente en el sistema operativo
"anfitrin" (host) o directamente sobre la plataforma de hardware. Sin embargo, a
menudo la flexibilidad que ofrecen compensa esta prdida de eficiencia.

Ejemplos

Ej.: lenguaje Java compila


a bytecodes, para la JVM
(Java Virtual Machine)
Lenguajes C#, J#,, a
CLR para .NET

ARQUITECTURA DE COMPUTADORAS

Arquitectura de
computadoras

Sistemas numricos

Debido a que los sistemas digitales manejan 2 niveles de


voltaje lgicos (05 volts 0-12 volts), se utiliza el sistema
binario para representar este par de valores. Sin embargo,
muchas veces un nmero binario es demasiado largo para
representarlo en pantalla. Para simplificar la escritura se
utiliza el sistema hexadecimal.

Arquitectura Von Neumann

La mayora de las computadoras personales actuales siguen al


pie de la letra la arquitectura propuesta por Von Newmann en el
diseo del EDVAC. Esta arquitectura se caracteriza porque tanto
el programa como los datos estn almacenado internamente en
la misma memoria. La arquitectura de Von Newmann define los
siguientes elementos:

Unidad Central de Proceso (CPU - Central Processing Unit)

Memoria principal (memoria nica donde se guardan


instrucciones y datos)

Controlador de entrada salida

Buses del sistema


Bus de datos
Bus de direcciones
Bus de control

Arquitectura Von Neuman

Arquitectura Harvard

La diferencia principal en la arquitectura Harvard es que la


memoria de instrucciones y la memoria de datos son
independientes, es decir cada una cuenta con su propio
bus de acceso, permitiendo paralelismo y mayor velocidad
de ejecucin, su desventaja principal es que vuelve
compleja a arquitectura y por lo tanto su construccin y
control.

Generacin de
computadoras

Sistemas operativos

Sistemas operativos

Definicin: Un sistema operativo (OS) es un grupo de


programas de computadora que administra los recursos de
hardware y software de una computadora para
mantenerlos operativos. El OS optimiza las tareas bsicas
como controlar y manejar el uso de la memoria, dar
prioridades a las instrucciones de los procesos, controlar
los dispositivos de entrada y salida, facilitar la conectividad
de las redes y administrar archivos.

Algunas clasificaciones de
OS

Sistemas operativos mas utilizados


Windows ( windows; 3.1, 3.1, NT, 95, 98, 00, XP) :
programa informtico ms conocido del mundo, utiliza los
ordenadores personales llamados compatibles y que ha
reemplazado al MS-DOS( primer sistema operativo para
microordenadores).
Unix: es el ms extendido entre los grandes sistemas y
ordenadores llamados Estaciones de trabajo. En los
ltimos aos, se ha extendido un tipo especial de Unix,
llamado; Linux
Mac-Os: se utiliza en ordenadores personales, pero en los
ordenadores de Apple llamados: Macintosh

Unix y sus variantes (linux)

Windows

Programacin estructurada
Este paradigma de programacin utiliza solo 3 instrucciones
de control bsicas y sus variantes, a saber:

Secuencia: el bloque secuencial de instrucciones,


instrucciones ejecutadas sucesivamente, una detrs de
otra.

Seleccin: la instruccin condicional con doble alternativa,


de la forma "if condicin then instruccin-1 else
instruccin-2".

Iteracin: el bucle condicional "while condicin do


instruccin", que ejecuta la instruccin repetidamente
mientras la condicin se cumpla.

Las principales ventajas de la programacin estructurada son:


Los programas son mas fciles de entender
Se reduce la complejidad de las pruebas
Aumenta la productividad del programador

Programacin orientada a objetos


POO: Se trata de una tcnica estilo de programacin que
utiliza objetos como bloque esencial de construccin. El
objeto es un conjunto complejo de datos y programas que
poseen estructura y forman parte de una organizacin.
Ventajas de la POO:
Fomenta la reutilizacin y extensin del cdigo.
Permite crear sistemas ms complejos.
Relacionar el sistema al mundo real.
Facilita la creacin de programas visuales.
Construccin de prototipos
Agiliza el desarrollo de software
Facilita el trabajo en equipo
Facilita el mantenimiento del software

Programacin de descripcin de hardware


sistemas numricos

VHDL Lenguaje de descripcin de Hardware VHSIC (Very


High Speed Integrated Circuit.). Es un lenguaje que sirve
para describir el comportamiento del hardware. La forma
de comportarse es independiente del hardware donde se
imnplementar.

El VHDL es un estndar llamado IEEE 1076-1993. Ventajas:

Una disponibilidad pblica

Independencia de dispositivos y fabricantes

Reutilizacin

Diseo jerrquico

Ejemplo de programacin VHDL

Breve cronologa de los Lenguajes de


programacin
1957 FORTRAN
1958 ALGOL
1960 Lisp
1960 COBOL
1962 APL
1962 SIMULA
1964 BASIC
1964 PL/I
1970 Prolog
1972 C
1975 Pascal
1975 Scheme
1975 Modula

1983 Smalltalk-80
1983 Objective-C
1983 Ada
1986 C++
1986 Eiffel
1987 Perl
1988 Tcl/Tk
1990 Haskell
1991 Python
1993 Ruby
1995 Java
1995 PHP
2000 C#

Ejemplos de lenguaje estructurado y


orientados a objetos

Lenguaje C
Autores: Kernighan & Dennis Ritchie (1972)
Lenguaje de alto nivel estructurado:
Con funciones
Objetivo inicial: Utilizacin para la programacin
de sistemas operativos .. Windows, Unix.
Se busco deliberadamente una proximidad con
lenguajes de nivel mas bajo: ensamblador,
maquina.
Por que sigue siendo til C? Simple, verstil.

Java
Java es un lenguaje de programacin moderno y orientado a
objetos desarrollado por Sun Microsystems a principio de
los aos 90s.
Caractersticas:

Sintaxis similar a C y C++, pero sin punteros (la gestin de


la memoria dinmica es automtica).

Interpretado: un programa escrito en cdigo Java (.java) se


compila a cdigo bytecode (.class) y dicho cdigo lo
interpreta una mquina virtual de Java.

Multiplataforma: el programador compila una nica vez el


programa Java, y el fichero de bytecode que obtiene se
ejecuta igual en la mquina virtual de Java de cualquier
plataforma.

Seguro: la mquina virtual Java sobre la que se ejecuta el


programa controla que dicho programa no intente ejecutar

Algunas fechas y acontecimientos


importantes

1822 Charles Babagge: Dise una mquina de propsito especfico que se


poda usar para calcular valores de funciones polinmicas mediante el mtodo de
las diferencias. Por su discernimiento, a Charles se conoce como el "Padre de las
Computadoras Modernas".

1934 - Colossus, Alan Touring, Flowers y Newman, primer dispositivo calculador


totalmente electrnico. Utilizados para decifrar mensajes en la guerra nazi.

1843 Lady Ada Augusta Lovelace sugiri la idea de que las tarjetas perforadas
se adaptaran de manera que causaran que el motor de Babbage repitiera ciertas
operaciones. Debido a esta sugerencia algunos consideran a Lady Lovelace la
primera programadora.

1946 Se construye en la Universidad de Pennsylvania bajo la tutela de John Von


Neumann la EDVAC (Electronic discrete variable automatic calculator). La
revelancia de esta computadora es que por primera vez su arquitectura permita
almacenamiento en memoria de los programas (Arquitectura de Von Neumann)

1946 Se construye en la Universidad de Pennsylvania la ENIAC (Electronic


Numerical Integrator And Calculator), que fue la primera computadora electrnica
de propsito general.

1951 Se construye la primera computadora comercial fabricada en Estados Unidos,


entregada a la oficina de CENSOS, la UNIVAC, creada por el mismo equipo de la
ENIAC.

1958 Se considera oficialmente el inicio de la era de la


computadora en Mxico al adquirirse una computadora
IBM-650 por parte de la UNAM, sus principales tareas eran
resolver problemas de astronoma, fsica e ingeniera
qumica. Seguiran otras instituciones como UANL, el IPN, el
ITESM e instituciones de gobierno como el IMSS, CFE y
PEMEX.

1966 Creacin de la red ARPANET por el Departamento de


Defensa de los EEUU. Predecesora de Internet.

1969 Se desarrolla en los laboratorios Bell el lenguaje de programacin


B y el sistema operativo UNIX cuyos aportes fueron mayoritariamente
de Ken Thompson y Dennis Ritchie.

1971 - Primer microprocesaror comercial (4004), 4 bits, Intel

1972 Ken Thompson y Dennis M. Ritchie crean el lenguaje de


programacin C en los Laboratorios Bell.

1975 Lanzamiento del primer microcomputador personal Altair 8800.

1975 Es fundada la empresa Microsoft por Bill Gates y Paul Allen

1976 - Se funda la empresa Apple por Steve Jobs y Steve Wozniak.

1982 Es diseada la computadora AHR (Heterrquica de procesamiento


paralelo) construida en la UNAM por el Ing. Adolfo Guzmn Arenas.

1983 ARPANET se separa de la red militar que la origin, de modo que,


ya sin fines militares, se considera este ao como el nacimiento de
Internet.

1983 Apple Computer presenta su Macintosh 128K con el sistema


operativo Mac OS, el cual introduce la interfaz grfica ideada en Xerox.

1984 - 1986 Se desarrolla las computadoras personales CPUAP y la Turing-850 dirigido por Luis Medina Vaillard (BUAP). Se
construye la computadora Almita II (IPN), diseado por el
Doctor Miguel Lindn Bos.

1985 Se disea el microprocesador ILA 9200 por cientficos


e ingenieros de Mxico (BUAP), Argentina, Brasil, Colombia y
Espaa.

1991 Linus Torvalds comienza a desarrollar el S.O. Linux


(UNIX).

1992 Gran ao para la robtica en Mxico, se construye el


Robot pianista llamado Cuco el guapo que estaba basado en
el microprocesador ILA 9200.

1995 Se desarrolla el lenguaje de programacin Java por la


compaa Sun Microsystems.

1997 Los mexicanos Miguel de Icaza y Federico Mena


anuncian el proyecto GNOME. (Interfz grfica LINUX)