You are on page 1of 11

Algoritmica y Programacion Unidad 2

ESTRUCTURA GENERAL DE UN PROGRAMA


CONCEPTO DE PROGRAMA
Un programa es un conjunto de instrucciones (rdenes) que producirn la ejecucin de una
determinada tarea; es la conversin del algoritmo haciendo uso de los constructores formales
de un lenguaje de programacin para ser ejecutado en una pc.

PARTES CONSTITUTIVAS DE UN PROGRAMA
Tras la decisin de desarrollar un programa, el programador debe establecer el conjunto de
especificaciones que debe contener el programa: entrada, salida y algoritmos de resolucin,
que incluir las tcnicas para obtener las salidas a partid de las entradas.

Instrucciones y tipos de instrucciones
Un programa puede ser lineal o no lineal:
o Es lineal si las instrucciones se ejecutan secuencialmente, sin bifurcaciones, decisiones ni
comparaciones;
o Es no lineal cuando se interrumpe la secuencia mediante instrucciones de bifurcacin.

La clasificacin de las instrucciones:
o Instrucciones de inicio / fin.
o Instrucciones de asignacin: dar valores a una variable.
o Instrucciones de lectura: leer datos de un dispositivo de entrada.
o Instrucciones de escritura.
o Instrucciones de bifurcacin.

Instrucciones de bifurcacin
Pueden ser hacia delante o hacia atrs, y pueden realizarse de manera condicional o
incondicional:
-Bifurcacin incondicional: se realiza siempre que el flujo del programa pase por la instruccin
sin necesidad del cumplimiento de ninguna condicin.
-Bifurcacin condicional: que se ejecute o no, depende del cumplimiento de una determinada
condicin.

Elementos bsicos de un programa
Los lenguajes de programacin tienen elementos bsicos que se utilizan como bloques
constructivos, as como reglas para que estos elementos se combinen; esas reglas se
denominan sintaxis del lenguaje. Solamente las instrucciones sintcticamente correctas pueden
ser interpretadas por la computadora, y los programas que contengan errores de sintaxis sern
rechazados por la mquina.

Los elementos bsicos constitutivos de un programa o algoritmo son: o palabras reservadas
(hacer, fin hacer, si >> entonces...) o identificadores (nombres de
variablesesencialmente)
o caracteres especiales (coma, apstrofe...)
o constantes
o variables
o expresiones
o instrucciones

Adems de estos elementos bsicos, existen otros que forman parte de los programas:

o bucles.
o acumuladores.
o contadores.
o interruptores.
o estructuras de control: secuenciales, selectivas, repetitivas.
Bucles
Un bucle o lazo (loop) es un segmento de un algoritmo o programa, cuyas instrucciones se
repiten una n cantidad de veces mientras se cumpla una determinada condicin.
Se debe establecer un mecanismo para determinar las tareas repetitivas; este mecanismo es
una condicin que puede ser verdadera o falsa, y que se comprueba cada vez que se realiza
un paso o iteracin del bucle.
Un bucle consta de tres partes:
-decisin
-cuerpo
-salida
Los bucles son anidados cuando estn dispuestos de tal modo que unos son interiores a
otros, y son independientes cuando son externos unos de otros.

El Pseudo-cdigo
Las caractersticas de este pseudolenguaje son las que presenta pseint en el cual as
premisas son:
Sintaxis sencilla
Manejo de las estructuras bsicas de control
Solo 3 tipos de datos bsicos: numrico, caracter /cadenas de caracteres y lgico (verdadero-
falso).
Estructuras de datos: arreglos
Contenido:
Forma general de un algoritmo en pseudocodigo
Tipos de datos simples (logico, numrico, caracter) y arreglos
Construccin de expresiones (funciones y operadores)
Primitivas Secuenciales (lectura, escritura, asignacin)
Estructuras de control condicionales y repetitivas
Forma General de un Algoritmo en PSeudoCodigo
Todo algoritmo en pseudocgido tiene la siguiente estructura general:
Proceso SinTitulo
accion 1;
accion 1;
.
.
.
accion n;
FinProceso
Comienza con la palabra clave Proceso seguida del nombre del programa, luego le sigue
una secuencia de instrucciones y finaliza con la palabra FinProceso. Una secuencia de
instrucciones es una lista de una o ms instrucciones, cada una terminada en punto y coma.
Las acciones incluyen operaciones de entrada y salida, asignaciones de variables,
condicionales si-entonces o de seleccin mltiple y/o lazos (ciclos) mientras, repetir o para.
Identificadores
Los identificadores son nombres que se dan a los elementos utilizados para resolver un
problema y poder diferenciar unos de otros. Al asignar nombres (identificadores) a variables,
constantes y procedimientos se deben tener en cuenta alguna reglas:
Los nombres pueden estar formados por una combinacin de letras y nmeros
(saldoMes, salario, fecha2, baseTringulo, etc).
El primer carcter de un nombre debe ser una letra.
La mayora de los lenguajes de programacin diferencian las maysculas de las
minsculas.
Los nombres deben ser nemotcnicos, con solo leerlos se puede entender lo que
contienen. Deben
ser muy descriptivos; no utilizar abreviaturas, a menos que se justifique plenamente.
Es conveniente utilizar una sola palabra para nombrar pginas, controles, variables,
etc.
No utilizar caracteres reservados (%, +, /, >, etc). MicroMundos admite letras
acentuadas (, , , , ).
Se debe tener en cuenta que algunos lenguajes de programacin no admiten las tildes.
No utilizar palabras reservadas por los lenguajes de programacin.
Para cumplir con convenciones ampliamente utilizadas , los nombres de
procedimientos, variables y constantes deben empezar con minscula. Ejemplo, fecha, suma,
etc. Si es un nombre compuesto por varias palabras, cada una de las palabras (con excepcin
de la primera) deben empezar con mayscula. Ejemplo: fechaInicial, baseTringulo, etc.

TIPOS DE DATOS
Tipos Simples: Numrico, Lgico, Carcter.
Estructuras de Datos: Arreglos.
Tipos de Datos Simples
Existen tres tipos de datos bsicos:
Numrico: nmeros, tanto enteros como decimales. Para separar decimales se utiliza el punto.
Ejemplos: 12 23 0 -2.3 3.14
Lgico: solo puede tomar dos valores: VERDADERO o FALSO.
Carcter: caracteres o cadenas de caracteres encerrados entre comillas (pueden ser dobles o
simples). Ejemplos 'hola' 'hola mundo' '123' 'FALSO' 'etc'

Arreglos
Los arreglos son estructuras de datos homogneas (todos sus datos son del mismo tipo) que
permiten almacenar un determinado nmero de datos bajo un mismo identificador, para luego
referirse a los mismo utilizando uno o ms subndices. Los arreglos pueden pensarse como
vectores, matrices, etc. Para poder utilizar un arreglo, primero es obligatorio su
dimensionamiento; es decir, definirlo declarando los rangos de sus subndices, lo cual
determina cuantos elementos se almacenarn y como se acceder a los mismos.
Dimensionamiento
La instruccin Dimension permite definir un arreglo, indicando sus dimensiones.
Dimesion <identificador> (<maxl>,...,<maxN>);
Esta instruccin define un arreglo con el nombre indicado en <indentificador> y N
dimensiones. Los N parmetros indican la cantidad de dimensiones y el valor mximo de cada
una de ellas. La cantidad de dimensiones puede ser una o ms, y la mxima cantidad de
elementos debe ser una expresin numrica positiva.
Se pueden definir ms de un arreglo en una misma instruccin, separndolos con una coma
(,).
Dimension <ident1> (<max11>,...,<max1N>),..., <identM> (<maxM1>,...,<maxMN>)

CONSTANTE
Una constante representa a un valor (dato almacenado en memoria) que no puede cambiar
durante la ejecucin de un programa. Una constante puede ser de tipo entero, real, carcter,
cadena.

EXPRESIONES
Las expresiones son combinaciones de constantes, variables, smbolos de operacin,
parntesis y nombres de funciones especiales. Por ejemplo: a+(b + 3)/c
Cada expresin toma un valor que se determina tomando los valores de las variables y
constantes implicadas y la ejecucin de las operaciones indicadas. Una expresin consta de
operadores y operandos. Segn sea el tipo de datos que manipulan, se clasifican las
expresiones en: - Aritmticas -Relacionales Lgicas.
Operadores
Funciones

Operadores
Este pseudolenguaje dispone de un conjunto bsico de operadores que pueden ser utilizados
para la construccin de expresiones ms o menos complejas.
Las siguientes tablas exhiben la totalidad de los operadores de este lenguaje reducido:

Operadores
Este pseudolenguaje dispone de un conjunto bsico de operadores que pueden ser utilizados
para la construccin de expresiones ms o menos complejas.
Las siguientes tablas exhiben la totalidad de los operadores de este lenguaje reducido:


Operador Significado Ejemplo
Relacionales
> Mayor que 3>2
< Menor que 'ABC'<'abc'
= Igual que 4=3
<= Menor o igual que 'a'<='b'
>= Mayor o igual que 4>=5
Lgicos
& Y Conjuncin (y). (7>4) & (2=1) //falso
| O Disyuncin (o). (1=1 | 2=1) //verdadero
~ NO Negacin (no). ~(2<5) //falso
Algebraicos
+ Suma total <- cant1 + cant2
- Resta stock <- disp - venta
* Multiplicacin area <- base * altura
/ Divisin porc <- 100 * parte / total
^ Potenciacin sup <- 3.41 * radio ^ 2
% MOD Mdulo (resto de la divisin entera) resto <- num MOD div

La jerarqua de los operadores matemticos es igual a la del lgebra, aunque puede alterarse
mediante el uso de parntesis.
Priioridad de los Operadores Aritmticos
Todas las expresiones entre parntesis se evalan primero. Las expresiones con parntesis
anidados se evalan de dentro a fuera, el parntesis ms interno se evala primero.
Dentro de una misma expresin los operadores se evalan en el siguiente orden.
1.- ^ Exponenciacin
2.- *, /, %, mod Multiplicacin, divisin, modulo.
3.- +, - Suma y resta.

Funciones
Las funciones en el pseudocdigo se utilizan de forma similar a otros lenguajes. Se coloca su
nombre seguido de los argumentos para la misma encerrados entre parntesis (por ejemplo
trunc(x)). Se pueden utilizar dentro de cualquier expresin, y cuando se evale la misma, se
reemplazar por el resultado correspondiente. Actualmente, todas la funciones disponibles son
matemticas (es decir que devolvern un resultado de tipo numrico) y reciben un slo
parmetro de tipo numrico. A continuacin se listan las funciones integradas disponibles:

Funcin Significado
RC(X) Raz Cuadrada de X
ABS(X) Valor Absoluto de X
LN(X) Logaritmo Natural de X
EXP(X) Funcin Exponencial de X
SEN(X) Seno de X
COS(X) Coseno de X
TAN(X) Tangente de X
ASEN(X) Arcoseno de X
ACOS(X) Arcocoseno de X
ATAN(X) Arcotangente de X
TRUNC(X) Parte entera de X
REDON(X) Entero ms cercano a X
AZAR(X) Entero aleatorio entre 0 y x-1
Nota: El mdulo no se encuentra entre las funciones ya que fue implementado como operador.

Primitivas Secuenciales
Asignacin
Lectura
Escritura
Asignacin

La instruccin de asignacin permite almacenar un valor en una variable.
<variable> <- <expresin> ;
Al ejecutarse la asignacin, primero se evala la expresin de la derecha y luego se asigna el
resultado a la variable de la izquierda. El tipo de la variable y el de la expresin deben coincidir.

Lectura

La instruccin Leer permite ingresar informacin desde el ambiente.
Leer <variablel> , <variable2> , ... ,
<variableN> ;
Esta instruccin lee N valores desde el ambiente (en este caso el teclado) y los asigna a las
N variables mencionadas. Pueden incluirse una o ms variables, por lo tanto el comando leer
uno o ms valores.

Escritura

La instruccin Escribir permite mostrar valores al ambiente.
Escribir <exprl> , <expr2> , ... , <exprN> ;
Esta instruccin imprime al ambiente (en este caso en la pantalla) los valores obtenidos de
evaluar N expresiones. Dado que puede incluir una o ms expresiones, mostrar uno o ms
valores.

Estructuras de Control
Condicionales
Si-Entonces
Seleccin Mltiple
Repetitivas:
Mientras
Repetir
Para


CONDICIONAL SI-ENTONCES


La secuencia de instrucciones ejecutadas por la instruccin Si-Entonces-Sino depende del
valor de una condicin lgica.
Si <condicin>
Entonces
<instrucciones>
Sino
<instrucciones>
FinSi
Al ejecutarse esta instruccin, se evala la condicin y se ejecutan las instrucciones que
correspondan: las instrucciones que le siguen al Entonces si la condicin es verdadera, o las
instrucciones que le siguen al Sino si la condicin es falsa. La condicin debe ser una
expresin lgica, que al ser evaluada retorna Verdadero o Falso.
La clusula Entonces debe aparecer siempre, pero la clusula Sino puede no estar. En ese
caso, si la condicin es falsa no se ejecuta ninguna instruccin y la ejecucin del programa
contina con la instruccin siguiente.

SELECCIN MLTIPLE

La secuencia de instrucciones ejecutada por una instruccin Segun depende del valor de una
variable numrica.
Segun <variable> Hacer
<nmero1>: <instrucciones>
<nmero2>,<nmero3>: <instrucciones>
<...>
De Otro Modo: <instrucciones>
FinSegun
Esta instruccin permite ejecutar opcionalmente varias acciones posibles, dependiendo del
valor almacenado en una variable de tipo numrico. Al ejecutarse, se evala el contenido de la
variable y se ejecuta la secuencia de instrucciones asociada con dicho valor.
Cada opcin est formada por uno o ms nmeros separados por comas, dos puntos y una
secuencia de instrucciones. Si una opcin incluye varios nmeros, la secuencia de
instrucciones asociada se debe ejecutar cuando el valor de la variable es uno de esos
nmeros.
Opcionalmente, se puede agregar una opcin final, denominada De Otro Modo, cuya
secuencia de instrucciones asociada se ejecutar slo si el valor almacenado en la variable no
coincide con ninguna de las opciones anteriores.

PIPEH PSEUDO INTRPRETE
PSeInt es principalmente un intrprete de pseudocdigo. El proyecto naci como trabajo final
para la ctedra de Programacin I de la carrera Ingeniera en Informtica de la Universidad
nacional del Litoral, razn por la cual el tipo de pseudocdigo que interpreta est basado en el
pseudocdigo presentado en la ctedra de Fundamentos de Programacin de dicha carrera.
Actualmente incluye otras funcionalidades como editor y ayuda integrada, generacin de
diagramas de flujo o exportacin a cdigo C++ (en etapa experimental).


EJERCICIOS RESUELTOS
1. Disear el algoritmo (ordinograma y pseudocdigo) correspondiente a un programa que lea el
valor correspondiente a una distancia en millas marinas y las escriba expresadas en metros.
Sabiendo que 1 milla marina equivale a 1852 metros.
Pseudocdigo
Proceso MillasyMetros

MILL_METR <-1852;
Escribir Distancia en millas: ;
Leer Dmillas;
Dmetros <- Dmillas * MILL_METR;
Escribir Distancia en metros:, Dmetros;
FinProceso

2. Disear el algoritmo (ordinograma y pseudocdigo) correspondiente a un programa que
Escribir el porcentaje descontado en una compra, introduciendo por teclado el precio de la tarifa
y el precio pagado.
Pseudocdigo
Proceso Descuento
Leer Tarifa
Leer Precio
Dto <- Tarifa Precio
Pd <- Dto * 100 / Tarifa
Escribir Porcentaje de descuento:, Pd
FinProceso

3. Disear el algoritmo (ordinograma y pseudocdigo) correspondiente a un programa que pida
por teclado dos nmeros enteros y muestre su suma, resta, multiplicacin, divisin y el resto
(mdulo) de la divisin. Si la operacin no es conmutativa, tambin se mostrar el resultado
invirtiendo los operadores.
Pseudocdigo
Proceso Operaciones_aritmticas
Leer num1, num2
Escribir n1 + n2 : , num1+num2
Escribir n1 - n2 : , num1-num2
Escribir n2 - n1 : , num2-num1
Escribir n1 * n2 : , num1*num2
Escribir n1 / n2 : , num1/num2
Escribir n2 / n1 : , num2/num1
Escribir n1 mod n2 : , num1 mod num2
Escribir n2 mod n1 : , num2 mod num1
FinProceso

4. Disear el algoritmo (ordinograma y pseudocdigo) correspondiente a un programa que obtiene
la ltima cifra de un nmero introducido.
Pseudocdigo
Proceso ltima_cifra
Escribir Introduzca nmero:
Leer num
Escribir ltima cifra: , num mod 10
FinProceso

5. Disear el algoritmo (ordinograma y pseudocdigo) correspondiente a un programa que calcule
el rea y el permetro de un tringulo rectngulo dada la base y la altura.
Pseudocdigo
Proceso Tringulo_rectngulo
Leer base, altura
area <- base * altura / 2
hipotenusa <- Raiz (base^2 + altura^2)
perimetro <- base + altura + hipotenusa
Escribir rea : , area
Escribir Permetro : , perimetro
FinProceso

6. Disear el algoritmo (ordinograma y pseudocdigo) correspondiente a un programa que tras
introducir una medida expresada en centmetros la convierta en pulgadas (1 pulgada <- 2,54
centmetros)
Pseudocdigo
Proceso: Cent_Pulgadas
CM_PULG <-2.54
Escribir Valor en centmetros:
Leer cm
pulgadas <- cm / CM_PULG
Escribir Pulgadas: , pulgadas
FinProceso

7. Disear el algoritmo (ordinograma y pseudocdigo) correspondiente a un programa que exprese
en horas, minutos y segundos un tiempo expresado en segundos.
Pseudocdigo
ProcesoTiempo_segundos
Leer segundos
horas <- segundos / 3600
segundos <- segundos mod 3600
minutos <- segundos / 60
segundos <- segundos mod 60
Escribir horas, h , minutos, m , segundos, s
FinProceso

8. Disear el algoritmo (ordinograma y pseudocdigo) correspondiente a un programa que pida el
total de kilmetros recorridos, el precio de la gasolina (por litro), el dinero de gasolina gastado
en el viaje y el tiempo que se ha tardado (en horas y minutos) y que calcule:
Consumo de gasolina (en litros y euros) por cada 100 km.
Consumo de gasolina (en litros y euros) por cada km.
Velocidad media (en km/h y m/s).
Pseudocdigo
Proceso Consumo_viaje
Leer km, precio, dinero, horas, minutos

// Litros consumidos totales
litros <- dinero / precio

// Litros por km
litroskm <- litros / km

// Dinero por km
dinerokm <- dinero / km

// Tiempo empleado, convertido a horas
horastotal <- horas + minutos / 60

// Velocidad media (km/h, m/s)
kmh <- km / horastotal
ms <- (km * 1000) / (horastotal * 3600)

// Consumos por cada 100 km
Tlitros100 <- litroskm * 100
Teuros100 <- dinerokm * 100

Escribir Consumo de gasolina cada 100 Km
Escribir En litros:, Tlitros100
Escribir En euros:, Teuros100
Escribir Consumo de gasolina por cada Km
Escribir En litros:, litroskm
Escribir En euros:, dinerokm
Escribir Velocidad media en Km/h:, kmh
Escribir Velocidad media en m/s:, ms
FinProceso

9. Disear el algoritmo (ordinograma y pseudocdigo) correspondiente a un programa que al
introducir una cantidad de dinero expresado en euros nos indique cuntos billetes y monedas se
puede tener como mnimo.
Pseudocdigo
Proceso Billetes_Monedas

Escribir Introduzca importe en euros:
Leer cant_euros

b_500 <- cant_euros div 500
// Se obtiene el resto con una operacin matemtica
// ya que no se puede usar el operador mod con reales
cant_euros <- cant_euros b_500 * 500

b_200 <- cant_euros div 200
cant_euros <- cant_euros b_200 * 200
b_100 <- cant_euros div 100
cant_euros <- cant_euros b_100 * 100
b_50 <- cant_euros div 50
cant_euros <- cant_euros b_50 * 50
b_20 <- cant_euros div 20
cant_euros <- cant_euros b_20 * 20
b_10 <- cant_euros div 10
cant_euros <- cant_euros b_10 * 10
b_5 <- cant_euros div 5
cant_euros <- cant_euros b_5 * 5
m_2 <- cant_euros div 2
cant_euros <- cant_euros m_2 * 2
m_1 <- cant_euros div 1
cant_euros <- cant_euros m_1 * 1
m_050 <- cant_euros div 0.50
cant_euros <- cant_euros m_050 * 0.50
m_020 <- cant_euros div 0.20
cant_euros <- cant_euros m_020 * 0.20
m_010 <- cant_euros div 0.10
cant_euros <- cant_euros m_010 * 0.10
m_005 <- cant_euros div 0.05
cant_euros <- cant_euros m_005 * 0.05
m_002 <- cant_euros div 0.02
cant_euros <- cant_euros m_002 * 0.02
m_001 <- cant_euros div 0.01
cant_euros <- cant_euros m_001 * 0.01
Escribir b_500, b_200, b_100, b_50, b_20, b_10, b_5, m_2, m_1, m_050, m_020, m_010, m_005,
m_002, m_001
FinProceso

10. Suponiendo que una paella se puede cocinar exclusivamente con arroz y gambas, y que
para cada cuatro personas se utiliza medio kilo de arroz y un cuarto de kilo de gambas, escribir
un programa que pida por pantalla el nmero de comensales para la paella, el precio por kilo de
los ingredientes y muestre las cantidades de los ingredientes necesarios y el coste de la misma.
Pseudocdigo
Proceso Paella
Leer comensales, precio_arroz, precio_gambas
cant_arroz <- comensales * 0.5 / 4
cant_gambas <- comensales * 0.25 / 4
coste_arroz <- cant_arroz * precio_arroz
coste_gambas <- cant_gambas * precio_gambas
coste_total <- coste_arroz + coste_gambas
Escribir cant_arroz, cant_gambas, coste_arroz, coste_gambas, coste_total
FinProceso

11.- Haga el algoritmo en pseudo cdigo que, dada una variable cuyo valor es ledo desde
teclado, imprima por pantalla si el nmero es o no mayor que 0.
Pseudocdigo

Proceso MayorQue0
Escribir Escribir un numero
Leer n
Si (n > 0) entonces
Escribir El nmero es mayor que 0
Sino
Escribir El nmero no es mayor que 0
FinSi
FinProceso
12.- Haga el algoritmo en pseudo cdigo que, dada una variable cuyo valor es ledo desde
teclado, imprima por pantalla si el nmero es o no mayor que 0, y si el nmero es par o
impar.
Pseudocdigo

Proceso MayorQue0Par
Escribir Escribir un nmero ;
Leer n;
Si (n > 0) entonces
Escribir El nmero es mayor que 0;
Sino
Escribir El nmero no es mayor que 0
FinSi
Si (resto de (n/2) = 0) entonces
Escribiry es un nmero par.
Sino
Escribir y es un nmero impar.
FinSi
FinProceso

13.- Haga el algoritmo en pseudo cdigo que, dada la calificacin obtenida (en nmero),
indique si corresponde al suspenso, aprobado, notable o sobresaliente.

Pseudocdigo

Proceso Nota
Escribir Escribir la calificacin del alumno
Leer nota
Si (nota >= 9) entonces
EscribirSOBRESALIENTE
Sino
Si (nota >= 7) entonces
EscribirNOTABLE
Sino
Si (nota >= 5) entonces
EscribirAPROBADO
Sino
EscribirSUSPENSO
FinSi
FinSi
FinSi
FinProceso


14.- Escriba un algoritmo que intercambie el valor de dos variables numricas slo si el valor de
la primera es mayor que el de la segunda.
Pseudocdigo

Algoritmo Intercambio
Escribir Escribir el primer nmero
Leer numero1
Escribir Escribir el segundo nmero
Leer numero2
Si (numero1 > numero2) entonces
auxiliar <- numero1
numero1 <- numero2
numero2 <- auxiliar
FinSi
FinProceso

You might also like