Sunteți pe pagina 1din 42

DISEO DE ALGORITMOS

Bibliografa:
http://www.carlospes.com/curso_de_algoritmos/
Limitaciones: No se trata el tema de estructuras de datos ni subprogramas

ndice
1. Introduccin
1.1 Justificacin
1.3. Algoritmos
1.3.1 Diagramas de flujo
2. Introduccin a los tipos de datos
2.1 Introduccin a los tipos de datos
2.1.1 Datos de tipo entero
2.1.2 Datos de tipo real
2.1.3 Datos de tipo lgico
2.1.4 Datos de tipo carcter
2.1.5 Datos de tipo cadena
2.1.6 Clasificacin de los tipos de datos simples
Ejercicios de tipos de datos en pseudocdigo

Inciso: Comentarios
3. Identificadores, variables y constantes
3.1 Variables
3.1.1 Declaracin de variables
3.2 Constantes
3.2.1 Constantes de tipo entero
3.2.2 Constantes de tipo real
3.2.3 Constantes de tipo lgico
3.2.4 Constantes de tipo carcter
3.2.5 Constantes de tipo cadena
Ejercicios de identificadores, variables y constantes en pseudocdigo
4. Tipos de datos definidos por el programador
4.1 Datos de tipos enumerados
4.1.1 Declaracin de tipos enumerados
4.1.2 Variables de tipos enumerados
4.2 Datos de tipos subrangos
4.2.1 Declaracin de tipos subrangos
4.2.2 Variables de tipos subrangos
Ejercicios de tipos de datos definidos por el programador en pseudocdigo
5. Operadores y expresiones
5.1 Operadores y expresiones
5.1.1 Expresiones aritmticas
5.1.1.1 Prioridad de los operadores aritmticos
5.1.2 Expresiones lgicas
5.1.2.1 Prioridad de los operadores relacionales y lgicos
5.1.3 Expresiones de carcter

5.1.4 Expresiones de cadena


5.1.5 Prioridad de los operadores aritmticos, relacionales, lgicos y de cadena
Ejercicios de operadores y expresiones en pseudocdigo
6. Asignacin, salida y entrada
6.1 Asignacin
6.2 Salida
6.3 Entrada
Ejercicios de asignacin, salida y entrada en pseudocdigo
7. Estructura de un algoritmo
7.1 Cabecera
7.2 Declaraciones
7.3 Cuerpo
7.4 Comentarios
Ejercicios de la estructura de un algoritmo en pseudocdigo
8. Introduccin a los diagramas de flujo
8.1 Asignacin
8.2 Entrada y salida
8.3 Inicio y fin
8.4 Decisiones
Ejercicios de la estructura de un algoritmo en ordinogramas
9. Instrucciones de control alternativas
9.1 Alternativa doble en pseudocdigo
Ejercicios de la instruccin alternativa doble en pseudocdigo
9.1.1 Alternativa doble en ordinogramas
Ejercicios de la instruccin alternativa doble en ordinogramas
9.2 Alternativa simple en pseudocdigo
Ejercicios de la instruccin alternativa simple en pseudocdigo
9.2.1 Alternativa simple en ordinogramas
Ejercicios de la instruccin alternativa simple en ordinogramas
9.3 Alternativa mltiple en pseudocdigo
Ejercicios de la instruccin alternativa mltiple en pseudocdigo
9.3.1 Alternativa mltiple en ordinogramas
Ejercicios de la instruccin alternativa mltiple en ordinogramas
9.4 Anidamiento
9.4.1 Alternativa doble en doble
9.4.2 Alternativa mltiple en doble
Ejercicios de anidamiento de alternativas en pseudocdigo
Ejercicios de anidamiento de alternativas en ordinogramas
10. Instrucciones de control repetitivas
10.1 Repetitiva mientras en pseudocdigo
10.1.1 Variable contador
10.1.2 Cambios en un bucle mientras
10.1.3 Errores en un bucle mientras
10.1.4 Uso de un bucle mientras que puede no iterar
10.1.5 Repetitiva mientras en ordinogramas
Ejercicios de la instruccin repetitiva mientras en pseudocdigo
Ejercicios de la instruccin repetitiva mientras en ordinogramas

10.2 Repetitiva hacer...mientras en pseudocdigo


10.2.1 Variable acumulador
10.2.2 Repetitiva hacer...mientras en ordinogramas
10.2.3 Diferencias entre bucle mientras y hacer...mientras
Ejercicios de la instruccin repetitiva hacer...mientras en pseudocdigo
Ejercicios de la instruccin repetitiva hacer...mientras en ordinogramas
10.3 Repetitiva para en pseudocdigo
10.3.1 Repetitiva para en ordinogramas
10.3.2 Cundo usar un bucle u otro?
Ejercicios de la instruccin repetitiva para en pseudocdigo
Ejercicios de la instruccin repetitiva para en ordinogramas
10.4 Anidamiento
10.4.1 Bucle para en hacer...mientras
10.4.2 Alternativa simple en bucle para
Ejercicios de anidamiento de repetitivas y alternativas en pseudocdigo
Ejercicios de anidamiento de repetitivas y alternativas en ordinogramas
11. Instrucciones de control de salto
11.1 Instruccin interrumpir
11.2 Instruccin continuar
11.3 Instruccin ir_a
11.4 Instruccin volver
11.5 Ventajas de no usar las instrucciones de salto
12. Llamadas a subalgoritmos

1. Introduccin
1.1. Justificacin
Este es el curso ideal para los quieren empezar a programar con una base slida. Se explican los
principales conceptos de progamacin en lenguaje pseudocdigo, que es un lenguaje parecido al lenguaje
natural muy fcil de entender. As se entienden mejor los bucles, iteraciones, etc. Luego resulta mucho
mas sencillo aprender otros lenguajes. Tambin se utilizan los diagramas de flujo.

Ejemplo (Subiendo escaleras).


Imagina que estamos creando un pequeo programa para un robot que debe subir 10 escalones. El robot
entiende las siguientes instrucciones LevantaPieIzquierdo (para levantar el pie izquierdo y subir un
escaln) y LevantaPieDerecho (para levantar el pie derecho y subir otro escaln), con lo que podr ir
ascendiendo hasta llegar al final de la escalera.
Si solo pudisemos utilizar estas dos instrucciones deberamos hacer un programa con las siguientes
lneas de cdigo:
LevantaPieIzquierdo
LevantaPieDerecho
LevantaPieIzquierdo
LevantaPieDerecho
LevantaPieIzquierdo
LevantaPieDerecho

LevantaPieIzquierdo
LevantaPieDerecho
LevantaPieIzquierdo
LevantaPieDerecho
Fjate que en este caso hemos tenido que escribir las mismas instrucciones varias veces para que el robot
fuera subiendo la escalera. Que hubiese sucedido si el robot en lugar de subir 10 escalones hubiese
tenido que subir la Torre Eifiel?. Pues que el cdigo hubiese sido interminable, corriendo el peligro de
equivocarnos al contar la cantidad de escalones, con lo que el robot no hubiese llegado a la cima de la
escalera. O incluso nos podramos haber equivocado poniendo dos veces la misma instruccin, con lo que
el robot se hubiese pegado un golpetazo impresionante al levantar dos veces el mismo pie.
Para solucionar estos problemillas disponemos de diferentes instrucciones que nos permiten reducir el
nmero de lneas de un programa facilitando as la compresin, la modificacin del cdigo y un posible
error en la ejecucin del programa.
Observa una solucin para nuestro problema. (Piensa que para un mismo problema no solo existe una
solucin, yo te ofrecer una, pero eso no quiere decir que sea la mejor). Las nuevas instruccin se
explicar con detenimiento en lecciones posteriores.
Repetir hasta que NmeroEscaln = 10
LevantaPieIzquierdo
LevantaPieDerecho
Suma 1 a NmeroEscaln
Fin Repetir
Lo que hemos creado es una repeticin de cdigo hasta que se cumple una determinada condicin.
Compara las dos posibles soluciones al mismo programa:
LevantaPieIzquierdo
LevantaPieDerecho
LevantaPieIzquierdo
LevantaPieDerecho
LevantaPieIzquierdo
LevantaPieDerecho
LevantaPieIzquierdo
LevantaPieDerecho
LevantaPieIzquierdo
LevantaPieDerecho

Repetir hasta que NmeroEscaln = 10


LevantaPieIzquierdo
LevantaPieDerecho
Suma 1 a NmeroEscaln
Fin Repetir

Seguramente si no entiendes el segundo ejemplo te parecer mucho ms fcil la primera solucin, pero
estoy seguro que cuando hayas realizado alguna leccin ms del curso comprenders que la segunda es
muchisimo ms fcil de comprender y de modificar. Ya intentar demostrrtelo a lo largo de todo el curso.

1.2. PASOS PARA DEFINIR PROBLEMAS


1. COMPRENDER EL PROBLEMA
Lea o escuche atentamente el problema. Haga un bosquejo, tantee una posible solucin. Si no entiende el
problema no contine al paso 2.
2. IDENTIFICAR LAS ENTRADAS, PROCESOS Y SALIDAS
Entradas: Identifique los datos de ingreso al algoritmo.
Procesos: Son las operaciones, clculos matemticos o procesos que se realizan con los datos de entrada,
a veces dependen del conocimiento de algn tema especifico, puede ser matemticas, estadstica, qumica,
biologa, investigacin de operaciones, contabilidad, etc.
Salidas: Son los resultados a imprimirse o mostrarse. Es la solucin al problema. Son las respuestas.
3. COMPROBAR
Consiste en simular para verificar si el algoritmo resuelve el problema realmente, se hacen con los datos
posibles de entrada, puede realizarse en papel y a mano.

Generalmente los problemas con estructuras secunciales y selectivas son ms complicados de


comprender y fciles de identificar las entradas, procesos y salidas, ya que las soluciones tratan de al
menos de operaciones matemticas u procesos sencillos. Por otro lado los problemas donde se usan
bucles o repeticiones, son sencillos de comprender y difciles de identificar las entradas, procesos y
salidas.
Generalmente los problemas con estructuras secunciales y selectivas son ms complicados de
comprender y fciles de identificar las entradas, procesos y salidas, ya que las soluciones tratan de al
menos de operaciones matemticas u procesos sencillos. Por otro lado los problemas donde se usan
bucles o repeticiones, son sencillos de comprender y difciles de identificar las entradas, procesos y
salidas.
EJEMPLO 1: Escribir un algoritmo para un programa que calcule el rea de un trapecio.
1. Comprendiendo el problema:
Luego de saber que el problema se trata de geometra y es un tema que todo estudiante de educacin
superior conoce, el problema ya estara comprendido de antemano, especficamente se trata del clculo
del rea de un trapecio.
2. Identificando las entradas, procesos y salidas
Entradas: Para calcular el rea de un trapecio, necesitamos saber el valor numrico de: la base mayor,
base menor y su altura.
Procesos: El proceso general a realizarse sera:

3. Comprobando.

1.3. Algoritmos
Un algoritmo establece, de manera genrica e informal, la secuencia de pasos o acciones que resuelve un
determinado problema. Los algoritmos constituyen la documentacin principal que se necesita para poder
iniciar la fase de codificacin y, para representarlos, se utiliza, fundamentalmente, dos tipos de notacin:
pseudocdigo y diagramas de flujo. El diseo de un algoritmo es independiente del lenguaje que despus
se vaya a utilizar para codificarlo.
Un algoritmo escrito en pseudocdigo siempre se suele organizar en tres secciones: cabecera,
declaraciones y cuerpo.
En la seccin de cabecera se escribe el nombre del algoritmo.
En la seccin de declaraciones se declaran algunos objetos (variables, constantes,...) que va a utilizar el
programa.
En el cuerpo estn descritas todas las acciones que se tienen que llevar a cabo en el programa, y siempre
se escriben entre las palabras inicio y fin.
Por ejemplo, el algoritmo de un programa que va a calcular la suma de dos nmeros enteros cualesquiera
introducidos por el usuario y, despus, va a mostrar por pantalla el resultado obtenido, puede ser el
siguiente:
algoritmoSumar
variables

enteroa,b,c
inicio
escribir("Introduzcaelprimernmero(entero):")
leer(a)
escribir("Introduzcaelsegundonmero(entero):")
leer(b)
ca+b
escribir("Lasumaes:",c)
fin

1.3.1. Diagramas de flujo


Los algoritmos tambin se pueden representar, grficamente, por medio de diagramas de flujo. Los
diagramas de flujo se pueden utilizar con otros fines, no obstante, a los diagramas de flujo que
representan algoritmos tambin se les conoce como ordinogramas. Dicho de otra forma, un ordinograma
representa, de manera grfica, el orden de los pasos o acciones de un algoritmo. Por ejemplo, el agoritmo
escrito en pseudocdigo tambin se puede representar mediante el siguiente ordinograma:

El pseudocdigo y los diagramas de flujo son las dos herramientas ms utilizadas para disear algoritmos
en programacin estructurada. Si bien, entre ambos tipos de representacin existen las siguientes
diferencias importantes:
1. Los diagramas de flujo empezaron a utilizarse antes que el pseudocdigo.
2. En pseudocdigo se suelen definir tres secciones del algoritmo (cabecera, declaraciones y
cuerpo). Sin embargo, en un ordinograma slo se representa el cuerpo.
3. En un ordinograma suele ser ms fcil ver, a primera vista, cul es el orden de las acciones del
algoritmo.
4. Los smbolos grficos utilizados en un diagrama de flujo han sido estandarizados por el
American National Standards Institute (ANSI). Sin embargo, no existe un "pseudocdigo
estndar".

A continuacin, se muestran los smbolos grficos ms utilizados para disear ordinogramas:

Figura. Smbolos grficos ms utilizados para dibujar diagramas de flujo de algoritmos.

2. Introduccin a los tipos de datos


Los datos que utilizan los programas se pueden clasificar en base a diferentes criterios. Uno de los ms
significativos es aquel que dice que todos los datos que utilizan los programas son simples o compuestos.
Un dato simple es indivisible (atmico), es decir, no se puede descomponer.
Ejemplo 1: Un ao es un dato simple.
Ao...: 2006
Un ao se expresa con un nmero entero, el cual no se puede descomponer. Sin embargo, un dato
compuesto est formado por otros datos.
Ejemplo 2: Una fecha es un dato compuesto por tres datos simples (da, mes, ao).

Fecha:
Da...: 30
Mes...: 11
Ao...: 2006
Ejemplo 3: Otro ejemplo de dato simple es una letra.
Letra...: t

Una letra se representa con un carcter del alfabeto. Pero, cuando varias letras se agrupan, entonces se
obtiene un dato compuesto por varios caracteres.
Ejemplo 4: Para formar un nombre de persona se utilizan varios caracteres.
Nombre...: Ana (dato compuesto por tres caracteres)
En este apartado se van a estudiar cinco tipos de datos:
Entero
Real
Lgico
Carcter
Cadena
De ellos, tan solo el tipo cadena es compuesto. Los dems son los tipos de datos simples considerados
estndares. Esto quiere decir que la mayora de los lenguajes de programacin permiten trabajar con
ellos. Por ejemplo, en lenguaje C es posible utilizar datos de tipo entero, real y carcter, sin embargo, los
datos de tipo lgico no se pueden utilizar, ya que, no existen en este lenguaje.
Existen otros tipos de datos, simples y compuestos, que se estudiarn ms adelante.
A los tipos de datos simples estndares tambin se les conoce como tipos de datos primitivos, bsicos o
fundamentales.

Ejercicio 1 - Clasificar datos (Tipos de datos - Pseudocdigo CEE)


Clasifique los siguientes datos en simples y compuestos:
El nmero de botones de una camisa.
La altura de una torre.
Los datos de una cuenta bancaria.
El nmero de pasajeros de un avin.
El resultado de hacer una apuesta (ganar o perder).
La capital de Canad.
La letra 'b' escrita en mayscula.

Inciso: Comentarios
Inicio de comentario: /*
Fin de comentario: */

3. Identificadores, variables y constantes


3.1 Variables
En programacin, una variable representa a un espacio de memoria en el cual se puede almacenar un dato.
Grficamente, se puede representar como:

El programador, cuando desarrolla un programa (o disea un algoritmo), debe decidir:


1. Cuantas son las variables que el programa necesita para realizar las tareas que se le han
encomendado.
2. El tipo de dato que puede almacenar cada una de ellas.
Durante la ejecucin de un programa, el valor que tome el dato almacenado en una variable puede cambiar
tantas veces como sea necesario, pero, siempre, tomando valores pertenecientes al tipo de dato que el
programador ha decidido que puede almacenar dicha variable, ya que, el tipo de dato de una variable no
puede ser cambiado durante la ejecucin de un programa.

3.1.1.Declaracin de variables
Para que un programa pueda hacer uso de una o ms variables, stas deben ser declaradas previamente.
Todas las variables de un programa se declaran de la misma forma, indicando de cada una de ellas:
1. El tipo de dato que puede almacenar (mediante un identificador).
2. Su nombre (mediante otro identificador).
Ejemplo 1: La declaracin de una variable para almacenar la edad de una persona se escribe:
entero edad
Por tanto, en la memoria de la computadora se reservar un espacio para almacenar la edad:

En un programa no se pueden declarar varias variables con el mismo nombre (salvo excepciones que
estudiaremos ms adelante), sin embargo, s pueden existir varias variables del mismo tipo de dato.
Siguiendo con el ejemplo 1, si tambin se quiere declarar una variable para almacenar su nmero de hijos,
se debe escribir:
entero edad
entero numero_de_hijos

Las variables de un programa no tienen por qu estar contiguas en la memoria del ordenador:

Puesto que las dos variables son del mismo tipo de dato, se pueden declarar en la misma lnea
separndolas por medio de una coma (,).
entero edad, numero_de_hijos
Opcionalmente, cuando se declara una variable, a sta se le puede asignar un valor inicial.
Ejemplo 2: Si se desea declarar una variable para almacenar un nmero entero y que, inicialmente,
contenga el valor 35, se debe escribir:
entero numero = 35

Por consiguiente, para declarar una variable, en pseudocdigo CEE utilizaremos la sintaxis:

<tipo_de_dato> <variable> [ = <expresin> ]


Y para declarar ms de una variable del mismo tipo:

<tipo_de_dato> <variable_1> [= <expresin_1>],


<variable_2> [= <expresin_2>],
...,
<variable_n> [= <expresin_n>]
Los caracteres abrir corchete ([) y cerrar corchete (]) se utilizan para indicar que lo que contienen es
opcional.
Una expresin representa a un valor de un tipo de dato. En el ejemplo 2, el valor 35 es de tipo entero. En
el apartado 5.1 Operadores y expresiones se estudiarn en detalle las expresiones.
Durante la ejecucin de un programa, para hacer uso del espacio de memoria representado por una
variable, se utiliza su identificador.
Una variable puede ser declarada de cualquier tipo de dato (simple o compuesto). El tipo de dato de una
variable determina su tamao en memoria, o dicho de otro modo, establece el tamao del espacio de
memoria que se reserva para ella.

3.2. Constantes
Una constante representa a un valor (dato almacenado en memoria) que no puede cambiar durante la
ejecucin de un programa.
En C, una constante puede ser de tipo entero, real, carcter, cadena o enumerado. Las constantes de tipo
enumerado se van a estudiar en el apartado 4.1 Datos de tipos enumerados. En cuanto a las dems, se
pueden expresar de dos formas diferentes:
1. Por su valor.
2. Con un nombre (identificador).
Ejemplo 1: Las siguientes constantes de tipo entero estn expresadas por su valor:
-5
10
Para expresar una constante con un nombre, la constante debe ser declarada previamente. Todas las
constantes que se declaran en un programa son definidas de la misma forma, indicando de cada una de
ellas:
1. Su nombre (mediante un identificador).
2. El valor que simboliza (mediante una expresin).
En pseudocdigo, para declarar una constante, vamos a utilizar la sintaxis:

<nombre_de_la_constante> = <expresin>
Y para declarar ms de una constante en una misma lnea, las separaremos por medio de comas (,).
Ejemplo 2: De modo que, si se quieren declarar las constantes de tipo entero del ejemplo 1, asignndoles
un identificador, se puede escribir, por ejemplo:
TEMPERATURA = -5
MES = 10
O tambin:
TEMPERATURA = -5, MES = 10

En programacin es una buena prctica escribir los identificadores de las constantes en maysculas, de
esta forma es ms fcil localizarlos en el cdigo de un programa (o algoritmo). Durante la ejecucin de un
programa, por medio del identificador de una constante, se puede hacer referencia al valor (dato) que
simboliza, tantas veces como sea necesario.

4. Tipos de datos definidos por el programador


No se ve

5. Operadores y expresiones
En un programa, el tipo de un dato determina las operaciones que se pueden realizar con l. Por ejemplo,
con los datos de tipo entero se pueden realizar operaciones aritmticas, tales como la suma, la resta o la
multiplicacin.
Ejemplo 1:
111 + 6 - 8 (tres operandos y dos operadores)
-( ( +19 ) + 72 ) (dos operandos y tres operadores)
En las operaciones del ejemplo se puede observar que los caracteres ms (+) y menos (-) tienen dos usos:
1. Operadores suma y resta.
2. Signos de un nmero (tambin son operadores).
Los caracteres abrir parntesis "(" y cerrar parntesis ")" se utilizan para establecer la prioridad de los
operadores, es decir, para establecer el orden en el que los operadores actan sobre los operandos.
Un operador indica el tipo de operacin a realizar sobre los operandos (datos) que acta. Los operandos
pueden ser:
Constantes (expresadas por su valor o con un nombre (identificador)).
Variables.
Llamadas a funciones.
Elementos de formaciones (arrays).

En programacin, de la evaluacin de una expresin siempre se obtiene un valor. Dicho valor puede ser
de tipo: entero, real, lgico, carcter o cadena. Por consiguiente, una expresin puede ser:
Aritmtica (devuelve un nmero entero o real).
Lgica (devuelve un valor lgico: verdadero o falso)
De carcter (devuelve un carcter representable por el ordenador).
De cadena (devuelve una cadena).

5.1. Expresiones aritmticas


De la evaluacin de una expresin aritmtica siempre se obtiene un valor de tipo entero o real. En las
expresiones aritmticas se pueden utilizar los siguientes operadores aritmticos:
Ejemplo 1
5 * 2 (Producto)
5 ** 2 (Potencia)
De estas expresiones, se obtienen los valores:
10
25 (valor entero)
Ejemplo 2: El operador divisin real (/) realiza la divisin real entre dos operandos numricos.
5 / 2
3.1 / 2.5
Sus resultados son:
2.5 (valor real)
1.24 (valor real)
Ejemplo 3: El operador divisin entera (div) realiza la divisin entera entre dos operandos numricos
enteros.
5 div 2
3.1 div 2.5
El operador divisin entera (div) no puede operar con operandos numricos reales. Por tanto, al evaluar
las expresiones de este ejemplo se obtienen los valores:
2 (valor entero)
ERROR (no se puede evaluar; ambos operandos deben ser valores enteros)
Ejemplo 4: El operador mdulo (mod) realiza la divisin entera entre dos operandos numricos enteros,
devolviendo el resto de la misma.
5 mod 2
3.1 mod 2.5
Al igual que el operador divisin entera (div), el operador mdulo (mod) tampoco puede operar con
operandos numricos reales. De modo que, en este caso, los resultados son:
1 (valor entero)
ERROR (no se puede evaluar; ambos operandos deben ser valores enteros)

5.1.1.Prioridad de los operadores aritmticos


La prioridad de los operadores puede variar de unos lenguajes a otros, pero, en pseudocdigo, en este
curso, vamos a establecer una prioridad de operadores muy similar a la que se aplica en lenguaje C. La
prioridad no puede ser exactamente la misma, ya que, en C existen algunos operadores que no existen en
pseudocdigo, y al revs.
Ejemplo 1: En una expresin aritmtica puede aparecer ms de un operador aritmtico.
11 + 3 div 3 (dos operadores)
-3 * 6 mod 4 (tres operadores)

Para poder evaluar


correctamente las expresiones
aritmticas del ejemplo, es
necesario seguir un criterio de
prioridad de operadores. En
nuestro pseudocdigo CEE, la
prioridad de los operadores
aritmticos es:

Soluciones al ejemplo anterior:


12 (actan en orden los operadores: (div) y suma (+))
-2

5.2. Expresiones lgicas


De la evaluacin de una expresin lgica siempre se obtiene un valor de tipo lgico
(verdadero o falso). En las expresiones lgicas se pueden utilizar dos tipos de
operadores:

Relacionales
Lgicos
5.2.1. Operadores relacionales
Un operador relacional se utiliza para comparar los valores de dos expresiones. stas deben ser del
mismo tipo (aritmticas, lgicas, de carcter o de cadena).
Ejemplo 1: Algunos ejemplos son:
22 > 13 (comparacin de dos expresiones aritmticas)
22.5 < 3.44 (comparacin de dos expresiones aritmticas)
verdadero = falso (comparacin de dos expresiones lgicas)
'c' > 'f' (comparacin de dos expresiones de carcter)
"coche" = "Coche" (comparacin de dos expresiones de cadena)
Proporcionan los valores:
verdadero (22 es mayor que 13)
falso (22.5 no es menor que 3.44)
falso (verdadero no es igual que falso)
falso ('c' no es mayor que 'f')
falso ("coche" no es igual que "Coche")
Las comparaciones entre los valores de tipo numrico son obvias. En cuanto a los valores de tipo lgico
(verdadero y falso) se considera que falso es menor que verdadero. En lo que respecta a los valores de
tipo carcter, su orden viene dado por el ASCII extendido utilizado por el ordenador para representarlos.

Y en el caso de los valores de tipo cadena, tambin se tiene en cuenta dicho cdigo.

Para escribir una expresin relacional (lgica) se utiliza la sintaxis:


<expresin_1>

<operador_de_relacin>

<expresin_2>

Siendo <expresin_1> y <expresin_2> del mismo tipo (aritmtica, lgica, de carcter o de


cadena).

5.2.2. Operadores lgicos


Un operador lgico acta,
exclusivamente, sobre
valores de expresiones
lgicas. Los operadores
lgicos son:

El operador conjuncin (y) y


el operador disyuncin (o)
siempre actan sobre dos operandos, mientras que, el operador negacin (no) slo acta sobre un
operando, o dicho de otra forma, es un operador monario.

Ejemplo 2: Algunos ejemplos son:


9 > 3 y 8 > 6
9 > 3 y 8 > 9
9 = 3 y 8 >= 6
9 = 3 y 8 >= 9
Las expresiones anteriores se evalan a:
verdadero (9 > 3 es verdadero y 8 > 6 es verdadero)
falso
falso
Ejemplo 3: De la expresin
no ( 9 > 3 )
El resultado de evaluarla es: falso

5.2.3. Prioridad de los operadores relacionales y lgicos

5.3 Expresiones de carcter


5.4 Expresiones de cadena
5.5 Prioridad de los operadores
Ejemplo 1: Algunos ejemplos son:
5 * 4 > 5 + 4 o falso y "ab" < "aa"
( 5 * 4 > 5 + 4 o falso ) y 'f' < 'b'
Para poder evaluar
correctamente las expresiones
anteriores, es necesario seguir
un criterio de prioridad de
operadores. En nuestro
pseudocdigo CEE, la
prioridad entre los operadores
aritmticos, relacionales,
lgicos y de cadena se muestra
en la figura de la derecha:
Por tanto, los valores que
proporcionan las expresiones
del ejemplo 18 son:
verdadero (actan en orden
los operadores: (*), suma (+),
(>), (<), (y) y (o))
falso (actan en orden los
operadores: (*), suma (+), (>),
(o), (<) e (y))

6. Asignacin, salida y entrada


6.1. Asignacin
Ejemplo 1: Dadas las declaraciones
PI = 3.141592
real area, longitud, radio = 5.78
algunas instrucciones de asignacin son:
area PI * radio ** 2
longitud 2 * PI * radio

6.2 Salida
Una instruccin de salida (o simplemente salida) consiste en llevar hacia el exterior los valores (datos)
obtenidos de la evaluacin de una lista de expresiones. Normalmente, los datos son enviados a la salida
estndar (la pantalla), pero, tambin existen otros dispositivos de salida (la impresora, el plotter,...).
En pseudocdigo, la sintaxis de una instruccin de salida es:

escribir( <expresin_1>, ..., <expresin_n> )


Ejemplo: Partiendo de las variables
cadena nombre = "Timoteo"
entero edad = 27, hijos = 2
al escribir
escribir( nombre, " tiene ", edad, " aos." )

6.3 Entrada
Ejemplo

leer( nombre )
leer( apellidos )
leer( edad )
Otra posibilidad es:
leer( nombre, apellidos, edad )

Ejercicios previos(Para hacerlos mientras se va explicando la teora antes de llegar a


este punto):1
1 Realizar un programa en pseudocdigo que calcule el dinero que le tocara pagar a
cada uno de los integrantes de un grupo de amigos sabiendo el dinero total que se van a
gastar en un viaje.
2 Realizar un programa en pseudocdigo que indique si un alumno ha aprobado o
suspendido una asignatura partiendo de la nota del alumno2.
La condicin necesaria se expresa como se indica a continuacin:
si ( <expresin_lgica> )
<bloque_de_instrucciones_1>
sino
<bloque_de_instrucciones_2>
fin_si

7. Estructura de un algoritmo
La estructura de un algoritmo sirve para organizar a los elementos que aparecen en l. En
pseudocdigo, todos los algoritmos tienen la misma estructura, la cual viene definida por tres secciones:
Cabecera
Declaraciones
Cuerpo
La sintaxis completa para escribir un algoritmo en pseudocdigo es:
Cabecera
algoritmo <nombre_del_algoritmo>

Declaraciones
[ constantes
<declaraciones_de_constantes> ]
[ tipos_de_datos
<declaraciones_de_tipos_de_datos> ]
[ variables
<declaraciones_de_variables> ]
Cuerpo
inicio
<bloque_de_instrucciones>
fin

Ejemplo:
algoritmo Area_de_una_circunferencia
constantes
PI = 3.141592

1
2

Repasar 1.2. PASOS PARA DEFINIR PROBLEMAS


El alumno aprueba si la nota es superior a 5 puntos.

variables
real area, radio
inicio
escribir( "Introduzca radio: " )
leer( radio )
area PI * radio ** 2
escribir( "El rea de la circunferencia es: ", area )
fin
Ejercicio 1: Habindose declarado las variables:3
entero numero1, numero2
Qu instrucciones son necesarias para mostrar por pantalla lo siguiente?
Introduzca un nmero entero: 8
Introduzca otro nmero entero: 7
8 * 7 = 56

Ejercicio 2
Disee el algoritmo (en pseudocdigo) de un programa que pida por teclado dos nmeros (datos enteros)
y muestre por pantalla el resultado de realizar la divisin entera del primer nmero introducido por el
usuario entre el segundo, y el resto.
En pantalla debera aparecer:
Introduzca dividendo (entero): 39
Introduzca divisor (entero): 5
39 div 5 = 7 ( Resto = 4 )

Nota: Se entiende que el usuario no introducir un divisor igual a cero.

8. Introduccin a los diagramas de flujo


8.1. Asignacin
Para representar una instruccin de asignacin en un ordinograma, se debe escribir la misma sintaxis que
en pseudocdigo, pero, dentro de un rectngulo:

Ejemplo 1: Una instruccin de asignacin puede ser:

Ejemplo 2: Varias instrucciones de asignacin se pueden agrupar dentro de un mismo rectngulo:

Que alumno siga poniendo en prctica apartado 1.2. PASOS PARA DEFINIR PROBLEMAS

8.2 Entrada y salida


En un ordinograma, tanto las instrucciones de entrada como las de salida, se escriben igual que en
pseudocdigo, pero, dentro de un romboide:

Ejemplo 1: Una instruccin de entrada que lea la variable radio, se escribe:

8.3. Inicio y fin


8.4. Decisiones
Como veremos en los apartados 9 y 10, las decisiones siempre forman parte de las instrucciones de
control, las cuales sirven para determinar el orden en el que se tienen que ejecutar las instrucciones de un

programa.
En un ordinograma, para representar, grficamente, a una instruccin de control, se utiliza un rombo y un
crculo.
Ejemplo: Una alternativa doble es una instruccin de control que se representa de la siguiente manera:

Ejercicio 1
Escribe el ordinograma de un programa que pida la base y la altura de un tringulo y muestre por pantalla
el rea del mismo.4
Ejercicio 2
Disee el algoritmo (ordinograma) de un programa que pida por teclado dos nmeros (datos enteros) y
muestre por pantalla el resultado de realizar la divisin entera del primer nmero introducido por el
usuario entre el segundo, y el resto.
En pantalla debera aparecer:
Introduzca dividendo (entero): 39
Introduzca divisor (entero): 5
39 div 5 = 7 ( Resto = 4 )

9. Instrucciones de control alternativas


9.1 Alternativa doble en pseudocdigo
En pseudocdigo, para escribir una instruccin alternativa doble se utiliza la sintaxis:

si ( <expresin_lgica> )
<bloque_de_instrucciones_1>
sino
<bloque_de_instrucciones_2>
fin_si
A la <expresin_lgica> de una instruccin alternativa doble tambin se le denomina condicin.
Ejemplo: Se quiere disear el algoritmo de un programa que:
1) Pida por teclado la nota (dato real) de una asignatura.
2) Muestre por pantalla:
"APROBADO", en el caso de que la nota sea mayor o igual que 5.
"SUSPENDIDO", en el caso de que la nota sea menor que 5.
De modo que, por pantalla se ver, por ejemplo:

Que alumno siga poniendo en prctica apartado 1.2. PASOS PARA DEFINIR PROBLEMAS

Otra posibilidad es:

Para resolver el problema planteado se puede escribir el siguiente pseudocdigo:


algoritmoCalificacion_segun_nota
variables
realnota
inicio
escribir("Introduzcanota(real):")
leer(nota)

si(nota>=5)
escribir("APROBADO")
sino
escribir("SUSPENDIDO")
fin_si
fin

Ejercicio 1. Disee el algoritmo (en pseudocdigo) de un programa que:


1) Pida por teclado dos nmeros (datos enteros).
2) Calcule la suma de los nmeros introducidos por el usuario.
3) Muestre por pantalla:
"LA SUMA S ES MAYOR QUE CERO.", en el caso de que s lo sea.
"LA SUMA NO ES MAYOR QUE CERO.", en el caso de que no lo sea.
En pantalla:
Introduzca primer nmero (entero): 14
Introduzca segundo nmero (entero): -17
LA SUMA NO ES MAYOR QUE CERO.

9.1.1 Alternativa doble en ordinogramas

Ejemplo: Se quiere disear el algoritmo (ordinograma) de un programa que:


1) Pida por teclado la nota (dato real) de una asignatura.
2) Muestre por pantalla si el alumno ha aprobado o ha suspendido.

9.2 Alternativa simple en pseudocdigo


si ( <expresin_lgica> )
<bloque_de_instrucciones>
fin_si

9.2.1 Alternativa simple en ordinogramas

Ejercicio 1 - Cambio de signo (Alternativa simple - Ordinograma)


Disee el algoritmo (ordinograma) de un programa que:
1) Pida por teclado un nmero (dato real).
2) Muestre por pantalla el nmero introducido, pero, cambiado de signo y, slo en el caso de que el
nmero no sea mayor o igual que cero.
En pantalla:
Introduzca nmero (real): -9.6
9.6
Introduzca nmero (real): 7.11

9.3. Alternativa mltiple


En pseudocdigo:
segun_sea ( <expresin> )
<lista_de_valores_1> : <bloque_de_instrucciones_1>
<lista_de_valores_2> : <bloque_de_instrucciones_2>
...
<lista_de_valores_n> : <bloque_de_instrucciones_n>
[ sino : <bloque_de_instrucciones_n+1> ]
fin_segun_sea
Ejemplo
algoritmo Dia_de_la_semana
variables
entero dia
inicio
escribir( "Introduzca da de la semana: " )
leer( dia )
segun_sea ( dia )
1 : escribir( "Lunes" )
2 : escribir( "Martes" )
3 : escribir( "Mircoles" )
4 : escribir( "Jueves" )
5 : escribir( "Viernes" )
6 : escribir( "Sbado" )
7 : escribir( "Domingo" )
sino : escribir( "ERROR: Da incorrecto." )
fin_segun_sea
fin

Ejercicio 1 - Habitaciones de una casa rural (Alternativa mltiple - Pseudocdigo CEE)


En la siguiente tabla se muestra el nmero de camas de las habitaciones de una casa rural, adems de la
planta donde est ubicada cada una de ellas:
Habitacin

Camas

Planta

1. Azul

Primera

2. Roja

Primera

3. Verde

Segunda

Disee el algoritmo (en pseudocdigo) de un programa que:


1) Muestre el listado de las habitaciones de la casa rural.
2) Pida por teclado el nmero (dato entero) asociado a una habitacin.
3) Muestre por pantalla la planta y el nmero de camas de la habitacin seleccionada.
Nota: Si el nmero introducido por el usuario, no est asociado a ninguna habitacin, se mostrar el
mensaje: "ERROR: <nmero> no est asociado a ninguna habitacin.".
En pantalla:
Listado de habitaciones:
1. Azul
2. Roja
3. Verde
Introduzca nmero de habitacin: 3
La Verde tiene 3 cama/s y est en la segunda planta.

Listado de habitaciones:
1. Azul
2. Roja
3. Verde
Introduzca nmero de habitacin: 7
ERROR: 7 no est asociado a ninguna habitacin.

9.3.1 Alternativa mltiple en ordinogramas

Ejemplo

9.4 Anidamiento
Las instrucciones alternativas y repetitivas pueden escribirse una dentro de otra. A este hecho se le conoce
como anidamiento.
Un tipo de estructura anidada en pseudocdigo es:
si ( <expresin_lgica_1> )
/* Inicio del anidamiento */
si ( <expresin_lgica_2> )
<bloque_de_instrucciones_1>
sino
<bloque_de_instrucciones_2>
fin_si
/* Fin del anidamiento */
sino
si <bloque_de_instrucciones_3>
fin_si
Ejercicio 1 - Suma o multiplicacin de dos nmeros (Anidamiento de alternativas - Pseudocdigo
CEE)
Disee el algoritmo (en pseudocdigo) de un programa que:
1) Pida por teclado dos nmeros (datos enteros).
2) Calcule la suma y multiplicacin de ambos nmeros.
3) Muestre por pantalla:
"La suma es mayor.", en caso de que sea mayor que la multiplicacin de ambos nmeros.
"La multiplicacin es mayor.", en caso de que sea mayor que la suma de ambos nmeros.
"La suma y multiplicacin son iguales.", en caso de que as sea.
En pantalla:
Introduzca primer nmero (entero): -2
Introduzca segundo nmero (entero): 3
La suma es mayor.

Introduzca primer nmero (entero): 2


Introduzca segundo nmero (entero): 2
La suma y multiplicacin son iguales.

Ejemplo: Realizar el ordinograma de un programa (con correccin de errores) que muestre si una nota
introducida por teclado correponde a un aprobado o a un suspenso.

10.Instrucciones de control repetitivas


10.1 Repetitiva mientras en pseudocdigo
En pseudocdigo, para escribir una instruccin repetitiva mientras, se utiliza la sintaxis:
mientras ( <expresin_lgica> )
<bloque_de_instrucciones>
fin_mientras
Para que se ejecute el <bloque_de_instrucciones>, la condicin tiene que ser verdadera. Por el
contrario, si la condicin es falsa, el <bloque_de_instrucciones> no se ejecuta.

10.1.1

Variable contador

Ejemplo:
algoritmo Numeros_del_1_al_10
variables
entero contador
inicio
contador 1 /* Inicializacin del contador */
mientras ( contador <= 10 ) /* Condicin */
escribir( contador )
/* Salida */
contador contador + 1
/* Incremento */
fin_mientras
fin

10.1.2 Contar al revs


Ejemplo: Se quiere disear el algoritmo de un programa que muestre por pantalla los primeros diez
nmeros naturales, pero a la inversa, es decir, del 10 al 1:
algoritmoNumeros_del_10_al_1
variables
enterocontador
inicio
contador10/*Cambio1*/
mientras(contador>=1)/*Cambio2*/
escribir(contador)
contadorcontador1/*Cambio3*/
fin_mientras
fin

10.1.3 Errores en un bucle mientras


En este apartado vamos a ver varios ejemplos de posibles errores que se pueden cometer al escribir un
bucle mientras, tomando como referencia el ejemplo del apartado anterior,
Ejemplo 1: Un pequeo descuido, como por ejemplo, no escribir de forma correcta la condicin del
bucle, puede producir un bucle infinito:
algoritmo Numeros_del_10_al_1
variables
entero contador
inicio
contador 10
/* Cambio 1 */
mientras ( contador <= 10 ) /* Descuido */
escribir( contador )
contador contador - 1 /* Cambio 3 */
fin_mientras
fin

Por pantalla se mostrar:

10.1.4

Uso de un bucle mientras que puede no iterar

Ejemplo: Se quiere disear el algoritmo en pseudocdigo de un programa que pida una nota
acadmica por teclado y muestre si el alumno ha aprobado o suspendido con
COMPROBACIN DE ERRORES.

algoritmo Calificacion_segun_nota
variables
real nota
inicio
escribir( "Introduzca nota (real): " )
leer( nota )
/* Si la primera nota introducida por el usuario
es correcta, el bucle no itera ninguna vez. */
mientras ( nota < 0 o nota > 10 )
escribir( "ERROR: Nota incorrecta, debe ser >= 0
escribir( "Introduzca nota (real): " )
leer( nota )
fin_mientras
/* Mientras que el usuario introduzca una nota
incorrecta, el bucle iterar. Y cuando introduzca
una nota correcta, el bucle finalizar. */
si ( nota >= 5 )
escribir( "APROBADO" )
sino
escribir( "SUSPENDIDO" )
fin_si
fin
Ejercicio 1 - rea de una esfera (Repetitiva mientras - Pseudocdigo CEE)
Disee el algoritmo (en pseudocdigo) de un programa que:
1) Pida por teclado el radio (dato real) de una esfera.
2) En el caso de que el radio sea menor o igual que 0, muestre por pantalla el mensaje:
"ERROR: El radio debe ser mayor que cero.".
3) Repita los pasos 1 y 2, mientras que, el radio introducido sea incorrecto.
4) Muestre por pantalla:
"El rea de una esfera de radio <radio> es: <rea>".
Nota 1: rea de una esfera = 4 * pi * radio2
Nota 2: Utilice un bucle mientras.
En pantalla:
Introduzca radio: 3.6

y <= 10" )

El rea de la esfera de radio 3.6 es: 162.860129

Introduzca radio: -2.4


ERROR: El radio debe ser mayor que cero.
Introduzca radio: 2.4
El rea de la esfera de radio 2.4 es: 72.382279

Ejercicio 2 - Volmenes de cubos (Repetitiva mientras - Pseudocdigo CEE)


Disee el algoritmo (en pseudocdigo) de un programa que:
1) Pida por teclado la arista (dato real) de un cubo.
2) En el caso de que la arista sea mayor que cero, muestre por pantalla el mensaje:
"El volumen del cubo de arista <arista> es: <volumen>".
3) Repita los pasos 1 y 2, mientras que, la arista introducida sea mayor que cero.
4) Muestre por pantalla cuantos volmenes de cubos han sido calculados.
Nota 1: Volumen de un cubo = arista3
Nota 2: Utilice un bucle mientras.
En pantalla:
Introduzca arista: 7.3
El volumen de un cubo de arista 7.3 es: 389.017
Introduzca arista: 10.1
El volumen de un cubo de arista 10.1 es: 1030.301
Introduzca arista: 0
Ha calculado el volumen de 2 cubo(s).

Introduzca arista: -5.8


Ha calculado el volumen de 0 cubo(s).

10.1.5 Repetitiva mientras en ordinogramas

(Opcional)

Ejemplo: Se quiere disear el algoritmo en ordinograma de un programa que pida una nota
acadmica por teclado y muestre si el alumno ha aprobado o suspendido con comprobacin de
errores.

Ejercicio 1 - Disee el algoritmo (ordinograma) del mismo programa del apartado anterior 10.1.4. que calcule el rea de una esfera.
Ejercicio 2 - Disee el algoritmo (ordinograma) del mismo programa del apartado anterior 10.1.4. que calcule el volumen de un cubo (Repetitiva mientras - Pseudocdigo CEE)

(Opcional)

10.2 Repetitiva hacer...mientras en pseudocdigo


En pseudocdigo, para escribir una instruccin repetitiva hacer...mientras se utiliza la sintaxis:

hacer
<bloque_de_instrucciones>
mientras ( <expresin_lgica> )
Como se puede apreciar, la instruccin repetitiva hacer...mientras, tambin hace uso de una
condicin.
En un bucle hacer...mientras, primero se ejecuta el bloque de instrucciones, al menos una vez, y,
despus, se evala la condicin.
Ejemplo:
algoritmo Numeros_del_1_al_10
variables
entero contador
inicio
contador 1 /* Inicializacin del contador */
hacer
escribir( contador )
/* Salida */
contador contador + 1 /* Incremento */

mientras ( contador <= 10 )

/* Condicin */

fin

10.2.1 Variable acumulador


10.2.2 Repetitiva hacer...mientras en ordinogramas

10.2.3 Diferen
entre bucle
y hacer...mien

cias
mientras
tras

Ejercicio 1 - Media aritmtica de nmeros introducidos (Repetitiva hacer...mientras Ordinogramas)


Disee el algoritmo (ordinograma) de un programa que:
1) Pida por teclado un nmero (dato entero).
2) Muestre por pantalla los mensajes:
Ha introducido <cantidad_de_nmeros> nmero(s)
La suma es <suma>
3) Pregunte al usuario si desea introducir otro o no.
4) Repita los pasos 1, 2 y 3, mientras que, el usuario no responda 'n' de (no).
5) Muestre por pantalla la media aritmtica (dato real) de los nmeros introducidos.
Nota: Utilice un bucle hacer...mientras.
En pantalla:
Introduzca un nmero entero: 3
Ha introducido 1 nmero(s)
La suma es 3
Desea introducir otro (s/n)?: s
Introduzca un nmero entero: 7

Ha introducido 2 nmero(s)
La suma es 10
Desea introducir otro (s/n)?: s
Introduzca un nmero entero: 6
Ha introducido 3 nmero(s)
La suma es 16
Desea introducir otro (s/n)?: s
Introduzca un nmero entero: 13
Ha introducido 4 nmero(s)
La suma es 29
Desea introducir otro (s/n)?: n
La media aritmtica es 7.25

Introduzca un nmero entero: 8


Ha introducido 1 nmero(s)
La suma es 8
Desea introducir otro (s/n)?: n
La media aritmtica es 8.000000

Ejercicio 2 - Clculo de sumas (Repetitiva hacer...mientras - Ordinogramas)


Disee el algoritmo (ordinograma) de un programa que:
1) Pida por teclado dos nmeros (datos enteros).
2) Muestre por pantalla el mensaje:
La suma es <suma>
3) Pregunte al usuario si desea realizar otra suma o no.
4) Repita los pasos 1, 2 y 3, mientras que, el usuario no responda 'n' de (no).
5) Muestre por pantalla la suma total de los nmeros introducidos.
Nota: Utilice un bucle hacer...mientras.
En pantalla:
Introduzca primer nmero: 9
Introduzca segundo nmero: 4
La suma es 13
Desea realizar otra suma (s/n)?: s
Introduzca primer nmero: 2
Introduzca segundo nmero: 14
La suma es 16
Desea realizar otra suma (s/n)?: s
Introduzca primer nmero: 6
Introduzca segundo nmero: 1
La suma es 7
Desea realizar otra suma (s/n)?: n
La suma total es 36

SOLP(7-11)

10.3 Repetitiva para en pseudocdigo


En pseudocdigo, para escribir una instruccin repetitiva para se utiliza la sintaxis:

para <variable> <valor_inicial> hasta <valor_final>


[ incremento <valor_incremento> ] hacer
<bloque_de_instrucciones>
fin_para
En una instruccin repetitiva para, siempre se utiliza una <variable> a la que se debe asignar un
<valor_inicial>. En cada iteracin del bucle, al valor de la <variable> se le suma el
<valor_incremento> y, cuando la <variable> supera el <valor_final>, el bucle finaliza.
El bucle para es una variante del bucle mientras y, al igual que ste, puede iterar cero o ms veces.
Sin embargo, el bucle para slo se suele usar cuando se conoce el nmero exacto de veces que tiene que
iterar el bucle
Ejemplo 1:
algoritmoNumeros_del_1_al_10
variables
enterocontador
inicio
paracontador1hasta10incremento1hacer
escribir(contador)
fin_para
fin

10.3.1 Repetitiva para en ordinogramas


En un ordinograma, una instruccin repetitiva para se puede representar del siguiente modo:

Figura. Instruccin repetitiva para.

De forma que, por ejemplo, el algoritmo del ejemplo 1 del apartado anterior, 10.3 Repetitiva para, se
puede representar, grficamente, de la siguiente forma:

Ejercicio 1 - Cubos de nmeros pares (Repetitiva para Pseudocdigo y Ordinogramas)


Disee el algoritmo de un programa que muestre por pantalla los cinco primeros nmeros naturales pares
elevados al cubo en: a) Pseudocdigo
b) Ordinograma(optativo)
Nota 1: Cubo de un nmero = nmero3
Nota 2: Utilice un bucle para.
En pantalla:
8 64 216 512 1000
Ejercicio 2 - Nmeros mltiplos de 3 del -15 al -3 (Repetitiva para - Ordinogramas)
Disee el algoritmo de un programa que muestre por pantalla todos los nmeros mltiplos de 3 que hay
entre el -15 y el -3, ambos inclusive en al menos uno de los dos siguientes lenguajes:
a) Pseudocdigo (optativo)

b) Ordinograma

Nota: Utilice un bucle para.


En pantalla:
-15 -12 -9 -6 -3

10.4 Anidamiento de estructuras repetitivas


Ejemplo: Se quiere disear el algoritmo de un programa que muestre por pantalla la tabla de multiplicar
de un nmero entero introducido por el usuario. El proceso debe repetirse mientras que el usuario lo
desee:

Algoritmo propuesto:
algoritmoTabla_de_multiplicar_de_un_numero
variables
caracterseguir
enteroi,numero
inicio

hacer
escribir("Introduzcaunnmeroentero:")
leer(numero)
escribir("Latablademultiplicardel",
numero,"es:")
/*Iniciodelanidamiento*/
parai1hasta10hacer
escribir(numero,"*",i,"=",
i*numero)
fin_para
/*Findelanidamiento*/
escribir("Deseaverotratabla(s/n)?:")
leer(seguir)
mientras(seguir<>'n')
fin

Ejercicio 1 - Cantidad y suma de nmeros enteros (Anidamiento de repetitivas y alternativas)


Disee el algoritmo de un programa que:
1) Pida por teclado un nmero (dato entero).
2) Repita el paso 1, mientras que, el nmero introducido sea distinto de cero (mayor o menor que cero).
3) Muestre cuntos nmeros mayores que cero han sido introducidos por el usuario, as como, la suma de
todos los nmero mayores que cero.
Opcin avanzada(Variante): Igual que el anterior pero muestra la suma de todos los nmeros (mayores y
menores que cero).

En pantalla:
Introduzca un nmero entero: 4
Introduzca un nmero entero: 8
Introduzca un nmero entero: -6
Introduzca un nmero entero: 12
Introduzca un nmero entero: 0
Ha introducido 3 nmero(s) mayor(es) que cero.
La suma es 24

Introduzca un nmero entero: -3


Introduzca un nmero entero: 0
Ha introducido 0 nmero(s) mayor(es) que cero.
La suma es 0
a) En pseudocdigo b) Ordinograma

solp(11-11)
Ejercicio 2 - Mostrar y sumar nmeros enteros (Anidamiento de repetitivas y alternativas)
Disee el algoritmo de un programa que:

1) Pida por teclado dos nmeros (datos enteros).


2) En el caso de que el primer nmero introducido por el usuario, no sea mayor que cero y el segundo
menor que cero, muestre por pantalla el mensaje:
"ERROR: El primer nmero debe ser mayor que cero y el segundo menor que cero."
En caso contrario, muestre por pantalla los nmeros enteros que hay entre los dos nmeros introducidos
por el usuario, ambos inclusive, as como la suma de todos ellos.
En pantalla:
Introduzca primer nmero entero: 5
Introduzca segundo nmero entero: -2
-2 -1 0 1 2 3 4 5
La suma es 12

Introduzca primer nmero entero: 17


Introduzca segundo nmero entero: 8
ERROR: El primer nmero debe ser mayor que cero y el segundo menor
que cero.
a) En pseudocdigo b) Ordinograma

11. Instrucciones de control de salto


11.1 Instruccin interrumpir
En pseudocdigo, para escribir una instruccin de salto interrumpir, se utiliza la sintaxis:

interrumpir
La instruccin de salto interrumpir siempre se usa para interrumpir (romper) la ejecucin normal de
un bucle, es decir, la instruccin interrumpir finaliza (termina) la ejecucin de un bucle y, por tanto,
el control del programa se transfiere (salta) a la primera instruccin despus del bucle.
Ejemplo 1: Analiza el funcionamiento del siguiente algoritmo:
algoritmoNumeros_opuestos_del_menos_10_al_mas_10
variables
enteron,a
inicio
a0
hacer
escribir("Introduzcaunnmeroentero:")
leer(n)
si(n=0)
escribir("ERROR:Elceronotieneopuesto.")
interrumpir
/*Enelcasodequenseauncero,

elbucleseinterrumpe.*/
fin_si
escribir("Elopuestoes:",n)
aa+n
mientras(n>=10yn<=10)
escribir("Suma:",a)
fin

11.2 Instruccin continuar


En pseudocdigo, para escribir una instruccin de salto continuar, se utiliza la sintaxis:

continuar

La instruccin de salto continuar siempre se usa para interrumpir (romper) la ejecucin normal de
un bucle. Sin embargo, el control del programa no se transfiere a la primera instruccin despus del
bucle (como s hace la instruccin interrumpir), es decir, el bucle no finaliza, sino que, finaliza
la iteracin en curso, transfirindose el control del programa a la condicin de salida del bucle, para
decidir si se debe realizar una nueva iteracin o no.
Por tanto, la instruccin continuar finaliza (termina) la ejecucin de una iteracin de un bucle, pero,
no la ejecucin del bucle en s. De forma que, la instruccin continuar salta (no ejecuta) las
instrucciones que existan despus de ella, en la iteracin de un bucle.
Ejemplo 1: En el algoritmo siguiente se muestra como se puede utilizar la instruccin continuar.
Analiza las diferencias entre este ejemplo y el del apartado anterior para la funcin Interrumpir
algoritmo Numeros_opuestos_del_menos_10_al_mas_10
variables
entero n, a
inicio
a0
hacer
escribir( "Introduzca un nmero entero: " )
leer( n )
si ( n = 0 )
escribir( "ERROR: El cero no tiene opuesto." )
continuar
/* En el caso de que n sea un cero,
la iteracin en curso del bucle
se interrumpe aqu. */
fin_si
escribir( "El opuesto es: ", -n )
aa+n
mientras ( n >= -10 y n <= 10 )
escribir( "Suma: ", a )
fin

11.3 Instruccin ir_a


En pseudocdigo, para escribir una instruccin de salto ir_a, se utiliza la sintaxis:

ir_a <nombre_de_la_etiqueta>

La instruccin de salto ir_a se puede usar en cualquier parte del cuerpo de un algoritmo, para transferir
incondicionalmente el control del algoritmo (o programa) a la primera instruccin despus de una etiqueta,
o dicho de otra forma, al ejecutar una instruccin ir_a, el control del programa se transfiere (salta) a la
primera instruccin despus de una etiqueta. Una etiqueta se define mediante su nombre (identificador)
seguido del carcter dos puntos (:).
Ejemplo 1: En el siguiente algoritmo se utiliza la instruccin ir_a para resolver el mismo problema que
el del ejemplo 1 del apartado 11.1 Instruccin interrumpir:
algoritmoNumeros_opuestos_del_menos_10_al_mas_10
variables
enteron,a
inicio
a0
hacer
escribir("Introduzcaunnmeroentero:")
leer(n)
si(n=0)
escribir("ERROR:Elceronotieneopuesto.")
ir_aetiqueta_1
/*Enelcasodequenseauncero,
elcontroldelprogramasaltaalaprimera
instruccindespusdeetiqueta_1.*/
fin_si
escribir("Elopuestoes:",n)
aa+n
mientras(n>=10yn<=10)
etiqueta_1:
escribir("Suma:",a)
fin

11.4 Instruccin volver


En nuestro pseudocdigo CEE, para escribir una instruccin de salto volver, vamos a utilizar la sintaxis:

volver <expresin>
que se corresponde con la instruccin return:

return <expresin>
utilizada en lenguaje C para indicar el valor de retorno de una funcin. No obstante, en este curso, slo
vamos a hacer uso de la instruccin volver cuando definamos subprogramas de tipo funcin, que
estudiaremos ms adelante.

11.5 Ventajas de no usar las instrucciones de salto


Las ventajas de no usar las instrucciones de salto, especialmente la instruccin ir_a (goto), se pueden
resumir en:
La legibilidad del algoritmo es mayor.
La probabilidad de cometer errores en el algoritmo es menor.
Es ms fcil realizar cambios o corregir errores en el algoritmo.

Nunca se altera (rompe) la secuencia de ejecucin normal del programa. Dicho de otro modo, el
programa siempre se ejecuta de un modo natural.

12. Subprogramas
La estructura de los programas que utilizan subprogramas es la siguiente:
Programa Nombre del programa
Definicin de las variables globales del programa
Mdulo Principal
datos
constantes
Definicin de las constantes del mdulo principal
variables
Definicin de las variables del mdulo principal
Inicio **Algoritmo del mdulo principal
Sentencias con llamadas a mdulos secundarios o subprogramas
(Variable=Mdulo secundario) **Si el mdulo secundario devuelve
alguna expresin o algn valor.)
Fin
Mdulo secundario
datos
constantes
Definicin de las constantes locales del mdulo secundario
variables
Definicin de las variables locales del mdulo secundario
Inicio **Algoritmo del mdulo secundario
Sentencias
(Retorno expresin **Si el mdulo secundario devuelve alguna
expresin o algn valor.)
Fin
Ejercicio: Escribir el algoritmo correspondiente a un programa (con los mdulos principal
y secundarios) que realice lo siguiente:
a) Lee del teclado dos nmeros reales.
b) Pide al usuario que elija una opcin: Sumar, Multiplicar, Restar, Dividir.
c) En funcin de la opcin elegida se llama al mdulo correspondiente y se muestra el
resultado por pantalla.
d) Se pregunta al usuario si quiere seguir utilizando los mismos dos nmeros para
hacer ms operaciones.
e) Para terminar el programa el usuario debe contestar N al mensaje: Quiere
continuar con otros nmeros?
Ejercicios repaso:
CONJETURA DE ULAM: Empiece con cualquier nmero entero positivo.
Si es par divdalo entre 2; y si es impar multiplique por 3 y aumente en 1. Obtngase enteros positivos
repitiendo el proceso hasta llegar a 1. Ejemplo si empezamos en 5 la serie sera: 5, 16, 8, 4, 2, 1.

S-ar putea să vă placă și