Вы находитесь на странице: 1из 21

PRIMERO DE BACHILLERATO

FUNDAMENTOS DE PROGRAMACION

Algoritmos y
Programas
(1.1) computadora y sistema operativo
(1.1.1) computadora
Segn la RAE (Real Academia de la lengua espaola), una computadora es una
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 utilizacin automtica de
programas informticos.
Sin duda esta mquina es la responsable de toda una revolucin que est
cambiando el panorama econmico, social e incluso cultural. Debido a la
importancia y al difcil manejo de estas mquinas, aparece la informtica como la
ciencia orientada al proceso de informacin mediante el uso de computadoras.
Una computadora consta de diversos componentes entre los que sobresale el
procesador, el componente que es capaz de realizar las tareas que se requieren
al ordenador o computadora. En realidad un procesador slo es capaz de realizar
tareas sencillas como:

Operaciones aritmticas simples: suma, resta, multiplicacin y divisin


Operaciones de comparacin entre valores
Almacenamiento de datos
Algunos de los componentes destacables de un ordenador son:

1.4. EJERCICIO- RESOLVER


Desarrolle los algoritmos que resuelvan los siguientes problemas:
1.1. Ir al cine.
Anlisis del problema
DATOS DE SALIDA:
DATOS DE ENTRADA:
DATOS AUXILIARES:

Ver la pelcula
Nombre de la pelcula, direccin de la sala, hora de proyeccin
Entrada, nmero de asiento

Para solucionar el problema, se debe seleccionar una pelcula de la cartelera del peridico, ir a la sala y comprar la entrada para, finalmente, poder ver la pelcula.

Fundamentos de programacin
(Unidad 2) Metodologa de la programacin
Unidades de
almacenamiento

Perifricos de
entrada

CPU

(Unidad central de proceso)

Perifricos de
salida

Otros
dispositivos

Ilustracin 1, componentes de un ordenador desde un punto de


vista lgico

Este desglose de los componentes del ordenador es el que interesa a los


programadores. Pero desde un punto de vista ms fsico, hay otros componentes
a sealar:

Procesador. Ncleo digital en el que reside la CPU del ordenador. Es la


parte fundamental del ordenador, la encargada de realizar todas las
tareas.

Placa base. Circuito interno al que se conectan todos los componentes


del ordenador, incluido el procesador.

Memoria RAM. Memoria interna formada por un circuito digital que est
conectado mediante tarjetas a la placa base. Su contenido se evapora
cuando se desconecta al ordenador. Lo que se almacena no es
permanente.

Memoria cach. Memoria ultrarrpida de caractersticas similares a la


RAM, pero de velocidad mucho ms elevada por lo que se utiliza para
almacenar los ltimos datos utilizados.

Perifricos. Aparatos conectados al ordenador mediante tarjetas o

ranuras de expansin (tambin llamados puertos). Los hay de entrada


(introducen datos en el ordenador: teclado, ratn, escner,...), de salida
(muestran datos desde el ordenador: pantalla, impresora, altavoces,...) e
incluso de entrada/salida (mdem, tarjeta de red).

Unidades de almacenamiento. En realidad son perifricos, pero que


sirven para almacenar de forma permanente los datos que se deseen del
ordenador. Los principales son el disco duro (unidad de gran tamao
interna al ordenador), la disquetera (unidad de baja capacidad y muy
lenta, ya en desuso), el CD-ROM y el DVD.
1.2. Comprar una entrada para ir a los toros.
Anlisis del problema
DATOS DE SALIDA:
DATOS DE ENTRADA:
DATOS AUXILIARES:

La entrada
Tipo de entrada (sol, sombra, tendido, andanada, etc.)
Disponibilidad de la entrada

Hay que ir a la taquilla y elegir la entrada deseada. Si hay entradas se compra (en taquilla o a los reventas).
Si no la hay, se puede seleccionar otro tipo de entrada o desistir, repitiendo esta accin hasta que se ha conseguido la entrada o el posible comprador ha desistido.
EJERCICIO RESOLVER Poner la mesa para la comida.
Anlisis del problema
DATOS DE SALIDA:
DATOS DE ENTRADA:
DATOS AUXILIARES:

La mesa puesta
La vajilla, los vasos, los cubiertos, la servilletas, el nmero de comensales
Nmero de platos, vasos, cubiertos o servilletas que llevamos puestos

Para poner la mesa, despus de poner el mantel, se toman las servilletas hasta que su nmero coincide con el
de comensales y se colocan. La operacin se repetir con los vasos, platos y cubiertos.

(1.1.2) hardware y software


hardware
Se trata de todos los componentes fsicos que forman parte de un ordenador:
procesador, RAM, impresora, teclado, ratn,...
software
Se trata de la parte conceptual del ordenador. Es decir los datos y aplicaciones
que maneja y que permiten un grado de abstraccin mayor. Cualquier cosa que
se pueda almacenar en una unidad de almacenamiento es software (la propia
unidad sera hardware).

(1.1.3) Sistema Operativo


Se trata del software (programa) encargado de gestionar el ordenador. Es la
aplicacin que oculta la fsica real del ordenador para mostrarnos un interfaz que
permita al usuario un mejor y ms fcil manejo de la computadora.
funciones del Sistema Operativo
Las principales funciones que desempea un Sistema Operativo son:

Permitir al usuario comunicarse con el ordenador. A travs de comandos


o a travs de una interfaz grfica.

Coordinar y manipular el hardware de la computadora: memoria,


impresoras, unidades de disco, el teclado,...

Proporcionar herramientas para organizar los datos de manera lgica


(carpetas, archivos,...)

Proporcionar herramientas para organizar las aplicaciones instaladas.


Gestionar el acceso a redes
Gestionar los errores de hardware y la prdida de datos.
Servir de base para la creacin de aplicaciones, proporcionando
funciones que faciliten la tarea a los programadores.

Administrar la configuracin de los usuarios.


Proporcionar herramientas para controlar la seguridad del sistema.
algunos sistemas operativos

Windows. A da de hoy el Sistema Operativo ms popular (instalado en el


95% de computadoras del mundo). Es un software propiedad de Microsoft
por el que hay que pagar por cada licencia de uso.
EJERCICIO RESOLVER
1.4. Hacer una taza de t.
Anlisis del problema
DATOS DE SALIDA:
DATOS DE ENTRADA:
DATOS AUXILIARES:

Taza de t
Bolsa de t, agua
Pitido de la tetera, aspecto de la infusin

Despus de echar agua en la tetera, se pone al fuego y se espera a que el agua hierva (hasta que suena el pitido de la tetera). Introducimos el t y se deja un tiempo hasta que est hecho.

Fundamentos de programacin
(Unidad 2) Metodologa de la programacin

Ilustracin 2, Versiones actuales de Windows

Linux. Sistema operativo de cdigo abierto. Posee numerosas


distribuciones (muchas de ellas gratuitas) y software adaptado para l
(aunque slo el 15% de ordenadores tiene instalado algn sistema Linux).
Fundamentalmente su xito est en grandes mquinas o servidores.
Actualmente las distribuciones Linux ms conocidas son: Red Hat,
Fedora (versin gratuita de Red Hat), Debian, Ubuntu (variante de
Debian de libre distribucin), Mandriva y SUSE.

MacOs. Sistema operativo de los ordenadores MacIntosh.


Unix. Sistema operativo muy robusto para gestionar redes de todos los
tamaos. Actualmente en desuso debido al uso de Linux (que est
basado en Unix), aunque sigue siendo muy utilizado para gestionar
grandes redes (el soporte sigue siendo una de las razones para que se
siga utilizando)

Solaris. Versin de Unix para sistemas Sun.


EJERCICIO RESOLVER
1.5. Fregar los platos de la comida.
Anlisis del problema
DATOS DE SALIDA:
DATOS DE ENTRADA:
DATOS AUXILIARES:

Platos limpios
Platos sucios
Nmero de platos que quedan

(1.2) codificacin de la informacin


(1.2.1) introduccin
Sin duda una de las informaciones que ms a menudo un ordenador tiene que
manipular son los nmeros. Pero tambin el ordenador necesita codificar otro tipo
de informacin, como por ejemplo caracteres, imgenes, sonidos,...
EL problema es que para el ordenador toda la informacin debe estar en
formato binario (unos y ceros). Por ello se necesita traducir todos los datos a ese
formato.

(1.2.2) sistemas numricos


En general, a lo largo de la historia han existido numerosos sistemas de
numeracin. Cada cultura o civilizacin se ha servido en la antigedad de los
sistemas que ha considerado ms pertinentes. Para simplificar, dividiremos a
todos los sistemas en dos tipos:

Sistemas no posicionales. En ellos se utilizan smbolos cuyo valor


numrico es siempre el mismo independientemente de donde se siten.
Es lo que ocurre con la numeracin romana. En esta numeracin el
smbolo I significa siempre uno independientemente de su posicin.

Sistemas posicionales. En ellos los smbolos numricos cambian de


valor en funcin de la posicin que ocupen. Es el caso de nuestra
numeracin, el smbolo 2, en la cifra 12 vale 2; mientras que en la cifra 21
vale veinte.
La historia ha demostrado que los sistemas posicionales son mucho mejores para
los clculos matemticos por lo que han retirado a los no posicionales. La razn:
las operaciones matemticas son ms sencillas utilizando sistemas posicionales.
Todos los sistemas posicionales tienen una base, que es el nmero total de
smbolos que utiliza el sistema. En el caso de la numeracin decimal la base es
10; en el sistema binario es 2.
El Teorema Fundamental de la Numeracin permite saber el valor decimal
que tiene cualquier nmero en cualquier base. Dicho teorema utiliza la frmula:
...+ X3B3 + X2B2 + X1B1 + X0B0 + X-1B-1 + X-2B2+...
Donde:

Xi Es el smbolo que se encuentra en la posicin nmero i del nmero que


se est convirtiendo. Teniendo en cuenta que la posicin de las unidades
es la posicin 0 (la posicin -1 sera la del primer decimal)

B Es la base del sistemas que se utiliza para representar al nmero

EJERCICIO RESOLVER
1.6. Reparar un pinchazo de una bicicleta.
Anlisis del problema
DATOS DE SALIDA:
DATOS DE ENTRADA:
DATOS AUXILIARES:

La rueda reparada
La rueda pinchada, los parches, el pegamento
Las burbujas que salen donde est el pinchazo

Despus de desmontar la rueda y la cubierta e inflar la cmara, se introduce la cmara por secciones en un
cubo de agua. Las burbujas de aire indicarn donde est el pinchazo. Una vez descubierto el pinchazo se aplica el pegamento y ponemos el parche. Finalmente se montan la cmara, la cubierta y la rueda.

Fundamentos de programacin
(Unidad 2) Metodologa de la programacin

Por ejemplo si tenemos el nmero 153,6 utilizando e sistema octal (base ocho), el
paso a decimal se hara:
182 + 581 + 380 + 68-1 = 64 + 40 + 3 + 6/8 = 107,75

(1.2.3) sistema binario


introduccin
Los nmeros binarios son los que utilizan las computadoras para almacenar
informacin. Debido a ello hay trminos informticos que se refieren al sistema
binario y que se utilizan continuamente. Son:

BIT (de Binary diGIT). Se trata de un dgito binario, el nmero binario


1001 tiene cuatro BITS.

Byte. Es el conjunto de 8 BITS.


Kilobyte. Son 1024 bytes.
Megabyte. Son 1024 Kilobytes.
Gigabyte. Son 1024 Megabytes.
Terabyte. Son 1024 Gigabytes.
Petabyte. Son 1024 Terabytes.
conversin binario a decimal
Utilizando el teorema fundamental de la numeracin, por ejemplo para el nmero
binario 10011011011 el paso sera (los ceros se han ignorado):
1210 + 127 + 126 + 124 + 123+ 121+ 120 = 1243
conversin decimal a binario
El mtodo ms utilizado es ir haciendo divisiones sucesivas entre dos. Los restos
son las cifras binarias. Por ejemplo para pasar el 39:
39:2 = 19 resto 1
19:2 = 9 resto 1
9:2 = 4 resto 1
4:2 = 2 resto 0
2:2 = 1 resto 0
1:2 = 0 resto 1
Ahora las cifras binarias se toman al revs. Con lo cual, el nmero 100111 es
el equivalente en binario de 39.

EJERCICIO RESOLVER
1.7. Pagar una multa de trfico.
Anlisis del problema
DATOS DE SALIDA:
DATOS DE ENTRADA:
DATOS AUXILIARES:

El recibo de haber pagado la multa


Datos de la multa
Impreso de ingreso en el banco, dinero

Debe elegir cmo desea pagar la multa, si en metlico en la Delegacin de Trfico o por medio de una transferencia bancaria. Si elige el primer caso, tiene que ir a la Delegacin Provincial de Trfico, desplazarse a la ventanilla de pago de multas, pagarla en efectivo y recoger el resguardo.
Si desea pagarla por transferencia bancaria, hay que ir al banco, rellenar el impreso apropiado, dirigirse a
la ventanilla, entregar el impreso y recoger el resguardo.

operaciones aritmticas binarias


suma
Se efecta igual que las sumas decimales, slo que cuando se suma un uno y
otro uno, ese dice que tenemos un acarreo de uno y se suma a la siguiente cifra.
Ejemplo (suma de 31, en binario 10011, y 28, en binario, 11100)
Acarreo

1
1
1
1

1
1
1
1

1
1
0

1
0
1

1
0
1

El resultado es 111011, 59 en decimal.


resta
El concepto es parecido slo que en el caso de la resta es importante tener en
cuenta el signo. No se explica en el presente manual ya que se pretende slo una
introduccin a los nmeros binarios. En la actualidad la resta se hace sumando
nmeros en complemento a 21.
operaciones lgicas
Se trata de operaciones que manipulan BITS de forma lgica, son muy utilizadas
en la informtica. Se basan en una interpretacin muy utilizada con los nmeros
binarios en la cual el dgito 1 se interpreta como verdadero y el dgito 0 se
interpreta como falso.
operacin AND
La operacin AND (en espaol Y), sirve para unir expresiones lgicas, se
entiende que el resultado de la operacin es verdadero si alguna de las dos
expresiones es verdadero (por ejemplo la expresin ahora llueve y hace sol slo
es verdadera si ocurren ambas cosas).
En el caso de los dgitos binarios, la operacin AND opera con dos BITS de
modo que el resultado ser uno si ambos bits valen uno.
AND

La tabla superior se llama tabla de la verdad y sirve para mostrar resultados de


operaciones lgicas, el resultado est en la parte blanca, en la otra parte se
representan los operadores . El resultado ser 1 si ambos operadores valen 1

EJERCICIO- RESOLVER
1.8. Hacer una llamada telefnica. Considerar los casos: a) llamada manual con operador; b) llamada automtica; c) llamada a cobro revertido.
Anlisis del problema
Para decidir el tipo de llamada que se efectuar, primero se debe considerar si se dispone de efectivo o no para
realizar la llamada a cobro revertido. Si hay efectivo se debe ver si el lugar a donde vamos a llamar est conectado a la red automtica o no.
Para una llamada con operadora hay que llamar a la centralita y solicitar la llamada, esperando hasta que
se establezca la comunicacin. Para una llamada automtica se leen los prefijos del pas y provincia si fuera necesario, y se realiza la llamada, esperando hasta que cojan el telfono. Para llamar a cobro revertido
se debe llamar a centralita, solicitar la llamada y esperar a que el abonado del telfono al que se llama d su
autorizacin, con lo que se establecer la comunicacin.
Como datos de entrada tendramos las variables que nos van a condicionar el tipo de llamada, el nmero
de telfono y, en caso de llamada automtica, los prefijos si los hubiera. Como dato auxiliar se podra considerar en los casos a y c el contacto con la centralita.

Fundamentos de programacin
(Unidad 2) Metodologa de la programacin

operacin OR
OR (O en espaol) devuelve verdadero si cualquiera de los operandos es
verdadero (es decir, si valen 1). La tabla es esta:
OR

operacin NOT
Esta operacin acta sobre un solo BIT y lo que hace es invertirle; es decir, si vale
uno valdr cero, y si vale cero valdr uno.
NOT

codificacin de otros tipos de datos a binario


texto
Puesto que una computadora no slo maneja nmeros, habr dgitos binarios que
contengan informacin que no es traducible a decimal. Todo depende de cmo se
interprete esa traduccin.
Por ejemplo en el caso del texto, lo que se hace es codificar cada carcter en
una serie de nmeros binarios. El cdigo ASCII ha sido durante mucho tiempo el
ms utilizado. Inicialmente era un cdigo que utilizaba 7 bits para representar
texto, lo que significaba que era capaz de codificar 127 caracteres. Por ejemplo el
nmero 65 (1000001 en binario) se utiliza para la A mayscula.
Poco despus apareci un problema: este cdigo es suficiente para los
caracteres del ingls, pero no para otras lenguas. Entonces se aadi el octavo
bit para representar otros 128 caracteres que son distintos segn idiomas (Europa
Occidental usa unos cdigos que no utiliza Europa Oriental).
Eso provoca que un cdigo como el 190 signifique cosas diferentes si
cambiamos de pas. Por ello cuando un ordenador necesita mostrar texto, tiene
que saber qu juego de cdigos debe de utilizar (lo cual supone un tremendo
problema).
Una ampliacin de este mtodo de codificacin es el cdigo Unicode que
puede utilizar hasta 4 bytes (32 bits) con lo que es capaz de codificar cualquier
carcter en cualquier lengua del planeta utilizando el mismo conjunto de cdigos.
Poco a poco es el cdigo que se va extendiendo; pero la preponderancia histrica
que ha tenido el cdigo ASCII, complica su popularidad.
otros datos
En el caso de datos ms complejos (imgenes, vdeo, audio) se necesita una
codificacin ms compleja. Adems en estos datos no hay estndares, por lo que
hay decenas de formas de codificar.
En el caso, por ejemplo, de las imgenes, una forma bsica de codificarlas en
binario es la que graba cada pxel (cada punto distinguible en la imagen)
mediante tres bytes: el primero graba el nivel de rojo, el segundo el nivel de azul y
el tercero el nivel de verde. Y as por cada pxel.

2.1.3. Expresiones
Una expresin es una combinacin de operadores y operandos. Los operandos podrn ser constantes,
variables u otras expresiones y los operadores de cadena, aritmticos, relacionales o lgicos. Las expresiones se clasifican, segn el resultado que producen, en:
Numricas. Los operandos que intervienen en ellas son numricos, el resultado es tambin de
tipo numrico y se construyen mediante los operadores aritmticos. Se pueden considerar anlogas a las frmulas matemticas.

(1.2.4) sistema hexadecimal


Es un sistema que se utiliza mucho para representar nmeros binarios. Un
problema (entre otros) de los nmeros binarios es que ocupan mucho espacio
para representar informacin. El sistema hexadecimal es la forma de representar
nmeros en base 16. de modo que en los dgitos del 0 al 9 se utilizan los mismos
smbolos que en el sistema decimal y a partir del 10 se utiliza la letra A y as hasta
la letra F que simboliza el 15.
As el nmero hexadecimal CA3 sera:
C162 + A161 + 3160 = 12256 + 1016 + 3 = 3235
Como se observa pasar de hexadecimal a decimal es complejo. La razn del uso
de este sistema es porque tiene una equivalencia directa con el sistema binario.
De hecho en una cifra hexadecimal caben exactamente 4 bits. Por ello la
traduccin de hexadecimal a binario se basa en esta tabla:
Hexadecimal
0
1
2
3
4
5
6
7
8
9
A
B
C
D
E
F

Binario
0000
0001
0010
0011
0100
0101
0110
0111
1000
1001
1010
1011
1100
1101
1110
1111

As el nmero hexadecimal C3D4 sera el binario 1100 0011 1101 0100. Y el


binario 0111 1011 1100 0011 sera el hexadecimal 7BC3

2.2. REPRESENTACIN DE ALGORITMOS


Un algoritmo puede ser escrito en castellano narrativo, pero esta descripcin suele ser demasiado prolija y, adems, ambigua. Para representar un algoritmo se debe utilizar algn mtodo que permita
independizar dicho algoritmo de los lenguajes de programacin y, al mismo tiempo, conseguir que sea
fcilmente codificable.
Los mtodos ms usuales para la representacin de algoritmos son:
A. Diagrama de flujo.
B. Diagrama N-S (Nassi-Schneiderman).
C. Pseudocdigo.

Fundamentos de programacin
(Unidad 2) Metodologa de la programacin

(1.3) algoritmos
(1.3.1) nocin de algoritmo
Segn la RAE: conjunto ordenado y finito de operaciones que permite hallar
la solucin de un problema.
Los algoritmos, como indica su definicin oficial, son una serie de pasos que
permiten obtener la solucin a un problema. La palabra algoritmo procede del
matemtico rabe Mohamed Ibn Al Kow Rizmi, el cual escribi sobre los aos
800 y 825 su obra Quitad Al Mugabala, donde se recoga el sistema de
numeracin hind y el concepto del cero. Fibonacci, tradujo la obra al latn y la
llam: Algoritmi Dicit.
El lenguaje algortmico es aquel que implementa una solucin terica a un
problema indicando las operaciones a realizar y el orden en el que se deben
efectuarse. Por ejemplo en el caso de que nos encontremos en casa con una
bombilla fundida en una lmpara, un posible algoritmo sera:
(1)

Comprobar si hay bombillas de repuesto

(2)

En el caso de que las haya, sustituir la bombilla anterior por la nueva

(3)

Si no hay bombillas de repuesto, bajar a comprar una nueva a la tienda y


sustituir la vieja por la nueva

Los algoritmos son la base de la programacin de ordenadores, ya que los


programas de ordenador se puede entender que son algoritmos escritos en un
cdigo especial entendible por un ordenador.
Lo malo del diseo de algoritmos est en que no podemos escribir lo que
deseemos, el lenguaje ha utilizar no debe dejar posibilidad de duda, debe recoger
todas las posibilidades.

2.3. DIAGRAMA DE FLUJO


Los diagramas de flujo se utilizan tanto para la representacin grfica de las operaciones ejecutadas
sobre los datos a travs de todas las partes de un sistema de procesamiento de informacin, diagrama
de flujo del sistema, como para la representacin de la secuencia de pasos necesarios para describir
un procedimiento particular, diagrama de flujo de detalle.
En la actualidad se siguen usando los diagramas de flujo del sistema, pero ha decado el uso de los
diagramas de flujo de detalle al aparecer otros mtodos de diseo estructurado ms eficaces para la representacin y actualizacin de los algoritmos.
Los diagramas de flujo de detalle son, no obstante, uno de nuestros objetivos prioritarios y, a partir de ahora, los denominaremos simplemente diagramas de flujo.
El diagrama de flujo utiliza unos smbolos normalizados, con los pasos del algoritmo escritos en
el smbolo adecuado y los smbolos unidos por flechas, denominadas lneas de flujo, que indican el
orden en que los pasos deben ser ejecutados. Los smbolos principales son:
Smbolo

Funcin
Inicio y fin del algoritmo
Proceso
Entrada/Salida
Decisin
Comentario

Por lo que los tres pasos anteriores pueden ser mucho ms largos:
[1]
Comprobar si hay bombillas de repuesto
(1.1) Abrir el cajn de las bombillas
(1.2) Observar si hay bombillas
[2]
Si hay bombillas:
(2.1) Coger la bombilla
(2.2) Coger una silla
(2.3) Subirse a la silla
(2.4) Poner la bombilla en la lmpara
[3]
Si no hay bombillas
(3.1) Abrir la puerta
(3.2) Bajar las escaleras....
Cmo se observa en un algoritmo las instrucciones pueden ser ms largas de lo
que parecen, por lo que hay que determinar qu instrucciones se pueden utilizar y
qu instrucciones no se pueden utilizar. En el caso de los algoritmos preparados
para el ordenador, se pueden utilizar slo instrucciones muy concretas.

(1.3.2) caractersticas de los algoritmos


caractersticas que deben de cumplir los algoritmos obligatoriamente

Un algoritmo debe resolver el problema para el que fue formulado.


Lgicamente no sirve un algoritmo que no resuelve ese problema. En el
caso de los programadores, a veces crean algoritmos que resuelven
problemas diferentes al planteado.

Los algoritmos son independientes del ordenador. Los algoritmos se


escriben para poder ser utilizados en cualquier mquina.

Los algoritmos deben de ser precisos. Los resultados de los clculos


deben de ser exactos, de manera rigurosa. No es vlido un algoritmo que
slo aproxime la solucin.

Los algoritmos deben de ser finitos. Deben de finalizar en algn


momento. No es un algoritmo vlido aquel que produce situaciones en las
que el algoritmo no termina.

Los algoritmos deben de poder repetirse. Deben de permitir su


ejecucin las veces que haga falta. No son vlidos los que tras ejecutarse
una vez ya no pueden volver a hacerlo por la razn que sea.
1.2. LENGUAJES DE PROGRAMACIN
Un programa se escribe en un lenguaje de programacin y los lenguajes utilizados se pueden clasificar en:
Lenguajes mquina.
Lenguajes de bajo nivel (ensamblador).
Lenguajes de alto nivel.

Dispositivo 1

Dispositivo 2

Controlador
de E/S 1

Controlador
de E/S 2

Bus

Cach
UCP

Memoria
principal

UC
UAL

Interrupciones

Fundamentos de programacin
(Unidad 2) Metodologa de la programacin

caractersticas aconsejables para los algoritmos

Validez. Un algoritmo es vlido si carece de errores. Un algoritmo puede


resolver el problema para el que se plante y sin embargo no ser vlido
debido a que posee errores

Eficiencia. Un algoritmo es eficiente si obtiene la solucin al problema en


poco tiempo. No lo es si es lento en obtener el resultado.

ptimo. Un algoritmo es ptimo si es el ms eficiente posible y no


contiene errores. La bsqueda de este algoritmo es el objetivo prioritario
del programador. No siempre podemos garantizar que el algoritmo hallado
es el ptimo, a veces s.

(1.3.3) elementos que conforman un algoritmo


Entrada. Los datos iniciales que posee el algoritmo antes de ejecutarse.
Proceso. Acciones que lleva a cabo el algoritmo.
Salida. Datos que obtiene finalmente el algoritmo.

(1.3.4) fases en la creacin de algoritmos


Hay tres fases en la elaboracin de un algoritmo:
(1)

Anlisis. En esta se determina cul es exactamente el problema a


resolver. Qu datos forman la entrada del algoritmo y cules debern
obtenerse como salida.

(2)

Diseo. Elaboracin del algoritmo.

(3)

Prueba. Comprobacin del resultado. Se observa si el algoritmo obtiene


la salida esperada para todas las entradas.

(1.4) aplicaciones
(1.4.1) programas y aplicaciones
Programa. La definicin de la RAE es: Conjunto unitario de
instrucciones que permite a un ordenador realizar funciones
diversas, como el tratamiento de textos, el diseo de grficos, la
resolucin de problemas matemticos, el manejo de bancos de
datos, etc. Pero normalmente se entiende por programa un conjunto de
instrucciones ejecutables por un ordenador.
Un programa estructurado es un programa que cumple las condiciones de
un algoritmo (finitud, precisin, repeticin, resolucin del problema,...)

Aplicacin. Software formado por uno o ms programas, la


documentacin de los mismos y los archivos necesarios para su
funcionamiento, de modo que el conjunto completo de archivos forman
una herramienta de trabajo en un ordenador.
Normalmente en el lenguaje cotidiano no se distingue entre aplicacin y
programa; en nuestro caso entenderemos que la aplicacin es un software
completo que cumple la funcin completa para la que fue diseado, mientras que
un programa es el resultado de ejecutar un cierto cdigo entendible por el
ordenador.

(1.4.2) historia del software. La crisis del software


Los primeros ordenadores cumplan una nica programacin que estaba definida
en los componentes elctricos que formaban el ordenador.
La idea de que el ordenador hiciera varias tareas (ordenador programable o
multipropsito) hizo que se idearan las tarjetas perforadas. En ellas se utilizaba
cdigo binario, de modo que se hacan agujeros en ellas para indicar el cdigo 1 o
el cero. Estos primeros programas lgicamente servan para hacer tareas muy
concretas.
La llegada de ordenadores electrnicos ms potentes hizo que los
ordenadores se convirtieran en verdaderas mquinas digitales que seguan
utilizando el 1 y el 0 del cdigo binario pero que eran capaces de leer miles de
unos y ceros. Empezaron a aparecer los primeros lenguajes de programacin que
escriban cdigo ms entendible por los humanos que posteriormente era
convertido al cdigo entendible por la mquina.
Inicialmente la creacin de aplicaciones requera escribir pocas lneas de
cdigo en el ordenador, por lo que no haba una tcnica especificar a la hora de
crear programas. Cada programador se defenda como poda generando el
cdigo a medida que se le ocurra.
Poco a poco las funciones que se requeran a los programas fueron
aumentando produciendo miles de lneas de cdigo que al estar desorganizada
hacan casi imposible su mantenimiento. Slo el programador que haba escrito el
cdigo era capaz de entenderlo y eso no era en absoluto prctico.
La llamada crisis del software ocurri cuando se percibi que se gastaba ms
tiempo en hacer las modificaciones a los programas que en volver a crear el
software. La razn era que ya se haban codificado millones de lneas de cdigo
antes de que se definiera un buen mtodo para crear los programas.
La solucin a esta crisis ha sido la definicin de la ingeniera del software
como un oficio que requera un mtodo de trabajo similar al del resto de
ingenieras. La bsqueda de una metodologa de trabajo que elimine esta crisis
parece que an no est resuelta, de hecho los mtodos de trabajo siguen
redefinindose una y otra vez.

Fundamentos de programacin
(Unidad 2) Metodologa de la programacin

(1.4.3) el ciclo de vida de una aplicacin


Una de las cosas que se han definido tras el nacimiento de la ingeniera del
software ha sido el ciclo de vida de una aplicacin. El ciclo de vida define los
pasos que sigue el proceso de creacin de una aplicacin desde que se propone
hasta que finaliza su construccin. Los pasos son:

Anlisis

Diseo

Codificacin

Pruebas

Mantenimiento
Ilustracin 3, Ciclo de vida de una aplicacin
(1)

Anlisis. En esta fase se determinan los requisitos que tiene que cumplir la
aplicacin. Se anota todo aquello que afecta al futuro funcionamiento de la
aplicacin. Este paso le realiza un analista

(2)

Diseo. Se especifican los esquemas de diseo de la aplicacin. Estos


esquemas forman los planos del programador, los realiza el analista y
representan todos los aspectos que requiere la creacin de la aplicacin.

(3)

Codificacin. En esta fase se pasa el diseo a cdigo escrito en algn


lenguaje de programacin. Esta es la primera labor que realiza el
programador

(4)

Pruebas. Se trata de comprobar que el funcionamiento de la aplicacin es


la adecuada. Se realiza en varias fases:
a) Prueba del cdigo. Las realizan programadores. Normalmente
programadores distintos a los que crearon el cdigo, de ese modo la
prueba es ms independiente y generar resultados ms ptimos.
b) Versin alfa. Es una primera versin terminada que se revisa a fin de
encontrar errores. Estas pruebas conviene que sean hechas por
personal no informtico.
c) Versin beta. Versin casi definitiva del software en la que no se
estiman fallos, pero que se distribuye a los clientes para que
(18)

encuentren posibles problemas. A veces est versin acaba siendo la


definitiva (como ocurre con muchos de los programas distribuidos
libremente por Internet).
(5)

Mantenimiento. Tiene lugar una vez que la aplicacin ha sido ya


distribuida, en esta fase se asegura que el sistema siga funcionando
aunque cambien los requisitos o el sistema para el que fue diseado el
software. Antes esos cambios se hacen los arreglos pertinentes, por lo que
habr que retroceder a fases anteriores del ciclo de vida.

(1.5) errores
Cuando un programa obtiene una salida que no es la esperada, se dice que
posee errores. Los errores son uno de los caballos de batalla de los
programadores ya que a veces son muy difciles de encontrar (de ah que hoy en
da en muchas aplicaciones se distribuyan parches para subsanar errores no
encontrados en la creacin de la aplicacin).
tipos de errores

Error del usuario. Errores que se producen cuando el usuario realiza


algo inesperado y el programa no reacciona apropiadamente.

Error del programador. Son errores que ha cometido el programador al


generar el cdigo. La mayora de errores son de este tipo.

Errores de documentacin. Ocurren cuando la documentacin del


programa no es correcta y provoca fallos en el manejo

Error de interfaz. Ocurre si la interfaz de usuario de la aplicacin es


enrevesada para el usuario impidiendo su manejo normal. Tambin se
llaman as los errores de protocolo entre dispositivos.

Error de entrada / salida o de comunicaciones. Ocurre cuando falla la


comunicacin entre el programa y un dispositivo (se desea imprimir y no
hay papel, falla el teclado,...)

Error fatal. Ocurre cuando el hardware produce una situacin inesperado


que el software no puede controlar (el ordenador se cuelga, errores en la
grabacin de datos,...)

Error de ejecucin. Ocurren cuando la ejecucin del programa es ms


lenta de lo previsto.
La labor del programador es predecir, encontrar y subsanar (si es posible) o al
menos controlar los errores. Una mala gestin de errores causa experiencias
poco gratas al usuario de la aplicacin.

Fundamentos de programacin
(Unidad 2) Metodologa de la programacin

(1.6) lenguajes de programacin


(1.6.1) breve historia de los lenguajes de programacin
inicios de la programacin
Charles Babbage defini a mediados del siglo XIX lo que l llam la mquina
analtica. Se considera a esta mquina el diseo del primer ordenador. La
realidad es que no se pudo construir hasta el siglo siguiente. El caso es que su
colaboradora Ada Lovelace escribi en tarjetas perforadas una serie de
instrucciones que la mquina iba a ser capaz de ejecutar. Se dice que eso
signific el inicio de la ciencia de la programacin de ordenadores.
En la segunda guerra mundial debido a las necesidades militares, la ciencia de
la computacin prospera y con ella aparece el famoso ENIAC (Electronic
Numerical Integrator And Calculator), que se programaba cambiando su
circuitera. Esa es la primera forma de programar (que an se usa en numerosas
mquinas) que slo vale para mquinas de nico propsito. Si se cambia el
propsito, hay que modificar la mquina.
cdigo mquina. primera generacin de lenguajes (1GL)
No mucho ms tarde apareci la idea de que las mquinas fueran capaces de
realizar ms de una aplicacin. Para lo cual se ide el hecho de que hubiera una
memoria donde se almacenaban esas instrucciones. Esa memoria se poda
rellenar con datos procedentes del exterior. Inicialmente se utilizaron tarjetas
perforadas para introducir las instrucciones.
Durante mucho tiempo esa fue la forma de programar, que teniendo en cuenta
que las mquinas ya entendan slo cdigo binario, consista en introducir la
programacin de la mquina mediante unos y ceros. El llamado cdigo mquina.
Todava los ordenadores es el nico cdigo que entienden, por lo que cualquier
forma de programar debe de ser convertida a cdigo mquina.
Slo se ha utilizado por los programadores en los inicios de la informtica. Su
incomodidad de trabajo hace que sea impensable para ser utilizado hoy en da.
Pero cualquier programa de ordenador debe, finalmente, ser convertido a este
cdigo para que un ordenador puede ejecutar las instrucciones de dicho
programa.
Un detalle a tener en cuenta es que el cdigo mquina es distinto para cada
tipo de procesador. Lo que hace que los programas en cdigo mquina no sean
portables entre distintas mquinas.
lenguaje ensamblado. segunda generacin de lenguajes (2GL)
En los aos 40 se intent concebir un lenguaje ms simblico que permitiera no
tener que programar utilizando cdigo mquina. Poco ms tarde se ide el
lenguaje ensamblador, que es la traduccin del cdigo mquina a una forma
ms textual. Cada tipo de instruccin se asocia a una palabra mnemotcnica
(como SUM para sumar por ejemplo), de forma que cada palabra tiene traduccin
directa en el cdigo mquina.
(20)

Tras escribir el programa en cdigo ensamblador, un programa (llamado


tambin ensamblador) se encargar de traducir el cdigo ensamblador a cdigo
mquina. Esta traduccin es rpida puesto que cada lnea en ensamblador tiene
equivalente directo en cdigo mquina (en los lenguajes modernos no ocurre
esto).
La idea es la siguiente: si en el cdigo mquina, el nmero binario 0000
significa sumar, y el nmero 0001 significa restar. Una instruccin mquina que
sumara el nmero 8 (00001000 en binario) al nmero 16 (00010000 en binario)
sera:
0000 00001000 00010000
Realmente no habra espacios en blanco, el ordenador entendera que los
primeros cuatro BITS representan la instruccin y los 8 siguientes el primer
nmero y los ocho siguientes el segundo nmero (suponiendo que los nmeros
ocupan 8 bits). Lgicamente trabajar de esta forma es muy complicado. Por eso
se podra utilizar la siguiente traduccin en ensamblador:
SUM

8 16

Que ya se entiende mucho mejor.


Ejemplo2 (programa que saca el texto Hola mundo por pantalla):
DATOS SEGMENT
saludo db "Hola mundo!!!","$"
DATOS ENDS
CODE SEGMENT
assume cs:code,ds:datos
START PROC
mov ax,datos
mov ds,ax
mov dx,offset saludo
mov ah,9
int 21h
mov ax,4C00h
int 21h
START ENDP
CODE ENDS
END START

1.
2.
3.
4.

QUE SON PROCESADORES


QUE ES UNIDAD DE ALMACENAMIENTO
QUE SON SISTEMAS NUMERICO
QUE ES CODIFICACION DE LA INFORMACION

Fundamentos de programacin
(Unidad 2) Metodologa de la programacin

Puesto que el ensamblador es una representacin textual pero exacta del cdigo
mquina; cada programa slo funcionar para la mquina en la que fue concebido
el programa; es decir, no es portable.
La ventaja de este lenguaje es que se puede controlar absolutamente el
funcionamiento de la mquina, lo que permite crear programas muy eficientes. Lo
malo es precisamente que hay que conocer muy bien el funcionamiento de la
computadora para crear programas con esta tcnica. Adems las lneas
requeridas para realizar una tarea se disparan ya que las instrucciones de la
mquina son excesivamente simples.
Fortran
1954

Lisp

Algol

1960

CPL

Basic

1963

1964

Simula

PL/I

1964

1963

Pascal

Logo

1969

1970

Cobol

1958

1958

1968

Sh

1971

1971

SmallTalk
1973

Modula

Awk

1975

1978

C++
1983

Quick Basic

Perl
1987

1984

Turbo Pascal
1988

Visual Basic

Python

Oak

1991

1991

1991

VBScript
1993

Delphi
1995

JavaScript

Java

PHP

1995

1995

1995

Java 2

ASP

1998

1996

C#
2000

Ilustracin 4, Evolucin de algunos lenguajes de programacin

ACTIVIDADES
5. QUE SON SISTEMAS BINARIOS
6. QUE SON OPERACIONES LOGICAS
7. QUE SON OPERACIONES AND
8. QUE SON SISTEMA HEXADECIMAL
9. QUE ES ALGORITMO

lenguajes de alto nivel. lenguajes de tercera generacin (3GL)


Aunque el ensamblador signific una notable mejora sobre el cdigo mquina,
segua siendo excesivamente crptico. De hecho para hacer un programa sencillo
requiere miles y miles de lneas de cdigo.
Para evitar los problemas del ensamblador apareci la tercera generacin de
lenguajes de programacin, la de los lenguajes de alto nivel. En este caso el
cdigo vale para cualquier mquina pero deber ser traducido mediante software
especial que adaptar el cdigo de alto nivel al cdigo mquina correspondiente.
Esta traduccin es necesaria ya que el cdigo en un lenguaje de alto nivel no se
parece en absoluto al cdigo mquina.
Tras varios intentos de representar lenguajes, en 1957 aparece el que se
considera el primer lenguaje de alto nivel, el FORTRAN (FORmula
TRANslation), lenguaje orientado a resolver frmulas matemticos. Por ejemplo
la forma en FORTRAN de escribir el texto Hola mundo por pantalla es:
PROGRAM HOLA
PRINT *, 'Hola, mundo!'
END
Poco a poco fueron evolucionando los lenguajes formando lenguajes cada vez
mejores (ver ). As en 1958 se crea LISP como lenguaje declarativo para
expresiones matemticas.
Programa que escribe Hola mundo en lenguaje LISP:
(format t "Hola, mundo!")
En 1960 la conferencia CODASYL se creo el COBOL como lenguaje de gestin
en 1960. En 1963 se creo PL/I el primer lenguaje que admita la multitarea y la
programacin modular. En COBOL el programa Hola mundo sera ste (como se
ve es un lenguaje ms declarativo):
IDENTIFICATION DIVISION.
PROGRAM-ID. HELLO.
ENVIRONMENT DIVISION.
DATA DIVISION.
PROCEDURE DIVISION.
MAIN SECTION.
DISPLAY "Hola mundo"
STOP RUN.
BASIC se creo en el ao 1964 como lenguaje de programacin sencillo de
aprender en 1964 y ha sido, y es, uno de los lenguajes ms populares. En 1968
se crea LOGO para ensear a programar a los nios. Pascal se creo con la
misma idea acadmica pero siendo ejemplo de lenguaje estructurado para

ACTIVIDADES
10. CUALES SON LAS CARACTISTICAS DEL ALGORITMO
11. CUALES SON LOS ELEMENTOS QUE CONFORMAN EL ALGORITMO
12. CUALES SON LAS FASES DEL ALGORITMO
13. QUE SON PROGRAMAS Y APLCIACIONES
14. QUE ES HISTORIA DE SOFTWARE

Fundamentos de programacin
(Unidad 2) Metodologa de la programacin

programadores avanzados. El creador del Pascal (Niklaus Wirdth) creo Modula


en 1977 siendo un lenguaje estructurado para la programacin de sistemas
(intentando sustituir al C).
Programa que escribe por pantalla Hola mundo en lenguaje Pascal):
PROGRAM HolaMundo;
BEGIN
Writeln('Hola, mundo!');
END.
lenguajes de cuarta generacin (4GL)
En los aos 70 se empez a utilizar ste trmino para hablar de lenguajes en los
que apenas hay cdigo y en su lugar aparecen indicaciones sobre qu es lo que
el programa debe de obtener. Se consideraba que el lenguaje SQL (muy utilizado
en las bases de datos) y sus derivados eran de cuarta generacin. Los lenguajes
de consulta de datos, creacin de formularios, informes,... son lenguajes de cuarto
nivel. Aparecieron con los sistemas de base de datos
Actualmente se consideran lenguajes de ste tipo a aquellos lenguajes que se
programan sin escribir casi cdigo (lenguajes visuales), mientras que tambin se
propone que ste nombre se reserve a los lenguajes orientados a objetos.
lenguajes orientados a objetos
En los 80 llegan los lenguajes preparados para la programacin orientada a
objetos todos procedentes de Simula (1964) considerado el primer lenguaje con
facilidades de uso de objetos. De estos destac inmediatamente C++.
A partir de C++ aparecieron numerosos lenguajes que convirtieron los
lenguajes clsicos en lenguajes orientados a objetos (y adems con mejoras en el
entorno de programacin, son los llamados lenguajes visuales): Visual Basic,
Delphi (versin orientada a objetos de Pascal), Visual C++,...
En 1995 aparece Java como lenguaje totalmente orientado a objetos y en el
ao 2000 aparece C# un lenguaje que toma la forma de trabajar de C++ y del
propio Java.
El programa Hola mundo en C# sera:
using System;
class MainClass
{
public static void Main()
{
Console.WriteLine("Hola, mundo!");
}
}

ACTIVIDADES
15. CUALES SON LOS CICLO DE VIDA DE UNA APLICACIN
16. QUE SON LOS ERRORES
17. QUE ES LENGUAJE DE PROGRAMACION
18. QUE ES LENGUAJE DE ALTO NIVEL
19. QUE ES LENGUAJE DE BAJO NIVEL
20. HABLE SOBRE BASIC

Вам также может понравиться