You are on page 1of 70

Algoritmos computacionales

Que es programacin.

Que es un lenguaje de programacin.

Que es la lgica computacional.

Clasificacin de los lenguajes de programacin, (Ejemplos en


cada clasificacin o categora)

Que es un algoritmo (Ejemplos), como se clasifican.

Que es un pseudocdigo (Ejemplos).

Que es un diagrama de flujo de datos, (como se clasifican).

Que son las variables (ejemplos).

Que son las constantes (ejemplos).

Tipos de datos.

Operadores (tipos).

Operaciones bsicas (algoritmos)

Sumas.

Restas.

Multiplicacin.

Divisiones.

Smbolos de diagramas de flujo.

(Operaciones bsicas)
If
If anidados
Switch
Switch anidados
-

Ciclos repetitivos

For
While
Do While
-

Vectores.

Matrices.

Qu es programacin?
La programacin es el proceso de disear, escribir, probar, depurar y
mantener el cdigo fuente de programas computacionales. El cdigo fuente
es escrito en un lenguaje de programacin. El propsito de la programacin
es crear un programa que exhiba un comportamiento deseado. El proceso
de escribir cdigo requiere frecuentemente conocimientos en muchas reas
distintas, como el dominio de la aplicacin, algoritmos especializados y
lgica formal.
Historia
Para que la computadora entienda nuestras instrucciones debe usarse un
lenguaje especfico conocido como cdigo mquina, el cual comprende
fcilmente, pero que lo hace excesivamente complicado para las personas.
De hecho slo consiste en cadenas interminables de nmeros 1 y 0.
(Sistema de nmeros Binario)
Para facilitar el trabajo, los primeros operadores de computadoras
decidieron reemplazar los 1 y 0 por palabras o letras provenientes del
ingls; ste se conoce como lenguaje ensamblador. Por ejemplo, para sumar
se usa la letra A de la palabra inglesa add (sumar). En realidad escribir en
lenguaje ensamblador es bsicamente igual que hacerlo en lenguaje
mquina, pero las letras y palabras son ms fciles de recordar y entender
que los nmeros.
A medida que la complejidad de las tareas que realizaban las computadoras
aumentaba, se hizo necesario disponer de un mtodo ms adecuado para
programarlas. Entonces, se crearon los lenguajes de alto nivel. Mientras que
una tarea tan sencilla como sumar dos nmeros puede necesitar varias
instrucciones en lenguaje ensamblador, en un lenguaje de alto nivel bastar
con solo una.
Una vez que se termina de escribir un programa en ensamblador o en un
lenguaje de alto nivel es necesario compilarlo, es decir, traducirlo a lenguaje
mquina.

Lenguaje de programacin

Captura de la microcomputadora Commodore PET-32 mostrando un


programa en el lenguaje de programacin BASIC, bajo el emulador VICE en
una distribucin GNU/Linux.
Un lenguaje de programacin es un idioma artificial diseado para
expresar computaciones que pueden ser llevadas a cabo por mquinas
como las computadoras. Pueden usarse para crear programas que controlen
el comportamiento fsico y lgico de una mquina, para expresar algoritmos
con precisin, o como modo de comunicacin humana. [1] 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 y se mantiene el cdigo
fuente de un programa informtico se le llama programacin.
Tambin la palabra programacin se define como el proceso de creacin de
un programa de computadora, mediante la aplicacin de procedimientos
lgicos, a travs de los siguientes pasos:

El desarrollo lgico del programa para resolver un problema en


particular.

Escritura de la lgica del programa empleando un lenguaje de


programacin especfico (codificacin del programa).

Ensamblaje o compilacin del programa hasta convertirlo en lenguaje


de mquina.

Prueba y depuracin del programa.

Desarrollo de la documentacin.

Existe un error comn que trata por sinnimos los trminos 'lenguaje de
programacin' y 'lenguaje informtico'. Los lenguajes informticos engloban
a los lenguajes de programacin y a otros ms, como por ejemplo HTML
(lenguaje para el marcado de pginas web que no es propiamente un
lenguaje de programacin, sino un conjunto de instrucciones que permiten
disear el contenido de los documentos).
Permite especificar de manera precisa sobre qu datos debe operar una
computadora, cmo deben ser almacenados o transmitidos y qu acciones
debe tomar bajo una variada gama de circunstancias. Todo esto, a travs de
un lenguaje que intenta estar relativamente prximo al lenguaje humano o
natural. Una caracterstica relevante de los lenguajes de programacin es
precisamente que ms de un programador pueda usar un conjunto comn

de instrucciones que sean comprendidas entre ellos para realizar la


construccin de un programa de forma colaborativa.
Historia

Cdigo Fortran en una tarjeta perforada, mostrando el uso especializado de


las columnas 1-5, 6 y 73-80.
Para que la computadora entienda nuestras instrucciones debe usarse un
lenguaje especfico conocido como cdigo mquina, el cual la mquina
comprende fcilmente, pero que lo hace excesivamente complicado para las
personas. De hecho slo consiste en cadenas extensas de nmeros 0 y 1.
Para facilitar el trabajo, los primeros operadores de computadoras
decidieron hacer un traductor para reemplazar los 0 y 1 por palabras o
abstraccin de palabras y letras provenientes del ingls; ste se conoce
como lenguaje ensamblador. Por ejemplo, para sumar se usa la letra A de la
palabra inglesa add (sumar). El lenguaje ensamblador sigue la misma
estructura del lenguaje mquina, pero las letras y palabras son ms fciles
de recordar y entender que los nmeros.
La necesidad de recordar secuencias de programacin para las acciones
usuales llev a denominarlas con nombres fciles de memorizar y asociar:
ADD (sumar), SUB (restar), MUL (multiplicar), CALL (ejecutar subrutina), etc.
A esta secuencia de posiciones se le denomin "instrucciones", y a este
conjunto de instrucciones se le llam lenguaje ensamblador. Posteriormente
aparecieron diferentes lenguajes de programacin, los cuales reciben su
denominacin porque tienen una estructura sintctica similar a los
lenguajes escritos por los humanos, denominados tambin lenguajes de alto
nivel.
La primera programadora de computadora conocida fue Ada Lovelace, hija
de Anabella Milbanke Byron y Lord Byron. Anabella introdujo en las
matemticas a Ada quien, despus de conocer a Charles Babbage, tradujo y
ampli una descripcin de su mquina analtica. Incluso aunque Babbage
nunca complet la construccin de cualquiera de sus mquinas, el trabajo
que Ada realiz con stas le hizo ganarse el ttulo de primera programadora
de computadoras del mundo. El nombre del lenguaje de programacin Ada
fue escogido como homenaje a esta programadora.
A finales de 1953, John Backus someti una propuesta a sus superiores en
IBM para desarrollar una alternativa ms prctica al lenguaje ensamblador
para programar la computadora central IBM 704. El histrico equipo Fortran
de Backus consisti en los programadores Richard Goldberg, Sheldon F.
Best, Harlan Herrick, Peter Sheridan, Roy Nutt, Robert Nelson, Irving Ziller,
Lois Haibt y David Sayre.

El primer manual para el lenguaje Fortran apareci en octubre de 1956, con


el primer compilador Fortran entregado en abril de 1957. Esto era un
compilador optimizado, porque los clientes eran reacios a usar un lenguaje
de alto nivel a menos que su compilador pudiera generar cdigo cuyo
desempeo fuera comparable al de un cdigo hecho a mano en lenguaje
ensamblador.
En 1960, se cre COBOL, uno de los lenguajes usados an en 2010 en
informtica de gestin.
A medida que la complejidad de las tareas que realizaban las computadoras
aumentaba, se hizo necesario disponer de un mtodo ms eficiente para
programarlas. Entonces, se crearon los lenguajes de alto nivel, como lo fue
BASIC en las versiones introducidas en los microordenadores de la dcada
de 1980. Mientras que una tarea tan sencilla como sumar dos nmeros
puede necesitar varias instrucciones en lenguaje ensamblador, en un
lenguaje de alto nivel bastar con solo una.
Elementos
Todos los lenguajes de programacin tienen algunos elementos de
formacin primitivos para la descripcin de los datos y de los procesos o
transformaciones aplicadas a estos datos (tal como la suma de dos nmeros
o la seleccin de un elemento que forma parte de una coleccin). Estos
elementos primitivos son definidos por reglas sintcticas y semnticas que
describen su estructura y significado respectivamente.
Sintaxis

Con frecuencia se resaltan los elementos de la sintaxis con colores


diferentes para facilitar su lectura. Este ejemplo est escrito en Python.
A la forma visible de un lenguaje de programacin se le conoce como
sintaxis. La mayora de los lenguajes de programacin son puramente
textuales, es decir, utilizan secuencias de texto que incluyen palabras,
nmeros y puntuacin, de manera similar a los lenguajes naturales escritos.
Por otra parte, hay algunos lenguajes de programacin que son ms grficos
en su naturaleza, utilizando relaciones visuales entre smbolos para
especificar un programa.
La sintaxis de un lenguaje de programacin describe las combinaciones
posibles de los smbolos que forman un programa sintcticamente correcto.

El significado que se le da a una combinacin de smbolos es manejado por


su semntica (ya sea formal o como parte del cdigo duro de la referencia
de implementacin). Dado que la mayora de los lenguajes son textuales,
este artculo trata de la sintaxis textual.
La sintaxis de los lenguajes de programacin es definida generalmente
utilizando una combinacin de expresiones regulares (para la estructura
lxica) y la Notacin de Backus-Naur (para la estructura gramtica). Este es
un ejemplo de una gramtica simple, tomada de Lisp:
Expresin ::= tomo | lista
tomo
::= nmero | smbolo
Nmero ::= [+-]?['0'-'9']+
Smbolo ::= ['A'-'Z'<nowiki>'</nowiki>a'-'z'].*
Lista
::= '(' expresin* ')'
Con esta gramtica se especifica lo siguiente:

una expresin puede ser un tomo o una lista;

un tomo puede ser un nmero o un smbolo;

un nmero es una secuencia continua de uno o ms dgitos


decimales, precedido opcionalmente por un signo ms o un signo
menos;

un smbolo es una letra seguida de cero o ms caracteres


(excluyendo espacios); y

una lista es un par de parntesis que abren y cierran, con cero o ms


expresiones en medio.

Algunos ejemplos de secuencias bien formadas de acuerdo a esta


gramtica:
'12345', '()', '(a b c232 (1))'
No todos los programas sintcticamente correctos son semnticamente
correctos.
Muchos
programas
sintcticamente
correctos
tienen
inconsistencias con las reglas del lenguaje; y pueden (dependiendo de la
especificacin del lenguaje y la solidez de la implementacin) resultar en un
error de traduccin o ejecucin. En algunos casos, tales programas pueden
exhibir un comportamiento indefinido. Adems, incluso cuando un programa
est bien definido dentro de un lenguaje, todava puede tener un significado
que no es el que la persona que lo escribi estaba tratando de construir.
Usando el lenguaje natural, por ejemplo, puede no ser posible asignarle
significado a una oracin gramticamente vlida o la oracin puede ser
falsa:

"Las ideas verdes y descoloridas duermen furiosamente" es una


oracin bien formada gramticamente pero no tiene significado
comnmente aceptado.

"Juan es un soltero casado" tambin est bien formada


gramticamente pero expresa un significado que no puede ser
verdadero.

El siguiente fragmento en el lenguaje C es sintcticamente correcto, pero


ejecuta una operacin que no est definida semnticamente (dado que p es
un apuntador nulo, las operaciones p->real y p->im no tienen ningn
significado):
complex *p = NULL;
complex abs_p = sqrt (p->real * p->real + p->im * p->im);
Si la declaracin de tipo de la primera lnea fuera omitida, el programa
disparara un error de compilacin, pues la variable "p" no estara definida.
Pero el programa sera sintcticamente correcto todava, dado que las
declaraciones de tipo proveen informacin semntica solamente.
La gramtica necesaria para especificar un lenguaje de programacin puede
ser clasificada por su posicin en la Jerarqua de Chomsky. La sintaxis de la
mayora de los lenguajes de programacin puede ser especificada utilizando
una gramtica Tipo-2, es decir, son gramticas libres de contexto. Algunos
lenguajes, incluyendo a Perl y a Lisp, contienen construcciones que
permiten la ejecucin durante la fase de anlisis. Los lenguajes que
permiten construcciones que permiten al programador alterar el
comportamiento de un analizador hacen del anlisis de la sintaxis un
problema sin decisin nica, y generalmente oscurecen la separacin entre
anlisis y ejecucin. En contraste con el sistema de macros de Lisp y los
bloques BEGIN de Perl, que pueden tener clculos generales, las macros de
C son meros reemplazos de cadenas, y no requieren ejecucin de cdigo.
Semntica esttica
La semntica esttica define las restricciones sobre la estructura de los
textos vlidos que resulta imposible o muy difcil expresar mediante
formalismos sintcticos estndar. Para los lenguajes compilados, la
semntica esttica bsicamente incluye las reglas semnticas que se
pueden verificar en el momento de compilar. Por ejemplo el chequeo de que
cada identificador sea declarado antes de ser usado (en lenguajes que
requieren tales declaraciones) o que las etiquetas en cada brazo de una
estructura case sean distintas. Muchas restricciones importantes de este
tipo, como la validacin de que los identificadores sean usados en los
contextos apropiados (por ejemplo no sumar un entero al nombre de una
funcin), o que las llamadas a subrutinas tengan el nmero y tipo de
parmetros adecuado, puede ser implementadas definindolas como reglas
en una lgica conocida como sistema de tipos. Otras formas de anlisis
estticos, como los anlisis de flujo de datos, tambin pueden ser parte de
la semntica esttica. Nuevos lenguajes de programacin como Java y C#
tienen un anlisis definido de asignaciones, una forma de anlisis de flujo de
datos, como parte de su semntica esttica.
Sistema de tipos
Un sistema de tipos define la manera en la cual un lenguaje de
programacin clasifica los valores y expresiones en tipos, como pueden ser
manipulados dichos tipos y cmo interactan. El objetivo de un sistema de
tipos es verificar y normalmente poner en vigor un cierto nivel de exactitud
en programas escritos en el lenguaje en cuestin, detectando ciertas

operaciones invlidas. Cualquier sistema de tipos decidible tiene sus


ventajas y desventajas: mientras por un lado rechaza muchos programas
incorrectos, tambin prohbe algunos programas correctos aunque poco
comunes. Para poder minimizar esta desventaja, algunos lenguajes incluyen
lagunas de tipos, conversiones explcitas no checadas que pueden ser
usadas por el programador para permitir explcitamente una operacin
normalmente no permitida entre diferentes tipos. En la mayora de los
lenguajes con tipos, el sistema de tipos es usado solamente para checar los
tipos de los programas, pero varios lenguajes, generalmente funcionales,
llevan a cabo lo que se conoce como inferencia de tipos, que le quita al
programador la tarea de especificar los tipos. Al diseo y estudio formal de
los sistemas de tipos se le conoce como teora de tipos.

Lxico y programacin
Programar es ms sencillo que aprender una lengua. La programacin se
rige por unas reglas que se asemejan con ciertas diferencias, a las de una
lengua natural. La particularidad estriba en que las reglas de programacin
tienen menor ambigedad.
En los lenguajes de programacin de alto nivel se distinguen diversos
elementos entre los que se incluyen el lxico propio del lenguaje y las reglas
semnticas y sintcticas.
Programas y algoritmos
Un algoritmo es una secuencia no ambigua, finita y ordenada de
instrucciones que han de seguirse para resolver un problema. Un programa
normalmente implementa (traduce a un lenguaje de programacin
concreto) un algoritmo. Ntese que es la secuencia de instrucciones en s (la
ejecucin) la que debe ser finita, con el nmero de pasos realizados.
Los programas suelen subdividirse en partes menores (mdulos), de modo
que la complejidad algortmica de cada una de las partes sea menor que la
del programa completo, lo cual ayuda al desarrollo del programa.
Segn Niklaus Wirth, un programa est formado por algoritmos y estructura
de datos.
Se han propuesto diversas tcnicas de programacin cuyo objetivo es
mejorar tanto el proceso de creacin de software como su mantenimiento.
Entre ellas, se pueden mencionar las siguientes:

programacin estructurada

programacin modular

programacin orientada a objetos (POO)

programacin declarativa

Compilacin
El programa escrito en un lenguaje de programacin (comprensible por el
ser humano, aunque se suelen corresponder con lenguajes formales
descritos por gramticas independientes del contexto) no puede ejecutarlo
directamente una computadora. La opcin ms comn es compilar el
programa obteniendo un mdulo objeto, aunque tambin puede ejecutarse
a travs de un intrprete informtico.
El cdigo fuente del programa se debe someter a un proceso de traduccin
para convertirse en lenguaje mquina, interpretable por el procesador. A
este proceso se le llama compilacin.
Normalmente la creacin de un programa ejecutable (un tpico.exe para
Microsoft Windows o DOS) conlleva dos pasos. El primer paso se llama
compilacin (propiamente dicho) y traduce el cdigo fuente escrito en un
lenguaje de programacin almacenado en un archivo a cdigo en bajo nivel
(normalmente en cdigo objeto, no directamente a lenguaje mquina). El
segundo paso se llama enlazado en el cual se enlaza el cdigo de bajo nivel
generado de todos los ficheros y subprogramas que se han mandado
compilar y se aade el cdigo de las funciones que hay en las bibliotecas
del compilador para que el ejecutable pueda comunicarse directamente con
el sistema operativo, traduciendo as finalmente el cdigo objeto a cdigo
mquina, y generando un mdulo ejecutable.
Estos dos pasos se pueden hacer por separado, almacenando el resultado
de la fase de compilacin en archivos objetos (un tpico.obj para Microsoft
Windows, DOS o para Unix); para enlazarlos en fases posteriores, o crear
directamente el ejecutable; con lo que la fase de compilacin se almacena
slo temporalmente. Un programa podra tener partes escritas en varios
lenguajes (por ejemplo C, C++ y Asm), que se podran compilar de forma
independiente y luego enlazar juntas para formar un nico mdulo
ejecutable.
Programacin e ingeniera del software
Existe una tendencia a identificar el proceso de creacin de un programa
informtico con la programacin, que es cierta cuando se trata de
programas pequeos para uso personal, y que dista de la realidad cuando
se trata de grandes proyectos.
El proceso de creacin de software, desde el punto de vista de la ingeniera,
incluye los siguientes pasos:
1. Reconocer la necesidad de un programa para solucionar un problema
o identificar la posibilidad de automatizacin de una tarea.
2. Recoger los requisitos del programa. Debe quedar claro qu es lo que
debe hacer el programa y para qu se necesita.
3. Realizar el anlisis de los requisitos del programa. Debe quedar claro
cmo debe realizar el programa las cosas que debe hacer. Las

pruebas que comprueben la validez del programa se pueden


especificar en esta fase.
4. Disear la arquitectura del programa. Se debe descomponer el
programa en partes de complejidad abordable.
5. Implementar el programa. Consiste en realizar un diseo detallado,
especificando completamente todo el funcionamiento del programa,
tras lo cual la codificacin debera resultar inmediata.
6. Implantar (instalar) el programa. Consiste en poner el programa en
funcionamiento junto con los componentes que pueda necesitar
(bases de datos, redes de comunicaciones, etc.).
La ingeniera del software se centra en los pasos de planificacin y diseo
del programa, mientras que antiguamente (programacin artesanal) la
realizacin de un programa consista nicamente en escribir el cdigo.
Lenguajes con tipo versus lenguajes sin tipo
Se dice que un lenguaje tiene tipos si la especificacin de cada operacin
define tipos de datos para los cuales la operacin es aplicable, con la
implicacin de que no es aplicable a otros tipos. Por ejemplo, "this text
between the quotes" es una cadena. En la mayora de los lenguajes de
programacin, dividir un nmero por una cadena no tiene ningn
significado. Por tanto, la mayora de los lenguajes de programacin
modernos rechazaran cualquier intento de ejecutar dicha operacin por
parte de algn programa. En algunos lenguajes, estas operaciones sin
significado son detectadas cuando el programa es compilado (validacin de
tipos "esttica") y son rechazadas por el compilador, mientras en otros son
detectadas cuando el programa es ejecutado (validacin de tipos
"dinmica") y se genera una excepcin en tiempo de ejecucin.
Un caso especial de lenguajes de tipo son los lenguajes de tipo sencillo.
Estos son con frecuencia lenguajes de marcado o de scripts, como REXX o
SGML, y solamente cuentan con un tipo de datos; comnmente cadenas de
caracteres que luego son usadas tanto para datos numricos como
simblicos.
En contraste, un lenguaje sin tipos, como la mayora de los lenguajes
ensambladores, permiten que cualquier operacin se aplique a cualquier
dato, que por lo general se consideran secuencias de bits de varias
longitudes. Lenguajes de alto nivel sin datos incluyen BCPL y algunas
variedades de Forth.
En la prctica, aunque pocos lenguajes son considerados con tipo desde el
punto de vista de la teora de tipos (es decir, que verifican o rechazan todas
las operaciones), la mayora de los lenguajes modernos ofrecen algn grado
de manejo de tipos. Si bien muchos lenguajes de produccin proveen
medios para brincarse o subvertir el sistema de tipos.
Tipos estticos versus tipos dinmicos
En lenguajes con tipos estticos se determina el tipo de todas las
expresiones antes de la ejecucin del programa (tpicamente al compilar).

Por ejemplo, 1 y (2+2) son expresiones enteras; no pueden ser pasadas a


una funcin que espera una cadena, ni pueden guardarse en una variable
que est definida como fecha.
Los lenguajes con tipos estticos pueden manejar tipos explcitos o tipos
inferidos. En el primer caso, el programador debe escribir los tipos en
determinadas posiciones textuales (por ejemplo al declarar variables). En el
segundo caso, el compilador infiere los tipos de las expresiones y las
declaraciones de acuerdo al contexto. La mayora de los lenguajes
populares con tipos estticos, tales como C++, C# y Java, manejan tipos
explcitos. Inferencia total de los tipos suele asociarse con lenguajes menos
populares, tales como Haskell y ML. Sin embargo, muchos lenguajes de tipos
explcitos permiten inferencias parciales de tipo; tanto Java y C#, por
ejemplo, infieren tipos en un nmero limitado de casos.
Los lenguajes con tipos dinmicos determinan la validez de los tipos
involucrados en las operaciones durante la ejecucin del programa. En otras
palabras, los tipos estn asociados con valores en ejecucin en lugar de
expresiones textuales. Como en el caso de lenguajes con tipos inferidos, los
lenguajes con tipos dinmicos no requieren que el programador escriba los
tipos de las expresiones. Entre otras cosas, esto permite que una misma
variable se pueda asociar con valores de tipos distintos en diferentes
momentos de la ejecucin de un programa. Sin embargo, los errores de tipo
no pueden ser detectados automticamente hasta que se ejecuta el cdigo,
dificultando la depuracin de los programas. Ruby, Lisp, JavaScript y Python
son lenguajes con tipos dinmicos.
Tipos dbiles y tipos fuertes
Los tipos dbiles permiten que un valor de un tipo pueda ser tratado como
de otro tipo, por ejemplo una cadena puede ser operada como un nmero.
Esto puede ser til a veces, pero tambin puede permitir ciertos tipos de
fallas que no pueden ser detectadas durante la compilacin o a veces ni
siquiera durante la ejecucin.
Los tipos fuertes evitan que paso lo anterior. Cualquier intento de llevar a
cabo una operacin sobre el tipo equivocado dispara un error. A los
lenguajes con tipos fuertes se les suele llamar de tipos seguros.
Lenguajes con tipos dbiles como Perl y JavaScript permiten un gran nmero
de conversiones de tipo implcitas. Por ejemplo en JavaScript la expresin 2
* x convierte implcitamente x a un nmero, y esta conversin es exitosa
inclusive cuando x es null, undefined, un Array o una cadena de letras. Estas
conversiones implcitas son tles con frecuencia, pero tambin pueden
ocultar errores de programacin.
Las caractersticas de estticos y fuertes son ahora generalmente
consideradas conceptos ortogonales, pero su trato en diferentes textos
varia. Algunos utilizan el trmino de tipos fuertes para referirse a tipos
fuertemente estticos o, para aumentar la confusin, simplemente como
equivalencia de tipos estticos. De tal manera que C ha sido llamado tanto
lenguaje de tipos fuertes como lenguaje de tipos estticos dbiles.

Implementacin

Cdigo fuente de un programa escrito en el lenguaje de programacin Java.


La implementacin de un lenguaje es la que provee una manera de que se
ejecute un programa para una determinada combinacin de software y
hardware. Existen bsicamente dos maneras de implementar un lenguaje:
compilacin e interpretacin.

Compilacin: es el proceso que traduce un programa escrito en un


lenguaje de programacin a otro lenguaje de programacin,
generando un programa equivalente que la mquina ser capaz
interpretar. Los programas traductores que pueden realizar esta
operacin se llaman compiladores. stos, como los programas
ensambladores avanzados, pueden generar muchas lneas de cdigo
de mquina por cada proposicin del programa fuente.

Interpretacin: es una asignacin de significados a las frmulas bien


formadas de un lenguaje formal. Como los lenguajes formales pueden
definirse en trminos puramente sintcticos, sus frmulas bien
formadas pueden no ser ms que cadenas de smbolos sin ningn
significado. Una interpretacin otorga significado a esas frmulas.

Se puede tambin utilizar una alternativa para traducir lenguajes de alto


nivel. En lugar de traducir el programa fuente y grabar en forma
permanente el cdigo objeto que se produce durante la compilacin para
utilizarlo en una ejecucin futura, el programador slo carga el programa
fuente en la computadora junto con los datos que se van a procesar. A
continuacin, un programa intrprete, almacenado en el sistema operativo
del disco, o incluido de manera permanente dentro de la mquina, convierte
cada proposicin del programa fuente en lenguaje de mquina conforme
vaya siendo necesario durante el procesamiento de los datos. El cdigo
objeto no se graba para utilizarlo posteriormente.
La siguiente vez que se utilice una instruccin, se la deber interpretar otra
vez y traducir a lenguaje mquina. Por ejemplo, durante el procesamiento
repetitivo de los pasos de un ciclo o bucle, cada instruccin del bucle tendr
que volver a ser interpretada en cada ejecucin repetida del ciclo, lo cual
hace que el programa sea ms lento en tiempo de ejecucin (porque se va
revisando el cdigo en tiempo de ejecucin) pero ms rpido en tiempo de
diseo (porque no se tiene que estar compilando a cada momento el cdigo

completo). El intrprete elimina la necesidad de realizar una compilacin


despus de cada modificacin del programa cuando se quiere agregar
funciones o corregir errores; pero es obvio que un programa objeto
compilado con antelacin deber ejecutarse con mucha mayor rapidez que
uno que se debe interpretar a cada paso durante una ejecucin del cdigo.
La mayora de lenguajes de alto nivel permiten la programacin
multipropsito, sin embargo, muchos de ellos fueron diseados para
permitir programacin dedicada, como lo fue el Pascal con las matemticas
en su comienzo. Tambin se han implementado lenguajes educativos
infantiles como Logo que mediante una serie de simples instrucciones. En el
mbito de infraestructura de internet, cabe destacar a Perl con un poderoso
sistema de procesamiento de texto y una enorme coleccin de mdulos.
Paradigmas
Los programas se pueden clasificar por el paradigma del lenguaje que se
use para producirlos. Los principales paradigmas son: imperativos,
declarativos y orientacin a objetos.
Los programas que usan un lenguaje imperativo especifican un algoritmo,
usan declaraciones, expresiones y sentencias. [3] Una declaracin asocia un
nombre de variable con un tipo de dato, por ejemplo: var x: integer;. Una
expresin contiene un valor, por ejemplo: 2 + 2 contiene el valor 4.
Finalmente, una sentencia debe asignar una expresin a una variable o usar
el valor de una variable para alterar el flujo de un programa, por ejemplo:
x := 2 + 2; if x == 4 then haz_algo();. Una crtica comn en los lenguajes
imperativos es el efecto de las sentencias de asignacin sobre una clase de
variables llamadas "no locales".[4]
Los programas que usan un lenguaje declarativo especifican las propiedades
que la salida debe conocer y no especifica cualquier detalle de
implementacin. Dos amplias categoras de lenguajes declarativos son los
lenguajes funcionales y los lenguajes lgicos. Los lenguajes funcionales no
permiten asignaciones de variables no locales, as, se hacen ms fcil, por
ejemplo, programas como funciones matemticas. [4] El principio detrs de
los lenguajes lgicos es definir el problema que se quiere resolver (el
objetivo) y dejar los detalles de la solucin al sistema. [5] El objetivo es
definido dando una lista de sub-objetivos. Cada sub-objetivo tambin se
define dando una lista de sus sub-objetivos, etc. Si al tratar de buscar una
solucin, una ruta de sub-objetivos falla, entonces tal sub-objetivo se
descarta y sistemticamente se prueba otra ruta.
La forma en la cual se programa puede ser por medio de texto o de forma
visual. En la programacin visual los elementos son manipulados
grficamente en vez de especificarse por medio de texto.

CLASIFICACION DE LOS LENGUAJES DE PROGRAMACIN


LENGUAJE MQUINA:

El lenguaje mquina es el nico que entiende directamente la computadora,


ya que est escrito en lenguajes directamente inteligibles por la mquina
(computadora), utiliza el alfabeto binario, que consta de los dos nicos
smbolos 0 y 1, denominados bits (abreviatura inglesa de dgitos binarios).
Sus instrucciones son cadenas binarias (cadenas o series de caracteres de
dgitos 0 y 1) que especifican una operacin y, las posiciones (direccin) de
memoria implicadas en la operacin se denominan instrucciones de
mquina o cdigo maquina. Fue el primer lenguaje utilizado en la
programacin de computadoras, pero dejo de utilizarse por su dificultad y
complicacin, siendo sustituido por otros lenguajes ms fciles de aprender
y utilizar, que adems reducen la posibilidad de cometer errores. El lenguaje
mquina es el conocido cdigo binario. Generalmente, en la codificacin de
los programas se empleaba el sistema hexadecimal para simplificar el
trabajo de escritura. Todas las instrucciones preparadas en cualquier
lenguaje mquina tienen por lo menos dos partes. La primera es el comando
u operacin, que dice a las computadoras cual es la funcin que va a
realizar. Todas las computadoras tienen un cdigo de operacin para cada
una de las funciones. La segunda parte de la instruccin es el operando, que
indica a la computadora donde hallar o almacenar los datos y otras
instrucciones que se van a manipular, el nmero de operndoos de una
instruccin varia en distintas computadoras.
Ventajas del lenguaje mquina: posibilidad de cargar (transferir un
programa a la memoria) sin necesidad de traduccin posterior, lo que
supone una velocidad de ejecucin superior a cualquier otro lenguaje de
programacin.
Desventajas del lenguaje mquina: dificultad y lentitud en la codificacin.
Poca fiabilidad. Gran dificultad para verificar y poner a punto los programas.
Los programas solo son ejecutables en el mismo procesador (CPU). En la
actualidad, las desventajas superan a las ventajas, lo que hace
prcticamente no recomendables a los lenguajes mquina.
EJEMPLOS
Es la lengua nativa de la CPU.
Cada diseo de CPU tiene su propio lenguaje de mquina. Este es el
juego de instrucciones que usa el chip para s mismo. Est hecho de ceros y
unos (nmeros binarios) y resulta muy difcil para el trabajo de la gente.
10
11
12
13
14
15
16
17
18
19

23
FF
12
10
50
23
30
40
C0
00

El lenguaje de mquina parece compuesto de nmeros


solamente. En el segmento de un programa que vemos a la
izquierda, la primer columna le dice a la computadora dnde
llenar su memoria y en la segunda columna sobre una base
hexadecimal (base 16) figuran los valores que debe poner en
dichas locaciones de las memorias.
Para ms informacin sobre nmeros hexadecimal, vea
Aritmtica de Base.

Otro ejemplo de lenguaje de mquina es el siguiente:


El segmento de cdigo en lenguaje Java es:
int counter = 0;
counter = counter + 1;
podra ser trasladado en lenguaje de mquina como
000101000100010001000100001000101010111110
000001110101000111110000100010000010101010

LENGUAJES DE BAJO NIVEL:


Son ms fciles de utilizar que los lenguajes mquina, pero al igual que
ellos, dependen de la mquina en particular. El lenguaje de bajo nivel por
excelencia es el ensamblador. El lenguaje ensamblador es el primer intento
de sustituir el lenguaje maquina por otro ms similar a los utilizados por las
personas. Este intenta desflexibilizar la representacin de los diferentes
campos. Esa flexibilidad se consigue no escribiendo los campos en binario y
aproximando la escritura al lenguaje. A principios de la dcada de los 50 y
con el fin de facilitar la labor de los programadores, se desarrollaron cdigos
mnemotcnicos para las operaciones y direcciones simblicas. Los cdigos
mnemotcnicas son los smbolos alfabticos del lenguaje maquina. La
computadora sigue utilizando el lenguaje mquina para procesar los datos,
pero los programas ensambladores traducen antes los smbolos de cdigo
de operacin especificados a sus equivalentes en el lenguaje maquina. En la
actualidad los programadores no asignan nmeros de direccin reales a los
datos simblicos, simplemente especifican donde quieren que se coloque la
primera localidad del programa y el programa ensamblador se encarga de lo
dems, asigna localidades tanto para las instrucciones como los datos.
Estos programas de ensamble o ensambladores tambin permiten a la
computadora convertir las instrucciones en lenguaje ensamblador del
programador en su propio cdigo maquina. Un programa de instrucciones
escrito en lenguaje ensamblador por un programador se llama programa
fuente. Despus de que el ensamblador convierte el programa fuente en
cdigo maquina a este se le denomina programa objeto. Para los
programadores es ms fcil escribir instrucciones en un lenguaje
ensamblador que en cdigo de lenguaje maquina pero es posible que se
requieran dos corridas de computadora antes de que se puedan utilizar las
instrucciones del programa fuente para producir las salidas deseadas.
El lenguaje de bajo nivel es el lenguaje de programacin que el ordenador
puede entender a la hora de ejecutar programas, lo que aumenta su
velocidad de ejecucin, pues no necesita un intrprete que traduzca cada
lnea de instrucciones.
Visto a muy bajo nivel, los microprocesadores procesan exclusivamente
seales electrnicas binarias. Dar una instruccin a un microprocesador
supone en realidad enviar series de unos y ceros espaciadas en el tiempo de
una forma determinada. Esta secuencia de seales se denomina cdigo
mquina. El cdigo representa normalmente datos y nmeros e
instrucciones para manipularlos. Un modo ms fcil de comprender el

cdigo mquina es dando a cada instruccin un mnemnico, como por


ejemplo STORE, ADD o JUMP. Esta abstraccin da como resultado el
ensamblador, un lenguaje de muy bajo nivel que es especfico de cada
microprocesador.
Los lenguajes de bajo nivel permiten crear programas muy rpidos, pero
que son, a menudo, difciles de aprender. Ms importante es el hecho de
que los programas escritos en un bajo nivel sean altamente especficos de
cada procesador. Si se lleva el programa a otra mquina se debe reescribir
el programa desde el principio.
Ventajas del lenguaje ensamblador frente al lenguaje mquina: mayor
facilidad de codificacin y, en general, su velocidad de clculo, ahorran
tiempo y requieren menos atencin a detalles. Se incurren en menos errores
y los que se cometen son ms fciles de localizar. Tanto el lenguaje maquina
como el ensamblador gozan de la ventaja de mnima ocupacin de memoria
y mnimo tiempo de ejecucin en comparacin con el resultado de la
compilacin del programa equivalente escrito en otros lenguajes. Los
programas en lenguaje ensamblador son ms fciles de modificar que los
programas en lenguaje mquina.
Desventajas del lenguaje ensamblador: dependencia total de la maquina lo
que impide la transportabilidad de los programas (posibilidad de ejecutar un
programa en diferentes mquinas). El lenguaje ensamblador del PC es
distinto del lenguaje ensamblador del Apple Machintosh. La formacin de los
programadores es ms compleja que la correspondiente a los
programadores de alto nivel, ya que exige no solo las tcnicas de
programacin, sino tambin el conocimiento del interior de la maquina El
programador ha de conocer perfectamente el hardware del equipo, ya que
maneja directamente las posiciones de memoria, registros del procesador y
dems elementos fsicos. Todas las instrucciones son elementales, es decir,
en el programa se deben describir con el mximo detalle todas las
operaciones que se han de efectuar en la mquina para la realizacin de
cualquier proceso.
Los lenguajes ensamblador tienen sus aplicaciones muy reducidas, se
centran bsicamente en aplicaciones de tiempo real, control de procesos y
de dispositivos electrnicos.
Vistos a muy bajo nivel, los microprocesadores procesan exclusivamente
seales electrnicas binarias. Dar una instruccin a un microprocesador
supone en realidad enviar series de unos y ceros espaciadas en el tiempo de
una forma determinada. Esta secuencia de seales se denomina cdigo
mquina. El cdigo representa normalmente datos y nmeros e
instrucciones para manipularlos. Un modo ms fcil de comprender el
cdigo mquina es dando a cada instruccin un mnemnico, como por
ejemplo STORE, ADD o JUMP. Esta abstraccin da como resultado el
ensamblador, un lenguaje de muy bajo nivel que es especfico de cada
microprocesador.
Los lenguajes de bajo nivel permiten crear programas muy rpidos, pero
que son a menudo difciles de aprender. Ms importante es el hecho de que
los programas escritos en un bajo nivel sean altamente especficos de cada

procesador. Si se lleva el programa a otra mquina se debe reescribir el


programa desde el principio.
Lenguaje ensamblador (le):
Este intenta deflexibilizar la representacin de los diferentes campos, esa
flexibilidad se consigue no escribiendo los campos en binario y aproximando
la escritura al lenguaje

LENGUAJES DE ALTO NIVEL:


Estos lenguajes son los ms utilizados por los programadores. Estn
diseados para que las personas escriban y entiendan los programas de un
modo mucho ms fcil que los lenguajes mquina y ensamblador. Un
programa escrito en lenguaje de alto nivel es independiente de la mquina
(las instrucciones no dependen del diseo del hardware o de una
computadora en particular), por lo que estos programas son portables o
transportables. Los programas escritos en lenguaje de alto nivel pueden ser
ejecutados con poca o ninguna modificacin en diferentes tipos de
computadoras. Son lenguajes de programacin en los que las instrucciones
enviadas para que el ordenador ejecute ciertas rdenes son similares al
lenguaje humano. Dado que el ordenador no es capaz de reconocer estas
rdenes, es necesario el uso de un intrprete que traduzca el lenguaje de
alto nivel a un lenguaje de bajo nivel que el sistema pueda entender.
Por lo general se piensa que los ordenadores son mquinas que realizan
tareas de clculos o procesamiento de texto. La descripcin anterior es slo
una forma muy esquemtica de ver una computadora. Hay un alto nivel de
abstraccin entre lo que se pide a la computadora y lo que realmente
comprende. Existe tambin una relacin compleja entre los lenguajes de
alto nivel y el cdigo mquina.
Los lenguajes de alto nivel son normalmente fciles de aprender porque
estn formados por elementos de lenguajes naturales, como el ingls. En
BASIC, el lenguaje de alto nivel ms conocido, los comandos como IF
CONTADOR=10 THEN STOP pueden utilizarse para pedir a la computadora
que pare si CONTADOR es igual a diez. Por desgracia para muchas personas
esta forma de trabajar es un poco frustrante, dado que a pesar de que las
computadoras parecen comprender un lenguaje natural, lo hacen en
realidad de una forma rgida y sistemtica.
Los lenguajes de alto nivel, tambin denominados lenguajes evolucionados,
surgen con posterioridad a los anteriores (lenguaje mquina, lenguajes de
bajo nivel o ensamblador) con los siguientes objetivos, entre otros:
Lograr independencia de la maquina, pudiendo utilizar un mismo programa
en diferentes equipos con la nica condicin de disponer de un programa
traductor o compilador, que es suministrado por el fabricante, para obtener
el programa ejecutable en lenguaje binario de la maquina que se trate.
Adems, no se necesita conocer el hardware especifico de dicha maquina.
Aproximarse al lenguaje natural, para que el programa se pueda escribir y

leer de una forma ms sencilla, eliminando muchas de las posibilidades de


cometer errores que se daban en el lenguaje maquina, ya que se utilizan
palabras (en ingls) en lugar de cadenas de smbolos sin ningn significado
aparente.
Incluir rutinas de uso frecuente, como las de entrada / salida, funciones
matemticas, manejo de tablas, etc., que figuran en una especie de librera
del lenguaje, de manera que se puedan utilizar siempre que se quiera sin
necesidad de programarlas cada vez.
Ventajas de los lenguajes de alto nivel: el tiempo de formacin de los
programadores es relativamente corto comparado con otros lenguajes. La
escritura de programas se basa en reglas sintcticas similares a los
lenguajes humanos, nombres de las instrucciones tales como READ, WRITE,
PRINT, OPEN, etc. Las modificaciones y puestas a punto de los programas
son ms fciles. Reduccin del costo de los programas. Transportabilidad.
Permiten tener una mejor documentacin. Son ms fciles de mantener.
Por lo general se piensa que los ordenadores son mquinas que realizan
tareas de clculos o procesamiento de textos. La descripcin anterior es
slo una forma muy esquemtica de ver una computadora. Hay un alto nivel
de abstraccin entre lo que se pide a la computadora y lo que realmente
comprende. Existe tambin una relacin compleja entre los lenguajes de
alto nivel y el cdigo mquina.
Los lenguajes de alto nivel son normalmente fciles de aprender porque
estn formados por elementos de lenguajes naturales, como el ingls. En
BASIC, el lenguaje de alto nivel ms conocido, los comandos como "IF
CONTADOR = 10 THEN STOP" pueden utilizarse para pedir a la computadora
que pare si CONTADOR es igual a 10. Por desgracia para muchas personas
esta forma de trabajar es un poco frustrante, dado que a pesar de que las
computadoras parecen comprender un lenguaje natural, lo hacen en
realidad de una forma rgida y sistemtica.
Desventajas de los lenguajes de alto nivel: incremento del tiempo de puesta
a punto al necesitarse diferentes traducciones del programa fuente para
conseguir el programa definitivo. No se aprovechan los recursos internos de
la maquina que se explotan mucho mejor en lenguajes mquina y
ensambladores. Aumento de la ocupacin de memoria. El tiempo de
ejecucin de los programas es mucho mayor.
Se puede decir que el principal problema que presentan los lenguajes de
alto nivel es la gran cantidad de ellos que existen actualmente en uso,
adems de las diferentes versiones o dialectos que se han desarrollado de
algunos de ellos. Es difcil establecer una clasificacin general de los
mismos, ya que en cualquiera que se realice habr lenguajes que
pertenezcan a ms de uno de los grupos establecidos.
Una clasificacin muy extendida, atendiendo a la forma de trabajar de los
programas y a la filosofa con que fueron concebidos, es la siguiente:

Lenguajes imperativos. Utilizan instrucciones como unidad de


trabajo de los programas (Cobol, Pascal, C, Ada).

Lenguajes declarativos. Los programas se construyen mediante


descripciones de funciones o expresiones lgicas (Lisp, Prolog).

Lenguajes orientados a objetos. El diseo de los programas se


basa ms en los datos y su estructura. La unidad de proceso es el
objeto y en el se incluyen los datos (variables) y las operaciones que
actan sobre ellos (Smalltalk, C++).

Lenguajes orientados al problema. Diseados para problemas


especficos, principalmente de gestin, suelen ser generadores de
aplicaciones.(Fortran)

Lenguajes naturales. Estn desarrollndose nuevos lenguajes con


el principal objetivo de aproximar el diseo y construccin de
programas al lenguaje de las personas.

Otra clasificacin que se puede hacer es la de atendiendo al desarrollo de


los lenguajes desde la aparicin de las computadoras, que sigue un cierto
paralelismo con las generaciones establecidas en la evolucin de las
mismas:

Primera generacin. Lenguajes maquina y ensambladores.

Segunda generacin. Primeros lenguajes de alto nivel imperativo


(FROTRAN, COBOL).

Tercera generacin. Lenguajes de alto nivel imperativo. Son los


mas utilizados y siguen vigentes en la actualidad (ALGOL 8, PL/I,
PASCAL, MODULA).

Cuarta generacin. Orientados bsicamente a las aplicaciones de


gestin y al manejo de bases de datos (NATURAL, SQL).

Quinta generacin. Orientados a la inteligencia artificial y al


procesamiento de los lenguajes naturales (LISP, PROLOG).

ALGORITMO
Qu es un algoritmo?:
Definicin: Un algoritmo es un conjunto finito de pasos especficos y
organizados para realizar una labor.
Un algoritmo es una secuencia de pasos lgicos necesarios para llevar a
cabo una tarea especfica, como la solucin de un problema. Los algoritmos
son independientes tanto del lenguaje de programacin en que se expresan
como de la computadora que los ejecuta. En cada problema el algoritmo se
puede expresar en un lenguaje diferente de programacin y ejecutarse en
una computadora distinta.
Caractersticas de los algoritmos

Las caractersticas fundamentales que debe cumplir todo algoritmo son:


Un algoritmo debe ser preciso e indicar el orden de realizacin de cada
paso.
Un algoritmo debe estar definido. Si se sigue un algoritmo dos veces, se
debe obtener el mismo resultado cada vez.
Un algoritmo debe ser finito. Si se sigue un algoritmo, se debe terminar en
algn momento; o sea debe de tener un nmero finito de pasos.
LOS ALGORITMOS SE CLASIFICAN EN:
1.-Ordenamiento Burbuja.
Este es el algoritmo ms sencillo probablemente. Ideal para empezar.
Consiste en ciclar repetidamente a travs de la lista, comparando elementos
adyacentes de dos en dos. Si un elemento es mayor que el que est en la
siguiente posicin se intercambian.
Ventajas:
Fcil implementacin.
No requiere memoria adicional.
Desventajas:
Muy lento.
Realiza numerosas comparaciones.
Realiza numerosos intercambios.
2.-Ordenamiento por Seleccin
Este algoritmo tambin es sencillo. Consiste en lo siguiente:

Buscas el elemento ms pequeo de la lista.


Lo intercambias con el elemento ubicado en la primera posicin de la lista.
Buscas el segundo elemento ms pequeo de la lista.
Lo intercambias con el elemento que ocupa la segunda posicin en la lista.
Repites este proceso hasta que hayas ordenado toda la lista.

Ventajas:
Fcil implementacin.
No requiere memoria adicional.
Realiza pocos intercambios.
Rendimiento constante: poca diferencia entre el peor y el mejor caso.
Desventajas:
Lento.
Realiza numerosas comparaciones.
3.-Ordenamiento por Insercin

En este tipo de algoritmo los elementos que van a ser ordenados son
considerados uno a la vez. Cada elemento es INSERTADO en la posicin
apropiada con respecto al resto de los elementos ya ordenados.
Ventajas:
Fcil implementacin.
Requerimientos mnimos de memoria.
Desventajas:
Lento.
Realiza numerosas comparaciones.
Este tambin es un algoritmo lento, pero puede ser de utilidad para listas
que estn ordenadas o semiordenadas, porque en ese caso realiza muy
pocos desplazamientos.
4.-Ordenamiento Rpido (Quicksort)
Esta es probablemente la tcnica ms rpida conocida. Fue desarrollada por
C.A.R. Hoare en 1960. El algoritmo original es recursivo, pero se utilizan
versiones iterativas para mejorar su rendimiento (los algoritmos recursivos
son en general ms lentos que los iterativos, y consumen ms recursos). El
algoritmo fundamental es el siguiente:
Eliges un elemento de la lista.
Buscas la posicin que le corresponde en la lista ordenada.
Acomodas los elementos de la lista a cada lado del elemento de divisin,
de manera que a un lado queden todos los menores que l y al otro los
mayores . En este momento el elemento de divisin separa la lista en dos
sublistas.
Realizas esto de forma recursiva para cada sublista mientras stas tengan
un largo mayor que 1. Una vez terminado este proceso todos los elementos
estarn ordenados.
Una idea preliminar para ubicar el elemento de divisin en su posicin final
sera contar la cantidad de elementos menores y colocarlo un lugar ms
arriba. Pero luego habra que mover todos estos elementos a la izquierda del
elemento, para que se cumpla la condicin y pueda aplicarse la
recursividad. Reflexionando un poco ms se obtiene un procedimiento
mucho ms efectivo. Se utilizan dos ndices: i, al que llamaremos contador
por la izquierda, y j, al que llamaremos contador por la derecha. El algoritmo
es ste:
Recorres la lista simultneamente con i y j: por la izquierda con i (desde el
primer elemento), y por la derecha con j (desde el ltimo elemento).
Cuando lista sea mayor que el elemento de divisin y lista[j] sea menor los
intercambias.
Repites esto hasta que se crucen los ndices.
El punto en que se cruzan los ndices es la posicin adecuada para colocar
el elemento de divisin, porque sabemos que a un lado los elementos son
todos menores y al otro son todos mayores (o habran sido intercambiados).
Al finalizar este procedimiento el elemento de divisin queda en una
posicin en que todos los elementos a su izquierda son menores que l, y
los que estn a su derecha son mayores.
Ventajas:
Muy rpido

No requiere memoria adicional.


Desventajas:
Implementacin un poco ms complicada.
Recursividad (utiliza muchos recursos).
Mucha diferencia entre el peor y el mejor caso.

Los diagramas de flujo sirven para representar algoritmos de manera


grfica.

PSEUDOCODOGICO
El pseudocdigo (falso lenguaje) es comnmente utilizado por los
programadores para omitir secciones de cdigo o para dar una explicacin
del paradigma que tom el mismo programador para hacer sus cdigos esto
quiere decir que el pseudocdigo no es programable sino facilita la
programacin.
El principal objetivo del pseudocdigo es el de representar la solucin a un
algoritmo de la forma ms detallada posible, y a su vez lo ms parecida
posible al lenguaje que posteriormente se utilizara para la codificacin del
mismo.
Caractersticas y partes
Las principales caractersticas de este lenguaje son:
1. Se puede ejecutar en un ordenador
2. Es una forma de representacin sencilla de utilizar y de manipular.

3. Facilita el paso del programa al lenguaje de programacin.


4. Es independiente del lenguaje de programacin que se vaya a utilizar.
5. Es un mtodo que facilita la programacin y solucin al algoritmo del
programa.
Todo documento en pseudocdigo debe permitir la descripcin de:
1. Instrucciones primitivas.
2. Instrucciones de proceso.
3. Instrucciones de control.
4. Instrucciones compuestas.
5. Instrucciones de descripcin.
Estructura a seguir en su realizacin:
1. Cabecera.
1. Programa.
2. Modulo.
3. Tipos de datos.
4. Constantes.
5. Variables.
2. Cuerpo.
1. Inicio.
2. Instrucciones.
3. Fin.
Definicin de datos del pseudocdigo
La definicin de datos se da por supuesta, sobre todo en las variables
sencillas, si se emplea formaciones: pilas, colas, vectores o registros, se
pueden definir en la cabecera del algoritmo, y naturalmente cuando
empleemos el pseudocdigo para definir estructuras de datos, esta parte la
desarrollaremos adecuadamente.
Funciones y operaciones

Cada autor usa su propio pseudocdigo con sus respectivas convenciones.


Por ejemplo, la instruccin "reemplace el valor de la variable x por el valor
de la variable y" puede ser representado como:

asigne a

el valor de

Las operaciones aritmticas


matemticas.

se

representan

de

la forma usual

en

Ejemplos de Pseudocdigo

Ejemplo: Realizar el pseudocdigo de un programa que


permita calcular el rea de un rectngulo. Se debe
introducir la base y la altura para poder realizar el
clculo..
Programa; rea
Entorno: BASE, ALTURA, AREA son nmero enteros
Algoritmo:
escribir Introduzca la base y la altura
leer BASE, ALTURA
calcular AREA = BASE * ALTURA
escribir El rea del rectngulo es AREA
Fin programa
Ejemplo: Realizar el pseudocdigo que permita al usuario
introducir por teclado dos notas, calculando la suma y
el producto de las notas.
Programa: SumaProducto
Entorno: NOTA1,NOTA2,SUMA,PRODUCTO son nmeros enteros
Algoritmo:
escribir Introduzca las notas
leer NOTA1,NOTA2
calcular SUMA = NOTA1 + NOTA2
calcular PRODUCTO = NOTA1 * NOTA2
escribir La suma de las dos notas es: SUMA
escribir El producto de las dos notas es :PRODUCTO
Finprograma

Ejemplo: Realizar el pseudocdigo de un programa que


permita saber si un nmero es mayor, menor o igual a
cero.
Programa: ComparaNmeros
Entorno: NUMERO es un nmero entero
Algoritmo:
Escribir Introduzca un nmero
leer NUMERO
SI NUMERO>0 ENTONCES
escribir El nmero introducido es positivo
SI NO
SI NUMERO<0 ENTONCES
escribir El nmero introducido es negativo
SI NO
escribir El nmero es cero
FINSI
FINSI
Finprograma

DIAGRAMA DE FLUJO DE DATOS


DIAGRAMA DE FLUJO
Es un grafico lgico del plan de trabajo que se ejecutara para la solucin de
un determinado problema. A travs de l, se planifica la solucin del
problema independiente del lenguaje de computacin a usar. De esta
manera se separa loas instruccin es un lenguaje determinado con todas las
reglas.
Las capacidades humanas necesarias para elaborar un diagrama de flujo
correcto son: Lgico, Prcticas, y Atencin.
El empleo de la maquina en las funciones del procediendo de datos han
hecho necesario un flujo ordenado de la informacin. La secuencia en que
debern ejecutarse las operaciones tendr que definirse claramente, y
cuando se combine con los datos a los que debe aplicarse, esa secuencia
creara el flujo de informacin.
No puede hacerse mucho hincapi en documentacin, sea el registro de
Informacin .Sin Instrucciones escritas y sin representacin grafica del flujo
de trabajo seria muy difcil de llevar una tarea de procediendo de datos en
forma apropiada. Hay varios mtodos mas eficientes organizados y
normalizados, es el de los diagramas de Flujo que el Futuro programador
comprenda la necesidad de los diagrama de flujo.
OBJETIVOS DE UN DIAGRAMA DE FLUJO
a. Estructura la solucin del problema independiente del lenguaje a
utilizar.

b. Separar la solucin lgica de programacin de la parte de reglas y


sintaxis de codificacin con esta divisin del trabajo se obtiene mayor
eficiencia.
c. Dar una visin completa del problema al programador ya que pierde
en un programa ya codificado.
d. Permitir una compresin ms rpida del programa a otros
programadores.
TIPOS DE DIAGRAMA DE FLUJOS
Diagrama de flujo de sistemas: muestra en que forma se procesan los datos,
entre as principales funciones o estaciones de trabajo .En este diagrama
completo de computadora se presenta con un solo smbolo de
procesamiento.
Ejemplo de Diagrama de Flujo de sistema:

DIAGRAMA DE FLUJOS DE PROGRAMACIN


Son las operaciones y decisiones en la secuencia en que las ejecutar una
computadora de procesamiento de datos. Los smbolos representan esas
operaciones e indican el orden en que se ejecutaran. Por lo tanto, un
diagrama de flujo de programa proporciona una descripcin grafica del
programa.
Ejemplo de Diagrama e Flujo de Programa:
Partes: 1, 2

QU ES UN DIAGRAMA DE FLUJO DE DATOS?


Es una descripcin grafica de un procedimiento para la resolucin de un
problema. Son frecuentemente usados para descubrir algoritmos y
programas de computador. Los diagramas de flujos estn compuestos por
figuras conectadas con flechas. Para ejecutar un proceso comienza por el
Inicio y se siguen las acciones indicadas por cada figura: El tipo de figura
indica el tipo de paso que representa.
Del Software, DFD es un software diseado para contribuir y analizar
algoritmos se puede crear diagramas de flujos de datos para la
representacin de algoritmos de programacin estructurada a partir de las
herramientas de edicin que para este propsito suministra el programa
.Despus de hacer haber ingresado el representado por el diagrama, podr,
ejecutarlo analizarlo y depurarlo en un entorno interactivo diseado para
este fin. La interfaz grafica de DFD facilita en gran medida el trabajo con
diagramas ya que simula la representacin estndar de diagramas de flujo
en hojas de papel.
LOS COMPONENTES DE UN DIAGRAMA DE FLUJO SON:

Proceso

Flujo

Almacn

Terminador

PROCESO:
El primer componente de diagrama de flujo de datos se conoce como
Proceso. El proceso nuestra una parte del sistema que transforman Entradas
y Salidas. Algunas analistas prefieren usar un ovalo o un rectngulo con
esquinas redondeadas, otros prefieren usar un rectngulo. Las diferencias
entre estas tres formas son puramente cosmticas, aunque obviamente es
importante usar la misma forma de la manera consistente para representar
todas las funciones de un sistema.

FLUJO:
Un flujo se representa grficamente por medio de una flecha que entra y
sale de proceso; el flujo se usa para describir el movimiento, de bloques o
paquetes de informacin de una parte del sistema a otra.
Los flujos realmente representan Datos, es decir, Bits caracteres, mensajes,
nmeros, de puntos, flotante y los diversos tipos de informacin con los que
las computadoras pueden tratar.
Los flujos tambin muestran la direccin: Una cabeza de flecha en cualquier
extremo(o posiblemente ambos) del flujo indica si los datos (o el material)
se est moviendo hacia adentro a hacia fuera por ejemplo indica claramente
que el numero se est mandando hacia el proceso denominado validar
numero telefnicos, y el flujo denominado honorarios de entrega de
chferes. Los datos que se mueven a dicho flujo viajaran ya sea de un
proceso a otro.

Ejemplo:

ALMACN:
Se utiliza para modelar una coleccin de paquetes de datos en reposo. Se
denota por dos lneas paralelas, de modo caracterstico el nombre que se
utiliza para identificar para los paquetes que entran y salen del almacn por
medios de flujo.
PEDIDOS:
Para el analista con conocimiento de proceso de datos es tentador referirse
a los almacenes como archivos o bases de datos; pro un almacn tambin
pudiera consistir en datos almacenados tambin pudiera consistir en datos
almacenados en tarjetas perforadas, microfilm, microfichas, discos pticos,
etc. y un almacn tambin puede ser en conjunto de fichas de papel en una
caja de cartn , nombres de fichas de papel en un directorio, diversos
archivos en un archivero, o varias formas no computarizadas.
Los almacenes se conectan por flujos a los procesos. As el contexto en el
que se muestra en un DFD (Diagrama de Flujo de Datos) es uno de los
siguientes:

Un flujo desde un almacn.

UN flujo hacia un almacn.

TERMINADOR:
Se representa como un rectngulo como los terminadores ser representa en
entidades externas con las cuales el sistema se comunica, continuamente,
puede ser una persona, o un grupo. Por ejemplo: una organizacin externa n
o una agencia gubernamental, o un grupo o departamento que este dentro

de la misma compaa u organizacin, pero fuera del control del sistema


que se esta modelando. En algunos casos, un terminador puede ser otro
sistema, como algn otro sistema computacional con el cual se comunica
este.

Existen tres cosas importantes que debemos recordar acerca de los


terminadores.

Son externos al sistema que se esta modelando.

Es evidente que ni el analista ni el diseador del sistema estn en


posibilidades de cambiar los contenidos de un terminador o la manera
en que esta trabaja.

Las relaciones que existen entre lo terminadores no se muestran en el


modelo DFD (Diagrama de Flujo de Datos).

REGLAS PARA LA CREACIN DE DIAGRAMAS


1. Los diagramas de flujo deben escribirse de arriba hacia abajo y/o de
Izquierda a derecha.
2. Los smbolos se unen con lneas, las cuales tienen en la punta una
flecha que indica su direccin que fluye la informacin procesos, se
deben utilizar solamente lneas de flujo horizontal o vertical (nunca
diagonales).
3. Se debe evitar el cruce de lneas, para lo cual se quisiera separar el
flujo del diagrama a un sitio distinto, se pudiera realizar utilizando los
conectores, se debe tener en cuenta que solo se van a utilizar
conectores cuando sean estrictamente necesario.
4. No deben quedar lneas de flujo sin conectar.
5. Todo texto escrito dentro de un smbolo debe ser legible, preciso,
evitando el uso de muchas palabras.
6. Todos los smbolos pueden tener mas de una lnea de entrada, a
excepto del smbolo final.

7. Solo los smbolos de decisin pueden y deben tener mas de una lnea
de flujo de salida.

Ejemplo de Diagrama de Flujo:


Diagrama de flujo que encuentra la suma de los primeros 50 nmeros
naturales.

El quinto bloque es un smbolo de suma de decisiones y


ramificaciones lo q hay dentro del bloque es una pregunta que se le
hace a las valores que actualmente incluyen en el proceso.

Es N=50?, obviamente la respuesta es No, ya que N todava es 1.Por lo que


el flujo de nuestro programa se dirigir hacia la parte en donde se observa
la palabra No. Tercer bloque, este le sumara1 (N=N+1) y vuelve a llegar a
este bloque, donde preguntar es N=50? No todava es 2 ha pues regresa
al tercer bloque y vuelve hacer lo mismo as la suma los primeros 50
nmeros naturales.

Por ultimo indicaciones que le resultado ser mostrado en la


impresora.

EXPLICACIN DEL DIAGRAMA DE FLUJO

El primer bloque indica el inicio del diagrama de flujo.

El segundo bloque, es un smbolo de procesos.

En este bloque se asume que las variables suman y N ha sido declarada


previamente y las inicializa en o para comenzar al conteo y la suma de
valores.

Tercer bloque, es tambin un smbolo de procesos.

En este paso se incrementa en 1 la variable N(N=N+1), por lo que en la


primera pasada esta valdr 1, ya que estaba inicializada en 0.

Cuarto bloque, es exactamente lo mismo que el anterior.

Pero en este, ya se agrega el valor de N a la variable que contendr la suma


(en el primer caso contendr 1, ya que N=1).
VENTAJAS DEL ENFOQUE DE FLUJOS DE DATOS
El enfoque de flujo de datos tiene cuatro ventajas principales sobre la
explicacin narrativa de la forma en que se mueven los datos a trabes del
sistema .Las ventajas son.
1. Libertad para realizar en forma muy temprana la implementacin de
tcnicas de sistema.
2. Una mayor comprensin de las interrelaciones de los sistemas y
subsistemas.
3. Comunicacin del conocimiento del sistema actual a los usuarios por
medio de diagramas de flujo de datos.
4. Anlisis de un sistema propuesto para determinar si han sido
definidas los datos y procesos necesarios.
SMBOLOS USADOS EN EL DIAGRAMA DE FLUJO DE DATOS

SIGNIFICADO DE LOS SMBOLOS DE FLUJO


El cuadrado doble es representado y usado para una actividad externa (otro
departamento, un negocio, una persona, o una maquina) que puedan enviar
datos y recibirlas del sistema. La entidad externa es llamada una fuente de
destino de datos y es considerada externa al estudio, cada entidad externa
es etiquetada con un nombre adecuado. La flecha muestra el movimiento
de datos de un punto a otro , esta sealada hacia suceden simultneamente
pueden ser representadas simplemente mediante el uso de flechas
paralelas, debido a que una flecha representada datos acerca de una
persona lugar o casa, tambin :Debe ser descrita con un nombre.
Un rectngulo con esquinas redondeadas es usado para mostrar la aparicin
de un proceso de transformacin. Los procesos siempre denotan un cambio
o transformacin de los datos.
USO DE DIAGRAMAS DE FLUJO DE DATOS
Los diagramas de flujo de datos son tiles a lo largo del proceso de anlisis
y diseos, .Existen compromisos para decidir que tanto deben ser
explotados de los flujos de datos. Se desperdiciara tiempo y se sacrificara
complusibilidad si los diagramas de flujo de datos son exclusivamente
complejos. Por otro lado, si los diagramas de flujo de datos estn muy poco
explotados, pueden ocurrir errores u omisiones que pueden eventualmente
afectar el sistema que esta en desarrollo. Por ultimo, recuerde que los
diagramas del sistema de flujo pueden ser usados para documentar niveles
altos o bajos del anlisis y para ayudar a sustentar la lgica subyacente en
los flujos de datos de la organizacin.
CARACTERSTICAS DE LOS DIAGRAMAS DE FLUJO DE DATOS

Muestran que debe hacer el sistema sin referencias.

Son diagramas explcitos y comprensibles.

Dan la posibilidad de representan el sistema a diferentes niveles de


complejidad, desde lo mas global a lo mas detallado solo requieren de
4 smbolos.

Son fcil de mantenimiento, pues los cambios afectan solo algunos de


sus elementos y no al todo.

CULES SO LAS VENTAJAS DE LOS DIAGRAMAS DE FLUJO DE


DATOS?

Fcil lectura, con esto se constituye en un instrumento de mucha


versatilidad.

Facilitan la interaccin Usuario-Analista.

CULES SON LAS LIMITACIONES DE LOS DIAGRAMAS DE FLUJO DE


DATOS?

No permite recoger el comportamiento de sistema que deben


responder a eventos en tiempos acotados. Para ello se usa el
diagrama de transicin de Estados.

No permite dar cuenta de la de las relaciones entre los datos que se


precisan almacenar .Para ello se usan el diagrama Entidad-Relacin.

No permite reflejar situaciones en las cuales es preciso dejar de


manifiesto la necesaria concurrencia de dos o ms flujo de datos para
un subproceso pueda iniciar efectivamente su tarea. Para ello se
utiliza la especificacin de procesos.

No permite recoger el contenido de los flujos de datos ni el contenido


de los archivos .Para ello se utiliza el diccionario de datos.

Variable (programacin)
En programacin, las variables son estructuras de datos que, como su
nombre indica, pueden cambiar de contenido a lo largo de la ejecucin de
un programa. Una variable corresponde a un rea reservada en la memoria
principal del ordenador pudiendo ser de longitud:

Fija.- Cuando el tamao de la misma no variar a lo largo de la


ejecucin del programa. Todas las variables, sean del tipo que sean
tienen longitud fija, salvo algunas excepciones como las
colecciones de otras variables (arrays) o las cadenas.

Variable.- Cuando el tamao de la misma puede variar a lo largo de la


ejecucin. Tpicamente colecciones de datos.

Tipos de datos

Debido a que las variables contienen o apuntan a valores de tipos


determinados, las operaciones sobre las mismas y el dominio de sus propios
valores estn determinadas por el tipo de datos en cuestin. Algunos tipos
de datos usados:

Tipo de dato lgico.

Tipo de dato entero.

Tipo de dato de coma flotante (real, con decimales).

Tipo de dato carcter.

Tipo de dato cadena

Variables y paso de parmetros a subalgoritmos


Las variables pueden ser intercambiadas entre rutinas, por valor y por
referencia:

Por valor.- Se copia el valor (el dato) de la variable en la zona de la


pila de llamadas de mbito local que corresponde a la nueva
subrutina llamada. Por tanto, esta subrutina obtiene dicho valor pero
no puede modificar la variable original. Esto significa que si la
variable sufre alteraciones dentro de esta rutina, para poder acceder
a dichas modificaciones al finalizar, deber devolver el nuevo valor de
la misma. Si no se realiza esta operacin, el valor de la variable ser
exactamente el mismo que tena antes de pasar por la funcin.

Por referencia.- No se pasa el valor directamente de la variable, si no


una referencia o puntero a la misma que contiene la direccin de la
zona de memoria donde se aloja el contenido, de tal modo que se
opera directamente sobre la zona de memoria que la contiene, lo cual
implica que las modificaciones que sufra sern accesibles a posteriori.

Almacenamiento de variables en memoria


Las variables se representan con identificadores que hacen referencia a un
lugar de la memoria del programa en donde se almacena un dato. Una
variable est asociada a un tipo de datos, el cual y en funcin del tamao
del mismo determina la cantidad de bytes que sern necesarios para
almacenar la variable. En el caso de colecciones y al contrario que con el
resto de tipo de datos, ya sean primitivos u objetos complejos, la memoria
asignada a almacenar tales variables no se conoce de antemano, lo cual
lleva a establecer polticas de reserva de memoria:

Reserva fija de memoria.- Implica predeterminar la cantidad de


memoria que se asignar a la coleccin. Es una poltica
extremadamente rgida, ya que llegados al final de la zona de
memoria no se podran almacenar nuevos elementos.

Reserva variable de memoria.- Se dedica una zona de memoria,


pudiendo ser de un tamao predeterminado o no, y en caso de
sobrepasarse dicha zona de memoria se vuelve a asignar otra zona,
contigua o no, para impedir la restriccin mencionada arriba.

mbito
Respecto al mbito de una variable, ste puede ser:

Local: Cuando la misma slo es accesible desde un nico


procedimiento hijo, no pudiendo ser leda o modificada desde otro
procedimiento hermano o desde el propio procedimiento padre. Es
posible declarar variables en bloques de condicin, bucles, etc de tal
modo que slo pueda accederse a ellas en el propio bloque.

Global: Cuando la misma es accesible tanto desde rutinas o macros


de la aplicacin, como en todos los procedimientos y funciones de la
misma.

Si bien es cierto, que de una forma bsica, se puede definir el mbito de las
variables de la forma expuesta ms arriba, existen grados de globalidad de
las mismas, pudiendo ser accesibles desde unos puntos u otros, o incluso
pudiendo ser accesibles entre aplicaciones distintas, llegando al caso de la
superglobalidad. Ejemplo del mbito de una variable en el lenguaje de
programacin Java.
public class A {
public Integer numeroEntero = new Integer(); /* Variable Global a todos
los Mtodos */
public Integer metodo() {
int num = 1; // Variable Local a metodo. Puede accederse dentro de
este mtodo en cualquier parte, pero no fuera del mismo.
for (int i = 0;i<numeroEntero.intValue();i++) { // i es local al bucle for,
slo puede ser accedida dentro del mismo.
num *= i;
}
// i = 2; Esta lnea provocara error al no haber declarado la variable i. i
fue definida localmente al bucle for.
return Integer.valueOf(num);
}
public void otroMetodo() {
int num = 1; // Variable local a otroMetodo. num aqu es una variable
distinta a la variable num de metodo
System.out.println("Variable local num: " + num);
}
}
Hay que tener en cuenta que en Java el caso de las variables globales
a todos los mtodos que se encuentran en una clase, es algo peculiar,
ya que estas realmente son atributos que definen un objeto de una
clase determinada, en este caso la clase A tiene un atributo llamado
numeroEntero. El atributo es un concepto que define a un objeto de
una clase determinada, mientras que una variable sirve de apoyo a
los procedimientos y no define conceptualmente objetos.
Ejemplo

Una variable en programacin es un espacio en memoria que permite


almacenar informacin dentro de s. Esa informacin puede ser un caracter,
una cadena de caracteres, un nmero, un arreglo y, en general, cualquier
otro tipo de datos.
En tanto una constante es tambin un espacio en memoria, pero que
almacena una dato fijo, es decir, que no cambia nunca.
Por ejemplo:
int a, b
a := 1
b := a + 2
a := 5
Aqu tenemos dos variables, "a" y "b" que almacenan valores numricos
enteros (int). La variable "a" almacena primero el nmero 1, luego "b"
almacena el numero que tiene "a" ms 2, por lo tanto "b" almacena un 3.
Finalmente el valor de "a" es reemplazado por un 3, por lo tanto las
variables contendrn estos datos al final:
a=5
b=3
Constante
En programacin, una constante es un valor que no puede ser alterado
durante la ejecucin de un programa.
Una constante corresponde a una longitud fija de un rea reservada en la
memoria principal del ordenador, donde el programa almacena valores fijos.
Por ejemplo:

El valor de pi = 3.1416

Por conveniencia, el nombre de las constantes suele escribirse en


maysculas en la mayora de lenguajes.

Ejemplo de una constante en C/C++ (#define)


En C o C++ las constantes se declaran con la directiva #define, esto
significa que esa constante tendr el mismo valor a lo largo de todo el
programa. El identificador de una constante as definida ser una cadena de
caracteres que deber cumplir los mismos requisitos que el de una variable
(sin espacios en blanco, no empezar por un dgito numrico, etc).
Ejemplo:
#include <stdio.h>
#define PI 3.1415926
int main()
{
printf("Pi vale %f", PI);

return 0;
}
Lo cual mostrar por pantalla:
Pi vale 3.1415926
Es decir, PI es una constante a la que le hemos asignado el valor
3.1415926 mediante la directiva #define.
La directiva #define tambin se puede utilizar para definir expresiones ms
elaboradas con operadores (suma, resta, multiplicacin etc) y otras
constantes que hayan sido definidas previamente, por ejemplo:
#define X 2.4
#define Y 9.2
#define Z X + Y
Tipo de dato
En los lenguajes de programacin un tipo de dato es un atributo de una
parte de los datos que indica al ordenador (y/o al programador) algo sobre
la clase de datos sobre los que se va a procesar. Esto incluye imponer
restricciones en los datos, como qu valores pueden tomar y qu
operaciones se pueden realizar. Tipos de datos comunes son: enteros,
nmeros de coma flotante (decimales), cadenas alfanumricas, fechas,
horas, colores, coches o cualquier cosa que se nos ocurra. Por ejemplo, en
Java, el tipo "int" representa un conjunto de enteros de 32 bits cuyo rango
va desde el -2.147.483.648 al 2.147.483.647, as como las operaciones que
se pueden realizar con los enteros, como la suma, resta y multiplicacin. Los
colores, por otra parte, se representan como tres bytes denotando la
cantidad de rojo, verde y azul, y una cadena de caracteres representando el
nombre del color; las operaciones permitidas incluyen la adicin y
sustraccin, pero no la multiplicacin.
ste es un concepto propio de la informtica, ms especficamente de los
lenguajes de programacin, aunque tambin se encuentra relacionado con
nociones similares de las matemticas y la lgica.
En un sentido amplio, un tipo de datos define un conjunto de valores y las
operaciones sobre estos valores. [1] Casi todos los lenguajes de programacin
explcitamente incluyen la notacin del tipo de datos, aunque lenguajes
diferentes pueden usar terminologa diferente. La mayor parte de los
lenguajes de programacin permiten al programador definir tipos de datos
adicionales, normalmente combinando mltiples elementos de otros tipos y
definiendo las operaciones del nuevo tipo de dato. Por ejemplo, un
programador puede crear un nuevo tipo de dato llamado "Persona" que
especifica que el dato interpretado como Persona incluir un nombre y una
fecha de nacimiento.
Un tipo de dato puede ser tambin visto como una limitacin impuesta en la
interpretacin de los datos en un sistema de tipificacin, describiendo la
representacin, interpretacin y la estructura de los valores u objetos
almacenados en la memoria del ordenador. El sistema de tipificacin usa
informacin de los tipos de datos para comprobar la verificacin de los
programas que acceden o manipulan los datos.

Tipos de datos mquina


Todos los datos en los ordenadores basados en la electrnica digital se
representan como bits (valores 0 y 1) en el nivel ms bajo. La ms pequea
unidad direccionable de datos es un grupo de bits llamado un byte
(normalmente un octeto, que son 8 bits). La unidad procesada por las
instrucciones del cdigo mquina se le llama una palabra (en 2006,
normalmente 32 o 64 bits). La mayor parte de las instrucciones interpretan
la palabra como un nmero binario, como por ejemplo una palabra de 32
bits puede representar valores enteros sin signo desde el 0 al 232 1 o
valores enteros con signo desde 231 al 231 1. Por medio del
complemento a dos, la mayor parte del tiempo, el lenguaje mquina y la
propia mquina no necesitan distinguir entre tipos de datos con o sin signo.
Existe un especfico conjunto de instrucciones aritmticas que usa una
diferente interpretacin de los bits de una palabra como nmero en coma
flotante.
Tipos de datos primitivo
Los tipos de datos hacen referencia al tipo de informacin que se trabaja,
donde la unidad mnima de almacenamiento es el dato, tambin se puede
considerar como el rango de valores que puede tomar una variable durante
la ejecucin del programa.
DATOS PRIMITIVOS:
* CARACTER
*NUMERICO
*LOGICOS(BOOLEANOS)

CARCTER
El tipo de dato carcter es un digito individual el cual se puede representar
como numricos (0 al 9), letras (a-z) y smbolo ($,_). NOTA: En lenguaje java
la codificacin Unicode permite trabajar con todos los caracteres de
distintos idiomas.
Tipo de dato Rango Tamao de bits
char

0 a 65536

16 bits

NUMERICOS Este tipo de dato puede ser real o entero, dependiendo del tipo
de dato que se vaya a utilizar.
Enteros: son los valores que no tienen punto decimal, pueden ser positivos o
negativos y el cero.

tipo de dato: byte


tamao= 8 bits
tipo de dato: short
tamao= 16 bits
tipo de dato: int
tamao= 32 bits
tipo de dato: long
tamao= 64 bits
Reales: estos caracteres almacenan numeros muy grandes que poseen
parte entera y parte decimal.
tipo de dato: float= 32 bits
tipo de dato: double= 64 bits
BOOLEANOS
Este tipo de dato se emplea para valores lgicos, los podemos definir como
datos comparativos dicha comparacin devuelve resultados lgicos.
tipo de dato: boolean
Rango= true - false
Tipos simples
Artculo principal: Tipos simples

Tipo Ordinal
o

Tipos predefinidos

Tipo de dato entero

Tipo de dato carcter

Tipo de dato lgico

Tipos definidos por el usuario

Tipo de dato enumerado

Tipo de dato subrango

Tipo No Ordinal
o

Tipo de dato real

Tipo de dato cronolgico

Tipo de dato puntero

Tipos compuestos
Artculo principal: Tipos compuestos
Artculo principal: Tupla
Artculo principal: Vector (programacin)

Cadena de caracteres

Estructura de datos

Operador
En matemticas, un operador es un smbolo matemtico que indica que
debe ser llevada a cabo una operacin especificada[1] sobre un cierto
nmero de operandos (nmero, funcin, vector, etc.).

Por ejemplo: el operador derivada,


, acta sobre la funcin
escribe a su derecha, produciendo una nueva funcin de :

que se

En algunos casos un operador es una funcin que acta sobre funciones


para producir otras funciones.

Operadores bilineales o bivariantes


(Para definiciones ms estrictas sobre linealidad y bilinealidad, vanse los
temas relacionados)
Su nombre depende del autor, son los operadores que actan sobre dos
objetos (escritos, generalmente, a ambos lados del operador) produciendo
un nico resultado. Vanse los casos siguientes.
Tipos generales de operadores
Operadores de condicin
Relacionan un trmino A con otro B estableciendo su igualdad, jerarqua o
cualquier otra relacin posible, como ejemplos tenemos:

A = B establece que A es igual que B.


En este caso hay que distinguir entre operador = de asignacin y el
operador = de comparacin. El primero toma el valor de B y se lo
asigna a A; el segundo solamente compara los valores de A y B sin
modificarlos y devuelve un valor lgico o de verdad verdadero si
ambos valores son iguales o falso si dichos valores no son iguales.

A B o desigualdad.
Este caso es justamente el opuesto al anterior, aunque aqu no
podemos hablar de asignacin, pero si de comparacin. Ahora el
resultado de esta operacin ser F si los valores A y B son iguales y V
si son distintos.

Operadores de orden: establecen o verifican clasificaciones entre


nmeros (A < B, A > B, etc.) u otro tipo de valores (caracteres,
cadenas, ...).
Todo tipo de dato susceptible de ser ordenado por cualquier criterio
puede ser comparado con estos operadores; como los anteriores

devuelven un valor de verdad en funcin del resultado que tenga la


comparacin en cada caso.

A > B Devuelve V si A es estrictamente mayor que B y F en


caso contrario

A < B Devuelve V si A es estrictamente menor que B y F en


caso contrario

A B Devuelve V si A es mayor o igual que B y F en caso


contrario

A B Devuelve V si A es menor o igual que B y F en caso


contrario

Otros operadores relacionales menos usuales son los llamados


operadores geomtricos: paralelismo (A || B), perpendicularidad y
otros

Operadores lgicos
Los operadores lgicos producen un resultado booleano, y sus operandos
son tambin valores lgicos o asimilables a ellos (los valores numricos son
asimilados a cierto o falso segn su valor sea cero o distinto de cero). Por
contra, recuerde que las operaciones entre bits producen valores arbitrarios.
Los operadores lgicos son tres; dos de ellos son binarios, el ltimo
(negacin) es unario. Tienen una doble posibilidad de representacin en el
Estndar C++ actual: la representacin tradicional que se indica a
continuacin, y la natural introducida recientemente que se detalla ms
adelante .

Y lgico &&

AND

O lgico ||

OR

Negacin lgica ! NOT

Las expresiones conectadas con los operadores && y || se evalan de


izquierda a derecha, y la evaluacin se detiene tan pronto como el resultado
verdadero o falso es conocido (muchos programas tienen una lgica que se
basa en este propiedad).
2 && Operador Y lgico
Tambin denominado por su nombre en ingls (generalmente en
maysculas) AND lgico. Devuelve un valor lgico true si ambos operandos
son ciertos. En caso contrario el resultado es false.
Sintaxis
expr-AND-logica && expresion-OR-inclusive
Comentario:

La operatoria es como sigue: El primer operando (de la izquierda) es


convertido a bool. Para ello, si es una expresin, se evala para obtener el
resultado (esta computacin puede tener ciertos efectos laterales). A
continuacin, el valor obtenido es convertido a bool cierto/falso siguiendo
las reglas de conversin estndar. Si el resultado es false, el proceso se
detiene y este es el resultado, sin que en este caso sea necesario evaluar la
expresin de la derecha (recurdese que en el diseo de C++ prima la
velocidad).
Si el resultado del operando izquierdo es cierto, se contina con la
evaluacin de la expresin de la derecha, que tambin es convertida a bool.
Si el nuevo resultado es true, entonces el resultado del operador es true.
En caso contrario el resultado es false.
Nota: la Norma informa que antes de ser evaluada la expresin derecha,
han sucedido todos los posibles efectos laterales de la expresin izquierda,
a excepcin de la destruccin de los posibles objetos temporales que se
hubiesen creado.
Ejemplo:
int m[3] = {0,1,2};
int x = 0;
if (m && x) cout << "Cierto.";
else cout << "Falso.";
Salida:
Falso.
El valor m, que es interpretado como un puntero al primer elemento de la
matriz, es transformado a un bool. Como es distinto de cero (no es un
puntero nulo) el resultado es cierto. A continuacin, el valor x es convertido
tambin a bool. En este caso la conversin produce falso, con lo que este es
el resultado del parntesis de la sentencia if.
Ejemplo
#include <iostream.h>
bool alto = true, bajo = false, blanco = true, negro = false;
int main (void) {
if (alto && bajo) { cout << "Uno cierto" << endl; }
else cout << "Uno falso" << endl;
if (alto && blanco) { cout << "Dos cierto" << endl; }
else cout << "Dos falso" << endl;
if (bajo && negro) { cout << "Tres cierto" << endl; }
else cout << "Tres falso" << endl;
}
Salida:

Uno
Dos
Tres falso

falso
cierto

3 || Operador O lgico
Este operador binario devuelve true si alguno de los operandos es cierto.
En caso contrario devuelve false.
Sintaxis
expr-OR-logica || expresion-AND-logica
Comentario
Este operador sigue un funcionamiento anlogo al anterior. El primer
operando (izquierdo) es convertido a bool. Para ello, si es una expresin, se
evala para obtener el resultado (esta computacin puede tener ciertos
efectos laterales). A continuacin el valor obtenido es convertido a bool
cierto/falso siguiendo las reglas de conversin estndar (
3.2.1b). Si el
resultado es true, el proceso se detiene y este es el resultado, sin que en
este caso sea necesario evaluar la expresin de la derecha (recurdese que
en el diseo de C++ prima la velocidad).
Si el resultado del operando izquierdo es false, se contina con la
evaluacin de la expresin de la derecha, que tambin es convertida a bool.
Si el nuevo resultado es true, entonces el resultado del operador es true.
En caso contrario el resultado es false.
Nota: el Estndar establece que antes de ser evaluada la expresin
derecha, han sucedido todos los posibles efectos laterales de la expresin
izquierda, a excepcin de la destruccin de los posibles objetos temporales
que se hubieran creado.
Ejemplo
#include <iostream.h>
bool alto = true, bajo = false, blanco = true, negro = false;
int main (void) {
if (alto || bajo) { cout << "Uno cierto" << endl; }
else cout << "Uno falso" << endl;
if (alto || blanco) { cout << "Dos cierto" << endl; }
else cout << "Dos falso" << endl;
if (bajo || negro) { cout << "Tres cierto" << endl; }
else cout << "Tres falso" << endl;
}
Salida
Uno cierto
Dos cierto
Tres falso

4 ! Operador NO lgico:
Este operador es denominado tambin negacin lgica y se representa en el
texto escrito por la palabra inglesa NOT (otros lenguajes utilizan
directamente esta palabra para representar el operador en el cdigo).
Sintaxis
! expresion-cast
Comentario
El operando expresion-cast (que puede ser una expresin que se evala a
un resultado es convertido a tipo bool, con lo que solo puede ser uno de los
valores cierto/falso. A continuacin el operador cambia su valor: Si es
cierto es convertido a falso y viceversa.
Resulta por tanto, que el resultado de este operador es siempre un tipo
bool, aunque al existir una conversin estndar por la que un cero es
convertido a false, y cualquier valor distinto de cero a true, coloquialmente
se dice que este operador convierte un operando 0 en 1 y uno no-cero en 0.
En otras palabras: este operador devuelve cierto (true) si la expresin se
evala a distinto de cero, en caso contrario devuelve falso (false).
Ejemplo
#include <iostream.h>
bool alto = true, bajo = false;
int main (void) {
if (alto) { cout << "Uno cierto" << endl; }
else cout << "Uno falso" << endl;
if (!alto) { cout << "Dos cierto" << endl; }
else cout << "Dos falso" << endl;
if (!bajo) { cout << "Tres cierto" << endl; }
else cout << "Tres falso" << endl;
}
Salida:
Uno cierto
Dos falso
Tres cierto

OPERADORES ARITMTICOS
Tipos de Operadores Relacinales

Lgicos

Operadores Aritmticos: Los operadores aritmticos permiten la


realizacin de operaciones
matemticas con los valores (variables y constantes).

Los operadores aritmticos pueden ser utilizados con tipos de datos


enteros o reales. Si ambos son enteros, el resultado es entero; si
alguno de ellos es real, el resultado es real.
Operando (Operador).
Valor

(constante o variable)
Operadores Aritmticos
+ Suma
Resta
* Multiplicacin
/ Divisin
Mod Modulo (residuo de la divisin entera)

Ejemplos:
Expresin Resultado
7 / 2 3.5
12 mod 7 5
104 + 2 * 5 14

PRIORIDAD DE LOS OPERADORES ARITMTICOS

Todas las expresiones entre parntesis se evalan primero. Las


expresiones con parntesis anidados se evalan de dentro a fuera, el
parntesis mas interno se evala primero.
Dentro de una misma expresin los operadores se evalan en el
siguiente orden.

1. ^ Exponenciacin
2. *, /, mod Multiplicacin, divisin, modulo.
3. +, Suma y resta.
Los operadores en una misma expresin con igual nivel de prioridad
se evalan de izquierda a
derecha.

Ejemplos:
4 + 2 * 5 = 14
23 * 2 / 5 = 9.2 46 / 5 = 9.2
3 + 5 * (10 (2 + 4)) = 23 3 + 5 * (10 6) = 3 + 5 * 4 = 3 + 20 =
23
3.5 + 5.09 14.0 / 40 = 5.09 3.5 + 5.09 3.5 = 8.59 3.5 = 5.09
2.1 * (1.5 + 3.0 * 4.1) = 28.98 2.1 * (1.5 + 12.3) = 2.1 * 13.8 = 28.98

SIMBOLOGA DE LOS DIAGRAMAS DE FLUJO


Las diversas organizaciones usan distintos smbolos, pero el comit sobre
computadoras y procesadores de informacin de la Asociacin
Norteamericana de Normas ha hecho un gran esfuerzo para normalizar los
smbolos de los diagramas de flujo. Esa normalizacin permite comprender
cualquier diagrama de flujo que use los smbolos recomendados.

Cada smbolo normal de diagrama de flujo tiene un significado especial.

Este se utiliza para representar el inicio o el fin de un algoritmo. Tambin


puede representar una parada o una interrupcin programada que sea
necesaria realizar en un programa.

Este se utiliza para un proceso determinado, es el que se utiliza


comnmente para representar una instruccin, o cualquier tipo de
operacin que origine un cambio de valor.

Este smbolo es utilizado para representar una entrada o salida de


informacin, que sea procesada o registrada por medio de un perifrico.

Este es utilizado para la toma de decisiones, ramificaciones, para la


indicacin de operaciones lgicas o de comparacin entre datos.

Este es utilizado para enlazar dos partes cualesquiera de un diagrama a


travs de un conector de salida y un conector de entrada. Esta forma un
enlace en la misma pgina del diagrama.

Este es utilizado para enlazar dos partes de un diagrama pero que no se


encuentren en la misma pagina.

Este es utilizado para indicar la secuencia del diagrama de flujo, es decir,


para indicar el sentido de las operaciones dentro del mismo.

Este es utilizado para representar la salida de informacin por medio de la


impresora.

Este es utilizado para representar la salida o para mostrar la informacin por


medio del monitor o la pantalla.
REGLAS PARA ESTRUCTURAR UN DIAGRAMA DE FLUJO

El sentido de un diagrama de flujo generalmente es de arriba hacia


abajo.

Es un smbolo solo puede entrar una flecha de flujo si varias lneas se


dirigen al mismo smbolo, se deben unir en una sola flecha.

Las lneas de flujo no deben cruzarse, para evitar los cruces se


utilizan los conectores.

De un smbolo excepto el de decisin, solo puede salir una lnea de


flujo.

Los smbolos Terminal, Conector dentro de pgina y conector fuera de


pgina solo pueden estar conectados al diagrama por una sola flecha,
ya que por su naturaleza es imposible que tenga una entrada y una
de salida.

Los mbolos de decisin tendrn siempre una sola flecha de entrada


y dos o tres flechas de salida segn la cantidad de alternativas que se
presentan.

Un diagrama de flujo debe estar complemente cerrado, teniendo una


continuidad de principio a fin, no pueden quedar flechas en el aire ni
smbolos sin conexin al diagrama pues el flujo seria interrumpido.
CONSIDERACIONES SOBRE DIAGRAMA DE FLUJO
Un diagrama de flujo, puede tener tipos de errores diferentes:
DE FORMA: Se genera por no seguir las reglas establecidas, puede hacer el
diagrama difcil interpretacin, confundir el diagrama y hasta convertirlo en
errado en cuanto ser lgica.
DE LGICA: Son errores de estructura del diagrama en cuanto al arden
puede ser de distinta gravedad, desde dejar de mostrar el resultado. O falta
un clculo hasta un error que determine que un programa nunca llegue a su
fin.
DE OBJETIVO: Es cuando un diagrama de flujo esta correcto en cuanto a su
estructura y forma pero no soluciona el problema propuesto sino otro.
Una vez terminado e diagrama de flujo, es necesario asegurarse de que
funcione correctamente cumpliendo el objetivo fundamental, las
condiciones especificas y las excepciones del problema propuesto a esto se
le llama generalmente "corrida en fri" prueba de escritorio.
Para ellos e selecciona algunos datos (creadas por el programador para
fines de la prueba) que cubran todos los casos posibles en todas las
condiciones. Tomando estos datos se recorre el diagrama de flujo smbolo a
smbolo siguiendo la orden de cada uno de ellos, todo esto se har a un lado
del diagrama o en una hoja aparte dndole valores a variables y ejecutando
operacin que se indique .Ejemplo:

ESTRUCTURA DE CONTROL SELECTIVA (if)


Existen tres tipos de estructuras de control selectivas, estas se basan
en una condicin o en una opcin para decidir la parte del programa
por el que pasar.
a. Simple b)Doble o compuesta c)Mltiple
Selectiva simple.- evala una condicin, si esta es verdadera
ejecuta la accin o acciones especificadas, si es falsa no realiza
ninguna accin.

Nota: Si

existe sola una

instruccin

o sentencia dentro

de

la

condicin no es necesario marcarlos con inicio y fin, en caso contrario


si, como se muestra en el diagrama anterior.
1. Determinar si 2 nmeros son iguales o diferentes, si son
diferentes determinar cul de los 2 es el mayor.

2. Cambiar un Caucho desinflado de un Automvil.

MTODO DE ORDENACIN POR BURBUJA


Selectiva doble o compuesta.- evala una condicin, si esta es
verdadera ejecuta la accin o acciones especificadas, si es falsa
ejecuta otra accin o acciones.

Nota: Si existe sola una instruccin o sentencia dentro de la


condicin no es necesario marcarlos con inicio y fin como en este
caso que la condicin fue falsa, en caso contrario si, en este ejemplo
cuando la condicin fue verdadera.
Ejemplo: Imprimir si un nmero es positivo o negativo

Selectiva anidada

La estructura selectiva anidada es una cadena de estructuras


selectivas que se conectan de la parte else de la actual con la parte if
de la siguiente.

Diagrama de flujo:

Sintaxis:
if(condicin1) Bloque 1 ;
else if(condicin2) Bloque 2 ;
else Bloque 3;

Ejemplo:

if(edad < = 2 )
Console.WriteLine("Beb" ) ;
else if(edad < 12)
Console.WriteLine("Nio" ) ;
else if( edad < 18)

Console.WriteLine("Adolescente" ) ;
else Console.WriteLine (" Adulto" ) ;

Selectiva mltiple
La estructura selectiva mltiple es similar a la selectiva anidada,
salvo que las condiciones deben ser de alguno de los tipos enteros o
de tipo carcter.

Diagrama de flujo:

Sintaxis:

switch(Expresin)
{
case Cte 1: Bloque 1 ; break;
case Cte 2: Bloque 2 ; break;

case Cte N: Bloque N ; break;


default: Bloque X ; break;// Opcional.

ESTRUCTURAS REPETITIVAS O CICLOS REPETITIVOS


Las computadoras estn diseadas para aquellas aplicaciones en las
cuales una operacin o conjunto de ellas deben repetirse muchas
veces. Un tipo muy importante de estructura es el algoritmo
necesario para repetir una o varias acciones por un nmero
determinado de veces, a esta estructura se la llama Estructura
Repetitiva. Las estructuras repetitivas se utilizan cuando se desea
que una instruccin o bloque de instrucciones se repita un nmero
determinado de veces o hasta que una condicin de terminacin se
cumpla. Las estructuras que repiten una secuencia de instrucciones
un nmero determinado de veces se denominan bucles, y se llama
iteracin al hecho de repetir la ejecucin de una secuencia de
acciones. Iterar es repetir una vez el bucle. Se debe tener en cuenta
lo siguiente para la construccin de una El cuerpo del bucle: Es el
grupo de estructura repetitiva: instrucciones que se van a repetir.
Dentro del cuerpo del bucle debe existir una instruccin que
modifique la condicin lgica de terminacin. Las sentencias de
inicializacin. Son instrucciones que inicializan contadores y
acumuladores. Las condiciones para la terminacin del bucle:
Expresiones lgicas que controlan la terminacin del bucle.
A continuacin se detallan tres estructuras repetitivas bsicas: 1.
2. 3.
Estructura Repetitiva Desde / Para. (FOR)
Estructura Repetitiva Hacer Mientras. (DO WHILE)
Estructura Repetitiva Mientras. (WHILE)
Para poder entender cmo funciona un proceso repetitivo, se necesita
conocer el concepto de dos expresiones:
CONTADOR
En un proceso repetitivo cuya funcin es contar los sucesos o
acciones internas del bucle, como pueden ser el nmero de
iteraciones del bucle, la cantidad de elementos que tiene un archivo,
un vector, una matriz, etc. Una forma de controlar un bucle es
mediante un contador. Un contador es una variable cuyo valor se
incrementa o decrementa en una cantidad constante o fija en cada

iteracin. La forma de representar un contador es: contador =


contador + 1
La expresin anterior se debe interpretar como asignar a la variable
contador el valor que tena anteriormente ms uno o menos uno,
dependiendo del caso si se quiere incrementar o decrementar.
Nota: En todo contador es necesario que exista una instruccin que
inicializa la variable que va a tener la funcin de contador y esta
variable puede ser cualquier identificador. Ejemplo 1: Contador que
incrementa de uno en uno. La variable contador va a tener la funcin
de ser el contador. contador = contador = 1 contador + 1 1

ACUMULADOR
Un acumulador es una variable cuya misin es almacenar cantidades
variables. Realiza la misma funcin que un contador pero con la
diferencia de que el incremento o decremento es variable y no
constante como en el contador. La forma de representar un
acumulador es: S = S + valorVariable
Nota: En todo acumulador es necesario que exista una instruccin
que inicializa la variable que va a tener la funcin de acumulador y
esta variable puede ser cualquier identificador. Ejemplo 5: Calcular el
promedio de notas de 10 alumnos, primero debemos utilizar una
variable acumulador para ir sumando las 10 notas (cantidades
variables) y luego dividir este valor entre diez. La variable S va a
tener la funcin de ser el acumulador. Solucin del ejemplo 5. S=0
leer(nota) S=S+nota Prom=S/10
Esto es la forma como trabaja un acumulador.
FOR
Estructura Repetitiva Desde/Para
En muchas ocasiones se conoce de antemano el nmero de veces
que se desean ejecutar las acciones o instrucciones de un bucle. En
estos casos en los que el nmero de iteraciones es fijo, se debe usar
la estructura desde/para. Por ejemplo, ingresar 10 notas, 100
nmeros, etc. La representacin grfica de la estructura repetitiva
desde/para en un Diagrama de Flujo es el siguiente:

Inicializacin, condicin, modificacin

Instrucciones

En su forma ms tpica y bsica, esta estructura requiere una variable


entera que cumple la funcin de un contador de vueltas. En la seccin
indicada como inicializacin, se suele colocar el nombre de la
variable que har de contador, asignndole a dicha variable un valor
inicial. En la seccin de condicin se coloca la condicin que deber
ser verdadera para que el ciclo contine (en caso de falso el ciclo se
detendr). Y finalmente, en la seccin modificacin se coloca una
instruccin que permite modificar el valor de la variable que hace de
contador (para permitir que alguna vez sea falsa).
Ejemplo: Queremos que se repita 50 veces el bloque de
instrucciones. Describiremos el siguiente ejemplo por etapas:
Nota: El smbolo de la flecha apuntando a la izquierda (
)
significa = (igual)
1era Etapa (c=1): Cuando el ciclo comienza antes de dar la primera
vuelta, la variable de inicializacin toma el valor indicado en la
seccin de inicializacin.

C = 1, C<=50, C = C + 1

Instrucciones

DO WHILE

Estructura Repetitiva Hacer - Mientras


Existen muchas situaciones en las que se desea que un bucle se
ejecute al menos una vez antes de comprobar la condicin de
repeticin, para ello se puede utilizar la estructura repetitiva Hacer Mientras. Esta estructura repetitiva se utiliza cuando conocemos de
antemano que por lo menos una vez se ejecutar el bloque repetitivo.
Cuando una instruccin Hacer-Mientras se ejecuta, lo primero que
sucede es la ejecucin del bucle (todas las instrucciones) y a

continuacin se evala la expresin booleana de la condicin. Si se


evala como verdadera, el cuerpo del bucle se repite y se vuelve a
evaluar la condicin, si sigue siendo verdadera se seguir repitiendo
el bucle hasta que la condicin sea falsa. Dentro del bucle existir una
instruccin que en un cierto momento har que la condicin sea falsa.

La representacin grfica de la estructura repetitiva Hacer-Mientras


es la siguiente:

Instrucciones
(ES)

condicion
verdadero
falso

WHILE

Estructura Repetitiva Mientras


El proceso de una estructura repetitiva Mientras es el siguiente: para
que ingrese al cuerpo del bucle tiene que evaluarse una condicin, si
sta es verdadera se ingresa y se realizan todas las instrucciones que
estn dentro del cuerpo del bucle; terminado la ltima instruccin se
vuelve a comprobar la condicin; se seguir realizando el bucle
mientras la condicin siga siendo verdadera y si en un momento es
falsa sale del bucle. Es decir, la estructura repetitiva Mientras es
aquella en que el cuerpo del bucle se repite mientras se cumpla una
determinada condicin, y termina cuando ya no se cumple. Si al
querer ingresar al cuerpo del bucle por primera vez y la condicin es
falsa, no ingresa al bucle, ninguna accin se realiza y el algoritmo
prosigue en la siguiente instruccin fuera del bucle. La representacin
grfica de la estructura repetitiva Mientras es la siguiente:

Condicin

falso

Instrucciones
(ES)

Vectores.
Un vector es un conjunto de elementos relacionados. En la mayora
de los lenguajes de computadora, todos los elementos de un vector(o
arreglo unidimensional) son del mismo tipo.
Para poder hacer referencia a los elementos de un vector es necesario
que exista un nombre para el mismo. A cantidad mxima de
elementos que podemos almacenar en un vector se le llama
dimensin.
No es posible acceder a todos los datos de un arreglo al mismo
tiempo, en vez de ello se tiene que usar un nombre de arreglo y un
nmero, llamado ndice, que indica a qu elemento del vector se est
haciendo referencia.

En la figura se muestra un arreglo de enteros llamado X que tiene una


dimensin de 4. Si queremos hacer referencia al segundo elemento
del arreglo X (el nmero 324) tendramos que especificar X[2](se lee
como X de 2), es decir, X[2]=324. Cada uno de estos elementos
individuales puede ser tratado como cualquier variable.

Ejemplos y resolucin de problemas relacionados con


vectores.
Ejemplo: Hacer diagrama de flujo que lea e imprima un arreglo de N
elementos.

Ejemplo: Hacer diagrama de flujo que lea un arreglo de N elementos y


que imprima su media aritmtica.

Ejemplo: Hacer diagrama de flujo que lea un vector numrico de N


elementos y que indique cuntos de ellos son negativos.

Matrices.

Un matriz es un arreglo bidimensional, es decir, para hacer


referencia a cualquiera de sus elementos son necesarios dos ndices.
Las matrices estn organizadas en filas y columnas, por lo tanto la
dimensin de las mismas ser dada en la forma NxM, donde N
representa la cantidad de renglones (llamados tambin filas) y M las
columnas.

En la Figura 5.2 podemos observar la representacin esquemtica de


una matriz de enteros llamada X, la cual tiene una dimensin 4x3. En
la matriz X, el acceso a los elementos individuales debe hacerse en la
forma X[i,i], donde i representa el nmero de rengln y j el nmero de
columna, por lo tanto X[3,2] es 342.
Ejemplos y resolucin de problemas relacionados con
matrices.
Ejemplo: Hacer diagrama de flujo que lea una matriz de tres por dos
(3 X 2).

Ejemplo: Hacer diagrama de flujo que lea e imprima una matriz de N


X M elementos.

Ejemplo: Hacer diagrama de flujo que lea matriz de dimensin NxM y


un escalar. El diagrama debe calcular e imprimir el producto escalar
de ambos.

Ejercicios
1.- Hacer diagrama de flujo que lea un vector de N elementos y que
indique cuntos de ellos son pares.
2.- Hacer diagrama de flujo que lea una matriz de N X 3. El diagrama
debe calcular el promedio por fila e cual de tales promedios es el
mayor.
3.- Hacer diagrama de flujo que lea un vector de N elementos y que
indique cuntos de ellos mltiplos de tres y cuntos mltiplos de 5.
4.- Hacer un diagrama de flujo que lea un vector de dimensin N y
que calcule la siguiente norma:
(X1-M)2+ (X1-M) 2+...+ (XN-M) 2
Norma = ----------------------------------------N2
Donde M es la media aritmtica del vector X.
5.- Hacer un diagrama de flujo que lea dos matrices y que calcule su
producto.
6.- Hacer un diagrama de flujo que lea dos matrices y que calcule su
suma.
7.- Hacer un diagrama de flujo que lea una matriz entera de
dimensin NxM y que calcule su matriz transpuesta.
8.- Hacer un diagrama de flujo que lea una matriz entera de
dimensin NxM y que calcule el promedio de sus elementos.
9.- Hacer una diagrama de flujo que lea una matriz de caracteres de
dimensin NxM y que indique cuntos de los caracteres de tal matriz
son letras a.
10.- Que lea dos vectores numricos de dimensin N y que indique
cul de ellos tiene la mayor media aritmtica de sus elementos.

ERIK APARICIO MARTINEZ


OLIDEL MARROQUIN TOVILLA
FRANCISCO BAIL

You might also like