Vous êtes sur la page 1sur 219

         

 
Antes de empezar a programar computadores es necesario adquirir algunos conceptos
fundamentales para dicha tarea. Con el fin de no enfrentar al tiempo el aprendizaje de tantos
temas nuevos, primero se hace el trabajo en un lenguaje algorítmico que se va definiendo
poco a poco, de tal forma que el conocimiento se adquiera de forma gradual y firme. En este
libro sólo se trabaja con lenguaje algorítmico, es decir, sólo se hace uso de papel y lápiz; el
aprendiz está concentrado en un solo asunto. Sin embargo, continuamente se hace referencia
al computador (o máquina) porque el fin es prepararse para programarlo. El lenguaje
algorítmico no dependerá de ninguna máquina en especial.

Un algoritmo es una secuencia de pasos o instrucciones cuya realización tiene un fin


determinado.

Ejemplo: Retirar dinero de un cajero automático

Retirar dinero de un cajero automático es una tarea que los seres humanos realizan cada vez
con más frecuencia. Para llevarla a cabo, grosso modo se realizan las siguientes acciones:

 Insertar la tarjeta
 Seleccionar el idioma
 Ingresar la clave
 Seleccionar la operación por realizar
 Ingresar los datos de acuerdo con la operación seleccionada
 Obtener el resultado de la
l a operación

Este conjunto de acciones realizadas con un fin determinado, en dicho orden, es lo que se
llama algoritmo.


     

Un algoritmo es una secuencia de pasos o instrucciones, realizados en un orden determinado,


con un fin claramente definido.

Un lenguaje algorítmico permite plasmar de manera clara, a través de sus herramientas, los
pasos o instrucciones contemplados en un algoritmo. En general, un lenguaje algorítmico es
bastante laxo con respecto a un lenguaje de computador porque lo que se quiere con él es
expresar las ideas de una forma parecida pero no tan formal a como lo hace un lenguaje que
entiende el computador. Sin embargo, en este libro el lenguaje algorítmico que se utiliza es
sencillo pero bastante formal con el fin de que constituya una verdadera preparación para
iniciar el aprendizaje de un lenguaje de computador. Las personas con algún grado de
ilustración en programación de computadores encontrarán que el lenguaje algorítmico
utilizado en este libro contempla muchos temas que en general se cubren sólo cuando se está
trabajando con un lenguaje de computador.

No existe un solo lenguaje algorítmico, sería como pensar que todos los seres humanos se
expresan igual. Lo que sí es importante en este primer curso de Programación de
Computadores es que el estudiante sea disciplinado en el uso del lenguaje que está trabajando
en su clase. Los frutos de esa disciplina se verán cuando haga sus prácticas con un lenguaje
de computador. La utilización del lenguaje algorítmico será un paso intermedio en la
verdadera comunicación del estudiante con el computador.

Si esta parte se cubre satisfactoriamente, el trabajo de programar un computador se va a


facilitar bastante.

Los seres humanos ejecutan algoritmos permanentemente. Lo que pasa es que no son
conscientes de ello. Por ejemplo, hacer una carrera profesional es un algoritmo, ¿verdad?
Cada acción que se ejecuta para lograr la meta de obtener un título profesional se llamará
instrucción en el lenguaje algorítmico y tendrá una sintaxis determinada, esto es, habrá que
expresarla de una forma no ambigua, que el lenguaje algorítmico entienda.


   
Para empezar, todo algoritmo tendrá la siguiente estructura:

 
 








donde  y   son delimitadores del cuerpo del algoritmo. Ellos indican en
dónde empieza y en dónde termina pero no implican la ejecución de acción alguna. Sin
embargo su uso es obligatorio.


     

Un algoritmo es una secuencia de pasos o instrucciones, realizados en un orden determinado,


con un fin claramente definido.

Un lenguaje algorítmico permite plasmar de manera clara, a través de sus herramientas, los
pasos o instrucciones contemplados en un algoritmo. En general, un lenguaje algorítmico es
bastante laxo con respecto a un lenguaje de computador porque lo que se quiere con él es
expresar las ideas de una forma parecida pero no tan formal a como lo hace un lenguaje que
entiende el computador. Sin embargo, en este libro el lenguaje algorítmico que se utiliza es
sencillo pero bastante formal con el fin de que constituya una verdadera preparación para
iniciar el aprendizaje de un lenguaje de computador. Las personas con algún grado de
ilustración en programación de computadores encontrarán que el lenguaje algorítmico
utilizado en este libro contempla muchos temas que en general se cubren sólo cuando se está
trabajando con un lenguaje de computador.

No existe un solo lenguaje algorítmico, sería como pensar que todos los seres humanos se
expresan igual. Lo que sí es importante en este primer curso de Programación de
Computadores es que el estudiante sea disciplinado en el uso del lenguaje que está trabajando
en su clase. Los frutos de esa disciplina se verán cuando haga sus prácticas con un lenguaje
de computador. La utilización del lenguaje algorítmico será un paso intermedio en la
verdadera comunicación del estudiante con el computador.

Si esta parte se cubre satisfactoriamente, el trabajo de programar un computador se va a


facilitar bastante.

Los seres humanos ejecutan algoritmos permanentemente. Lo que pasa es que no son
conscientes de ello. Por ejemplo, hacer una carrera profesional es un algoritmo, ¿verdad?
Cada acción que se ejecuta para lograr la meta de obtener un título profesional se llamará
instrucción en el lenguaje algorítmico y tendrá una sintaxis determinada, esto es, habrá que
expresarla de una forma no ambigua, que el lenguaje algorítmico entienda.


   
Para empezar, todo algoritmo tendrá la siguiente estructura:

 
 








donde  y   son delimitadores del cuerpo del algoritmo. Ellos indican en
dónde empieza y en dónde termina pero no implican la ejecución de acción alguna. Sin
embargo su uso es obligatorio.


         

Los delimitadores  y   son las dos primeras palabras reservadas de este
lenguaje. Una palabra reservada  es aquella
aquella que tiene un significado
significado especial
especial dentro del
lenguaje y por lo tanto tiene un uso restringido.

El cuerpo del algoritmo, como se verá más adelante, está conformado por instrucciones
ejecutables y no ejecutables, encargadas en general de la reserva de memoria, obtención o
entrada de los datos, procesamiento de esos datos y emisión o presentación de resultados.

CUERPO DE UN ALGORITMO

Entrada Salida
Procesamiento

Como se verá a lo largo de este libro, la entrada, el procesamiento y la presentación de


resultados no se lleva a cabo en ese orden necesariamente. Puede darse, por ejemplo, entrada,
procesamiento,
procesamiento, entrada, procesamiento y luego sí la
l a presentación de resultados.

Es recomendable que los algoritmos se escriban totalmente en minúscula o en mayúscula, no


sólo por presentación sino porque algunos lenguajes de computador así lo exigen.

El nombre del algoritmo puede estar compuesto por caracteres alfanuméricos y por el
caracter de subrayado ( _ ) y debe empezar con una letra. Los caracteres alfabéticos con tilde
no son válidos.

 !" 


Indica la terminación normal de un algoritmo y libera a la máquina de la tarea que está
i nstrucción .
ejecutando. Todo algoritmo debe tener por lo menos una instrucción

La palabra  es reservada.

Palabras reservadas




La tabla de palabras reservadas se irá llenando a medida que éstas vayan


v ayan apareciendo en el
lenguaje algorítmico.


     

 $%!%&'(
Son lugares de memoria donde se pueden almacenar datos. Se llaman así precisamente
porque su contenido puede variar. Toda variable tiene tipo, nombre y contenido. El tipo
puede ser entero, real, caracter o cadena de caracteres. Su nombre debe contener sólo
caracteres alfanuméricos y el el caracter de subrayado
subrayado ( _ ) y tiene que empezar
empezar con caracter
alfabético; los caracteres alfabéticos con tilde no son válidos. Su contenido está estrecha-
mente ligado al tipo.
Tipo: De qué naturaleza es el dato que se puede almacenar.
 Nombre: Cómo hacer referencia a un espacio de memoria específico.
Contenido: Qué dato hay almacenado.

Los nombres de las variables deben ser significativos de tal forma que den una idea de su
contenido. Por ejemplo, si se quiere guardar un promedio, la variable debería llamarse
 o  en lugar de . Esto como una ayuda para quien construye o modifica el
algoritmo (un ser humano), no porque a la máquina le afecte.

 ('%%!" )( *%!%&'(



Para poder utilizar una variable, ésta debe existir, es decir, debe haber un espacio en la
memoria asignado a ella. Esto se logra en la declaración de la variable la cual debe ir al
principio del algoritmo, antes de cualquier instrucción ejecutable. Su sintaxis es:

 

donde el tipo de variable puede ser: entero, real, caracter o cadena_de. Las variables de la
lista se separan con el caracter coma ( , ).

Estas instrucciones son llamadas declarativas y son no ejecutables porque no afectan el


contenido de las variables ni implican la realización de otra acción diferente a la de reserva de
memoria. Además, sólo tienen efecto una vez, cuando se inicia la ejecución del algoritmo.
Esto significa que no puede haber instrucciones declarativas en otro punto que no sea
exactamente el principio del algoritmo. El efecto de una instrucción ejecutable se refleja en el
contenido de las variables o en la pantalla.

Una palabra reservada no puede ser usada como nombre de variable.

Ejemplo:
 
 



   
 
  
  
   



#
         

Este algoritmo “no hace nada”, nada visible por lo menos. La siguiente tabla contiene el
significado de cada una de esas instrucciones declarativas.

Declaración Significado
  Se solicita espacio en memoria para guardar tres números
enteros en las variables llamadas ,  y ,
respectivamente.
  Se solicita espacio en memoria para guardar un número
real en la variable llamada .
  Se solicita espacio en memoria para guardar dos
caracteres en las variables llamadas  y ,
respectivamente. Un caracter puede ser numérico,
alfabético, gráfico, de puntuación, etc.
   Se solicita espacio en memoria para guardar una cadena
de caracteres, esto es, una palabra o una frase. El valor
constante 8 determina el número máximo de caracteres
que puede almacenarse en esa variable. Así que la variable
podría contener la palabra servir pero no la palabra
 justiciero.

Al ejecutar este algoritmo, se genera lo que desde ahora se llamará el entorno de memoria.
El entorno de memoria puede visualizarse como una tabla que contiene toda la información
de las variables que se declaran en un algoritmo. Esa información consiste en el nombre de la
variable, el tipo y el contenido. El entorno existe mientras el algoritmo se esté ejecutando.
Una vez termina, la memoria reservada es liberada.

Para el algoritmo llamado    se generaría el siguiente entorno de


memoria:

Variable Tipo Contenido


  
  
  
  
  
  
   
   
   

El caracter ? indica que a la variable no se le ha definido valor. De aquí en adelante, se dirá


también que la variable contiene basura, es decir, que su contenido es desconocido.

+
     

En un mismo algoritmo, una variable no puede ser de más de un tipo. Sería como pretender
que hubiera más de un norte.

Palabras reservadas
 
 
 


# !" )( %!-%!"


La instrucción de asignación permite cambiar el contenido de una variable y se hace a través
del operador de asignación .

Variables de tipo caracter o cadena de caracteres: si la variable es de tipo caracter, su


contenido es un caracter; y si es de tipo cadena de caracteres, su contenido es uno o más
caracteres.

Variables numéricas: son de tipo entero o real y pueden ser operandos en expresiones
aritméticas o matemáticas.

Ejemplo: Variables caracter o cadena de caracteres

Supóngase ahora que el tipo de la variable no es numérico. Esto es, la variable es de tipo
caracter o de tipo cadena de caracteres. En estos casos hay que tener en cuenta lo siguiente:

Instrucción de Tipo de la Observaciones sobre la instrucción


asignación variable
   caracter Es válida e implica el cambio del contenido de la
variable  por el caracter  
    caracter Es válida e implica el cambio del contenido de la
variable  por el caracter 
   caracter Es válida siempre y cuando la variable  exista y sea
de tipo caracter. Implica el cambio del contenido de
la variable  por el contenido de la variable 
   cadena_de 20 Es válida e implica el cambio del contenido de la
 variable  por la cadena de caracteres 

  ! cadena_de 10 Es válida e implica el cambio del contenido de la
variable  por la cadena de caracteres !
   cadena_de 12 Es válida siempre y cuando la variable  exista y sea
de tipo cadena de caracteres con longitud ≤  12.
Implica el cambio del contenido de la variable 
por el contenido de la variable 

,
         

Aunque la variable de tipo caracter o cadena de caracteres contenga un caracter numérico,


sólo con las variables numéricas (enteras o reales) se pueden realizar operaciones aritméticas
o matemáticas.

Ejemplo: Variables numéricas

Supóngase que se tiene una variable llamada  y se quiere que su contenido sea . Para
hacerlo, se daría la instrucción de asignación

  

El contenido anterior de la variable  (definido o no) es cambiado por el valor . Obsérvese


que la dirección de la flecha que representa el operador de asignación indica el sentido en el
que se hace la asignación. ¿Tendría sentido la operación   ? ¿Por qué?
Instrucciones como

  
  

no son válidas porque el operador  no existe. La segunda instrucción, además, carece de
sentido.

En la  parte izquierda debe aparecer siempre la  variable cuyo contenido se desea modificar y


en la parte derecha el nuevo valor.

Ejemplo: Si se desea que el contenido de la variable numérica  sea el mismo de la variable


numérica , se daría la instrucción de asignación

  

que significa hacer una copia de la variable  en la variable . El contenido de la variable 
(definido o no) es cambiado por el contenido de la variable  (definido o no). Supóngase que
se tiene el siguiente entorno de memoria en la ejecución de cierto algoritmo:

Variable Tipo Contenido


  
  
"
  
  
"

.
     

Los puntos suspensivos (…) indican que hay otras instrucciones.

La ejecución de las instrucciones tendría el siguiente efecto en el entorno de memoria:

Variable Tipo Contenido


  
  

Obsérvese que la instrucción de copia (   ) no tiene ningún efecto sobre la variable .

Si se tuviera este otro entorno

Variable Tipo Contenido


  
  

El efecto de la ejecución de las instrucciones


"
  
   # 
"

sería el cambio del contenido de la variable  (basura) por . Tomar una copia del contenido
de las variables  (basura) y  (), sumarlas y asignar el resultado a la variable . El entorno
quedaría así:
Variable Tipo Contenido
  
  

Porque un contenido “basura” operado con cualquier otra cosa, da basura. Cuando se tienen
instrucciones como

   # 

se debe verificar que la variable  haya sido inicializada. Inicializar una variable significa
definir su contenido, lo cual hasta este momento sólo se puede hacer con una instrucción de
asignación.

También es posible que el valor que se quiera asignar a una variable sea el resultado de
evaluar una expresión aritmética o matemática. Por ejemplo, se quiere que el nuevo valor de
la variable  sea el resultado de sumar los números 7 y 20.

La suma de 7 y 20 se expresa como 7+20. En este caso, se requiere poder hacer uso del
operador de suma.

/
         

+ 1(%)2( %!34!2

El conjunto de operadores disponible en el lenguaje algorítmico que se está definiendo es el


siguiente:

Suma + Resta –
Multiplicación * División /

La parte izquierda de una instrucción de asignación siempre  es una variable y la  parte


derecha puede ser una constante, una variable o una expresión, donde las dos primeras son
las expresiones más simples que existen.

Ejemplo: Sumar los números 7 y 20

Por el enunciado del problema, el resultado se debería guardar en una variable de tipo entero
porque la suma de dos enteros da un entero, pero también se podría declarar real ( ¿por
?
qué ).

 $%&'

 

  $#&'



Al ejecutar este algoritmo, se genera el siguiente entorno de memoria:

Variable Tipo Contenido


  

Luego, al ejecutar la instrucción de asignación, ocurre lo siguiente:

Los valores 7 y 20 son sumados. Luego se busca en el entorno de memoria una variable
llamada , si existe, se modifica su contenido con el valor 27 y el entorno quedaría así:

Variable Tipo Contenido


  

Luego se ejecuta la instrucción  que indica la terminación normal del algoritmo y que
conlleva la liberación de la memoria reservada a través de la declaración de variables. Que la
memoria reservada se libere significa que ya no se tendrá acceso a esa área de memoria a
pesar de que los datos pueden continuar existiendo ahí porque a otro algoritmo no se le ha
asignado ese mismo espacio.

0
     

Si la variable  no existe, se hace imposible continuar con la ejecución del algoritmo y
ésta se termina anormalmente. A la terminación anormal de la ejecución de un algoritmo se le
llama comúnmente “aborto”. Algoritmo que se respete no debe abortar.

Aunque la expresión 20+7 es válida, no tiene sentido poner a la máquina a computar algo que
ya uno sabe cuanto da. Es decir, ¿cuál es la razón para no asignar de una vez el valor 27?

Obsérvese que el algoritmo $%&' sólo sirve para sumar los números 7 y 20.
¿Cuántos algoritmos parecidos pero diferentes habría que hacer para disponer siempre de
uno que sume dos números enteros cualesquiera ? ¿Sería posible ? ¿Tendría sentido ?

Otra versión del algoritmo anterior sería la siguiente:

 $%&'

  ( &

(  $
&  &'
  (#&



En ( y & se almacenan los sumandos $ y &', respectivamente, y luego se almacena
el resultado en la variable .

El efecto es el mismo. Al ejecutarlo, se genera el siguiente entorno de memoria:

Variable Tipo Contenido


  
(  
&  

Al ejecutar la primera instrucción de asignación, (  $ se busca en el entorno una


variable llamada ( y, si existe, su contenido se modifica con el valor constante $.

Variable Tipo Contenido


  
(  $
&  

Luego, al ejecutar la segunda instrucción de asignación, &   &' se busca en el


entorno una variable llamada & y, si existe, su contenido se modifica con el valor
constante &'.

5
         

Variable Tipo Contenido


  
(  $
&  &'

Luego se ejecuta la tercera instrucción de asignación,   (#&, que consiste


en buscar las variables ( y & en el entorno de memoria, si existen se toma una
copia de su contenido y se suman y luego, se busca en el entorno de memoria una variable
llamada   y, si existe, se modifica su valor con el valor &$  y el entorno quedaría
finalmente así:

Variable Tipo Contenido


  &$
(  $
&  &'

Luego se ejecuta la instrucción  que indica la terminación normal del algoritmo y que
conlleva la liberación de la memoria reservada a través de la declaración de variables.

Cualquier búsqueda de una variable en el entorno de memoria que resulte infructuosa


provocará la terminación anormal de la ejecución del algoritmo. Lo mismo ocurre cuando se
hace referencia a una instrucción o a un operador que no existe en el lenguaje.

, 1(%!2( (( ((2 6 (%'(


Cuando se realizan operaciones numéricas hay que tener en cuenta la operación así como el
tipo de los operandos (entero o real). Por ejemplo, cualquier persona que sepa dividir diría
que ½ es igual a 0.5 lo cual puede no ser cierto en la máquina. Resulta que cuando esta
operación se hace en la máquina, el resultado depende del tipo de los operandos.

Cuando se hace una operación básica en la máquina y por lo menos uno de los operandos es
de tipo real, el resultado es de tipo real. Esto es, si los operandos involucrados en una
operación son todos enteros, el resultado será un entero.

El operando no necesariamente es una variable, podría ser una constante. En este último caso,
la regla se aplica de la misma forma.

Supóngase que se tienen las siguientes instrucciones de asignación:

Operandos Resultado
Instrucción    Observaciones
  ( # & entero entero entero En el caso de la división, cuando los dos
  ( ) & entero real real operandos son enteros, lo que ocurre
  ( * & real entero real es que se trunca la parte decimal del
  ( + & real real real resultado. Así, ½ es igual a 0 y no a 0.5.


     

Una constante numérica es entera (no tiene parte decimal) si pertenece al conjunto de los
números enteros. En caso contrario es real así su parte decimal sea cero. En la máquina, la
parte decimal se indica con punto (.) y no con coma (,).

Supóngase que las variables ( y & son enteras y que ! es real.

Operandos Resultado
Operación     Observaciones
Por lo menos uno de los
  ( # & ) ! 4 7 13.8 -2.8 operandos es real, por lo tanto el
resultado es un real.
  (+ & # ('( 6 4 102 Como ( y & son enteras,
(+& da ( y no 1.5.
Aunque ( es entero (+&' da
  ! * & ) (+&' 5 5 2 1.5 & porque &' es una constante
real.
Como & es una variable entera
  ( # &+! 17 14 21 y ! es una constante entera, &+!
da un entero.

 
               
           

       
       


 
 ←  !" 
 ←  #!$
 ←  !!
 ← %&'(
 ← !#
 ← &!(#
 ← !$
 ← !!'


         

 )   *


   
   
+
 ≠  
,-  ≠  -
 ≥  !
 . -!
 ≤  /

$ 0   1  2     3*

4 4
1 5 /6"
 /
! /-!
 2
 
$ 62

 7  2    3  "    3 2 78  2   
     22

" 78   2   9 /   :  ;   2
 9   2 <  :  2 3        
22

=82>
 
  
  "
  !

2

=82>
2
 2
  2!

2

=82$>
2
   $ 
  $"
  " %% ?  *   
$   %% ?  *   
  !!$#$

2


     

=82>
2
   $ 
  $"
  " %% ?  *   
$   %% ?  *   
  &!!$(#$

2

@:      2 82$  82 @A 9

B ?    

•  52
• A 
• 4

C :    2           *

 2 2 2$


   $
2  
2  
2$  
  C
  B
$  B

7 2       2 2  ;    
              


 7   


A       2
2$  2!2

        2$ 2  2    
!  8   7           2
      8      

#
         

"  " 


 2 2 2$   $
2$  2!2 #$ % #%
2$  !
2$  2#2
2$  2$!C
2$  2$!
2$  2%
2$  
$  '
$  %2
$  2$#2
$  $#2
2$  $
$  2!

. !2( )( (%)% 2 %'!)%

Volviendo al algoritmo que suma dos números determinados, lo ideal sería contar con uno
que permitiera sumar dos números enteros cualesquiera, de lo contrario, programar
computadores no pasaría de ser una tarea interesante.

Para poder hacer esto, tiene que haber interacción entre el usuario y el computador para que
sea posible especificar los números por sumar. Obsérvese que hasta este momento esa
interacción no existe, ni siquiera había sido mencionada.

El usuario es quien hace los requerimientos y se beneficia del algoritmo.

+
     

Para que exista interacción entre el usuario y el computador es necesario que haya
instrucciones que permitan que éste “hable” con la máquina y que ella le “responda” y
viceversa.

Las instrucciones que permiten la interacción entre el usuario y la máquina son las llamadas
instrucciones de entrada o salida.

Las instrucciones de entrada o salida son las de lectura o escritura y están estrechamente
relacionadas con los dispositivos de entrada o salida. En este libro se trabajará con el teclado
como dispositivo de entrada y con la pantalla como dispositivo de salida, por ser éstos los
más utilizados y conocidos.

Cuando se necesita que haya comunicación entre el usuario y la máquina, a través del
usuario, se ejecuta una instrucción de lectura, el usuario tiene la palabra (teclado). Si la
comunicación se hace a través de la máquina, se ejecuta una instrucción de salida, la máquina
“tiene la palabra” (pantalla).

. !" )( (%)% 


Permite la comunicación del usuario con la máquina. Consiste en almacenar en una variable
el valor suministrado por el usuario. Su sintaxis es:

 

,
         

Ejemplo:

 

El efecto de esta instrucción es el cambio del contenido de la variable  por el valor


especificado por el usuario. En otras palabras, una lectura implica una asignación. Así
que aparte de la asignación, la instrucción de lectura es la otra posibilidad que existe
para cambiar el contenido de una variable.

Con frecuencia se oye decir “se lee la variable” cuando lo que realmente pasa es que
se lee en la variable.

¿Por qué no es válida ni tiene sentido la instrucción  &'?

. !" )( %'!)% 


Permite la comunicación de la máquina con el usuario. Su sintaxis puede ser una de las tres
siguientes:

• escriba 

Las variables de la lista deben separarse con el caracter coma ( , ).

Ejemplo:

 
 
El efecto de estas instrucciones es escribir en la pantalla el contenido de las
variables que aparecen en la lista (  y , en el primer caso, o  en el segundo).
Si no existen, la ejecución del algoritmo se terminará anormalmente y si
existen pero no han sido inicializadas, se mostrará el valor “basura” que
contengan el cual puede ser cero o espacio en el mejor de los casos.

• escriba “mensaje”

Ejemplo:

    , 


El efecto de esta instrucción es escribir en la pantalla el texto que aparece
entre comillas, tal como está. El mensaje tiene que estar entre comillas, de
lo contrario, se terminará anormalmente la ejecución del algoritmo.

   , 

.
     

•  (-( &-& "

El efecto de esta instrucción es escribir en la pantalla el contenido de la


variable llamada (, el texto que aparece entre comillas, tal como
está, el contenido de la variable llamada & el texto que aparece
entre comillas, tal como está,…

Ejemplo:

  #  . 

El efecto de esta instrucción es escribir en la pantalla el contenido de la


variable llamada , el texto que aparece entre comillas, tal como está
( + ), el contenido de la variable llamada  el texto que aparece entre
comillas, tal como está, ( = ) y el contenido de la variable llamada 

Así, si las variables ,  y   contienen los valores &, ! y ,


respectivamente, en la pantalla aparecería lo siguiente:

&#!.

Ejemplo:

 /      0  




Si, por ejemplo,  vale 4500 y  vale 2700, en la pantalla aparecería lo


siguiente:

/  1'' 


  0 &$'' 


¿Son diferentes las instrucciones   y    ?


Son totalmente diferentes. La instrucción   escribe en el dispositivo de salida (la
pantalla en este libro) el contenido de la variable , mientras que la instrucción   
escribe la letra a porque ésta aparece entre comillas.

Ahora que ya hay interacción entre el usuario y la máquina, se puede volver al problema de
sumar dos números cualesquiera.

/
         

Ejemplo: Sumar dos números.

Como no se especifica qué clase de números se sumarán, se puede suponer que son enteros o
que son reales. En el segundo caso, se tendría un mayor alcance ( ¿por qué?).
¿Qué variables se necesitan?

Se necesitan dos variables para guardar los sumandos y una para guardar el resultado. En el
algoritmo solución se supondrá que los números son enteros.

 

 ( & 
 2 3   4  5
 6 7    4
 (
 6 7    4
 &
  (#&
 ( # & .  
 8 79



Al diseñar los mensajes para la instrucción escriba, no se debe olvidar que la comunicación se está
haciendo con un ser humano y que por lo tanto deben ser escritos en el lenguaje natural de la persona.
Suele pasar que los mensajes carecen de calidez porque se está pensando en la máquina. Tampoco es
conveniente incluir términos propios del lenguaje que son innecesarios y pueden confundir al usuario.
Por ejemplo:

En lugar de la siguiente instrucción:


escriba “Este algoritmo suma dos números.”
sería mejor algo como
escriba “Suma de dos números.”

Obsérvese que en este algoritmo no se puede decir que el contenido final de la variable 
sea basura por ser desconocido porque, aunque no se sabe qué valores ingresará el usuario en
el momento de la ejecución, a la variable   sí se le está definiendo un valor: el de la
suma de las variables ( y &, cuyos contenidos son definidos previamente por el
usuario.

/ (&% )( (!2!2


En este libro, la ejecución de un algoritmo consistirá en hacer las veces de máquina. Esto es,
llevar a cabo todas las tareas que después tendrá que hacer el computador. A este trabajo se le
llamará prueba de escritorio, la cual se hace con papel y lápiz y en una forma similar a la que
se muestra a continuación. Esas pruebas se hacen con valores cualesquiera, de acuerdo con el
tipo de las variables, y su efecto se refleja en la pantalla y en el entorno de memoria.

0
     

Ejemplo: Prueba de escritorio

La prueba de escritorio para el algoritmo  se reflejaría en el


entorno de memoria y en la pantalla como se muestra a continuación:

Instrucción Efecto
 ( &  Se reserva espacio para tres variables enteras
llamadas (, & y ,
respectivamente.

Variable Tipo Contenido


(  
&  
  

 2 3   4 Aparece el mensaje en la pantalla.


 5
2 3   4
 5

0 6 7   


4
6 7    4

 (
Variable Tipo Contenido
(  (!
&  
  

 6 7   


4
6 7    4

 &
Variable Tipo Contenido
(  (!
&  :1
  

5
         

Instrucción Efecto
  (#&
Variable Tipo Contenido
(  (!
&  :1
  ;

 ( # & .  


13 + -4 = 9

 8 79

8 79

 El espacio de memoria reservado


para las variables (, & y
 queda libre.

¿Qué pasa si el usuario ingresa un valor real en lugar de uno entero ? Simplemente se toma
la parte entera. Por ejemplo, si el usuario ingresa 13.57, el valor que se almacena es 13.

¿Cómo sería la versión de esta solución para números reales ? ¿Qué pasaría en este caso si
el usuario ingresa un número entero ?

Si ahora se quisiera restringir el algoritmo de suma de dos enteros a enteros positivos, ¿cómo
se haría ?
Con las herramientas que se tienen hasta ahora en el lenguaje algorítmico no es posible hacer
tal restricción. Es necesario tener la forma de condicionar la realización de la suma. Si los
números son positivos… Primero, para establecer relación entre los operandos se necesita de
los operadores relacionales y para exigir que la condición “ser positivo” sea satisfecha por
ambos operandos se requiere de los conectores lógicos.

Palabras reservadas
 
 
 
 



     

 #
 D           2 &  '( : 
;   2  9  E       22    


%% 
)*
2
 2
 =:2   ;2  >
2  !
 > ! => , =2
 =:2 >

2

%% 
)+*
2
 =  >
 

 =F3  3   3 >


 =G5:7 , =
 
 =5)HID5 , =
 
   %
 =7 3  3    =>     =>  =
 =J 3 3>

2

 F  2     2*

 E2            2  
 H          9       
   22          

782*
4 * C
4 * '
D*
4 * '
4 * C

 F    <2   3   2     C ?8  
     22 3           
 22 


         

$ F    3   2   2      K 
 28      2   9      9
?8        22

 F               
   2  = 2 +   @F3         7
29       K   28      2
  9      9     3      
&    ( ?8        22

" F               K 
 28      2   9      9
?8        22 3        
    22 

,  * :   /  2         
@9    < @A 9 @F2 <  2 @F3 <
     2

B F    3 2     )     
3  

C F    2     F   29  2
2

 F     2    7   /    

L F     2    7    /   
 @F3      2  @M9 < /

 F             7 
29 23  N   2   BO &$  $(     O

0 1(%)2( ('%!2%'(


Permiten establecer relaciones entre dos operandos. Esas relaciones que se establecen se
llamarán condiciones de aquí en adelante.

En este lenguaje se dispondrá de los siguientes operadores relacionales:

Igual que = Mayor que > Menor que <


Diferente de ≠ Mayor o igual que ≥ Menor o igual que ≤


     

5 2(2( '"-!2


Permiten la creación de condiciones compuestas.

6 "

La condición simple de que ( sea mayor que cero se expresa como

( < '

La condición simple de que & sea mayor que cero se expresa como

& < '

Si la suma se quiere restringir a operandos positivos, se hace necesario que las dos
condiciones se satisfagan. Esto es, el primer operando debe ser positivo y el segundo
también. En lenguaje algorítmico esta condición se expresa así:

( < ' % & < '

y por implicar el cumplimiento de más de una condición podría llamarse condición


compuesta. Sin embargo, simplemente se hablará de condición, sea ésta compuesta o no. Ya
se tiene entonces la condición que se debe satisfacer. Ahora, es necesario disponer en el
lenguaje algorítmico de una herramienta que permita preguntar si la condición se satisface.

   
 
En la vida cotidiana, con frecuencia los seres humanos condicionan muchos de sus actos. Por
ejemplo, “Si me pagan la bonificación, me iré de viaje”.
Algo tan natural también está contemplado en el lenguaje algorítmico y se hace a través de
condiciones y estructuras de control condicionales. Las estructuras de control condicionales
permiten que la realización de una o más acciones esté sujeta a la satisfacción o cumpli-
miento de una o más condiciones. En este lenguaje se dispone de estructuras de control
condicionales repetitivas y no repetitivas.

 % )( 22' 2)!!2%' 2 (1(


(1(!!*%
!!*%  7
Se utiliza cuando el cumplimiento de la condición o de las condiciones implica la ejecución
de una sola instrucción. La sintaxis es:

 (condición o condiciones) =

La condición (o condiciones) debe ir entre paréntesis. Si la condición o condiciones se


cumplen, se ejecuta la instrucción. De lo contrario se continúa con lo que haya después de la
estructura de control condicional. Se dice que es no repetitiva porque al cumplirse la
condición la instrucción se ejecuta una y sólo una vez.

#
         

Ejemplo:

"
 ><'?    4 
"

En este momento ya se puede construir un algoritmo general para solucionar el problema de


sumar dos números enteros positivos cualesquiera.

 

 ( & 
 2 3   4   5
 6 7    4
 (
 6 7    4
 &
 >( < ' % & < '?   (#&
 >( < ' % & < '?  ( # & .  
 8 79



¿Qué pasa si uno de los números es negativo o cero ? El usuario se quedará sin saber qué ocu-
rrió. Aunque ingresó dos números, el único resultado que obtuvo fue el mensaje 8 79
así no se haya hecho. Es importante acostumbrarse a escribir los mensajes de error o aclaratorios
que sean pertinentes a la solución de un problema. Para hacerlo en el algoritmo anterior, habría
que tener en cuenta la posibilidad de que una o todas las condiciones no se cumplan.

En general, es importante conocer y entender las tablas de verdad porque de acuerdo con ellas
se obtiene el resultado de evaluar dos o más condiciones conectadas con % o con =.

Sean c1 y c2 dos condiciones. El resultado de evaluar el cumplimiento de las condiciones


conectadas con % o con = se muestra en las siguientes tablas de verdad.

       
@ @ @ @
@ A @ A
 A @ @ A
 A A A A

Para que la condición ( < ' % & < ' no se cumpla, basta con que cualquiera de los
operandos sea menor o igual a cero. La condición para verificarlo sería:

( ≤ ' = & ≤  '

+
     

Si los dos operandos son menores o iguales a cero, también se satisfará la condición.

Obsérvese que con el conector % la única posibilidad de que el resultado de evaluación sea
verdadero (satisfactorio) es que tanto la evaluación de c1 como la de c2 sean verdaderas. Y la
única posibilidad de que el resultado de evaluación sea falso (no satisfactorio) con el conector
=  es que tanto c1 como c2 sean falsas. Si la evaluación tiene lugar con más de dos
condiciones, el análisis es el mismo, una vez agrupadas las condiciones, para lo cual se
utilizan los paréntesis ( ) que son el símbolo de agrupamiento.

Ejemplo. -      (   

 7      3  '  

?9  82       2* .

( ≥ −& %  ≤ (' )

 7        ;2      ( ] 

(( & )* & = )


  % ( >  %  ≤ )

Los paréntesis de adentro se pueden omitir porque el único conector es %, lo cual exige
que todas se cumplan para que el resultado de la evaluación sea verdadero. En este caso,
los paréntesis están sobrando, no hacen daño.

Hay ocasiones en que, aunque sobren, vale la pena dejarlos por claridad con respecto al
enunciado.
El resultado de la evaluación de la condición ((& )* & = )
  permite saber si un número
entero es par porque al hacer la división de los enteros m y 2 se obtiene un número
entero (la parte decimal se trunca) haciendo que el resultado multiplicado por 2 no sea
necesariamente igual al número original, si éste no era par. Por ejemplo, si el contenido
de la variable  es 7, el resultado de la división $+& es ! y ! multiplicado por dos es
diferente de $. Así que, basados en esto se puede afirmar que $ no es par.
¿Qué pasa si en lugar de (& )* &    ( * & )
&
?
c. El valor de la variable  debe ser 2 veces el valor de la variable  si el valor de  es
negativo. Si  es positivo,  debe ser 10 veces el valor de .

Dé un ejemplo de valores para  y  que cumplan: )(' % ) respectivamente.

((m = 2 * n % n < 0) = (m = 10 * n % n > 0))

En este caso, los paréntesis internos son necesarios para forzar el orden de evaluación.

,
         

Obsérvese el papel fundamental que juegan los conectores lógicos y los operadores
relacionales en la construcción de las condiciones.

 /
$ F      2  *

$ 7 3    2   3  3 :      &(     
  3 &  /(
0 1

$ 7   <2       *    -


0 1

$$ )          * &( &"B C( ?9  82  
    2 6666
0 1

$ )          * P BQ P" Q ?9  82  
    2 6666
0 1

$" )          * P 2Q PR Q
0 1

$B 7          * &'$'( &"( &$B(
0 1

$C 7      ;2      &C( ?9  82      
2 6666
0 1

$ 7     2     3   3    ?9  82     2  3 
2 6666666666666666666
0 1

$L 7   4              :    4   C     

?9  82    4    2 6666

0 1

$ F  2     2*

$ A   $ ;2               
7 2        ;2   H     ;2
     

782 K;2    *  '$C 


D* ) ;2 * '$C  

$ 7    $ ;2      :   
;2    <

.
     

782 K;2    * " '$C $


D* ) ;2  * '$C $ "

$$ ?         F2

$ ?         S

$" 5   ;2          ( A, B]  [5, C ).

$B 5   ;2           ( A, B]  [5, C ).

$C F    3   3  4       
&2  ( :      28       8 
2

$$        2     K  2
F2  *
T6T
2
 
 T?9     A2  F2 T
 

& ≥  " (  T  T


& ≥   (  T  T
& ≥  $" (  T  T
& ≥  $ (  T  T
& . $ (  T  T
 TJ T

2

 " 5   


& 
 "
 
@M9    2

La siguiente es una versión mejorada del algoritmo que suma dos enteros positivos
cualesquiera.

 

 ( & 
 2 3   4   5
 6 7    4 
 (
 6 7    4 
 &

/
         

 >( < ' % & < '?   (#&


 >( < ' % & < '?  ( # & .  
  ≤      ≤          

 8 79



Palabras reservadas
 
 
6 
 
 

Obsérvese que en el algoritmo presentado hubo necesidad de evaluar dos veces la misma
condición. Esto porque había dos acciones dependientes del cumplimiento de una misma
condición. Cuando esto ocurre, se hace uso de la estructura de control condicional  
5.

 % )( 22' 2)!!2%' 2 (1(!!*%   7


Se utiliza cuando el cumplimiento de la condición o de las condiciones implica la ejecución
de una o más instrucciones. Se dice que es no repetitiva porque al cumplirse la condición, el
cuerpo del  es ejecutado una y sólo una vez. La sintaxis es:

 >=  ? 





7
La palabra reservada  indica que se trata de una estructura de control condicional 
de bloque en lugar de una  simple. La palabra reservada 7 es un delimitador del cuerpo
de la estructura condicional.

Si la condición o condiciones se cumplen, se ejecuta la instrucción o las instrucciones que


conforman el cuerpo de la estructura de control condicional. Si no se cumplen, se continuará
con lo que haya después del delimitador 7.

Otra versión del algoritmo que suma dos números enteros positivos cualesquiera, utilizando
la estructura de control condicional   5 es:

 

 ( & 
 
 (& 

0
     

 2 3   4   5


B/  >C ,   5  C ? 
 
 > .  =  . D? 
 BE    
 
    7    4 
 (
 F    4 
 &
 >( < ' % & < '? 
  (#&
 ( # & .  
7
 >( ≤   ' = & ≤  '?  G   G  4
   6         
      4
 8 79
7
 > ≠  %  ≠ D?  H" E   =



Si al ejecutar el algoritmo tanto ( como & son positivos, no sólo se calcula la suma


sino que se escribe el resultado. Obsérvese que las instrucciones

      4


 8 79

son ejecutadas sin importar las características de los números.

Obsérvese también que lo que hay a continuación de la estructura de control condicional es la


evaluación de la condición contraria. Dicha evaluación se hace sin importar lo que haya
pasado en la anterior, lo cual no debería suceder. A pesar de que el algoritmo funciona, así
como está, con más herramientas se podría lograr una mejor codificación. El término
codificación se refiere a la escritura en determinado lenguaje de una serie de instrucciones.

La línea de código
 > .  =  . D? 

realiza lo que de aquí en adelante se llamará una validación. Una validación  es la


verificación de la ocurrencia de una situación acompañada de la toma de decisiones
correspondiente.

La apariencia del algoritmo, esto es, la forma como están escritas las instrucciones, no afecta
la ejecución pero sí es importante que sea clara para el ser humano que es quien escribe el
algoritmo y quien lo modifica. Por esta razón es importante acostumbrarse a dejar líneas en
blanco, espacios o también sangría en el cuerpo de las estructuras de control. El código de los
algoritmos debe ser claro y agradable a la vista.

5
         

 % )( 22' 2)!!2%' 2 (1(!!*%    2


2 21!" !7
La estructura de control condicional   5 tiene la opción  que permite ordenar
la ejecución de una o más instrucciones en caso de que la condición o condiciones no se
cumplan. La sintaxis es:

 >=  ? 









7

Al entrar a esta estructura de control condicional, sólo se ejecuta uno de los dos conjuntos de
instrucciones. Si la condición o condiciones se cumplen se ejecuta el conjunto de
instrucciones correspondiente al , de lo contrario, se ejecuta el conjunto de instrucciones
correspondiente al .

Utilizando esta opción se puede pulir el código del algoritmo antes presentado.

 

 ( & 
 
 (& 
 2 3   4   5
B/  >C ,   5  C ? 
 
 > .  =  . D? 
 BE    
 
    7    4 
 (
 F    4 
 &
 >( < ' % & < '? 
  (#&
 ( # & .  

 G   G  4   
7
      4
 8 79

 H" E   =
7




     

El cuerpo de una estructura condicional   5 puede contener a su vez otra estructura


de control condicional , simple o de bloque. Cuando esto ocurre se dice que las estructuras
de control están anidadas.

Ejemplos de formas de codificación con estructuras condicionales anidadas


"
 > " ? 
"
 > " ?  "
"  > " ? 
 > " ?  "
"  > " ? 
 > " ? = "
" 
 "
" 7
7 "
"  > " ? =
  > " ? 
" "
7 7
" 7
7 "

Obsérvese la forma de escribir el código (con sangría) y que una opción  está asociada
al  de bloque activo (que no se ha cerrado) más cercano a ella.

Ejemplo 1. Intervalos bien conformados

?   E  E   3  2 :   <   28  
28    I     2   <2  
2   <2  H     

6&7 ,8 69&


=26>
2
 2 2 2 2

 =UV ?2    ;2       3  2  
3 3  >

%% 7  
 =E *>
 =@)<2  >
 2
 =@)<2  >
 2
 =E *>
 =@)<2  >
 2


         

 =@)<2  >


 2

%% A2  2  

 =?   E* P>2 =>2 =Q  E P> 2 =>2 =Q*>

 &2.2  2.2( 


 =E  E 3  2>
6
 &2.2( 
 =E 3  2  E >
6
 &2.2( 
 =E 3  2  E >
6
 =E  E 3 2 2>
6
6
6
 =  J   >

2
,687 : ;
 *  #*
E* P CQ E* P 'Q E* PC Q E* P' Q
D* )   P CQ  D* )   PC Q 
P 'Q 3 2 2 P' Q 3  2

7  22
" ;  " ; 
2    2  C
2  C 2   
2   2   '
2   ' 2  

 /*  %*
E* PC Q E* P 'Q E* PC 'Q E* P Q
D* 7  PC Q 3  D* 7  PC 'Q  3
2  P 'Q   2  P Q <

" ;  " ; 


2  C 2  C
2    2   '
2    2   
2   ' 2   


     

Ejemplo 2. Diferencia de intervalos.

Dados los intervalos I1 e I2, averiguar si un número real r pertenece a la diferencia de los
intervalos cerrados I1 e I2 (I1-I2). Para que el número pertenezca, debe estar contenido en el
primer intervalo pero no en el segundo.

6&7 ,8 69&

=6>
2
 2 2 2 2 

 =UV ?2    ;2    ;2       
;2        U:9      3
 2V>

%% 7  
 =E *>
 =@)<2  >
 2
 =@)<2  >
 2

 =E *>


 =@)<2  >
 2
 =@)<2  >
 2

 =@M9             >
 

%% A2  2  

 =?   E* P>2 =>2 =Q  E P> 2 =>2 =Q*>

 && ≥  2   ≤  2(  & . 2   + 2(( 


 =7 ;2 = =<         
 2    >
6
 =7 ;2 = =        =
6

 =  J   >



2

#
         

Palabras reservadas
 
 
6 
 
 
 
7

 %
 7      9     :E   F23  
:E 2  2  8   8   

       82  ;2    &  (   
 82            

 *  #*

E* PC Q E* P' Q *  E* P'C Q E* P' Q * L
D* :< 666 K 666 D* :< 666 K 666

7  22

" ;  " ; 


2   2  
2   2  
2   2  
2   2  
     

$ F  2     2 D     
    2         22    

$ ?           F2 @F3     
      $$

$ ?           S

$$ ?  ;2        2

$     <2   3      4    
  2  2     &2  ( :     
28       8  2

$" F     2        2  9    
 2     7     28   

+
     

$B A           3  /    
3

 (<   <2


                
    2   23 

:      2       2  28     
8  2

782 *
)    $     $ $   $
D 7 3   / /  /  (<   <2    =

782 *
)    "     "  $   
D* 7 3   . .  #        
          #/

782 $*
)         $  $   
D* 7 3    $        23  2 

782 *
)         '  $   B
D* )  7 3   $ >%  ?  

$C A       *

o @:  7< 2    9


o @:  7< 2    9
o @7    @A 9 :  @3     
  

$ A           4    <      3  
 :     28      8  2 :  
  /      9        /  9

$L A         & y = mx + b ( *


o F            8 & '  x 
 '  y (
o F    3  3   2      8 
H       <  /  

2
$ I  3    2 ax + bx + c = 0; a, b, c ∈ R, a ≠ 0. )   
  9             
−b± b2 − 4ac
 x =
2a

,
         

2
 b − 4ac  2  2 7   2    
    *

"   -   


   
2
b − 4ac ax 2 + bx + c = 0;
A ? &(    
K ? &(  28 &  2 m ± ni; m, n ∈ R. (
 ? &(    

782*

 @  -  "  


   
 x 2 − 3 x + 2.5 = 0;  28  x1 = 1.5 + 0.5i   x 2 = 1.5 − 0.5i
&2 (
 x 2 − x − 2 = 0;      x1 = 2   x2 = −1
&2 (
 x 2 − 4 x + 4 = 0;      x1 = 2   x2 = 2
&2 (

:   3     7    
2            : 
     W   u   2 u ^ 0.5.

$ 5   ;2                (a, b]  [5, c ) 
        ;2      2    )
                  9  2 
   <2   2     <2  7       
      28      8  2

         8 <2        
   (− 4, 10]  [5, 13)  E           22


$ ?  ;2     ;2    2   2

$$ ?  ;2      2  "

$ ?  ;2 2    2      2    2 
    

$" ?  ;2*

X     2    ;2  


X         2 ;2  2    ;2  
  ;2   

.
     

$B D           2 &  '(

 :       .A #A # - #% &2 5 G F( 2

=26>
2
 2 5 G F
%% 7 2 2    ;2    
%%  &5GQ P"F( :      
 = Y    ;2      &5GQ P"F( 
  ?9 ;2 >
 2
 =?   &5GQ ?9    5 >
 5
 =?9    G >
 G
 =?   P"FQ ?9    F>
 F
%% :     ;2    
 2
 &2+5  2 ≤ G  2 ≥ "  2 .F( 
 = < >
6
 = >
6
 =      & >5 =>G =QP">F =(>
 =5>

2

 )      

=26$62>
2
 2 2 2$ 2
2  
%% A 
 =:2   ;2  >
 =K;2  , =
 2
2   2!2
%% J   

%% A 
 =K;2  , =
 2
2  2!2
%% J   

/
         

%% A $
 =K;2 $ ,
 2$
2   2!2$
%% J   $

%% A 
 2> ! =2> ! =2$> , =2
 =J 2>
%% J   

2

"778
,  # / 
       
# 
/
%

 )      

BB
2
 
 =?9  & Z ( >
 
 =2 >
 & ≥ L   ≤ ( 
 =>
6
 & ≥    .L( 
 =2 >
 & ≥ C   .( 
 =>
 & ≥ B  .C( 
 =>
 & . B( 
 =>
6
6
6
6
6
 TJT

2

0

Vous aimerez peut-être aussi