You are on page 1of 68

Algoritmos computacionales

ÔV ¬ue es programación.
ÔV ¬ue es un lenguaje de programación.
ÔV ¬ue es la lógica computacional.
ÔV lasificación de los lenguajes de programación, (Ejemplos en
cada clasificación o categoría)
ÔV ¬ue es un algoritmo (Ejemplos), como se clasifican.
ÔV ¬ue es un pseudocódigo (Ejemplos).
ÔV ¬ue es un diagrama de flujo de datos, (como se clasifican).
ÔV ¬ue son las variables (ejemplos).
ÔV ¬ue son las constantes (ejemplos).
ÔV îipos de datos.
ÔV peradores (tipos).
ÔV peraciones básicas (algoritmos)

JV aumas.
JV xestas.
JV ultiplicación.
JV ¦ivisiones.

ÔV aímbolos de diagramas de flujo.

(peraciones básicas)

If

If anidados

a itch

a itch anidados

ÔV iclos repetitivos

For

While

¦o While

ÔV 0ectores.
ÔV atrices.

V
^ VV
V

£a 
 es el proceso de diseñar, escribir, probar, depurar y mantener
el código fuente de programas computacionales. El código fuente es escrito
en un lenguaje de programación. El propósito de la programación es crear un
programa que exhiba un comportamiento des eado. El proceso de escribir
código requiere frecuentemente conocimientos en muchas áreas distintas,
como el dominio de la aplicación, algoritmos especializados y lógica formal.

  V

Para que la computadora entienda nuestras instrucciones debe usarse u n


lenguaje específico conocido como código máquina, el cual comprende
fácilmente, pero que lo hace excesivamente complicado para las personas.
¦e hecho sólo consiste en cadenas interminables de números 1 y 0. ( aistema
de números Binario )

Para facilitar el trabajo, los primeros operadores de computadoras decidieron


reemplazar los 1 y 0 por palabras o letras provenientes del inglés; éste se
conoce como lenguaje ensamblador. Por ejemplo, para sumar se usa la letra
A de la palabra inglesa à (sumar). En realidad escribir en lenguaje
ensamblador es básicamente igual que hacerlo en lenguaje máquina, pero las
letras y palabras son más fáciles de recordar y entender que los números.

A medida que la complejidad de las tareas que realizaban las computadora s


aumentaba, se hizo necesario disponer de un método más adecuado para
programarlas. Entonces, se crearon los lenguajes de alto nivel . ientras que
una tarea tan sencilla como sumar dos números 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 compi larlo, es decir, traducirlo a lenguaje
máquina.

£ VV
 V

aptura de la microcomputadora ommodore PEî  mostrando un


programa en el lenguaje de programación BAaI, bajo el emulador 0IE en
una distribución GNU/£inux.
Un ‘ V V 
 es un idioma artificial diseñado para expresar
computaciones que pueden ser llevadas a cabo por máquinas como las
computadoras. Pueden usarse para crear programas que controlen el
comportamiento físico y lógico de una máquina, para expresar algoritmos con
precisión, o como modo de comunicación humana. [1] Está formado por un
conjunto de símbolos y reglas sintácticas y semánticas 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 código
fuente de un programa informático se le llama programación.

îambién la palabra programación se define como el proceso de creación de


un programa de computadora, mediante la aplicación de procedimien tos
lógicos, a través de los siguientes pasos:

JV El desarrollo lógico del programa para resolver un problema en


particular.
JV Escritura de la lógica del programa empleando un lenguaje de
programación específico (codificación del programa).
JV Ensamblaje o compilación del programa hasta convertirlo en lenguaje
de máquina.
JV Prueba y depuración del programa.
JV ¦esarrollo de la documentación.

Existe un error común que trata por sinónimos los términos 'lenguaje de
programación' y 'lenguaje informático'. £os lenguajes informáticos engloban a
los lenguajes de programación y a otros más, como por ejemplo H
(lenguaje para el marcado de páginas eb que no es propiamente un
lenguaje de programación, sino un conjunto de instrucciones que permiten
diseñar el contenido de los documentos).

Permite especificar de pàà à sobre qué datos debe operar una
computadora, cómo deben ser almacenados o transmitidos y qué acciones
debe tomar bajo una variada gama de circunstancias. îodo esto, a través de
un lenguaje que intenta estar  à
 àp
 próximo al lenguaje humano o
natural. Una característica relevante de los len guajes de programación es
precisamente que más de un programador pueda usar un conjunto común de
instrucciones que sean comprendidas entre ellos para realizar la construcción
de un programa de forma colaborativa.

  V

ódigo Fortran en una tarjeta perforada, mostrando el uso especializado de


las columnas 1, 6 y 70.
Para que la computadora entienda nu estras instrucciones debe usarse un
lenguaje específico conocido como código máquina, el cual la máquina
comprende fácilmente, pero que lo hace excesivamente complicado para las
personas. ¦e hecho sólo consiste en cadenas extensas de números 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 abstracción de
palabras y letras provenientes del inglés; éste se conoce como lenguaje
ensamblador. Por ejemplo, para sumar se usa la letra A de la palabra inglesa
à (sumar). El lenguaje ensamblador sigue la mism a estructura del lenguaje
máquina, pero las letras y palabras son más fáciles de recordar y entender que
los números.

£a necesidad de recordar secuencias de programación para las acciones


usuales llevó a denominarlas con nombres fáciles de memorizar y asoc iar: A¦¦
(sumar), aUB (restar), U£ (multiplicar), A££ (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 programación, los cuales reciben su denominación
porque tienen una estructura sintáctica similar a los lenguajes escritos por los
humanos, denominados también lenguajes de alto nivel .

£a primera programadora de computadora conocida fue Ada £ovelace, hi ja


de Anabella ilbanke Byron y £ord Byron. Anabella introdujo en las
matemáticas a Ada quien, después de conocer a harles Babbage, tradujo y
amplió una descripción de su máquina analít ica. Incluso aunque Babbage
nunca completó la construcción de cualquiera de sus máquinas, el trabajo
que Ada realizó con éstas le hizo ganarse el título de primera programadora
de computadoras del mundo. El nombre del lenguaje de programación Ada
fue escogido como homenaje a esta programadora.

A finales de 19, John Backus sometió una propuesta a sus superiores en IB
para desarrollar una alternativa más práctica al lenguaje ensamblador para
programar la computadora central IB 704. El histórico equipo Fortran de
Backus consistió en los programadores xichard Goldberg, aheldon F. Best,
Harlan Herrick, Peter aheridan, xoy Nutt, xobert Nelson, Irving Ziller, £ois Haibt y
¦avid aayre.

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


primer compilador Fortran entregado en abril de 197. Esto era un compilador
optimizado, porque los clientes eran reacios a usar un lenguaje de alto nivel a
menos que su compilador pudiera generar código cuyo desemp eño fuera
comparable al de un código hecho a mano en lenguaje ensamblador.

En 1960, se creó B£, uno de los lenguajes usados aún en 010 en


informática de gestión .

A medida que la complejidad de las tareas que realizaban las computadoras


aumentaba, se hizo necesario disponer de un método más eficiente para
programarlas. Entonces, se crearon los lenguajes de alto nivel , como lo fue
BAaI en las versiones introducidas en los microordenadores de l a década de
  
[ . M  ra q  a ar a a   lla  ar  
r  p  
    


   
ar var a  r    l  a   a bla r,   l  a   al 
  


 v l ba ará  l  a.


‘ V
 
T   l  l  a   pr  raa    al  l     f ra  
    

  
pr  v  para la  r p    l  a  y  l  pr    ra  f ra  
        

         
apl a a a   a  ( al  la a   
r   la l   
    
 l   q  f r a par   a l  ). E l   pr  v 
  

    
 f   p r r la  á  a y á  a q   r b    r  ra y
        

 f a  r  p  va  .
 

   V

   
C  fr  a  r  al a  l  l    la  a
      
l r

f r 

    
       
para fa  l ar  l  ra. E   pl   á  r   y .
 
la f r a v bl    l  

a   pr  ra a    l     a .
   

 
     
La ay r a  l  l  a   pr  raa   p ra   al  , 
  
 r,  l a   a    q  l y  palabra , 
r  y
    

    
p  a  ,  a ra  lar a l  l  a  a ral   r  . r  ra par ,
     


ay al  l  a   pr  raa   q   á ráf   
     

  
a ral  a,  l a   r la   v al   r  b l  para  p  f ar 
       

pr  ra a.

La  a
  
 l  a   pr  ra a    r b 

la  b a 
 

    
     
p  bl   l  b l  q  f ra   pr  ra a   á  a  rr  . El

 f a  q 

 l  a a a b a   

b l 
 
a  a  p r

 
   
á  a (ya a f r al   par  l   r   la r f r  a 
    
pl  a  ). ¦a  q  la ay r a  l  l  a    al  ,  
   

       
ar l  ra a  la  a al.



 
La a l
l  a   pr  raa   f  a ral  
     
 
  
 l a   a b a     pr   r  lar  (para la  r  ra
    

      
l  a) y la  a    Ba  - ar (para la  r  ra ra á a). E   



 pl   a ra á a

pl , a a  L

p:
Expresión ::= átomo | lista
Átomo ::= número | símbolo
Número ::= [+]?['0''9']+
aímbolo ::= ['A''Z'<no iki>'</no iki>a''z'].*
£ista ::= '(' expresión* ')'

on esta gramática se especifica lo siguiente:

JV una    puede ser un 


p o una 
à;
JV un 
p puede ser un p o un p  ;
JV un p es una secuencia continua de uno o más dígitos decimales,
precedido opcionalmente por un signo más o un signo menos;
JV un p   es una letra seguida de cero o más caracteres (excluyendo
espacios); y
JV una 
à es un par de paréntesis que abren y cierran, con cero o más
expresiones en medio.

Algunos ejemplos de secuencias bien formadas de acuerdo a esta gramática:

'14', '()', '(a b c (1))'

No todos los programas sintácticamente correctos son semánticamente


correctos. uchos programas sintácticamente correctos tienen inconsistencias
con las reglas del lenguaje; y pueden (dependiendo de la especificación del
lenguaje y la solidez de la implementación) resultar en un error de traducción o
ejecución. En algunos casos, tales programas puede n exhibir un
comportamiento indefinido. Además, incluso cuando un programa está bien
definido dentro de un lenguaje, todavía puede tener un significado que no es
el que la persona que lo escribió estaba tratando de construir.

Usando el lenguaje natural, po r ejemplo, puede no ser posible asignarle


significado a una oración gramáticamente válida o la oración puede ser falsa:

JV "£as ideas verdes y descoloridas duermen furiosamente" es una oración


bien formada gramáticamente pero no tiene significado comúnmente
aceptado.
JV "Juan es un soltero casado" también está bien formada
gramáticamente pero expresa un significado que no puede ser
verdadero.

El siguiente fragmento en el lenguaje  es sintácticamente correcto, pero


ejecuta una operación que no está definida semánticamente (dado que p es
un apuntador nulo, las operaciones p>real y p>im no tienen ningún
significado):

complex *p = NU££;
complex abs_p = sqrt (p>real * p>real + p>im * p>im);

ai la declaración de tipo de la primera línea fuera omitida, el programa


dispararía un error de compilación, pues la variable " p" no estaría definida.
Pero el programa sería sintácticamente correcto todavía , dado que las
declaraciones de tipo proveen información semántica solamente.

£a gramática necesaria para especificar un lenguaje de programación puede


ser clasificada por su posición en la Jerarquía de homsky. £a sintaxis de la
mayoría de los lenguajes de programación puede ser especificada utilizando
una gramática îipo, es decir, son gramáticas libres de contexto. Algunos
lenguajes, incluyendo a Perl y a £isp , contienen construcciones que permiten la
ejecución durante la fase de análisis. £os lenguajes que permiten
construcciones que permiten al programador alterar el comportamiento de un
analizador hacen del análisis de la sintaxis un problema sin decisión ún ica, y
generalmente oscurecen la separación entre análisis y ejecución. En contraste
con el sistema de macros de £isp y los bloques BEGIN de Perl, que pueden
tener cálculos generales, las macros de  son meros reemplazos de cadenas,
y no requieren ejecució n de código.

a
 V V

£a semántica estática define las restricciones sobre la estructura de los textos


válidos que resulta imposible o muy difícil expresar mediante formalismos
sintácticos estándar. Para los lenguajes compilados, la semántica estática
básicamente incluye las re glas semánticas 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 à sean
distintas. uchas restricciones importantes de este tipo, como la validación de
que los identificadores sean usados en los contextos apropiados (por ejemplo
no sumar un entero al nombre de una función), o que las llamadas a subrutinas
tengan el número y tipo de parámetros adecuado, puede ser implementadas
definiéndolas como reglas en una lógica conocida como sistema de tipos.
tras formas de análisis estáticos, como los análisis de flujo de datos, también
pueden ser parte de la semántica estática. Nuevo s lenguajes de
programación como Java y  tienen un análisis definido de asignaciones,
una forma de análisis de flujo de datos, como parte de su semántica estática.

a 
VV V

Un sistema de tipos define la manera en la cual un lenguaje de programaci ón


clasifica los valores y expresiones en
, como pueden ser manipulados
dichos tipos y cómo interactúan. 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 cuestión, detectando ciertas operaciones inválidas.
ualquier sistema de tipos decidible tiene sus ventajas y desventajas: mientras
por un lado rechaza muchos programas incorrectos, también prohíbe algunos
programas correctos aunque poco comunes. Para pode r minimizar esta
desventaja, algunos lenguajes incluyen àà 
, conversiones
explícitas no checadas que pueden ser usadas por el programador para
permitir explícitamente una operación normalmente no permitida entre
diferentes tipos. En la mayoría 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 es pecificar los
tipos. Al diseño y estudio formal de los sistemas de tipos se le conoce como

à 
.

£ VV
V

Programar es más sencillo que aprender una lengua. £a programación se rige


por unas reglas que se asemejan con ciertas difer encias, a las de una lengua
natural. £a particularidad estriba en que las reglas de programación tienen
menor ambigüedad.

En los lenguajes de programación de alto nivel se distinguen diversos


elementos entre los que se incluyen el léxico propio del lenguaje y las reglas
semánticas y sintácticas.


VV ‘ 
V

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 programación concreto) un algoritmo.
Nótese que es la secuencia de instrucciones en sí (la ejecución) la que debe
ser finita, con el número de pasos realizados.

£os programas suelen subdividirse en partes menores (módulos), de modo que


la complejidad algorítmica de cada una de las partes sea menor que la del
programa completo, lo cual ayuda al desarrollo del programa.

aegún Niklaus Wirth, un programa está formado por algoritmos y estructura de


datos.

ae han propuesto diversas técnicas de programación cuyo objetivo es mejorar


tanto el proceso de creación de soft are como su mantenimiento. Entre ellas,
se pueden mencionar las siguientes:

JV programación estructurada
JV programación modular
JV programación orientada a objetos (P)
JV programación declarativa


 ‘ V

El programa escrito en un lenguaje de programación (comprensible por el ser


humano, aunque se suelen c orresponder con lenguajes formales descritos por
gramáticas independientes del contexto) no puede ejecutarlo directamente
una computadora. £a opción más común es compilar el programa
obteniendo un módulo objeto, aunque también puede ejecutarse a través de
un intérprete informático.
El código fuente del programa se debe someter a un proceso de traducción
para convertirse en lenguaje máquina, interpretable por el procesador. A este
proceso se le llama p à .

Normalmente la creación de un programa ejecutable (un típico.exe para


icrosoft Windo s o ¦a) conlleva dos pasos. El primer paso se llama
compilación (propiamente dicho) y traduce el código fuente escrito en un
lenguaje de programación almacenado en un archivo a código en bajo nivel
(normalmente en código objeto, no directamente a lenguaje máquina). El
segundo paso se llama  àà  en el cual se enlaza el código de bajo nivel
generado de todos los ficheros y subprogramas que se han mandado
compilar y se añade el código 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 código objeto a código
máquina, y generando un módulo ejecutable.

Estos dos pasos se pueden hacer por separado, almacenando el resultado de


la fase de compilación en archivos objetos (un típico.obj para icrosoft
Windo s, ¦a o para Unix); para enlazarlos en fases posteriores, o crear
directamente el ejecutable; con lo que la fase de compilación se almacena
sólo temporalmente. Un programa podría tener partes escritas en varios
lenguajes (por ejemplo , ++ y Asm), que se podrían compilar de forma
independiente y luego enlazar juntas para formar un único módulo ejecutable.


VV   V‘V V

Existe una tendencia a identificar el proceso de creación de un programa


informático con la programación, que es cierta cuando se trata de programas
pequeños para uso personal, y que dista de la realidad cuando se trata de
grandes proyectos.

El proceso de creación de soft are, desde el punto de vista de la ingeniería,


incluye los siguientes pasos:

1.V xeconocer la necesidad de un programa para solucionar un problema


o identificar la posibilidad de automatización de una tarea.
.V xecoger los requisitos del programa. ¦ebe quedar claro qué es lo que
debe hacer el programa y para qué se necesita.
.V xealizar el análisis de los requisitos del programa. ¦ebe quedar claro
cómo debe realizar el programa las cosas que debe hacer. £as pruebas
que comprueben la validez del programa se pueden especificar en
esta fase.
4.V ¦iseñar la arquitectura del programa. ae debe descomponer el
programa en partes de complejidad abordable.
.V Implementar el programa. onsiste en realizar un diseño detallado,
especificando completamente todo el funcionamiento del programa,
tras lo cual la codificación debería resultar inmediata.
6.V Implantar (instalar) el programa. onsiste en poner el programa en
funcionamiento junto con los componentes que pueda necesitar (bases
de datos, redes de comunicaciones, etc.).
£a ingeniería del soft are se centra en los pasos de planificación y diseño del
programa, mientras que antiguamente (programación artesanal) la realización
de un programa consistía únicamente en escribir el código.

£ V V VV‘ V V  V

ae dice que un lenguaje tiene


 si la especificación de cada operación
define tipos de datos para los cuales la operación es aplicable, con la
implicación de que no es aplicable a otros tipos. Por ejemplo, " this text
bet een the quotes" es una cadena. En la mayoría de los lenguajes de
programación, dividir un número por una cadena no tiene ningún significado.
Por tanto, la mayoría de los lenguajes de progr amación modernos rechazaran
cualquier intento de ejecutar dicha operación por parte de algún programa.
En algunos lenguajes, estas operaciones sin significado son detectadas
cuando el programa es compilado (validación de tipos "estática") y son
rechazadas por el compilador, mientras en otros son detectadas cuando el
programa es ejecutado (validación de tipos "dinámica") y se genera una
excepción en tiempo de ejecución.

Un caso especial de lenguajes de tipo son los lenguajes de


 . Estos
son con frecuencia lenguajes de marcado o de scripts, como xEXX o aG£, y
solamente cuentan con un tipo de datos; comúnmente cadenas de
caracteres que luego son usadas tanto para datos numéricos como
simbólicos.

En contraste, un lenguaje 


, como la mayoría de los lenguajes
ensambladores, permiten que cualquier operación se aplique a cualquier
dato, que por lo general se consideran secuencias de bits de varias longitudes.
£enguajes de alto nivel  à
 incluyen BP£ y algunas variedades d e Forth.

En la práctica, aunque pocos lenguajes son considerados con tipo desde el


punto de vista de la teoría de tipos (es decir, que verifican o rechazan
 à
las operaciones), la mayoría de los lenguajes modernos ofrecen algún grado
de manejo de tipos. ai bien muchos lenguajes de producción proveen medios
para brincarse o subvertir el sistema de tipos.

î V VV V 


 V

En lenguajes con


 se determina el tipo de todas las expresiones
antes de la ejecución del programa (típicamente al compilar). Por ejemplo, 1 y
(+) son expresiones enteras; no pueden ser pasadas a una función que
espera una cadena, ni pueden guardarse en una variable que está definida
como fecha.

£os lenguajes con tipos estáticos pueden manejar tipos   


 o tipos
 . 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  los tipos de las expresiones y las
declaraciones de acuerdo al contexto. £a mayoría de los lenguajes populares
con tipos estáticos, tales como ++,  y Java, manejan tipos explícitos.
Inferencia total de los tipos suele asociarse con lenguajes menos populares,
tales como Haskell y £. ain embargo, muchos lenguajes de tipos explícitos
permiten inferencias parciales de tipo; tanto Java y , por ejemplo, infieren
tipos en un número limitado de casos.

£os lenguajes con tipos dinámicos determinan la validez de los tipos


involucrados en las operaciones durante la ejecución del programa. En otras
palabras, los tipos están asociados con à     en lugar de
 

à . omo en el caso de lenguajes con tipos inferidos, los
lenguajes con tipos dinámicos no requieren que el programador escriba lo s
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 ejecución de un programa. ain embargo, los errores de tipo
no pueden ser detectados automáticame nte hasta que se ejecuta el código,
dificultando la depuración de los programas. xuby, £isp, Javaacript y Python
son lenguajes con tipos dinámicos.

î V ‘VV VV

£os
    permiten que un valor de un tipo pueda ser tratado como de
otro tipo, por ejemplo una cadena puede ser operada como un número. Esto
puede ser útil a veces, pero también puede permitir ciertos tipos de fallas que
no pueden ser detectadas durante la compilación o a veces ni siquiera
durante la ejecución.

£os

 evitan que paso lo anterior. ualquier intento de llevar a cabo
una operación sobre el tipo equivocado dispara un error. A los lenguajes con
tipos fuertes se les suele llamar 
.

£enguajes con tipos débiles como Perl y Javaacript permit en un gran número
de conversiones de tipo implícitas. Por ejemplo en Javaacript la expresión  * x
convierte implícitamente x a un número, y esta conversión es exitosa inclusive
cuando x es null, undefined, un Array o una cadena de letras. Estas
conversiones implícitas son útíles con frecuencia, pero también pueden ocultar
errores de programación.

£as características de 

 y 
 son ahora generalmente consideradas
conceptos ortogonales, pero su trato en di ferentes textos varia. Algunos utilizan
el término 
 
 para referirse a
 
p
 

 o, para
aumentar la confusión, simplemente como equivalencia de


. ¦e
tal manera que  ha sido llamado tanto lenguaje de tipos fu ertes como
lenguaje de tipos estáticos débiles.

V
½‘  V

# # '
C  f pr ra $a ! r l l !" a ! ! pr ra$a &" (ava.
%
!" ! ! " &   !" !

# '
La pl !$!" a &" ! " l !" a ! ! la q ! pr v !! "a $a "!ra ! q ! !
% %
$
' # # #
" pr ra $a para "a ! !r $"a a &$b "a &" ! f ar! ' y
%
! !& !
* %# # #
)ar  ar!. E  !" bá &a$!" !  $a "!ra ! $pl !$!" ar " l !" a !:
% % %

# #
&$p la &" ! " !rpr ! a &".

4 4
C +,p -la .-/0: 1
2
1l pr +.1 + q 31
2
ra 53.1 30 pr7 +6ra ,a 1 .r- + 10 30
2
JV
7 4
l 1063a 1 51 pr +6ra,a .-/0 a + r + l 1063a 1 51 pr +6ra,a .-/0,
4
6101ra 05+ pr +6ra,a 1q 3-val 10 1 q 31 la ,áq 3-0a 1rá .apa
2 8
30
4 4 4 4 24
-0 1rpr 1 ar. L + pr +6ra ,a ra 53. +r 1 q 31 p 31510 r 1al - ar 1 a
2 2 2 8

24
+p 1ra .-/0 lla,a 0 .+,p-la 5+r 1 . É + , .+,+ : l + pr +6ra,a
2 2 2 2 2
1

10 a ,bla 5+r 1 ava 0 a 5+ , p 31510 6101rar ,3.9a l 01a 51 ./5-6+


2 2 8 2 2 2

4
51 ,áq 3-0a p +r .a 5a pr +p + -.-/0 51l pr +6ra ,a f 310 1.
2

JV ½ rpra ;<= :  > a a a ; ?  fa ?@ a la fr A>la b
B B
f @rAa ?a ? > l a  f @rAal. C @A@ l @ l a  f @rAal p 
f r  
rA  praA   á ,  frAla b f rAa a
p  r Aá q a  a   b l      fa . C a
 rpra  ra  fa a a fr la.
B
a p  a b
lar  a alr ava para ra r l a   al vl.
E lar  B
ra r l pr ra a f  y rabar  f r a pr a   l
  b  q  pr  ra  la  pla para larl   a
 fra, l pr ra a r l ara l pr ra a f   la
D
 pa ra    l  a  q  va a pr ar.   a , 
pr ra a  
rpr, al a a  l  a prav l  ,  l
 a ra pr a    r  la áq a,  vr a a pr p 
l pr ra a f   l a  áq a  f r  vaya 
ar ra  l pr a    l  a . El   b  raba
para larl p r r  .

La   v q  l  a  r ,  la brá  rprar ra v


y ra r a l a áq a. E r  pl , ra  l pr a  
rpv  l  pa    l bl, a a  r l bl  rá
q v lvr a r  rpra a  a a  rp a l l , l al
Fa q l pr ra a a á l    p   (p rq  va
rva l     p   ) pr á ráp   p 
 (p rq    q ar  pla a a a   l  
completo). El intérprete elimina la necesidad de realizar una compilación
después de cada modificación del programa cuando se quiere agregar
funciones o corregir errores; pero es obvio que un programa objeto compilado
con antelación deberá ejecutarse con mucha mayor rapidez que uno que se
debe interpretar a cada paso durante una ejecución del código.

£a mayoría de lenguajes de alto nivel permiten la programación


multipropósito, sin embargo, muchos de ellos fueron diseñados para permitir
programación dedicada, como lo fue el Pascal con las matemáticas en su
comienzo. îambién se han implementado lenguajes educativos infantiles
como £ogo 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 colección de módulos.

   
V

£os programas se pueden clasificar por el paradigma del lenguaje que se use
para producirlos. £os principales paradigmas son: imperativos, declarativos y
orientación a objetos .

£os programas que usan un lenguaje imperativo especifi can un algoritmo, usan
declaraciones, expresiones y sentencias. [] Una declaración asocia un nombre
de variable con un tipo de dato, por ejemplo: var x: integer;. Una expresión
contiene un valor, por ejemplo:  +  contiene el valor 4. Finalmente, una
sentencia debe asignar una expresión a una variable o usar el valor de una
variable para alterar el flujo de un programa, por ejemplo: x :=  + ; if x == 4
then haz_algo();. Una crítica común en los lenguajes imperativos es el efecto
de las sentencias de asignación sobre una clase de variables llamadas "no
locales".[4]

£os programas que usan un lenguaje declarativo especifican las propiedades


que la salida debe conocer y no especifica cualquier detalle de
implementación. ¦os amplias categorías d e lenguajes declarativos son los
lenguajes funcionales y los lenguajes lógicos . £os lenguajes funcionales no
permiten asignaciones de variables no locales, así, se hacen más fácil, por
ejemplo, programas como funciones matemáticas. [4] El principio detrás de los
lenguajes lógicos es definir el problema que se quiere resolver (el objetivo) y
dejar los detalles de la solución al sistema. [] El objetivo es definido dando una
lista de subobjetivos. ada subobjetivo también se define dando una lista de
sus subobjetivos, etc. ai al tratar de buscar una solución, una ruta de sub
objetivos falla, entonces tal subobjetivo se descarta y sistemáticamente se
prueba otra ruta.

£a forma en la cual se programa puede ser por medio de texto o de forma


visual. En la programación visual los elementos son manipulados gráficamente
en vez de especificarse por medio de texto.

V
£a G  VV£aV£aVV V
G G G

£V   G

El lenguaje máquina es el único que entiende directamente la computadora,


ya que está escrito en lenguajes directamente inteligibles por la máquina
(computadora), utiliza el alfabeto binario, que consta de los dos únicos
símbolos 0 y 1, denominados bits (abreviatura inglesa de dígitos binarios). aus
instrucciones son cadenas binarias (cade nas o series de caracteres de dígitos 0
y 1) que especifican una operación y, las posiciones (dirección) de memoria
implicadas en la operación se denominan instrucciones de máquina o código
maquina. Fue el primer lenguaje utilizado en la programación de
computadoras, pero dejo de utilizarse por su dificultad y complicación, siendo
sustituido por otros lenguajes más fáciles de aprender y utilizar, que además
reducen la posibilidad de cometer errores. El lenguaje máquina es el conocido
código binario. General mente, en la codificación de los programas se
empleaba el sistema hexadecimal para simplificar el trabajo de escritura.
îodas las instrucciones preparadas en cualquier lenguaje máquina tienen por
lo menos dos partes. £a primera es el comando u operación, q ue dice a las
computadoras cual es la función que va a realizar. îodas las computadoras
tienen un código de operación para cada una de las funciones. £a segunda
parte de la instrucción es el operando, que indica a la computadora donde
hallar o almacenar los datos y otras instrucciones que se van a manipular, el
número de operándoos de una instrucción varia en distintas computadoras.

0entajas del lenguaje máquina: posibilidad de cargar (transferir un programa


a la memoria) sin necesidad de traducción posteri or, lo que supone una
velocidad de ejecución superior a cualquier otro lenguaje de programación.

¦esventajas del lenguaje máquina: dificultad y lentitud en la codificación.


Poca fiabilidad. Gran dificultad para verificar y poner a punto los programas.
£os programas solo son ejecutables en el mismo procesador (PU). En la
actualidad, las desventajas superan a las ventajas, lo que hace prácticamente
no recomendables a los lenguajes máquina.

EJEP£a

Es la lengua nativa de la PU.

ada diseño de PU tiene su propio ‘ VV


   ! Este es el juego de
instrucciones que usa el chip para sí mismo. Está hecho de ceros y unos
(números binarios) y resulta muy difícil para el trabajo de la gente.

10  El ‘ V V


   parece compuesto de números
11 FF solamente. En el segmento de un programa que vemos a la
1 1 izquierda, la primer columna le dice a la computadora dónde
1 10 llenar su memoria y en la segunda columna sobre una base
14 0 " 
‘ (base 16) figuran los valores que debe poner en
1  dichas locaciones de las memorias.
16 0
17 40
1 0 -ààppà  p à pà  à 
p
à
19 00 à

tro ejemplo de ‘ VV


   es el siguiente:

El segmento de código en lenguaje   es:

int counter = 0;
counter = counter + 1;
podría ser trasladado en lenguaje de máquina como

000101000100010001000100001000101010111110
000001110101000111110000100010000010101010

£aVV#V £
H

aon más fáciles de utilizar que los lenguajes máquina, pero al igual que ellos,
dependen de la máquina 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 más similar a los utilizados por las
personas. Este intenta desflexibilizar la representación de los diferentes campos.
Esa flexibilidad se consigue no escribiendo los campos en binario y
aproximando la escritura al lenguaje. A principios de la dé cada de los 0 y con
el fin de facilitar la labor de los programadores, se desarrollaron códigos
mnemotécnicos para las operaciones y direcciones simbólicas. £os códigos
mnemotécnicas son los símbolos alfabéticos del lenguaje maquina. £a
computadora sigue utilizando el lenguaje máquina para procesar los datos,
pero los programas ensambladores traducen antes los símbolos de código de
operación especificados a sus equivalentes en el lenguaje maquina. En la
actualidad los programadores no asignan números de di rección reales a los
datos simbólicos, simplemente especifican donde quieren que se coloque la
primera localidad del programa y el programa ensamblador se encarga de lo
demás, asigna localidades tanto para las instrucciones como los datos. Estos
programas de ensamble o ensambladores también permiten a la
computadora convertir las instrucciones en lenguaje ensamblador del
programador en su propio código maquina. Un programa de instrucciones
escrito en lenguaje ensamblador por un programador se llama programa
fuente. ¦espués de que el ensamblador convierte el programa fuente en
código maquina a este se le denomina programa objeto. Para los
programadores es más fácil escribir instrucciones en un lenguaje ensamblador
que en código de lenguaje maquina pero es pos ible 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 programación que el ordenador
puede entender a la hora de ejecutar programas, lo que aumenta su
velocidad de ejecución, pues no necesita un intérprete que traduzca cada
línea de instrucciones.

0isto a muy bajo nivel, los microprocesadores procesan exclusivamente


señales electrónicas binarias. ¦ar una instrucci ón a un microprocesador
supone en realidad enviar series de unos y ceros espaciadas en el tiempo de
una forma determinada. Esta secuencia de señales se denomina código
máquina. El código representa normalmente datos y números e instrucciones
para manipularlos. Un modo más fácil de comprender el código máquina es
dando a cada instrucción un mnemónico, como por ejemplo aîxE, A¦¦ o
JUP. Esta abstracción da como resultado el ensamblador, un lenguaje de
muy bajo nivel que es específico de cada microprocesador.

£os lenguajes de bajo nivel permiten crear programas muy rápidos, pero que
son, a menudo, difíciles de aprender. ás importante es el hecho de que los
programas escritos en un bajo nivel sean altamente específicos de cada
procesador. ai se lleva el progra ma a otra máquina se debe reescribir el
programa desde el principio.

0entajas del lenguaje ensamblador frente al lenguaje máquina: mayor


facilidad de codificación y, en general, su velocidad de cálculo, ahorran
tiempo y requieren menos atención a detalles . ae incurren en menos errores y
los que se cometen son más fáciles de localizar. îanto el lenguaje maquina
como el ensamblador gozan de la ventaja de mínima ocupación de memoria
y mínimo tiempo de ejecución en comparación con el resultado de la
compilación del programa equivalente escrito en otros lenguajes. £os
programas en lenguaje ensamblador son más fáciles de modificar que los
programas en lenguaje máquina.

¦esventajas del lenguaje ensamblador: dependencia total de la maquina lo


que impide la transportabilidad de los programas (posibilidad de ejecutar un
programa en diferentes máquinas). El lenguaje ensamblador del P es distinto
del lenguaje ensamblador del Apple achintosh. £a formación de los
programadores es más compleja que la correspondiente a l os programadores
de alto nivel, ya que exige no solo las técnicas de programación, sino también
el conocimiento del interior de la maquina El programador ha de conocer
perfectamente el hard are del equipo, ya que maneja directamente las
posiciones de memoria, registros del procesador y demás elementos físicos.
îodas las instrucciones son elementales, es decir, en el programa se deben
describir con el máximo detalle todas las operaciones que se han de efectuar
en la máquina para la realización de cualquier p roceso.

£os lenguajes ensamblador tienen sus aplicaciones muy reducidas, se centran


básicamente en aplicaciones de tiempo real, control de procesos y de
dispositivos electrónicos.

0istos a muy bajo nivel, los microprocesadores procesan exclusivamente


señales electrónicas binarias. ¦ar una instrucción a un microprocesador
supone en realidad enviar series de unos y ceros espaciadas en el tiempo de
una forma determinada. Esta secuencia de señales se denomina código
máquina. El código representa normalmente da tos y números e instrucciones
para manipularlos. Un modo más fácil de comprender el código máquina es
dando a cada instrucción un mnemónico, como por ejemplo aîxE, A¦¦ o
JUP. Esta abstracción da como resultado el ensamblador, un lenguaje de
muy bajo nivel que es específico de cada microprocesador.

£os lenguajes de bajo nivel permiten crear programas muy rápidos, pero que
son a menudo difíciles de aprender. ás importante es el hecho de que los
programas escritos en un bajo nivel sean altamente específicos de cada
procesador. ai se lleva el programa a otra máquina se debe reescribir el
programa desde el principio.

£ V
‘ V$‘%

Este intenta deflexibilizar la representación de los diferentes campos, esa


flexibilidad se consigue no escribiendo lo s campos en binario y aproximando la
escritura al lenguaje

£aVV£îV £
I

Estos lenguajes son los más utilizados por los programadores. Están diseñados
para que las personas escriban y entiendan los programas de un modo mucho
más fácil que los lenguajes máquina y ensamblador. Un programa escrito en
lenguaje de alto nivel es independiente de la máquina (las instrucciones no
dependen del diseño del hard are o de una computadora en particular), por
lo que estos programas son portables o transportab les. £os programas escritos
en lenguaje de alto nivel pueden ser ejecutados con poca o ninguna
modificación en diferentes tipos de computadoras. aon lenguajes de
programación en los que las instrucciones enviadas para que el ordenador
ejecute ciertas órdenes son similares al lenguaje humano. ¦ado que el
ordenador no es capaz de reconocer estas órdenes, es necesario el uso de un
intérprete que traduzca el lenguaje de alto nivel a un lenguaje de bajo nivel
que el sistema pueda entender.

Por lo general se pie nsa que los ordenadores son máquinas que realizan tareas
de cálculos o procesamiento de texto. £a descripción anterior es sólo una
forma muy esquemática de ver una computadora. Hay un alto nivel de
abstracción entre lo que se pide a la computadora y lo que realmente
comprende. Existe también una relación compleja entre los lenguajes de alto
nivel y el código máquina.

£os lenguajes de alto nivel son normalmente fáciles de aprender porque están
formados por elementos de lenguajes naturales, como el inglés. En BAaI, el
lenguaje de alto nivel más conocido, los comandos como ´IF NîA¦x=10
îHEN aîPµ pueden utilizarse para pedir a la computadora que pare si
NîA¦x 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
rígida y sistemática.

£os lenguajes de alto nivel, también denominados lenguajes evolucionados,


surgen con posterioridad a los anteriores ( lenguaje máquina, lenguajes de bajo
nivel o ensamblador) con los siguientes objetivos, entre otros:

£ograr independencia de la maquina, pudiendo utilizar un mismo programa en


diferentes equipos con la única condición 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.
Además, no se necesita conocer el hard are especifico de dicha maquina.
Aproximarse al lenguaje natural, para que el prog rama se pueda escribir y leer
de una forma más sencilla, eliminando muchas de las posibilidades de
cometer errores que se daban en el lenguaje maquina, ya qu e se utilizan
palabras (en inglés) en lugar de cadenas de símbolos sin ningún significado
aparente.

Incluir rutinas de uso frecuente, como las de entrada / salida, funciones


matemáticas, manejo de tablas, etc., que figuran en una especie de librería
del lenguaje, de manera que se puedan utilizar siempre que se quiera sin
necesidad de programarlas cada v ez.

0entajas de los lenguajes de alto nivel: el tiempo de formación de los


programadores es relativamente corto comparado con otros lenguajes. £a
escritura de programas se basa en reglas sintácticas similares a los lenguajes
humanos, nombres de las instruc ciones tales como xEA¦, WxIîE, PxINî, PEN,
etc. £as modificaciones y puestas a punto de los programas son más fáciles.
xeducción del costo de los programas. îransportabilidad. Permiten tener una
mejor documentación. aon más fáciles de mantener.

Por lo general se piensa que los ordenadores son máquinas que realizan tareas
de cálculos o procesamiento de textos. £a descripción anterior es sólo una
forma muy esquemática de ver una computadora. Hay un alto nivel de
abstracción entre lo que se pide a la computa dora y lo que realmente
comprende. Existe también una relación compleja entre los lenguajes de alto
nivel y el código máquina.

£os lenguajes de alto nivel son normalmente fáciles de aprender porque están
formados por elementos de lenguajes naturales, como el inglés. En BAaI, el
lenguaje de alto nivel más conocido, los comandos como "IF NîA¦x = 10
îHEN aîP" pueden utilizarse para pedir a la computadora que pare si
NîA¦x 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
rígida y sistemática.

¦esventajas 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 máquina y
ensambladores. Aumento de la ocupación de memoria. El tiempo de
ejecución de los programas es mucho mayor.

ae puede decir que el principal problema que presentan los lenguajes de alto
nivel es la gran cantidad de ellos que existen actualmente en uso, además de
las diferentes versiones o dialectos que se han desarrollado de algun os de
ellos. Es difícil establecer una clasificación general de los mismos, ya que en
cualquiera que se realice habrá lenguajes que pertenezcan a más de uno de
los grupos establecidos.

Una clasificación muy extendida, atendiendo a la forma de trabajar de los


programas y a la filosofía con que fueron concebidos, es la siguiente:

JV £ V
   . Utilizan instrucciones como unidad de trabajo de
los programas (obol, Pascal, , Ada).

JV £ V  ‘    . £os programas se construyen mediante


descripciones de funciones o expresiones lógicas (£isp, Prolog).

JV £ V  V V . El diseño de los programas se basa más
en los datos y su estructura. £a unidad de proceso es el objeto y en el se
incluyen los datos (variables) y las operaciones que actúan sobre ellos
(amalltalk, ++).

JV £ V   V ‘V ‘


. ¦iseñados para problemas
específicos, principalmente de gestión, suelen ser generadores de
aplicaciones.(Fortran)

JV £ V   ‘ . Están desarrollándose nuevos lenguajes con el


principal objetivo de aproximar el diseño y construcción de programas
al lenguaje de las personas.

tra clasificación que se puede hacer es la de atendiendo al desarrollo de los


lenguajes desde la aparición de las computadoras, que sigue un cierto
paralelismo con las generaciones establecidas en la evolución de las mismas:

JV 
 V !V £enguajes maquina y ensambladores.

JV a V  !V Primeros lenguajes de alto nivel imperativo


(FxîxAN, B£).

JV î  V  !V £enguajes de alto nivel impera tivo. aon los mas
utilizados y siguen vigentes en la actualidad (A£G£ , P£/I, PAaA£,
¦U£A).

JV   V  ! rientados básicamente a las aplicaciones de


gestión y al manejo de bases de datos (NAîUxA£, a¬£).
JV   V  ! rientados a la inteligencia artificial y al
procesamiento de los lenguajes naturales (£IaP, Px£G).

£&îV

¿¬ué es un ‘ 
 ?:
   V Un ‘ 
V es un conjunto finito de pasos específicos y
organizados para realizar una labor.
Un algoritmo es una secuencia de pasos lógicos necesarios para llevar a cabo
una tarea específica, como la solución de un problema. £os algoritmos son
independientes tanto del lenguaje de programación en que se expresan
como de la computadora que los ejecu ta. En cada problema el algoritmo se
puede expresar en un lenguaje diferente de programación y ejecutarse en
una computadora distinta.
aracterísticas de los algoritmos
£as características fundamentales que debe cumplir todo algoritmo son:
· Un algoritmo debe ser preciso e indicar el orden de realización de cada
paso.
· Un algoritmo debe estar definido. ai se sigue un algoritmo dos veces, se debe
obtener el mismo resultado cada vez.
· Un algoritmo debe ser finito. ai se sigue un algoritmo, se debe termina r en
algún momento; o sea debe de tener un número finito de pasos.

£aV£&îaVaV£a& &V V

1.rdenamiento Burbuja.

Este es el algoritmo más sencillo probablemente. Ideal para empezar. onsiste


en ciclar repetidamente a través de la lista, co mparando elementos
adyacentes de dos en dos. ai un elemento es mayor que el que está en la
siguiente posición se intercambian.

0entajas:

· Fácil implementación.
· No requiere memoria adicional.

¦esventajas:

· uy lento.
· xealiza numerosas comparaciones.
· xealiza numerosos intercambios.

.rdenamiento por aelección

Este algoritmo también es sencillo. onsiste en lo siguiente:


· Buscas el elemento más pequeño de la lista.
· £o intercambias con el elemento ubicado en la primera posición de la lista.
· Buscas el segundo elemento más pequeño de la lista.
· £o intercambias con el elemento que ocupa la segunda posición en la lista.
· xepites este proceso hasta que hayas ordenado toda la lista.

0entajas:
· Fácil implementación.
· No requiere memoria adicional.
· xealiza pocos intercambios.
· xendimiento constante: poca diferencia entre el peor y el mejor caso.

¦esventajas:

· £ento.
· xealiza numerosas comparaciones.

.rdenamiento por Inserción

En este tipo de algoritmo los elementos que van a ser ordenados son
considerados uno a la vez. ada elemento es INaExîA¦ en la posición
apropiada con respecto al resto de los elementos ya ordenados.

0entajas:
· Fácil implementación.
· xequerimientos m ínimos de memoria.

¦esventajas:
· £ento.
· xealiza numerosas comparaciones.
Este también es un algoritmo lento, pero puede ser de utilidad para listas que
están ordenadas o semiordenadas, porque en ese caso realiza muy pocos
desplazamientos.

4.rdenamiento xápido (¬uicksort)

Esta es probablemente la técnica más rápida conocida. Fue desarrollada por


.A.x. Hoare en 1960. El algoritmo original es recursivo, pero se utilizan versiones
iterativas para mejorar su rendimiento (los algoritmos recursivos son en general
más lentos que los iterativos, y consumen más recursos). El algoritmo
fundamental es el siguiente:
· Eliges un elemento de la lista.
· Buscas la posición que le corresponde en la lista ordenada.
· Acomodas los elementos de la lista a cada lado del elemento de división, de
manera que a un lado queden todos los menores que él y al otro los mayores .
En este momento el elemento de división separa la lista en dos sublistas.
· xealizas esto de forma recursiva para cada sublista mientras éstas tengan un
largo mayor que 1. Una vez terminado este proceso todos los elementos
estarán ordenados.
Una idea preliminar para ubicar el elemento de división en su posición final
r a  ar la a  a  l     r y  l arl  lar á
arrba. Jr l Kabr a q vr     l    a la qr a l
l   , para q   pla la   y p a aplar la rrv a .
Rfl a  p  á  b   pr      á fv .
a la  : , al q lla ar   a r p r la qr a, y , al q
lla ar   a r p r la ra. El al r 
:
L R rr la la  lá a     y : p r la qr a   (   l
pr r l   ), y p r la ra   (   l l l   ).
L Ca la a ay r q l l    v y la M a  r l 
 ra ba.
L Rp  aa q  r l  .
L El p   q  ra l    la p  a a a para  l ar l
l    v , p rq ab  q a  la l  l      
 r y al r    ay r ( abr a   ra ba ).
N
l f alar  pr     l l    v q a   a p 
 q   l  l    a  qr a   r q
l, y l  q á
a  ra  ay r.

V aa:
L My ráp

L O rqr  ra a  al.

¦v aa:
L ½ pl  a  p  á  pla a.
L Rrv a (la   rr ).

L Ma fr a  r l p r y l  r a .

L  ara a  fl rv para rpr ar al r   a ra ráfa.
a&V

El pseudocódigo (falso lenguaje) es comúnmente utilizado por los


programadores para omitir secciones de código o para dar una explicación
del paradigma que tomó el mismo programador para hacer su s códigos esto
quiere decir que el pseudocódigo no es programable sino facilita la
programación.

El principal objetivo del pseudocódigo es el de representar la solución a un


algoritmo de la forma más detallada posible, y a su vez lo más parecida
posible al lenguaje que posteriormente se utilizara para la codificación del
mismo.

   VV V

£as principales características de este lenguaje son:

1.V ae puede ejecutar en un ordenador


.V Es una forma de representación sencilla de utilizar y de manipular.
.V Facilita el paso del programa al lenguaje de programación.
4.V Es independiente del lenguaje de programación que se vaya a utilizar.
.V Es un método que facilita la programación y solución al algoritmo del
programa.

îodo documento en pseudocódigo debe permitir l a descripción de:

1.V Instrucciones primitivas.


.V Instrucciones de proceso.
.V Instrucciones de control.
4.V Instrucciones compuestas.
.V Instrucciones de descripción.

Estructura a seguir en su realización:

1.V abecera.
1.V Programa.
.V odulo.
.V îipos de datos.
4.V onstantes.
.V 0ariables.
.V uerpo.
1.V Inicio.
.V Instrucciones.
.V Fin.

  VV V‘V   V

£a definición 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
p   para f r rra  a , a par la arr llar 
a a a  .

Fu
P V V 
 V

Ca a a r a  pr p p     rpva  v  .


Q r  pl , la  r "r pla l val r  la varabl è p r l val r 
la varabl " p  r rpr a  :

JV V V ‘V ‘ VV

La pra  ar


a  rpr a  la f r a al  a áa.

‘ VV u


 

‘ RV  ‘ ' V ‘V  u


  V V uV    V uV   V

‘
u‘ V‘V VVuV
u‘ VVV  u
V‘ V V
V‘ V ‘u V  V V ‘ ' V‘V

u‘ ..

Sr ra a; ára
T T T T T
E  r : B aE, LT UR , RE   r  r 
T
l r :
rbr ß½ r a la ba y la alraß
V V V
lr B aE, LT WR
V V V V V
allar RE = B aE X LT WR V V
rbr ßEl ára l rá l  ß RE
Y pr ra a
‘ ZV ‘ ' V‘V u
  V uV  V ‘Vu u  V  u
V V

‘  V  V   V
‘
u‘  V ‘ V u V V ‘V  u
 V V ‘ V
  
[r ra a: a a [r 
] ] ]
E  r : \OT [,\OT 2,aM , [RO¦CTO   r   r 
]
l r :
rbr ß½ r a la a ß
_ _
lr ^OT [,^OT 2
calcular aUA = NîA1 + NîA
calcular Px¦Uî = NîA1 * NîA
escribir ߣa suma de las dos notas es:ß aUA
escribir ßEl producto de las dos notas es :ßPx¦Uî
Finprograma


‘ V ‘ ' V‘V  VVV
V V
 V V
 VV(
VV
)V
VV  ‘V V  .

Programa: omparaNúmeros
Entorno: NUEx es un número entero
Algoritmo:
Escribir ßIntroduzca un número ß
leer NUEx
aI NUEx>0 ENîNEa
escribir ßEl número introducido es positivo ß
aI N
aI NUEx<0 ENîNEa
escribir ßEl número introducido es negativo ß
aI N
escribir ßEl número es ceroß
FINaI
FINaI
Finprograma

&VV £VVîaV

&VV £V

Es un grafico lógico del plan de trabajo que se ejecutara para la solución de


un determinado problema. A través de él, se planifica la solución del problema
independiente del lenguaje de computación a usar. ¦e esta manera se
separa loas instrucción es un lenguaje determinado con todas las reglas.

£as capacidades humanas necesarias para elaborar un diagrama de flujo


correcto son: £ógico, Prácticas, y Atención.

El empleo de la maquina en las funciones del procediendo de datos han


hecho necesario un flujo ordenado de la información. £a secuencia en que
deberán 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 información.

No puede hacerse mucho hincapié en documentación, ósea el registro de


Información .ain Instrucciones escritas y sin representación grafica del flujo de
trabajo seria muy difícil de llevar una tarea de procediendo de datos en forma
apropiada. Hay varios métodos mas eficientes organizados y normalizados, es
el de los diagramas de Flujo que el Futuro programador comprenda la
necesidad de los diagrama de flujo.

#î&aVVV&VV £V

a.V Estructura la solución del proble ma independiente del lenguaje a utilizar.


b.V aeparar la solución lógica de programación de la parte de reglas y
sintaxis de codificación con esta división del trabajo se obtie ne mayor
eficiencia.
c.V ¦ar una visión completa del problema al programador ya que pierde
en un programa ya codificado.
d.V Permitir una compresión más rápida del programa a otros
programadores.

î&aVV&VV £aV

¦iagrama 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 símbolo de
procesamiento.

Ejemplo de ¦iagrama de Flujo de sistema:

&VV £aVV&V

aon las operaciones y decisiones en la secuencia en que las ejecutará una


computadora de procesamiento de datos. £os símbolos representan esas
operaciones e indican el orden en que se ejecutaran. Por lo tanto, un
diagrama de flujo de programa proporciona una descripción grafica del
programa.
Ejemplo de ¦iagrama e Flujo de Programa:

Partes: 1, 

^ VaVV&VV £VVîaV

Es una descripción grafica de un procedimiento para la resolución de un


problema. aon frecuentemente usados para descubrir algoritmos y programas
de computador. £os diagramas de flujos están 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.

¦el aoft are, ¦F¦ es un soft are diseñado para contribuir y analizar algoritmos
se puede crear diagramas de flujos de datos para la representación de
algoritmos de programación estructurada a partir de las herramientas de
edición que para este propósito suministra el programa .¦espués de hacer
haber ingresado el representado por el diagrama, podrá, ejecutarlo analizarlo
y depurarlo en un entorno interactivo diseñado para este fin. £a interfaz grafica
de ¦F¦ facilita en gran medida el trabajo con diagramas ya que simula la
representación estándar de diagramas de flujo en hojas de papel.
£aVîaVVV&VV £Va

JV  
JV ‘
JV ‘

JV î
 

a

El primer componente de diagrama de flujo de datos se conoce como


Proceso. El proceso nuestra una parte del sistema que transforman Entradas y
aalidas. Algunas analistas prefieren usar un ovalo o un rectángulo con esquinas
redondeadas, otros prefieren usar un rectángulo. £as diferencias entre estas
tres formas son puramente cosméticas, aunque obviamente es importante usar
la misma forma de la manera consistente para representar todas las funciones
de un sistema.

£

Un flujo se representa gráficamente por medio de una flecha que entra y sale
de proceso; el flujo se usa para describir el movimiento, de bloques o paquetes
de información de una parte del sistema a otra.

£os flujos realmente representan ¦atos, es decir, Bits caracteres, mensajes,


números, de puntos, flotante y los diversos tipos de información con los que las
computadoras pueden tratar.

£os flujos también muestran la dirección: 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 telefónicos, y el flujo denominado honorarios de entrega de chóferes.
£os datos que se mueven a dicho flujo viajaran ya sea de un proceso a otro.

Ejemplo:
£

ae utiliza para modelar una colección de paquetes de datos en reposo. ae


denota por dos líneas paralelas, de modo característico el nombre que se
utiliza para identificar para los paquetes que entran y salen del almacén por
medios de flujo.

&a

Para el analista con conocimiento de proceso de datos es tentador referirse a


los almacenes como archivos o bases de datos; pro un almacén también
pudiera consistir en datos almacenados también pudiera consistir en datos
almacenados en tarjetas perforadas, microfilm, microfichas, discos ópticos,
etc. y un almacén también puede ser en conjunto de fichas de papel en una
caja de cartón , nombres de fichas de papel en un directorio, diversos archivos
en un archivero, o varias formas no computarizadas.

£os almacenes se conectan por flujos a los procesos. Así el contexto en el que
se muestra en un ¦F¦ (¦iagrama de Flujo de ¦atos) es uno de los siguientes:

JV Un flujo desde un almacén.


JV UN flujo hacia un almacén.

î&

ae representa como un rectángulo como los termina dores ser representa en


entidades externas con las cuales el sistema se comunica, continuamente,
puede ser una persona, o un grupo. Por ejemplo: una organización externa n o
una agencia gubernamental, o un grupo o departamento que este dentro de
la misma compañía u organización, pero fuera del control del sistema que se
esta modelando. En algunos casos, un terminador puede ser otro sistema,
como algún otro sistema computacional con el cual se comunica este.

Existen tres cosas importantes que debemos recordar acerca de los


terminadores.

JV aon externos al sistema que se esta modelando.


JV Es evidente que ni el analista ni el diseñador del sistema están en
posibilidades de cambiar los contenidos de un terminador o la manera
en que esta trabaja.
JV £as relaciones que existen entre lo terminadores no se muestran en el
modelo ¦F¦ (¦iagrama de Flujo de ¦atos).

£aVV£V&VV&aV

1.V £os diagramas de flujo deben escribirse de arriba hacia abajo y/o de
Izquierda a derecha.
.V £os símbolos se unen con líneas, las cuales tienen en la punta una flecha
que indica su dirección que fluye la información procesos, se deben
utilizar solamente línea s de flujo horizontal o vertical (nunca diagonales).
.V ae debe evitar el cruce de líneas, 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 ut ilizar
conectores cuando sean estrictamente necesario.
4.V No deben quedar líneas de flujo sin conectar.
.V îodo texto escrito dentro de un símbolo debe ser legible, preciso,
evitando el uso de muchas palabras.
6.V îodos los símbolos pueden tener mas de una línea de entrada, a
excepto del símbolo final.
7.V aolo los símbolos de decisión pueden y deben tener mas de una línea
de flujo de salida.

Ejemplo de ¦iagrama de Flujo:


¦iagrama de flujo que encuentra la suma de los primeros 0 números
naturales.

JV El quinto bloque es un símbolo 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=0?, obviamente la respuesta es No, ya que N todavía es 1.Por lo que el


flujo de nuestro programa se dirigirá hacia la parte en donde se observa la
palabra No. îercer bloque, este le sumara1 (N=N+1) y vuelve a llegar a este
bloque, donde preguntará ¿es N=0? No todavía es  ha pues regresa al
tercer bloque y vuelve hacer lo mismo así la suma los primeros 0 números
naturales.

JV Por ultimo indicaciones que le resultado será mostrado en la impresora.

*£&&V£V&VV £V

JV El primer bloque indica el inicio del diagrama de flujo.

JV El segundo bloque, es un símbolo 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.

JV îercer bloque, es también un símbolo 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.
JV uarto 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).

îaV£V  VV £aVVîaV

El enfoque de flujo de datos tiene cuatro ventajas principales sobre la


explicación narrativa de la forma en que se mueven los datos a trabes del
sistema .£as ventajas son.

1.V £ibertad para realizar en forma muy temprana la implementa ción de


técnicas de sistema.
.V Una mayor comprensión de las interrelaciones de los sistemas y
subsistemas.
.V omunicación del conocimiento del sistema actual a los usuarios por
medio de diagramas de flujo de datos.
4.V Análisis de un sistema propuesto para determinar si han sido definidas los
datos y procesos necesarios.

a#£aVaaVV£V&VV £VVîaV

V
a&& &VV£aVa#£aVV £

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. £a 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. £a flecha muestra el movimiento de
datos de un punto a otro , esta señalada hacia suceden simultáneamente
pueden ser representadas simplemente mediante el uso de flechas parale las,
debido a que una flecha representada datos acerca de una persona lugar o
casa, también :¦ebe ser descrita con un nombre.

Un rectángulo con esquinas redondeadas es usado para mostrar la aparición


de un proceso de transformación. £os procesos siempre d enotan un cambio o
transformación de los datos.

aVV&aVV £VVîaV

£os diagramas de flujo de datos son útiles a lo largo del proceso de análisis y
diseños, .Existen compromisos para decidir que tanto deben ser explotados de
los flujos de datos. ae 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 están muy poco explotados, pu eden 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 análisis y para ayudar a
sustentar la lógica subyacente en los flujos de datos de la organización.

îaî&aVV£aV&aVV £VVîa

JV uestran que debe hacer el sistema sin referencias.


JV aon diagramas explícitos y comprensibles.
JV ¦an la posibilidad de representan el sistema a diferentes niveles de
complejidad, desde lo mas global a lo mas detallado solo requieren de
4 símbolos.
JV aon fácil de mantenimiento, pues los cambios afectan solo algunos de
sus elementos y no al todo.

^£aVaV£aVîaVV£aV&aVV £VVîa

JV Fácil lectura, con esto se constituye en un instrumento de mucha


versatilidad.
JV Facilitan la interacción UsuarioAnalista.

^£aVaV£aV£&&î&aVV£aV&aVV £VVîa

JV No permite recoger el comportamiento de sistema que deben


responder a eventos en tiempos acotados. Para ello se usa el diagrama
de transición de Estados.
JV No permite dar cuenta de la de las relaciones entre los datos que se
precisan almacenar .Para ello se usan el diagrama Entidad xelación.
JV No permite reflejar situaciones en las cuales es preciso dejar de
manifiesto la necesaria concurrencia de dos o más flujo de datos para
un subproceso pueda iniciar efectivamente su tarea. Para ello se utiliza
la especificación de procesos.
JV No permite recoger el contenido de los flujos de datos ni el contenido
de los archivos .Para ello se utiliza el diccionario de datos.

  ‘V$
%V

En programación, las   ‘ son estructuras de datos que, como su nombre


indica, pueden cam biar de contenido a lo largo de la ejecución de un
programa. Una variable corresponde a un área reservada en la memoria
principal del ordenador pudiendo ser de longitud:

JV Fija. uando el tamaño de la misma no variará a lo largo de la


ejecución del programa. îodas las variables, sean del tipo que sean
tienen longitud fija, salvo algunas excepciones ³ como las colecciones
de otras variables (arrays) o las cadenas.
JV 0ariable. uando el tamaño de la misma puede variar a lo largo de la
ejecución. îípicamente colecciones de datos.

î VV V

¦ebido a que las variables contienen o apuntan a valores de tipos


determinados, las operaciones sobre las mismas y el dominio de sus propios
valores están determinadas por el tipo de datos en cuestión. Algunos tipos de
datos usados:

JV îipo de dato lógico.


JV îipo de dato entero.
JV îipo de dato de coma flotante (real, con decimales).
JV îipo de dato carácter.
JV îipo de dato à à

  ‘VV VV 
V V ‘ 
V

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

JV Por valor. ae 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 subrutin a 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.
ai no se realiza esta operación, el valor de la variable será exactamente
el mismo que tenía antes de pasar por la función.
JV Por referencia. No se pasa el valor directamente de la variable, si no
una referencia o puntero a la misma ³que contiene la dirección 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 modif icaciones que sufra serán accesibles a posteriori.



VV  ‘VV

 V

£as 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 función del tamaño del
mismo determina la cantidad de bytes que serán necesarios para almace nar
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 políticas de reserva d e memoria:

JV xeserva fija de memoria. Implica predeterminar la cantidad de


memoria que se asignará a la colección. Es una política
extremadamente rígida, ya que llegados al final de la zona de memoria
no se podrían almacenar nuevos elementos.
JV xeserva variable de memoria.  ae dedica una zona de memoria,
pudiendo ser de un tamaño predeterminado o no, y en caso de
sobrepasarse dicha zona de memoria se vuelve a asigna r otra zona,
contigua o no, para impedir la restricción mencionada arriba.


 V

xespecto al 
  de una variable, éste puede ser:

JV £ ‘: uando la misma sólo es accesible desde un único


procedimiento hijo, no pudiendo ser leída o modificada desde otro
procedimiento hermano o desde el propio procedimiento padre. Es
posible declarar variables en bloques de condición, bucles, etc de tal
modo que sólo pueda accederse a ellas en el propio bloque.
JV ‘ ‘: uando la misma es accesible tanto desde rutinas o macros de
la aplicación, como en todos los procedimientos y funciones de la
misma.

ai bien es cierto, que de una forma básica, se puede defini r el ámbito de las
variables de la forma expuesta más arriba, existen grados de   à  à de las
mismas, pudiendo ser accesibles desde unos puntos u otros, o incluso
pudiendo ser accesibles entre aplicaciones distintas, llegando al caso de la
  à  à . Ejemplo del ámbito de una variable en el lenguaje de
programación Java.

public class A {
public Integer numeroEntero = ne Integer(); /* 0ariable Global a todos los
étodos */

public Integer metodo() {


int num = 1; // 0ariable £ocal a metodo. Puede accederse dentro de este
método en cualquier parte, pero no fuera del mismo.
for (int i = 0;i<numeroEntero.int0alue();i++) { // i es local al bucle for, sólo
puede ser accedida dentro del mismo.
num *= i;
}
// i = ; Esta línea provocaría error al no haber declarado la variable i. i fue
definida localmente al bucle for.
return Integer.valuef(num);
}

public void otroetodo() {


int num = 1; // 0ariable local a otroetodo. num aquí es una variable
distinta a la variable num de metodo
aystem.out.println("0ariable local num: " + num);
}
}
à

àà à à  à àà   à 
à
  p
 
àà àà  à
à  
à à p
  à       
  à
 à 
pà à  
 à à  à 
   à
 
 àpà 
p 
  à
 
   
   à   
 
à à 
pà àp
àà àà   àà 
 p
 
à p
 


Ejemplo

Una variable en programación es un espacio en memoria que permite


almacenar información dentro de sí. Esa información puede ser un caracter,
una cadena de caracteres, un número, un arreglo y, en general, cualquier
otro tipo de datos.

En tanto una constante es también 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 + 
a := 

Aquí tenemos dos variables, "a" y "b" que almacenan valores numéricos enteros
(int). £a variable "a" almacena primero el número 1, luego "b" almacena el
numero que tiene "a" más , por lo tanto "b" almacena un . Finalmente el valor
de "a" es reemplazado por un , por lo tanto las variables contendrán estos
datos al final:
a=
b=
 V

En programación, una constante es un valor que no puede ser alterado


durante la ejecución 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:

JV El valor de pi = .1416

Por conveniencia, el nombre de las constantes suele escribirse en mayúsculas


en la mayoría de lenguajes.


‘VV V  VV 

V$+ % V

En  o ++ las constantes se declaran con la directiva +  , 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 dígito numérico , etc).

Ejemplo:

include <stdio.h>
define PI .14196

int main()
{
printf("Pi vale %f", PI);
return 0;
}

£o cual mostrará por pantalla:

Pi vale .14196

Es decir, & es una constante a la que le hemos asignado el valor ,!-.-/012


mediante la directiva +  .

£a directiva +  también se puede utilizar para definir expresiones más


elaboradas con operadores (suma, resta, multiplicación etc) y otras constantes
que hayan sido definidas previamente, por ejemplo:

define X .4
define Y 9.
define Z X + Y
î VV V

En los lenguajes de programación un  VV  es un atributo de una parte


de los datos que indica a l 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. îipos de datos comunes son: enteros, números de coma flotante
(decimales), cadenas alfanuméricas, fechas, horas, colores, coches o
cualquier cosa que se nos ocurra. Por ejemplo, en Java, el tipo "int" representa
un conjunto de enteros de  bits cuyo rango va desde el .147.4.64 al
.147.4.647, así como las operaciones que se pueden realizar con los enteros,
como la suma, resta y multiplicación. £os 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 adición y sus tracción, pero no la
multiplicación.

Éste es un concepto propio de la informática, más específicamente de los


lenguajes de programación, aunque también se encuentra relacionado con
nociones similares de las matemáticas y la lógica.

En un sentido amplio, un tipo de datos define un conjunto de valores y las


operaciones sobre estos valores. [1] asi todos los lenguajes de programación
explícitamente incluyen la notación del tipo de datos, aunque lenguajes
diferentes pueden usar terminología diferente. £a mayor parte de los lenguajes
de programación permiten al programador definir tipos de datos adicionales,
normalmente combinand o múltiples 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 también visto como una limitación impuesta en la
interpretación de los datos en un sistema de tipificación , describiendo la
representación, interpretación y la estructura de los valores u objetos
almacenados en la memoria del ordenador. El sistema de tipificación usa
información de los tipos de datos para comprobar la verificación de los
programas que acceden o manipulan los datos.

î VV V
   V

îodos los datos en los ordenadores basados en la electrónica digital se


representan como bits (valores 0 y 1) en el nivel más bajo. £a más pequeña
unidad direccionable de datos es un grupo de bits llamado un byte
(normalmente un octeto, que son  bits). £a unidad procesada por las
instrucciones del código máquina se le llama una palabra (en 006,
normalmente  o 64 bits). £a mayor parte de las instrucciones interpretan la
palabra como un número binario, como por ejemplo una palabra de  bits
puede representar valores enteros sin signo desde el 0 al  ï 1 o valores
enteros con signo desde ï 1 al 1 ï 1. Por medio del complemento a dos , la
mayor parte del tiempo, el lenguaje máquina y la propia máquina no
necesitan distinguir entre tipos de datos con o sin signo.
Existe un específico conjunto de instrucciones aritméticas que usa una
diferente interpretación de los bits de una palabra como número en coma
flotante.

î VV V
 V

£os tipos de datos hacen referencia al tipo de información que se trabaja,


donde la unidad mínima de almacenamiento es el dato, también se puede
considerar como el rango de valores que puede tomar una variable durante la
ejecución del programa.

¦Aîa PxIIîI0a:

* AxAîEx
*NUExI
*£GIa(B£EANa)

AxÁîEx

El tipo de dato carácter es un digito individual el cual se puede representar


como numéricos (0 al 9), letras (a z) y símbolo ($,_). NîA: En lenguaje java la
codificación Unicode permite trabajar con todos los caracteres de d istintos
idiomas.

îipo de dato xango îamaño de bits

char 0 a 66 16 bits

NUExIa 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 tamaño=  bits


tipo de dato: short tamaño= 16 bits
tipo de dato: int tamaño=  bits
tipo de dato: long tamaño= 64 bits

xeales: estos caracteres almacenan numeros muy grandes que poseen parte
entera y parte decimal.
p  a : fl a= 32 b
a
p  a : bl= ` b

‰  b V

E p  a   pla para val r l , l  p   f r 


a   parav  a  para vlv rla  l .

p  a : b la Ra  = r - fal

  V ‘ V
f f f f
g h h h
c
 cd e c à !" e  # i

JV Tp Or  al
ÊV Tp  pr f  
óV Tp  a  r
óV Tp  a arár
óV Tp  a l
ÊV Tp  f   p r l ar
óV Tp  a   ra
óV Tp  a bra 
JV Tp j Or  al
ÊV Tp  a ral
ÊV Tp  a r l
ÊV Tp  a p r

  V
u  V
n n n
o p p p
c
 kl mu ku à !" m  km#lq
m
v
c
 rs tu ru à !" s à u
v x v
c
 rs t r à !$wr
t%t à#àr y &

JV Ca  a  arar
JV Erra  a 

  V

E a áa,        b l a á q  a q b


r llva a a ab  a pra pfa az[  br  r  r 
pra  (  r , f  , v r, .).

{ r  pl : l pra r rva a, , aa  br la f  q 


rb a  ra, pr   a va f   :
En algunos casos un operador es una función que actúa sobre funciones para
producir otras funciones.

 V ‘  ‘VV    V

(Para definiciones más estrictas sobre linealidad y bilinealidad, véanse los


temas relacionados )

au nombre depende del autor, son los operadores que actúan sobre dos
objetos (escritos, generalmente, a ambos lados del operador) pr oduciendo un
único resultado. 0éanse los casos siguientes.

î V ‘VV V

 VV  V

xelacionan un término A con otro B estableciendo su igualdad, jerarquía o


cualquier otra relación posible, como ejemplos tenemos:

JV A = B establece que A es igual que B.

En este caso hay que distinguir entre operador  de asignación y el


operador  de comparación. El primero toma el valor de # y se lo asigna
a ; el segundo solamente compara los valores de  y # sin modificarlos
y devuelve un valor lógico o de verdad  à  si ambos valores son
iguales o à  si dichos valores no son iguales.

JV A  B o desigualdad.

Este caso es justamente el opuesto al anterior, aunque aquí no


podemos hablar de asignación, pero si de comparación. Ahora el
resultado de esta operación será si los valores  y # son iguales y  si
son distintos.

JV peradores de orden: establecen o verifi can clasificaciones entre


números (A < B, A > B, etc.) u otro tipo de valores (caracteres, cadenas,
...).

îodo 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 función del resultado que tenga la
comparación en cada caso.

JV A > B ¦evuelve  si  es estrictamente mayor que # y en caso


contrario
JV A < B ¦evuelve  si  es estrictamente menor que # y en caso
contrario
JV A • B ¦evuelve  si  es mayor o igual que # y en caso contrario
JV A ” B ¦evuelve  si  es menor o igual que # y en caso contrario

JV tros operadores relacionales menos usuales son los llamados


operadores geométricos: paralelismo (A || B), perpendicularidad y
otros

 àVV

£os operadores lógicos producen un resultado ‘  , y sus operandos son


también valores lógicos o asimilables a ellos (los valores numéricos son
asimilados a  o  ‘ según su valor sea cero o distinto de cero). Por
contra, recuerde que las operaciones entre bits producen valores arbitrarios.

£os operadores lógicos son tres; dos de ellos son binarios, el último (negación)
es unario. îienen una doble posibilidad de representación en el Estándar ++
actual: la representación tradicional que se indica a continuación, y la   ‘
introducida recientemente que se detalla más adelante .

JV €V‘   33 AN¦
JV V‘   44 x
JV  V‘  5 Nî

£as expresiones conectadas con los operadores 33 y 44 se evalúan de


izquierda a derecha, y la evaluación se detiene tan pronto como el resultado
verdadero o falso es conocido (muchos programas tienen una lógica que se
basa en este propiedad).

§ && perador Y lógico

îambién denominado por su nombre en inglés (generalmente en mayúsculas)


AN¦ lógico. ¦evuelve un valor lógico  si ambos operandos son ciertos. En
caso contrario el resultado es  ‘.

a
à 

exprAN¦logica 33 expresionxinclusive

omentario:

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


convertido a ‘. Para ello, si es una expresión, se evalúa para obtener el
resultado (esta computación puede tener ciertos efectos laterales). A
continuación, el valor obtenido es convertido a ‘ cierto/falso siguiendo las
reglas de conversión estándar. ai el resultado es  ‘, el proceso se detiene y
este es el resultado, sin que en este caso sea necesario evaluar la expresión de
la derecha (recuérdese que en el diseño de ++ prima la velocidad).

ai el resultado del operando izquierdo es cierto, se continúa con la ev aluación


de la expresión de la derecha, que también es convertida a ‘. ai el nuevo
resultado es , entonces el resultado del operador es . En caso contrario
el resultado es  ‘.
 : la Norma informa que antes de ser evaluada la expresión dere cha, han
sucedido todos los posibles efectos laterales de la expresión izquierda, a
excepción de la destrucción de los posibles objetos temporales que se
hubiesen creado.

Ejemplo:

int m[] = {0,1,};


int x = 0;
if (m && x) cout << "ierto.";
else cout << "Falso.";

aalida:

Falso.

El valor
, que es interpretado como un puntero al primer elemento de la
matriz, es transformado a un ‘. omo es distinto de cero (no es un puntero
nulo) el resultado es cierto. A continuación, el valor  es convertido también a
‘. En este caso la conversión produce falso, con lo que este es el resultado
del paréntesis de la sentencia .

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 << "¦os cierto" << endl; }
else cout << "¦os falso" << endl;
if (bajo && negro) { cout << "îres cierto" << endl; }
else cout << "îres falso" << endl;
}

aalida:

Uno falso
¦os cierto
îres falso

§ || perador  lógico

Este operador binario devuelve  si alguno de los operandos es cierto. En


caso contrario devuelve  ‘.

a
à 

exprxlogica 44 expresionAN¦logica
omentario

Este operador sigue un funcionamiento análogo al anterior. El primer operando


(izquierdo) es convertido a ‘. Para ello, si es una expresión, se evalúa para
obtener el resultado (esta computación puede tener ciertos efectos laterales).
A continuación el valor obtenido es convertido a ‘ cierto/falso siguiendo las
reglas de conversión estándar ( ..1b). ai el resultado es , el proceso se
detiene y este es el resultado, sin que en este caso sea necesario evaluar la
expresión de la derecha (recuérdese que en el diseño de ++ prima la
velocidad).

ai el resultado del operando izquierdo es  ‘, se continúa con la evaluación


de la expresión de la derecha, que también es co nvertida a ‘. ai el nuevo
resultado es , entonces el resultado del operador es . En caso contrario
el resultado es  ‘.

 : el Estándar establece que antes de ser evaluada la expresión derecha,


han sucedido todos los posibles efectos lateral es de la expresión izquierda, a
excepción de la destrucción 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 << "¦os cierto" << endl; }
else cout << "¦os falso" << endl;
if (bajo || negro) { cout << "îres cierto" << endl; }
else cout << "îres falso" << endl;
}

aalida

Uno cierto
¦os cierto
îres falso

§4 ! perador N lógico:

Este operador es denominado también negación lógica y se representa en el


texto escrito por la palabra inglesa Nî (otros lenguajes utilizan directamente
esta palabra para representar el operador en el código).

a
à 

! expresioncast
omentario

El operando expresioncast (que puede ser una expresión que se evalúa a un


resultado es convertido a tipo ‘, con lo que solo puede ser uno de los
valores / ‘. A continuación el operad or cambia su valor: ai es cierto es
convertido a falso y viceversa.

xesulta por tanto, que el resultado de este operador es siempre un tipo ‘,
aunque al existir una conversión estándar por la que un cero es convertido a
 ‘, y cualquier valor distint o de cero a , coloquialmente se dice que este
operador convierte un operando 6 en - y uno nocero en 6. En otras palabras:
este operador devuelve cierto ( ) si la expresión se evalúa a distinto de cero,
en caso contrario devuelve falso (  ‘).

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 << "¦os cierto" << endl; }
else cout << "¦os falso" << endl;
if (!bajo) { cout << "îres cierto" << endl; }
else cout << "îres falso" << endl;
}

aalida:

Uno cierto
¦os falso
îres cierto

aV&îî&aV

î VV V‘  ‘V


V
£ógicos

peradores Aritméticos: £os operadores aritméticos permiten la


realización de operaciones
matemáticas con los valores (variables y constantes).

‡£os operadores aritméticos pueden ser utilizados con tipos de datos


enteros o reales. ai ambos son enteros, el resultado es entero; si alguno
de ellos es real, el resultado es real.
perando (perador).
 ‘V
V
(constante o variable)
peradores Aritméticos
+ auma
ï xesta
* ultiplicación
/ ¦ivisión
od odulo (residuo de la división entera)

Ejemplos:
Expresión xesultado
7 /  .
1 mod 7 
104 +  *  14

&&VV£aVaV&îî&aV
V
îodas las expresiones entre paréntesis se evalúan primero. £as
expresiones con paréntesis anidados se evalúan de dentro a fuera, el
paréntesis mas interno se evalúa primero.
¦entro de una misma expresión los operadores se evalúan en el
siguiente orden.

1.ï ^ Exponenciación
.ï *, /, mod ultiplicación, división, modulo.
.ï +, ï auma y resta.
£os operadores en una misma expresión con igual nivel de prioridad se
evalúan de izquierda a
derecha.

Ejemplos:
4 +  *  = 14
 *  /  = 9. 46 /  = 9.
 +  * (10 ï ( + 4)) =   +  * (10 ï 6) =  +  * 4 =  + 0 = 
. + .09 ï 14.0 / 40 = .09 . + .09 ï . = .9 ï . = .09
.1 * (1. + .0 * 4.1) = .9 .1 * (1. + 1.) = .1 * 1. = .9

V
a&#£VV£aV&aVV £V

£as diversas organizaciones usan distintos símbolos, pero el comité sobre


computadoras y procesadores de información de la Asociación
Norteamericana de Normas ha hecho un gran esfuerzo para normalizar los
símbolos de los diagramas de flujo. Esa normalización permite comprender
cualquier diagrama de flujo que use los símbolos recomendados.

ada símbolo normal de diagrama de flujo tiene un significado especial.

V
Este se utiliza para representar el inicio o el fin de un algoritmo. îambién puede
representar una parada o una interrupción programada que sea necesaria
realizar en un programa.

Este se utiliza para un proceso determinado, es el que se utiliza comúnmente


para representar una instrucción, o cualquier tipo de operación que origine un
cambio de valor.

Este símbolo es utilizado para repre sentar una entrada o salida de información,
que sea procesada o registrada por medio de un periférico.

Este es utilizado para la toma de decisiones, ramificaciones, para la indicación


de operaciones lógicas o de comparación entre datos.
Este es utilizado para enlazar dos partes cualesquiera de un diagrama a través
de un conector de salida y un conector de entrada. Esta forma un enlace en
la misma página 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 información por medio de la


impresora.
Este es utilizado para representar la salida o para mostrar la información por
medio del monitor o la pantalla.

£aVVaîîVV&VV £V

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


abajo.
JV Es un símbolo solo puede entrar una flecha de flujo si varias líneas se
dirigen al mismo símbolo, se deben unir en una sola flecha.

JV £as líneas de flujo no deben cruzarse, para evitar los cruces se utilizan los
conectores.
JV ¦e un símbolo excepto el de decisión, solo puede salir una línea de flujo.
JV £os símbolos îerminal, onector dentro de página y conector fuera de
página 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.
JV £os émbolos de decisión tendrán siempre una sola flecha de entrada y
dos o tres flechas de salida según la cantidad de alter nativas 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 símbolos
sin conexión al diagrama pues el flujo seria interrumpido.

a&&aVa#V&VV £V

Un diagrama de flujo, puede tener tipos de errores diferentes:

V  ae genera por no seguir las reglas establecidas, puede hacer el
diagrama difícil interpretación, confundir el diagrama y hasta convertirlo en
errado en cuanto ser lógica.
V£& aon errores de estructura del diagrama en cuanto al arden puede
ser de distinta gravedad, desde dejar de mostrar el resultado.  falta un
cálculo hasta un error que determine que un programa nunca llegue a su fin.

V #î& Es cuando un diagrama de flujo esta correcto en cua nto 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 d el 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.
îomando estos datos se recorre el diagrama de flujo símbolo a símbolo
siguiendo la orden de cada uno de ellos, todo esto se hará a un lado del
diagrama o en una hoja aparte dándole valores a variables y ejecutando
operación que se indique .Ejemplo:

aîîVVî£Va£î&V$ %V

Existen tres tipos de estructuras de control selectivas, estas se basan en


una condición o en una opción para decidir la parte del programa por
el que pasará.
a.V aimple b)¦oble o compuesta c)últiple
a‘   V 
‘. evalúa una condición, si esta es verdadera ejecuta
la acción o acciones especificadas, si es falsa no realiza ninguna
acción.

 ai existe sola una instrucción o sentencia dentro de la condición


no es necesario marcarlos con inicio y fin, en caso contrario si, como se
muestra en el diagrama anterior.

1.V ¦eterminar si  números son iguales o diferentes, si son diferentes


determinar cuál de los  es el mayor.
.V ambiar un aucho desinflado de un Automóvil.

îVV&VV##

a‘   V‘VV 
 ! evalúa una condición, si esta es
verdadera ejecuta la acción o acciones especificadas, si es falsa
ejecuta otra acción o acciones.
 ai existe sola una instrucción o sentencia dentro de la condición
no es necesario marcarlos con inicio y fin como en este caso que la
condición fue falsa, en caso contrario si, en este ejemplo cuando la
condición fue verdadera.

Ejemplo: Imprimir si un número es positivo o negativo

a‘   V    V
VV
£a 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.
 
VV‘ VV

V
a    V
if(condición1) Bloque 1 ;
else if(condición) Bloque  ;
else Bloque ;


‘ V

if(edad < =  )
onsole.Write£ine("Bebé" ) ;
else if(edad < 1)
onsole.Write£ine("Niño" ) ;
else if( edad < 1)
onsole.Write£ine("Adolescente" ) ;
else onsole.Write£ine (" Adulto" ) ;

V
a‘   V
(‘ ‘V V

£a estructura selectiva múltiple es similar a la selectiva anidada, salvo


que las condiciones deben ser de alguno de los tipos enteros o de tipo
carácter.

 
VV‘ VV

aintaxis:

s itch(Expresión)
{
case te 1: Bloque 1 ; break;
case te : Bloque  ; break;
case te N: Bloque N ; break;
default: Bloque X ; break;// pcional.
V
V
V
V
V
aîîa î&î&aVVV&£aVî&î&a

£as computadoras están diseñadas para aquellas aplicaciones en las


cuales una operación o conjunto de ellas deben repetirse muchas
veces. Un tipo muy importante de estructura es el algoritmo necesario
para repetir una o varias acciones p or un número determinado de
veces, a esta estructura se la llama Estructura xepetitiva. £as   
    se utilizan cuando se desea que una instrucción o bloque de
instrucciones se repita un número determinado de veces o hasta que
una condición de terminación se cumpla. £as    que repiten
una secuencia de instrucciones un número determinado de veces se
denominan bucles, y se llama iteración al hecho de repetir la ejecución
de una secuencia de acciones. Iterar es repetir una vez el bucle. ae
debe tener en cuenta lo siguiente para la construcción de una El
cuerpo del bucle: Es el grupo de estructura repetitiva: instrucciones que
se van a repetir. ¦entro del cuerpo del bucle debe existir una instrucción
que modifique la condición lógica de terminación. £as sentencias de
inicialización. aon instrucciones que inicializan contadores y
acumuladores. £as condiciones para la terminación del bucle:
Expresiones lógicas que controlan la terminación del bucle.

A continuación se detallan tres        básicas: 1. . .

Estructura xepetitiva ¦esde / Para. (Fx)


Estructura xepetitiva Hacer ² ientras. (¦ WHI£E)
Estructura xepetitiva ientras. (WHI£E)

Para poder entender cómo funciona un proceso repetitivo, se necesita


conocer el concepto de dos expresiones:

îVV

En un proceso repetitivo cuya función es contar los sucesos o acciones


internas del bucle, como pueden ser el número 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 iteración. £a forma de
representar un contador es: contador = contador + 1

£a expresión anterior se debe interpretar como asignar a la variable


contador el valor que tenía anteriormente más uno o menos uno,
dependiendo del caso si se quiere incrementar o decrementar.

Nota: En todo contador es necesario que exista una instrucción que


inicializa la variable que va a tener la función de contador y esta
variable puede ser cualquier identificador. Ejemplo 1: ontador que
incrementa de uno en uno. £a variable contador va a tener la función
de ser el contador. contador = contador = 1 contador + 1 1

£V

Un acumulador es una variable cuya misión es almacenar cantidades


variables. xealiza la misma función que un contador pero con la
diferencia de que el incremento o decremento es variable y no
constante como en el contador. £a forma de representar un
acumulador es: a = a + valor0ariable

Nota: En todo acumulador es necesario que exista una instrucción que


inicializa la variable que va a tener la función de acumulador y esta
variable puede ser cualquier identificador. Ejemplo : alcular 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. £a variable a va a tener la
función de ser el acumulador. aolución del ejemplo . a=0 leer(nota )
a=a+nota Prom=a/10

Esto es la forma como trabaja un acumulador.

V

  V   V   V

En muchas ocasiones se conoce de antemano el número de veces que


se desean ejecutar las acciones o instrucciones de un bucle. En estos
casos en los que el número de iteraciones es fijo, se debe usar la
estructura desde/para. Por ejemplo, ingresar 10 notas, 100 números, etc.
£a representación gráfica de la estructura repetitiva desde/para en un
 
de ‘ es el siguiente:

V
V
V V 
V
 V
V
V
V
V
   V
V
V
V
V
V V
En su forma más típica y básica, esta estructura requiere una variable
entera que cumple la función de un contador de vueltas. En la sección
indicada como ´inicializaciónµ, se suele colocar el nombre de la
variable que hará de contador, asignándole a dicha variable un valor
inicial. En la sección de ´con diciónµ se coloca la condición que deberá
ser verdadera para que el ciclo continúe (en caso de falso el ciclo se
detendrá). Y finalmente, en la sección ´modificaciónµ se coloca una
instrucción que permite modificar el valor de la variable que hace de
contador (para permitir que alguna vez sea falsa).

Ejemplo: ¬ueremos que se repita 0 veces el bloque de instrucciones.


¦escribiremos el siguiente ejemplo por etapas:
Nota: El símbolo de la flecha apuntando a la izquierda ( ) significa
= (igual)

1era Etapa (c=1): uando el ciclo comienza antes de dar la primera


vuelta, la variable de inicialización toma el valor indicado en la sección
de inicialización.
V
V
V
V  = 1, <=0,  =  + 1
V
V
V
V Instrucciones
V
V
V
V
V
V
V
V7&£V

Estructura xepetitiva Hacer  ientras

Existen muchas situaciones en las que se desea que un bucle se ejecute


al menos una vez antes de comprobar la condición de repetición, para
ello se puede utilizar la estructura repetitiva Hacer  ientras. Esta
estructura repetitiva se utiliza cuando conocemos de antemano que
por lo menos una vez se ejecutará el bloque repetitivo. uando una
instrucción Hacerientras se ejecuta, lo primero que sucede es la
ejecución del bucle (todas las instrucciones) y a continuación se evalúa
la expresión booleana de la condición. ai se evalúa como verdadera, el
cuerpo del bucle se repite y se vuelve a evaluar la condición, si sigue
siendo verdadera se seguirá repitiendo el bucle hasta que la condición
sea falsa. ¦entro del bucle existirá una i nstrucción que en un cierto
momento hará que la condición sea falsa.
La rpr a ráfa  la rra rpva Har-M ra 
la  :

½ r 
(Ea)

vr a r  

fal

V
V
V
V
V
V
V
V
V
V
V
V
V
V
V
V
V
V
V
V
V
V
V
V
V
7&£V

Estructura xepetitiva ientras

El proceso de una estructura repetitiva ientras es el siguiente: para que


ingrese al cuerpo del bucle tiene que evaluarse una condición, si ésta es
verdadera se ingresa y se realizan todas las instrucciones que están
dentro del cuerpo del bucle; terminado la última instrucción se vuelve a
comprobar la condición; se seguirá realizando el bucle mientras la
condición siga siendo verdadera y si en un momento es falsa sale del
bucle. Es decir, la estructura repetitiva ientras es aquella en que el
cuerpo del bucle se repite mientras se cumpla una determinada
condición, y termina cuando ya no se cumple. ai al querer ingresar al
cuerpo del bucle por primera vez y la condición es falsa, no ingresa al
bucle, ninguna acción se realiza y el algoritmo prosigue en la siguiente
instrucción fuera del bucle. £a representación gráfica de la estructura
repetitiva ientras es la siguiente:

ondición falso

V
V
V Instrucciones
V (Ea)
V
V
V
V
V
V
V
V
V
V
V
V
V
V
V
V
V
 !V
Un vector es un conjunto de elementos relacionados. En la mayoría 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 máxima de elementos
que podemos almacenar en un vector se le llama p .
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 número,
llamado  , que indica a qué elemento del vector se está haciendo
referencia.

V
En la figura se muestra un arreglo de enteros llamado U que tiene una
dimensión de 4. ai queremos hacer referencia al segundo elemento del
arreglo U(el número '()) tendríamos que especificar U (*(se lee como U
 (&, es decir, U (*+'(). ada uno de estos elementos individuales
puede ser tratado como cualquier variable.
V


‘VV‘ VV‘
V‘  V V !V

p ! Hacer diagrama de flujo que lea e imprima un arreglo de N


elementos.
p ! Hacer diagrama de flujo que lea un arreglo de N elementos y
que imprima su media aritmética.
p ! Hacer diagrama de flujo que lea un vector numérico de N
elementos y que indique cuántos de ellos son negativos.

V
V
  !VV

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


referencia a cualquiera de sus elementos son necesarios dos índices.
£as matrices están organizadas en filas y columnas, por lo tanto la
dimensión de las mismas será dada en la forma * ,, donde *
representa la cantidad de renglones (llamados también filas) y , las
columnas.

En la -à .( podemos observar la representación esquemática de


una matriz de enteros llamada U, la cual tiene una dimensión 4x. En la
matriz U, el acceso a los elementos individuales debe hacerse en la
forma U *, donde  representa el número de renglón y  el número de
columna, por lo tanto U '(*4.


‘VV‘ VV‘
V‘  V V
 !V

p !Hacer diagrama de flujo que lea una matriz de tres por dos ( X
).
p ! Hacer diagrama de flujo que lea e imprima una matriz de N X
 elementos.
p !Hacer diagrama de flujo que lea matriz de dimensión Nx y un
escalar. El diagrama debe calcular e imprimir el producto escalar de
ambos.
 V

1. Hacer diagrama de flujo que lea un vector de N elementos y que


indique cuántos de ellos son pares.
. Hacer diagrama de flujo que lea una matriz de N X . El diagrama
debe calcular el promedio por fila e cual de tales promedios es el
mayor.
. Hacer diagrama de flujo que lea un vector de N elementos y que
indique cuántos de ellos múltiplos de tres y cuántos múltiplos de .
4. Hacer un diagrama de flujo que lea un vector de dimensión N y que
calcule la siguiente norma:
  
(X ) + (X ) +...+ (X )
1 1 N
Norma = 

N
¦onde  es la media aritmética del vector U
. 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 dimensión
Nx y que calcule su matriz transpuesta.
. Hacer un diagrama de flujo que lea una matriz entera de dimensión
Nx y que calcule el promedio de sus elementos.
9. Hacer una diagrama de flujo que lea una matriz de caracteres de
dimensión Nx y que indique cuántos de los caracteres de tal matriz son
letras ´àµ.
10. ¬ue lea dos vectores numéricos de dimensión N y que indique cuál
de ellos tiene la mayor media aritmética de sus elementos.

ExIK APAxII AxîINEZ


£I¦E£ Axx¬UIN î0I££A
FxANIa BAI£