Documente Academic
Documente Profesional
Documente Cultură
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
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.
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
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.
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
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".
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.
Inciso: Comentarios
Inicio de comentario: /*
Fin de comentario: */
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:
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.
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).
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.
<operador_de_relacin>
<expresin_2>
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:
6.3 Entrada
Ejemplo
leer( nombre )
leer( apellidos )
leer( edad )
Otra posibilidad es:
leer( nombre, apellidos, edad )
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
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 )
Que alumno siga poniendo en prctica apartado 1.2. PASOS PARA DEFINIR PROBLEMAS
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 )
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
si(nota>=5)
escribir("APROBADO")
sino
escribir("SUSPENDIDO")
fin_si
fin
Camas
Planta
1. Azul
Primera
2. Roja
Primera
3. Verde
Segunda
Listado de habitaciones:
1. Azul
2. Roja
3. Verde
Introduzca nmero de habitacin: 7
ERROR: 7 no est asociado a ninguna habitacin.
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.
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.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.4
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" )
(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)
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 */
/* Condicin */
fin
10.2.3 Diferen
entre bucle
y hacer...mien
cias
mientras
tras
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
SOLP(7-11)
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:
b) Ordinograma
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
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
solp(11-11)
Ejercicio 2 - Mostrar y sumar nmeros enteros (Anidamiento de repetitivas y alternativas)
Disee el algoritmo de un programa que:
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
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
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
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.
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.