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