Você está na página 1de 36

INTRODUCION A LOS ALGORITMOS

El primer curso de programacin de un currculo de ciencias e informtica, es


probablemente el ms importante para la mayora de los estudiantes,el conocimiento
inicial eficiente de conceptos bsicos tales como algoritmo y estructura de datos ,as
como el modo de aprender a resolver problemas mediante computadora ,suele ser vital
debido a la trascendencia que un aprendizaje gradual y correcto supone su carrera y
sobre todo para los primeros curso en la universidad.

El lenguaje bajo el cual se implementan las soluciones de problemas es C++ por


su idoneidad para las aplicaciones cientficas. Este lenguaje permite que el
estudiante se discipline en el manejo de sintaxis y estructura de un programa y se
fundamente para el manejo de otros lenguajes.

DEFINICIN DE ALGORITMO

En programacin, 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.

CARACTERISTICAS DE UN ALGORITMO.

Un algoritmo tiene tres caractersticas esenciales a saber:


a. Preciso. Debe indicar el orden de realizacin de cada paso.
b. Definido. Se deben obtener los mismos resultados siempre que se ejecute.
c. Finito. Debe terminar en algn punto.

Ejercicio.1. Hacer un algo que permita sacar dinero de un cajero electrnico.

2. Hacer un algoritmo que te permita matricular en u.( para cada caso solo escribe
el conjunto de pasos en orden sucesivo para terminar cada accin).

TIPOS DE DATOS.

Datos de Tipo Real. Qu es un dato de tipo real?


Un dato de tipo real es aquel que puede tomar por valor un nmero perteneciente
al conjunto de los nmeros reales (R), el cual est formado por los nmeros
racionales e irracionales.
Ejemplo: El peso de una persona (en kilogramos) y su altura (en centmetros), son
datos que pueden considerarse de tipo real.

Peso.....: 75,3
Altura...: 172,7

R es un conjunto infinito de nmeros reales, y como el ordenador no puede


representarlos todos, un dato de tipo real slo puede tomar por valor un nmero
perteneciente a un subconjunto de R. Los valores de dicho subconjunto varan
segn las caractersticas de cada ordenador y del compilador que se utilice. En
pseudocdigo, para indicar que un dato es de tipo real se utiliza la palabra
reservada: Tambin se les conoce como tipos de datos primitivos, bsicos o
fundamentales.

Qu es un dato de tipo lgico?En programacin, un dato de tipo lgico es aquel


que puede tomar por valor slo uno de los dos siguientes:

{Verdadero, falso}

Los valores "verdadero" y "falso" son contrapuestos, de manera que, un dato de


tipo lgico siempre est asociado a que algo se cumpla o no se cumpla.

Ejemplo: El estado de una barrera de paso de trenes es un dato que puede


considerarse de tipo lgico, por ejemplo, asociando "verdadero" a que est subida
y "falso" a que est bajada.

Estado...: falso (indica que la barrera est bajada)

En pseudocdigo, para indicar que un dato es de tipo lgico se utiliza la palabra


reservada: lgico.

Datos de Tipo Carcter Qu es un dato de tipo carcter?

Un dato de tipo carcter es aquel que puede tomar por valor un carcter
perteneciente al conjunto de los caracteres que puede representar el ordenador.

En pseudocdigo, el valor de un dato de tipo carcter se puede representar entre


comillas simples (') o dobles ("). Pero, en este curso de diseo de algoritmos, se
van a utilizar solamente las comillas simples (al igual que se hace en lenguaje C).

Ejemplo: En un examen con preguntas en las que hay que seleccionar la


respuesta correcta entre varias opciones dadas (a, b, c, d, e), la respuesta
correcta de cada una de las preguntas es un dato de tipo carcter.

Respuesta correcta a la pregunta 3...: 'c'


Datos de Tipo Cadena Qu es un dato de tipo cadena?.

Un dato de tipo cadena es aquel que puede tomar por valor una secuencia de
caracteres. En pseudocdigo, el valor de un dato de tipo cadena se puede
representar entre comillas simples (') o dobles ("). Sin embargo, en este curso de
diseo de algoritmos, se van a utilizar solamente las comillas dobles (al igual que
se hace en lenguaje C).

Ejemplo: El ttulo de un libro y el nombre de su autor, son datos de tipo cadena.

Ttulo...: "La Odisea" (cadena de 9 caracteres)


Autor....: "Homero" (cadena de 6 caracteres)

Obsrvese que, en la cadena "La Odisea", el carcter espacio en blanco tambin


se cuenta. En pseudocdigo, para indicar que un dato es de tipo cadena se utiliza
la palabra reservada: cadena.

IDENTIFICADORES.

Qu son los identificadores?

Palabras Reservadas La mayora de los elementos de un algoritmo escrito en


pseudocdigo se diferencian entre s por su nombre. Por ejemplo, los tipos de
datos bsicos se nombran como:

entero, real, lgico y caracter

Cada uno de ellos es un identificador. Un identificador es el nombre que se le da a


un elemento de un algoritmo (o programa). Por ejemplo, el tipo de dato entero
hace referencia a un tipo de dato que es distinto a todos los dems tipos de datos,
es decir, los valores que puede tomar un dato de tipo entero, no son los mismos
que los que puede tomar un dato de otro tipo.

Los identificadores entero, real, lgico y carcter estn predefinidos, forman parte
del lenguaje algortmico. No obstante, en un algoritmo tambin pueden existir
identificadores definidos por el programador. Por ejemplo, un algoritmo puede
utilizar variables y constantes definidas por el programador. Adems, los
algoritmos tambin se deben nombrar mediante un identificador.

En pseudocdigo, a la hora de asignar un nombre a un elemento de un algoritmo,


se debe de tener en cuenta que todo identificador debe cumplir unas reglas de
sintaxis. Para ello, en nuestro pseudocdigo CEE (C en Espaol), vamos a seguir
las mismas reglas de sintaxis que existen en lenguaje C:

1. Consta de uno o ms caracteres.


2. El primer carcter debe ser una letra, mientras que, todos los dems
pueden ser letras, dgitos . Las letras pueden ser minsculas o maysculas del
alfabeto. As pues, no est permitido el uso de las letras '' y ''.

3. No pueden existir dos identificadores iguales, es decir, dos elementos de un


algoritmo no pueden nombrarse de la misma forma. Lo cual no quiere decir que un
identificador no pueda aparecer ms de una vez en un algoritmo.
De la segunda regla se deduce que un identificador no puede contener caracteres
especiales. Es importante resaltar que las vocales no pueden llevar tilde ni
diresis.

Ejemplo 1: Algunos identificadores vlidos que pueden ser definidos por el


programador son:

Numero
dia_del_mes
PINGUINO1
ciudad
Z

Ejemplo 2: Los siguientes identificadores no son vlidos por incumplir la segunda


regla:

numero123
_DA
numero*
lugar de nacimiento
ao

Ejemplo 3: Los siguientes identificadores no pueden ser definidos por el


programador:

entero
caracter

entero y caracter son identificadores predefinidos (ya existen), por tanto, no


pueden ser definidos por el programador, en cumplimiento de la tercera regla.

Los identificadores son sensibles a minsculas y maysculas.

Ejemplo 4: Mes y mes son considerados identificadores distintos.

Por ltimo, hay que decir que, es aconsejable que los identificadores tengan un
significado afn a lo que representan.

Palabras Reservadas (en programacin)


Qu son las palabras reservadas?
Las palabras reservadas son identificadores predefinidos (tienen un significado
especial). En todos los lenguajes de programacin existe un conjunto de palabras
reservadas. Por el momento, en pseudocdigo, se han estudiado las siguientes:

cadena, carcter, entero, falso, lgico, real y verdadero

Constantes de Tipo Entero.

Qu es una constante de tipo entero?


En programacin, una constante de tipo entero es aquella que representa a un
valor (dato) perteneciente al subconjunto de los Z representable por el ordenador.

Ejemplo 1: Suponiendo que el ordenador (utilizando diecisis bits) pueda


representar, en Complemento a 2, el siguiente conjunto de valores enteros:

{ -32768, -32767, ..., 1, 0, -1, ..., 32766, 32767 }

Algunos ejemplos de constantes de tipo entero son:

-32000
0
000077 (Los ceros a la izquierda no son significativos)
+1111

Obsrvese que, adems de los caracteres numricos, dgitos del (0) al (9),
tambin se puede hacer uso de los caracteres especiales (+) y (-) para indicar el
signo de un nmero entero, el cual es positivo por omisin. Sin embargo, por
ejemplo en lenguaje C, es incorrecto usar los caracteres coma (,) y/o punto (.) para
expresar constantes de tipo entero.

Ejemplo 2: Por tanto, es incorrecto escribir:

-32.000
0,0
+1,111.00

Ejemplo 3: Otros ejemplos incorrectos de constantes de tipo entero son:

++111 (No se puede duplicar el signo)

38000 (No pertenece al subconjunto de Z representable por el ordenador)

Constantes de Tipo Real


Qu es una constante de tipo real?
En programacin, una constante de tipo real es aquella que representa a un valor
(dato) perteneciente al subconjunto de R representable por el ordenador.

Ejemplo 1: Algunos ejemplos son:

8.12
000.333 (Los ceros a la izquierda no son significativos)
+1111.809
-3200. (Tambin se puede escribir -3200.0)
.56 (Tambin se puede escribir 0.56)

Obsrvese que, adems de los caracteres numricos, dgitos del (0) al (9),
tambin se puede hacer uso de los caracteres especiales (+) y (-) para indicar el
signo de un nmero real. Adems, en lenguaje C y, por tanto, tambin en nuestro
pseudocdigo CEE, obligatoriamente debe aparecer el carcter punto (.), o el
carcter (e) o (E) seguido del exponente, del cual tambin puede indicarse su
signo con los caracteres (+) y (-). Los signos del exponente y del nmero en s, por
omisin, son positivos.

Ejemplo 2: Las siguientes constantes de tipo real estn expresadas


correctamente:

-77e-3
+1111e+2
2000E+2
3040e2

Una constante de tipo real tambin se puede expresar con el carcter punto (.) y el
exponente al mismo tiempo.

Ejemplo 3: Algunos ejemplos son:

-50.50e-4
400.e-3
+65.65E+2
.7e2

El exponente tiene la funcin de desplazar la posicin del punto decimal hacia la


derecha si es positivo o, hacia la izquierda si es negativo.

Ejemplo 4: As pues, las siguientes constantes de tipo real representan al mismo


valor:

0.004E+3
4.
.4e1
+400.00e-2
4000E-3

Ejemplo 5: Algunos ejemplos de constantes de tipo real incorrectas son:

-200 (No aparece el punto ni el exponente)


-20,0 (No puede aparecer la coma)
--111. (No se puede duplicar el signo)
-111.. (No se puede duplicar el punto)
-111.11. (No puede aparecer ms de un punto)
+22e (Despus del carcter (e) o (E) se debe escribir el exponente)
+22ee6 (No se puede duplicar el carcter (e) o (E))
+22e 6 (No se puede escribir el carcter espacio en blanco)
38E-2.2 (El exponente debe ser una cantidad entera)

Constantes de Tipo Lgico


Qu es una constante de tipo lgico?
En programacin, una constante de tipo lgico es aquella que representa a un
valor (dato) perteneciente al conjunto:

{ verdadero, falso }

verdadero y falso son palabras reservadas (identificadores) que, en s mismas,


representan a constantes de tipo lgico. En consecuencia, aunque se pueden
definir constantes de tipo lgico, no suele ser habitual declarar constantes de este
tipo de dato.

Ejemplo:

ESTADO = verdadero
INTERRUPTOR = falso

Constantes de Tipo Carcter


Qu es una constante de tipo carcter?
En programacin, una constante de tipo carcter es aquella que representa a un
valor (dato) perteneciente al conjunto de caracteres que puede representar el
ordenador.

Ejemplo 1: Las siguientes constantes de tipo carcter estn expresadas por su


valor:

'a'
'T'
'5'
'+'
'.'
Ejemplo 2: Algunos ejemplos de declaracin de constantes de tipo carcter son:

LETRA = 's'
NUMERO = '9'
SIGNO = '-'
ESPACIO_EN_BLANCO = ' '

Ejemplo 3: En lenguaje C, y en nuestro pseudocdigo CEE, para representar el


carcter comilla simple ('), se debe anteponer el carcter barra invertida (\).

COMILLA_SIMPLE = '\''

Constantes de Tipo Cadena


Qu es una constante de tipo cadena?
Una constante de tipo cadena es aquella que representa a un valor (dato) de tipo
cadena, es decir, representa a una secuencia de caracteres.

Ejemplo 1: Las siguientes constantes de tipo cadena estn expresadas por su


valor:

"Alejandro"
"Lucerna"
"Barcelona 2000"

Ejemplo 2: Algunos ejemplos de declaracin de constantes de tipo cadena son:

NOMBRE = "Alejandro"
CIUDAD = "Lucerna"
OLIMPIADAS = "Barcelona 2000"

Ejemplo 3: En lenguaje C, y en nuestro pseudocdigo CEE, para representar el


carcter comilla doble (") dentro de una cadena, se debe anteponer el carcter
barra invertida (\).

CIUDAD = "7 de julio \"San Fermn\""

Expresiones Aritmticas
Qu tipos de expresiones aritmticas existen en programacin?

Prioridad de los Operadores Aritmticos 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:
Clasificacin de los operadores aritmticos en pseudocdigo.

Ejemplo 1: El operador multiplicacin (*) realiza la multiplicacin de dos


operandos numricos.

5*2
3.1 * 2.5

Los resultados son:

10 (valor entero)
7.75 (valor real)

Ejemplo 2: El operador potencia (**) eleva el operando de la izquierda (nmero


base) al operando de la derecha (potencia o exponente).

5 ** 2
3.1 ** 2.5

De estas expresiones, se obtienen los valores:

25 (valor entero)
16.920151 (valor real)

Ejemplo 3: 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 4: 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 5: 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)

Ejemplo 6: El operador signo menos (-) cambia el signo de un operando numrico.


As, de las expresiones

-11
-( 3.1 )
-( -2.5 )

se obtienen los valores:

-11 (valor entero)


-3.1 (valor real)
2.5 (valor real).

Prioridad de los Operadores Aritmticos.


Qu prioridad tienen los operadores aritmticos en programacin?.

En programacin, la prioridad de los operadores puede variar de unos lenguajes


de programacin 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)
-3.1 + 5 * 0.5 (tres operadores)
3 ** 3 - 1 (dos operadores)
+3 * -8 (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:

Prioridad de los Operadores Aritmticos en Pseudocdigo. A excepcin de los


operadores de signo, que se evalan de derecha a izquierda en una expresin,
todos los dems operadores aritmticos con la misma prioridad, por ejemplo, el
operador multiplicacin (*) y el operador mdulo (mod), se evalan de izquierda a
derecha. En consecuencia, los valores que proporcionan las expresiones del
ejemplo son:

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


-2 (actan en orden los operadores: signo menos (-), (*) y (mod))
-0.6 (actan en orden los operadores: signo menos (-), (*) y suma (+))
26 (actan en orden los operadores: (**) y resta (-))
-24 (actan en orden los operadores: signo menos (-), signo ms (+) y (*))
Para modificar la prioridad de los operadores en las expresiones, se debe hacer
uso de los caracteres abrir parntesis "(" y cerrar parntesis ")".

En las expresiones aritmticas hay que tener la precaucin de no dividir entre cero
(0).

Ejemplo 2: Por tanto, las siguientes expresiones son incorrectas:

11 / 0
5 div 0
-3 mod 0

De la evaluacin de cada una de estas expresiones se obtiene:

ERROR (no se puede evaluar; no se puede dividir entre cero)

PARE: resuelva los siguientes ejercicios teniendo en cuenta la prioridad de los


operadores.

1. 34+58mod(25div6)
2. (4*8-5**3)/(98mod(234/3)).

INSTRUCIONES.

Instruccin de Asignacin.

Cmo se escribe una instruccin de asignacin en pseudocdigo?


En programacin, una instruccin de asignacin (o simplemente asignacin)
consiste en asignar el resultado de la evaluacin de una expresin a una variable.

En pseudocdigo, la sintaxis para escribir una asignacin es:


<nombre_de_la_variable> <expresin>
El valor (dato) que se obtiene al evaluar la <expresin> es almacenado en la
variable que se indique.

Ejemplo 1: Dadas las declaraciones

PI = 3.141592
realarea, longitud, radio = 5.78

Algunas instrucciones de asignacin son:

area PI * radio ** 2
longitud 2 * PI * radio

Por consiguiente, las variables area y longitud almacenarn los valores:


57.046290 (se obtiene de 3.141592 * 5.78 ** 2)
36.316804 (se obtiene de 2 * 3.141592 * 5.78)

En una asignacin, la variable debe ser del mismo tipo que la expresin asignada.

Ejemplo 2: Por tanto, partiendo de

Cadenatelefono
entero numero

las siguientes instrucciones son incorrectas:

telefono 948347788
numero "5"

Sin embargo, entre valores numricos (enteros y reales) se puede realizar una
conversin de tipos.

Ejemplo 3: Habiendo declarado las variables

real a = 6.4, b = 3.1, c, d


entero e = 5, f = 2, g, h, i

despus de las instrucciones

ce/f
da/f
ge/f
ha/f
ib/a

las variables c, d, g, h e i contendrn, respectivamente, los valores:

2.5 (se obtiene de 5 / 2)


3.2 (se obtiene de 6.4 / 2)
2 (se produce un truncamiento de la parte decimal del nmero 2.5)
3 (se produce un truncamiento de la parte decimal del nmero 3.2)
0 (se produce un truncamiento de la parte decimal del nmero 0.484375)

Una asignacin permite cambiar el valor (dato) almacenado en una variable.

Ejemplo 4: Si se ha definido la variable

entero numero = 6

tras la instruccin
numero numero * -3

el valor (dato) almacenado en la variable numero ha pasado a ser el:

-18 (se obtiene de 6 * -3)

Como se puede observar, en esta ocasin, a la variable numero se le asigna el


resultado de evaluar una expresin, en donde la propia variable tambin aparece.

Un error frecuente que suelen cometer programadores principiantes, es incluir en


una expresin, una variable que no tenga ningn valor (dato) almacenado, es
decir, una variable a la que previamente no se le haya asignado ningn valor.

Ejemplo 5: A partir de la declaracin

real n1, n2

en la siguiente instruccin

n1 n2 * 72

la expresin n2 * 72 no se puede evaluar, ya que, cul es valor de n2? Tiene un


valor indeterminado y, en consecuencia, la instruccin se ejecutar mal.

Ejemplo 6: Dadas las declaraciones

entero n1 = -7, n2 = 8, n3
logico negativo

Las siguientes asignaciones tambin son incorrectas:

n1 + 1 n2 (ERROR de sintaxis)
negativo n3 < 0 (cul es el valor de n3?)
Instruccin de Salida
Cmo se escribe una instruccin de salida en pseudocdigo?

En programacin, 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> )


Tambin se puede escribir como:
escribir( <lista_de_expresiones> )
Ejemplo: Partiendo de las variables

cadena nombre = "Timoteo"


entero edad = 27, hijos = 2

al escribir

escribir( nombre, " tiene ", edad, " aos." )


escribir( nombre, " tiene ", hijos, " hijos." )

por pantalla aparecer:

Instruccin de Entrada.

Cmo se escribe una instruccin de entrada en pseudocdigo?


Una instruccin de entrada (o simplemente entrada) consiste en asignar a una o
ms variables, uno o ms valores (datos) recibidos desde el exterior.
Normalmente, los datos son recogidos desde la entrada estndar (el teclado),
pero, tambin existen otros dispositivos de entrada (el ratn, el escner,...).

En pseudocdigo, la sintaxis de una instruccin de entrada es:


leer( <nombre_de_la_variable_1>,
<nombre_de_la_variable_2>,
...,
<nombre_de_la_variable_n> )
Tambin se puede escribir como:
leer( <lista_de_variables> )
Ejemplo 1: Partiendo de las variables

cadena nombre, apellidos


entero edad

para cada una de ellas se puede recoger un valor (dato) desde el teclado,
escribiendo:

leer( nombre )
leer( apellidos )
leer( edad )

Otra posibilidad es

leer( nombre, apellidos, edad )

Ejemplo 2: Si se han declarado

cadena nombre
real numero

al escribir

escribir( "Introduzca su nombre: " )


leer( nombre )
escribir( "Introduzca un nmero real: " )
leer( numero )
escribir( nombre, ", el doble de ", numero, " es: ", numero * 2 )

por pantalla se ver algo parecido a:

Juan y 31.4 son valores (datos) ledos desde el teclado, es decir, introducidos por
el usuario, y almacenados en lasen las variables nombre y numero,
respectivamente.

ESTRUCTURA DE UN ALGORITMO.

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:

algoritmo Sumar
variables
entero a, b, c
inicio
escribir( "Introduzca el primer nmero (entero): " )
leer( a )
escribir( "Introduzca el segundo nmero (entero): " )
leer( b )
ca+b
escribir( "La suma es: ", c )
fin

DECLARACIN DE VARIABLES (en programacin)

Cmo se declaran las variables de un programa o algoritmo?

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:

El tipo de dato que puede almacenar (mediante un identificador).

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, si tambin se quiere declarar una variable para almacenar su nmero de
hijos, se debe escribir:

entero edad

enteronumero_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.

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.

Los datos que utilizan los programas (o algoritmos) 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)

EJERCICIOS.

Hacer los siguientes algoritmos:

1. un algoritmo que calcule el rea y permetro de rectngulo.

2. un algoritmo que calcule el rea, hipotenusa y permetro de un tringulo


rectngulo.

ESTRUCTURAS SELECTIVAS.

Como Tomas de decisin. Estas tomas de decisin tienen la siguiente forma: Las
estructuras condicionales comparan una variable contra otro(s) valor (es), para
que en base al resultado de esta comparacin, se siga un curso de accin dentro
del programa. Cabe mencionar que la comparacin se puede hacer contra otra
variable o contra una constante, segn se necesite. Existen tres tipos bsicos, las
simples,las dobles y lasmltiples.

Simples:
Sintaxis.

Pseudocdigo: Diagrama de flujo:

Dobles:

Las estructuras condicionales dobles permiten elegir entre dos opciones o


alternativas posibles en funcin del cumplimiento o no de una determinada
condicin. Se representa de la siguiente forma:

Pseudocdigo: Diagrama de flujo:

Donde:

Si:Indica el comando de comparacin

Condicin : Indica la condicin a evaluar

Entonces: Precede a las acciones a realizar cuando se cumple la condicin


Instruccin(es):Son las acciones a realizar cuando se cumple o no la condicin
si no :Precede a las acciones a realizar cuando no se cumple la condicin
Dependiendo de si la comparacin es cierta o falsa, se pueden realizar una o ms
acciones.

Mltiples:

Las estructuras de comparacin mltiples, son tomas de decisin especializada


que permiten comparar una variable contra distinta posibles resultados,
ejecutando para cada caso una serie de instrucciones especficas. La forma
comn es la siguiente:

Pseudocdigo: Diagrama de flujo:

Mltiples (En caso de):

Las estructuras de comparacin mltiples, es una toma de decisin especializada


que permiten evaluar una variable con distintos posibles resultados, ejecutando
para cada caso una serie de instrucciones especficas. La forma es la siguiente:

Pseudocdigo: Diagrama de flujo:


Veamos algunos ejemplos donde se aplique todo lo anterior y realizando el
algoritmo en pseudocdigo y haciendo su representacin e un diagrama de flujo:

ejemplo. Realizar un algoritmo en donde se pide la edad del usuario; si es mayor


de edad debe aparecer un mensaje indicndolo. Expresarlo en Pseudocdigo y
Diagrama de flujos.

Pseudocdigo: Diagrama de flujo:

Ejemplo. Se pide leer tres notas del alumno, calcular su definitiva en un rango de
0-5 y enviar un mensaje donde diga si el alumno aprob o reprob el curso.
Exprese el algoritmo usando Pseudocdigo y diagrama de flujos.

Pseudocdigo:

INICIO
Not1, Not2, Not3: REAL
Def: REAL
LEA Nota1, Nota2, Nota3
Def (Not1 + Not2 + Not3) /3
Si Def< 3 entonces
Escriba Reprob el curso
Sino
Escriba Aprob el curso
Fin-Si
FIN

Diagrama de flujo:

Se desea escribir un algoritmo que pida la altura de una persona, si la altura es


menor o igual a 150 cm enve el mensaje: Persona de altura baja; si la altura
est entre 151 y 170 escriba el mensaje: Persona de altura media y si la altura es
mayor al 171 escriba el mensaje: Persona alta. Exprese el algoritmo usando
Pseudocdigo y diagrama de flujos.
Pseudocdigo:

INICIO
Altura: ENTERO
ESCRIBA Cul es tu altura?
LEA Altura
Si Altura <=150 entonces
ESCRIBA persona de altura baja
Sino
Si Altura <=170 entonces
ESCRIBA persona de altura media
Sino
Si Altura>170 ENTONCES
ESCRIBA persona alta
Fin-Si
Fin-Si
Fin-Si
FIN

Es importante ser ordenado en el cdigo que se escribe!

Diagrama de flujo:
PARE.

Hacer un algoritmo que resuelva el siguiente problema( incluya anlisis,


pseudocdigo y diagrama de flujo): Los empleados de una empresa trabajan dos turnos:
diurnos o nocturnos (no se puede trabajar turnos mixtos, es decir un trabajador solo puede trabajar
una de los dos) a dems, si el turno es de noche se seala con 1 y si es diurno con 2. Se desea
calcular el jornal diario neto de acuerdo a los siguientes puntos:

a. La tarifa de las horas diurnas se paga a una tarifa especificada por hora.

b. La tarifa de las horas nocturnas es de 30% por encima de la hora diurna.

c. Si el jornal es menor de 96.000 pesos se le hace un obsequio correspondiente al 5% de su


jornal bruto y en caso contrario el trabajador se le hace un descuento del 10%. (Nota un jornal es
la paga que recibe un trabajador por un da de trabajo).
INSTRUCCIN REPETITIVA MIENTRAS EN PSEUDOCDIGO

Qu es una instruccin de control repetitiva mientras?


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

mientras ( <expresin_lgica> )
<bloque_de_instrucciones>
fin_mientras

Igual que en las instrucciones alternativas doble y simple, a la <expresin_lgica> de


una instruccin repetitiva mientras, tambin se le llama condicin. 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. Por
tanto, cuando el flujo de un algoritmo llega a un bucle mientras, existen dos
posibilidades:

1. Si la condicin se evala a falsa, el bloque de instrucciones no se ejecuta, y el


bucle mientras finaliza sin realizar ninguna iteracin.
2. Si la condicin se evala a verdadera, el bloque de instrucciones s que se
ejecuta y, despus, se vuelve a evaluar la condicin, para decidir, de nuevo, si
el bloque de instrucciones se vuelve a ejecutar o no. Y as sucesivamente,
hasta que, la condicin sea falsa.

El <bloque_de_instrucciones> de un bucle mientras puede ejecutarse cero o ms


veces (iteraciones). Si el <bloque_de_instrucciones> se ejecuta al menos una vez,
seguir ejecutndose repetidamente, mientras que, la condicin sea verdadera. Pero,
hay que tener cuidado de que el bucle no sea infinito. Cuando la condicin de un
bucle mientras se evala siempre a verdadera, se dice que se ha producido un bucle
infinito, ya que, el algoritmo nunca termina. Un bucle infinito es un error_ lgico.
Es importante hacer hincapi en el hecho de que, en un bucle mientras, primero se
evala la condicin y, en el caso de que sta sea verdadera, entonces se ejecuta el
bloque de instrucciones. Veremos que, en el bucle hacer...mientras, el procedimiento
es al revs. En l, primero se ejecuta el bloque de instrucciones y, despus, se
evala la condicin.

Para que un bucle mientras no sea infinito, en el bloque de instrucciones debe ocurrir
algo para que la condicin deje de ser verdadera. En la mayora de los casos, la
condicin se hace falsa al cambiar el valor de una variable.

En resumen, una instruccin repetitiva mientras permite ejecutar, repetidamente,


(cero o ms veces) un bloque de instrucciones, mientras que, una determinada
condicin sea verdadera.

Variable Contador

Qu es una variable contador?

En programacin, para comprender qu es una variable contador, estdiese el


siguiente ejemplo.

Ejemplo: Se quiere disear el algoritmo de un programa que muestre por pantalla


los
primeros diez nmeros naturales:

El problema se puede resolver con el algoritmo:


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
Para comprender el funcionamiento de este algoritmo, se va explicar:

Explicacin de la traza:

Primeramente, se le asigna el valor 1 a contador (accin 1).


En segundo lugar, se evala la condicin ( contador<= 10 ) (accin 2) y,
puesto que es verdadera, se ejecuta el bloque de instrucciones del bucle
mientras.
As que, por pantalla se muestra el valor de contador (accin 3) y, despus,
se incrementa en 1 el valor de la variable contador (accin 4).
Terminada la ejecucin del bloque de instrucciones, se vuelve a evaluar la
condicin ( contador<= 10 ) (accin 5) y, puesto que es verdadera, se
ejecuta de nuevo el bloque de instrucciones.
Y as sucesivamente, mientras que, la condicin sea verdadera, o dicho de
otro modo, hasta que, la condicin sea falsa.
En este algoritmo, el bloque de instrucciones del bucle mientras se ejecuta
diez veces (iteraciones).
Fjese que, en el algoritmo del ejemplo se ha utilizado un contador. Adems, en
este caso, el valor de la variable contador se ha visualizado en cada itera

INSTRUCCIN REPETITIVA HACER...MIENTRAS EN PSEUDOCDIGO

Qu es una instruccin de control repetitiva hacer...mientras?

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 y, despus, se evala la condicin. En el caso de que sta sea
verdadera, se vuelve a ejecutar el bloque de instrucciones. Y as sucesivamente,
hasta que, la condicin sea falsa.

Por consiguiente, cuando el flujo de un algoritmo llega a un bucle hacer...mientras,


existen dos posibilidades:

1. Se ejecuta el bloque de instrucciones y, despus, si la condicin se evala


a falsa, el bloque de instrucciones no se vuelve a ejecutar, de manera que,
el bucle hacer...mientras finaliza, habiendo realizado una sola iteracin.
2. Se ejecuta el bloque de instrucciones y, a continuacin, si la condicin se
evala a verdadera, el bloque de instrucciones se vuelve a ejecutar. Y as
sucesivamente, hasta que la condicin sea falsa.

El <bloque_de_instrucciones> de un bucle hacer...mientras puede ejecutarse una


o ms veces (iteraciones). Tambin hay que prevenir que el bucle no sea infinito.

En resumen, una instruccin repetitiva hacer...mientras permite ejecutar


repetidamente (una o ms veces) un bloque de instrucciones, mientras que, una
determinada condicin sea verdadera.

Ejemplo 1: De modo que, utilizando un bucle hacer...mientras, el problema del


ejemplo del apartado "VariableContador",se puede resolver con el cdigo:
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
La traza del algoritmo es:

Explicacin de la traza:

En primer lugar, se le asigna el valor 1 a contador (accin 1).


A continuacin, se ejecuta el bloque de instrucciones del bucle hacer...
mientras, mostrndose por pantalla el valor de contador (accin 2) y,
despus, se incrementa en 1 el valor de la variable contador (accin 3).
Una vez ejecutado el bloque de instrucciones, se evala la condicin de
salida del bucle ( contador<= 10 ) (accin 4) y, puesto que, es verdadera, se
ejecuta, de nuevo, el bloque de instrucciones.
Y as sucesivamente, mientras que, la condicin sea verdadera, o dicho de
otro modo, hasta que, la condicin sea falsa.
En este algoritmo, el bloque de instrucciones del bucle se ejecuta diez
veces (iteraciones).
Al igual que ocurre con la instruccin repetitiva mientras, cualquier pequeo
descuido o error al escribir el cdigo del algoritmo, puede dar lugar a que la
instruccin repetitiva hacer...mientras no funcione correctamente.

Como ya se ha dicho, el bucle hacer...mientras puede iterar una o ms veces, por


tanto, cuando un bloque de instrucciones debe iterar al menos una vez,
generalmente, es mejor utilizar un bucle hacer...mientras que un bucle mientras,
como por ejemplo, en el siguiente problema.

Ejemplo 2: Se quiere disear el algoritmo de un programa que:

1) Pida por teclado un nmero (dato entero).


2) Pregunte al usuario si desea introducir otro o no.
3) Repita los pasos 1 y 2, mientras que, el usuario no responda 'n' de (no).
4) Muestre por pantalla la suma de los nmeros introducidos por el usuario.

En pantalla:

Solucin:
algoritmoSuma_de_numeros_introducidos_por_el_usuario

variables
caracter seguir
entero acumulador, numero

inicio
/* En acumulador se va a guardar la suma
de los nmeros introducidos por el usuario. */

acumulador 0
hacer
escribir( "Introduzca un nmero entero: " )
leer( numero )
acumulador acumulador + numero
escribir( "Desea introducir otro nmero (s/n)?: " )
leer( seguir )
mientras ( seguir <> 'n' )
/* Mientras que el usuario desee introducir
ms nmeros, el bucle iterar. */

escribir( "La suma de los nmeros introducidos es: ", acumulador )


fin

VARIABLE ACUMULADOR

Qu es una variable acumulador?

Como ya se ha dicho en el partado


anterior "RepetitivaHacer...mientrasenPseudocdigo", el bucle hacer...mientras
puede iterar una o ms veces, por tanto, cuando un bloque de instrucciones debe
iterar al menos una vez, generalmente, es mejor utilizar un bucle hacer...mientras
que un bucle mientras, como por ejemplo, en el siguiente problema (en el cual, al
mismo tiempo, vamos a ver un ejemplo de variable acumulador).

Ejemplo:Se quiere disear el algoritmo de un programa que:

1)Pida por teclado un nmero (dato entero).

2) Pregunte al usuario si desea introducir otro o no.

3) Repita los pasos 1 y 2, mientras que, el usuario no responda 'n' de (no).

4) Muestre por pantalla la suma de los nmeros introducidos por el usuario.

En pantalla:
Solucin:
algoritmo Suma_de_numeros_introducidos_por_el_usuario

variables
caracter seguir
entero acumulador, numero

inicio
/* En acumulador se va a guardar la suma
de los nmeros introducidos por el usuario. */

acumulador 0
hacer
escribir( "Introduzca un nmero entero: " )
leer( numero )
acumulador acumulador + numero
escribir( "Desea introducir otro nmero (s/n)?: " )
leer( seguir )
mientras ( seguir <> 'n' )
/* Mientras que el usuario desee introducir
ms nmeros, el bucle iterar. */

escribir( "La suma de los nmeros introducidos es: ", acumulador )


fin

LA ESTRUCTURA DESDE O PARA

Esta estructura se utiliza cuando sabemos de antema cuantas iteraciones emoe


de hacer.
Sitaxis:

para<variable> <valor_inicial> hasta <valor_final>

[ incremento<valor_incremento> |

decremento<valor_decremento> ] hacer

<bloque_de_instrucciones>

fin_para.

Ejemplo.

algoritmoTabla_de_multiplicar_de_un_numero

variables

caracter seguir

entero i, numero

inicio

hacer

escribir( "Introduzca un nmero entero: " )

leer( numero )

escribir( "La tabla de multiplicar del ",

numero, " es: " )

/* Inicio del anidamiento */

para i 1 hasta 10 hacer

escribir( numero, " * ", i, " = ",

i * numero )

fin_para

/* Fin del anidamiento */


escribir( "Desea ver otra tabla (s/n)?: " )

leer( seguir )

mientras ( seguir <> 'n' )

fin

Una explicacin de los resultados.


PARE:

Hacer un algoritmo que calcule la media de n nmeros. Hacer el programa utilizando las
estructuras desde, mientras y hacer mientras que.

Hacer un algoritmo que calcule simultneamente el mayor y el menor de una lista de 50


nmeros.

Hacer un algoritmo que calcule de una lista de 20 nmeros enteros, la media de los
nmeros pares y la media de los impares.