Desarrollo de aplicaciones informáticas
Metodología de la programación de ordenadores
TEMA 2
METODOLOGIA DE LA PROGRAMACION
Guión
Introducción. Definición de algoritmo
Características de los algoritmos
Estructura de un algoritmo
Datos
Expresiones
Instrucciones
Pseudo código
Diagrama de flujo
Vectores y Arrays
Otras técnicas
Diagrama de caja
Tablas de decisión
Diagramas estructurados
Técnicas de programación
Introducción. Definición de algoritmo.
Se define algoritmo como el conjunto ordenado y finito de operaciones que permiten hallar la solución a un problema determinado.
Características de los algoritmos.
Debe ser exacto y determinado, es decir, a entradas idénticas, salidas idénticas.
Efectivo y finito. Efectivo porque puede ser ejecutado mecánicamente.
Transportable, porque se puede ejecutar independientemente del hardware y del software utilizado.
Amigable de cara al usuario, con mensajes claros y concisos, y bien documentado.
Estructura de un algoritmo
Datos
a.1. Simple. Contienen solo un dato.
Tipos:
a.1.1. Numérico. Un solo número.
a.1.1.1. Entero
a.1.1.2. Real
a.1.2. No numérico
a.1.2.1. Cadena
a.1.2.2. Booleano (v/f)
a.1.2.3. Carácter
a.2. Estructura de datos. Contienen más de un dato.
Tipos de estructura:
a.2.1. Interna
a.2.1.1. Estática. Utiliza un tamaño de memoria fija. Esta puede ser:
a.2.1.1.1. Vector: Conjunto finito del mismo tipo de datos.
a.2.1.1.2. Tabla: Conjunto de órdenes del mismo tipo de datos en forma de matriz de dos dimensiones.
a.2.1.1.3. Registros: Conjunto de datos de distintos tipos.
a.2.1.1.4. Poliedro: Conjunto de datos del mismo tipo agrupados en una dimensión mayor que dos.
a.2.1.2. Dinámica. Estructura de datos con tamaño no definido de memoria. Variará en función de las necesidades de los problemas.
Expresiones
Conjunto formado por operandos (variables, constantes u operadores), unidos entre si mediante operadores que realizan una acción sobre ellos.
V.g.
SUMA = 8 + C, donde
SUMA y C son variables
8 es constante
= y + son operadores
b.1. Constante: elemento que no varía a lo largo de la ejecución del programa. Existe la posibilidad de asignarle un nombre al principio del programa, de forma que su denominación sea lo más cómoda posible.
b.2. Variable: elemento cuyo contenido puede modificarse a lo largo de la ejecución de un programa. Para definir una variable se realizan tres pasos normalmente:
1) Se define el nombre de la variable
2) Se define el tipo de datos que contendrá
3) Se define el valor inicial de la variable antes de empezar la ejecución del programa
Las variables se clasifican de dos formas:
1ª- Según el tipo de datos que contengan (numérica, no numérica,..)
2ª- Según la función que vaya a realizar dentro del programa, a saber:
Contadores: Añaden uno al valor de la constante cada vez que se ejecutan
Acumuladores: Acumulan cantidades.
Interruptores o switches: Permiten recorrer un cierto camino del programa
b.3. Operadores. Elementos que unen los distintos tipos de operandos. Pueden ser:
1º- Aritméticos.
+, -, *, /, MOD, ^, DIV
2º- Relacionales
J, N, M , P , O ,MN
Instrucciones
Se clasifican en:
c.1. Simples. Una sola línea. Pueden ser:
c.1.1. Declarativas. Hacen constar al programa una condición de un elemento (v.g. Declaro c constante)
c.1.2. Primitivas, que a su vez pueden ser:
c.1.2.1. De entrada, con las que el programa “lee” un dato (v.g. leer edad)
c.1.2.2. De salida, (v.g. Escribir (edad:)).Saldría en pantalla.
c.1.2.3. De asignación, asigna el valor de un operando a una variable (v.g. c = c + 1)
c.1.3. De control, que puede ser:
c.1.3.1. Alternativa: permite realizar una serie de condiciones u otras dependiendo si se cumple una determinada condición. Tres tipos:
c.1.3.1.1. Simples: Se ejecuta un grupo de instrucciones en función de que se cumpla una determinada condición. En caso contrario el programa seguirá su curso normal. V.g.:
SI (nota N 5)
ESCRIBIR “aprobado”
FIN SI
c.1.3.1.2. Dobles: se ejecuta un grupo de instrucciones en caso de que se cumpla una determinada condición, pero en caso contrario se ejecuta otro grupo de instrucciones. V.g.:
SI (nota N 5)
ESCRIBIR “aprobado”
SI NO
ESCRIBIR “5”
c.1.3.1.3. Múltiples: se utilizan en los casos en los que la ejecución de un grupo de instrucciones dependa de unos valores contenidos en una variable. V.g.:
EN CASO DE (variable)
Valor 1
Instrucción 1
Valor 2
Instrucción 2
Valor 3
Instrucción 3
c.1.3.2. Repetitivas: instrucciones que se repiten un número finito de veces en función de una condición que se verá afectada en cada ciclo o bucle. Son las que siguen:
c.1.3.2.1. MIENTRAS: se ejecuta un número finito de veces un grupo de instrucciones mientras ocurre una determinada condición. V.g.:
MIENTRAS (condición)
Instrucciones
FIN MIENTRAS
Esta instrucción tiene la particularidad de que la instrucción o grupo de instrucciones que está vinculadas a ella puede que no se ejecuten al menos una vez.
c.1.3.2.2. REPETIR…HASTA: se ejecuta un número finito de veces un grupo de instrucciones hasta que se cumpla una determinada condición. V.g.:
REPETIR
Instrucción
HASTA (condición)
Esta instrucción tiene la particularidad de que el grupo de instrucciones se va a ejecutar al menos una vez.
c.1.3.2.3. PARA: Se utiliza cuando sabemos exactamente el número de veces que se va a ejecutar un bloque de instrucciones. V.g.:
PARA variable de valor inicial A final HACER
instrucciones
FIN PARA
c.1.4. Comentarios: Instrucciones que nos dan información sobre un bloque del código, pero que no se compilan.
c.2. Instrucciones compuestas. Formadas por un grupo de instrucciones que se agrupan en lo que se conoce como un módulo (procedimiento o función).
Pseudo código
Se define como una notación o algoritmo mediante la cual podemos escribir la solución de un problema, utilizando palabras y frases del lenguaje natural, sujeto a unas determinadas reglas.
Estructura:
PROGRAMA: Nombre del programa.
ENTORNO: Declaración del tipo de datos.
ALGORITMO: Secuencias de instrucciones.
FIN DEL ALGORITMO.
En un pseudo código se utilizan las siguientes instrucciones:
Instrucciones simples primitivas:
a.1. SALIDA
ESCRIBIR “Nombre _ variable:”
ESCRIBIR “nombre _ constante”
ESCRIBIR “expresión”
a.2.ENTRADA
LEER “nombre _ variable”
a.3. ASIGNACION
nombre_ variable_ destino = ó ! nombre_ variable
nombre_ variable_ destino = ó ! nombre_ constante
nombre_ variable_ destino = ó ! expresión
Instrucciones simples de control:
b.1. ALTERNATIVAS
b.1.1. ALTERNATIVA SIMPLE
SI condición ENTONCES
Instrucción 1
Instrucción 2
…
Instrucción n
FIN SI
b.1.2. ALTERNATIVA DOBLE
SI condición ENTONCES
Instrucción 1
Instrucción 2
…
Instrucción n
SI NO
Instrucción 1
Instrucción 2
…
Instrucción n
FIN SI
B.1.3. ALTERNATIVA MULTIPLE
EN CASO DE (variable)
Valor 1: Instrucción 1
Instrucción 2
……
Instrucción n
Valor 2: Instrucción 1
Instrucción 2
……
Instrucción n
EN OTRO CASO
Instrucción 1
Instrucción 2
……
Instrucción n
FIN
b.2. REPETITIVAS
b.2.1.MIENTRAS
MIENTRAS (condición) HACER
Instrucción 1
Instrucción 2
…….
Instrucción n
FIN MIENTRAS
b.2.2. REPETIR
REPETIR
Instrucción 1
Instrucción 2
…….
Instrucción n
HASTA (condición)
b.2.3. PARA
PARA variable valor_ inicial A valor_ final [INCREMENTO] HACER
Instrucción 1
Instrucción 2
…….
Instrucción n
FIN PARA
* [ ] Las cosas entre corchetes implican que son opcionales. En este caso, si no se pusiera el valor del incremento, por defecto sería uno.
EJERCICIOS
1-Realizar el pseudo código de un programa que permita calcular el área de un rectángulo. Se deberá introducir la base y la altura para poder realizar el cálculo.
PROGRAMA: AREA DE RECTANGULO
ENTRONO:
DECLARO base de tipo real
DECLARO altura de tipo real
DECLARO área de tipo real
ALGORITMO:
ESCRIBIR “Introduce base:”
LEER base
ESCRIBIR “introduce altura”
LEER altura
área = base * altura
ESCRIBIR “El área es:”, área
FIN ALGORITMO
2-Realizar el pseudo código que representa un algoritmo que reciba como dato de entrada el valor de una temperatura expresada en grados centígrados y nos calcule y escriba sus equivalentes en grados kelvin.
PROGRAMA: TEMPERATURA EN GRADOS KELVIN
ENTORNO:
DECLARO cent, kelvin base de tipo real
ALGORITMO:
ESCRIBIR “Introduce temperatura en grados centígrados:”
LEER cent
kelvin = 273 + cent
ESCRIBIR “La temperatura en grados kelvin es:”, kelvin, “ºK”
FIN ALGORITMO
3-Realizar el pseudo código que permita al usuario introducir por el teclado dos notas, calculando la suma y el producto de las notas, para posteriormente calcular datos estadísticos.
PROGRAMA: DATOS ESTADISTICOS
ENTORNO:
DECLARO nota 1,nota 2, suma, producto base de tipo real
ALGORITMO:
ESCRIBIR “Introduce nota 1:”
LEER nota 1
ESCRIBIR “Introduce nota 2:”
LEER nota 2
suma = nota 1 + nota 2
producto = nota 1* nota 2
FIN ALGORITMO
Ó
PROGRAMA: DATOS ESTADISTICOS
ENTORNO:
DECLARO OPCION producto base de tipo caracter
ALGORITMO:
ESCRIBIR “Introduce nota 1:”
LEER nota 1
ESCRIBIR “Introduce nota 2:”
LEER nota 2
suma = nota 1 + nota 2
producto = nota 1* nota 2
ESCRIBIR “Pulse la tecla S para suma y P para producto”
LEER opción
SI (opción = `S') ENTONCES
ESCRIBIR “La suma es:”, suma
SI NO
SI (opción = `P') ENTONCES
ESCRIBIR “El producto es:”, producto
SI NO
ESCRIBIR “Tecla incorrecta”
FIN SI
FIN SI
FIN ALGORITMO
* Nota: Una letra entre comilla simple (`') corresponde a una tecla.
Ó
PROGRAMA: DATOS ESTADISTICOS
ENTORNO:
DECLARO OPCION producto base de tipo caracter
ALGORITMO:
ESCRIBIR “Introduce nota 1:”
LEER nota 1
ESCRIBIR “Introduce nota 2:”
LEER nota 2
suma = nota 1 + nota 2
producto = nota 1* nota 2
ESCRIBIR “Pulse la tecla S para suma y P para producto”
LEER opción
EN CASO DE (opción)
CASO `S'
ESCRIBIR “La suma es:”, suma
CASO `P'
ESCRIBIR “El producto es:”. producto
EN OTRO CASO
ESCIBIR “Tecla incorrecta”
FIN
FIN ALGORITMO
5-Realizar un pseudo código que permita saber si un número es mayor, menor o igual que cero.
PROGRAMA: IDENTIFICAR CERO
ENTORNO:
DECLARO num de tipo real
ALGORITMO:
ESCRIBIR “Introduce un número:”
LEER num
SI (num = 0) ENTONCES
ESCRIBIR “El número es igual a cero”
SI NO
SI (num > 0) ENTONCES
ESCRIBIR “El número es mayor que cero”
SI NO
ESCRIBIR “El número es menor que cero”
FIN SI
FIN SI
FIN ALGORITMO
Ó
PROGRAMA: IDENTIFICAR CERO
ENTORNO:
DECLARO num, control de tipo real
ALGORITMO:
ESCRIBIR “Introduce un número:”
LEER num
SI (num = 0) ENTONCES
control = 1
FIN SI
SI (num >0) ENTONCES
control = 2
FIN SI
SI (num <0) ENTONCES
control = 3
FIN SI
EN CASO DE (control)
CASO 1:
ESCRIBIR “El número es igual a cero”
CASO 2:
ESCRIBIR “El número es mayor que cero”
CASO 3:
ESCRIBIR “El número es menor que cero”
EN OTRO CASO
ESCRIBIR “Tecla incorrecta”
FIN CASO
FIN ALGORITMO
6-Realizar un pseudo código para obtener el factorial de un número.
PROGRAMA: FACTORIAL
ENTORNO: DECLARO num, fac., cont de tipo real
ALGORITMO:
ESCRIBIR “Introduce un número:”
LEER num
fac. = 1
cont = 1
REPETIR
fac. = fac. * cont
cont = cont + 1
HASTA (cont > num)
ESCRIBIR “EL factorial es:”, fac
FIN ALGORITMO
Ó
PROGRAMA: FACTORIAL
ENTRONO: DECLARO num, fact, de tipo entero
ALGORITMO:
ESCRIBIR: “Introduce número:”
LEER num
fact = 1
MIENTRAS (num <> 0) HACER
fact = fact * num
num = num - 1
FIN MIENTRAS
ESCRIBIR “El factorial es:”, fact
FIN ALGORITMO
7-Realizar un pseudo código que permita visualizar un mensaje dependiendo de la tecla que pulsemos:
MENU PRINCIPAL
PROCESADOR DE TEXTO
HOJA DE CALCULO
BASE DE DATOS
Introduzca una opción:
PROGRAMA: MENU DE SELECCIÓN
ENTORNO:
DECALRO opción de tipo entero
ALGORITMO
REPETIR
ESCRIBIR “MENU PRINCIPAL”
ESCRIBIR “1. PROCESADOR DE TEXO”
ESCRIBIR “2. HOJA DE CALCULO”
ESCRIBIR “3. BASE DE DATOS”
ESCRIBIR “4. SALIR
ESCRIBIR “Introduzca opción:”
LEER opción
EN CASO DE (opción)
CASO 1 ESCRIBIR “PROCESADOR DE TEXTO”
CASO 2 ESCRIBIR “HOJA DE CALCULO”
CASO 3 ESCRIBIR “BASE DE DATOS”
CASO 4 SALIR
EN OTRO CASO
ESCRIBIR “ERROR”
FIN CASO
HASTA (opción = 4)
FIN ALGORITMO
Ó
PROGRAMA: MENU DE SELECCIÓN
ENTORNO:
DECALRO opción de tipo entero
ALGORITMO
opción = 0
MIENTRAS (opción ¡= 4)
ESCRIBIR “MENU PRINCIPAL”
ESCRIBIR “1. PROCESADOR DE TEXO”
ESCRIBIR “2. HOJA DE CALCULO”
ESCRIBIR “3. BASE DE DATOS”
ESCRIBIR “4. SALIR
ESCRIBIR “Introduzca opción:”
LEER opción
EN CASO DE (opción)
CASO 1 ESCRIBIR “PROCESADOR DE TEXTO”
CASO 2 ESCRIBIR “HOJA DE CALCULO”
CASO 3 ESCRIBIR “BASE DE DATOS”
CASO 4 SALIR
EN OTRO CASO
ESCRIBIR “ERROR”
FIN CASO
FIN MIENTRAS
FIN ALGORITMO
5. Diagrama de flujo
Es una herramienta de la que dispone el analista para representar de forma clara y visual la secuencia de ejecución de un programa, así como el flujo de datos.
Dependiendo de la fase de análisis en la que nos encontremos, el diagrama de flujo representará con más o menos detalle la secuencia de acciones y elementos que intervienen. Hay por tanto dos tipos:
5.1. Diagrama de sistema (organigrama)
Se representa en su parte central el programa o proceso que se describe. Este proceso estará rodeado en su parte superior por los soportes de entrada, y en la inferior por los de salida. A los lados puede tener soportes de entrada y de salida indistintamente.
Algunos ejemplos de representación de elementos:
ENTRADA
SALIDA
ENTRADA / SALIDA
5.2. Ordinograma.
También llamados diagramas de flujo de programa, representan con mucho más detalle la secuencia de acciones a realizar con los datos. Sus características son las que siguen:
Se debe representar el inicio y el final del programa, y además deben ser únicos.
El flujo del programa debe ir de arriba hacia abajo y de izquierda a derecha.
Se deberá guardar, en la medida de lo posible, simetría en la representación.
Las líneas que se usen deben ser rectas.
No se deben interceptar las líneas de flujo. Cuando tengan que cruzarse se usaran conectores.
Los símbolos característicos de los diagramas de flujo son:
El tipo de diagrama aplicado a las distintas instrucciones tendría las siguientes formas:
* ALTERNATIVA SIMPLE
* ALTERNATIVA DOBLE
* ALTERNATIVA MULTIPLE
* REPETITIVA “MIENTRAS”
* REPETITIVA “REPETIR HASTA”
* REPETIRIVA “PARA…”
EJERCICIOS
8-Realizar un pseudo código y diagrama de flujo para obtener las notas de 50 alumnos y el número de aprobados.
PROGRAMA: RELACION DE ALUMNOS APROBADOS
ENTORNO: DECLARO alumno, aprobado de tipo entero
DECLARO nota de tipo real
ALGORITMO:
alumno = 0
aprobado = 0
MIENTRAS (alumno < 50) HACER
ESCRIBIR “Introduce la nota del alumno”, alumno
LEER nota
SI (nota>= 5) ENTONCES
aprobado = aprobado + 1
FIN SI
alumno = alumno + 1
FIN MIENTRAS
ESCRIBIR “El número de aprobados es:”, aprobado, “alumnos”
FIN ALGORITMO
Ó
PROGRAMA: RELACION DE ALUMNOS APROBADOS
ENTORNO:
DECLARO alumno, aprobado de tipo entero
DECLARO nota de tipo real
ALGORITMO:
aprobado = 0
alumno = 0
PARA alumno de 0 HASTA 49 HACER
ESCRIBIR “Introduce la nota del alumno”, alumno
LEER nota
SI (nota>= 5) ENTONCES
aprobado = aprobado + 1
FIN SI
FIN PARA
ESCRIBIR “El número de aprobados es:”, aprobado, “alumnos”
FIN ALGORITMO
Ó
PROGRAMA: RELACION DE ALUMNOS APROBADOS
ENTORNO:
DECLARO alumno, aprobado de tipo entero
DECLARO nota de tipo real
ALGORITMO:
aprobado = 0
alumno = 0
REPETIR
ESCRIBIR “Introduce la nota del alumno”, alumno
LEER nota
SI (nota>= 5) ENTONCES
aprobado = aprobado + 1
FIN SI
alumno = alumno +1
HASTA (alumno > 49)
ESCRIBIR “El número de aprobados es:”, aprobado, “alumnos”
FIN ALGORITMO
9. Realizar el pseudo código que permita obtener la suma y el producto de los 350 primeros números enteros.
PROGRAMA: SUMA Y PRODUCTO DE LOS 350 PRIMEROS
ENTORNO:
DECLARO suma, producto, i de tipo entero
ALGORITMO:
suma ! 0
producto ! 1
PARA i = 1 HASTA i = 350 HACER
suma = suma + i
producto = producto * i
FIN PARA
ESCRIBIR “La suma de los números es:”, suma
ESCRIBIR “El producto de los números es:”, producto
FIN ALGORITMO
Ó
PROGRAMA: SUMA Y PRODUCTO DE LOS 350 PRIMEROS
ENTORNO:
DECLARO suma, producto, i de tipo entero
ALGORITMO:
suma ! 0
producto ! 1
i! 1
MIENTRAS (i <= 350)
suma! suma + i
producto! producto +i
i = i + 1
FIN MIENTRAS
ESCRIBIR “La suma de los números es:”, suma
ESCRIBIR “El producto de los números es:”, producto
FIN ALGORITMO
El diagrama de flujo es idéntico al del bucle PARA
Ó
PROGRAMA: SUMA Y PRODUCTO DE LOS 350 PRIMEROS
ENTORNO:
DECLARO suma, producto, i de tipo entero
ALGORITMO:
suma ! 0
producto ! 1
i! 1
REPETIR
suma! suma + i
producto! producto * i
i! i + 1
HASTA (i > 350)
ESCRIBIR “La suma de los números es:”, suma
ESCRIBIR “El producto de los números es:”, producto
11. Realizar tres versiones de un pseudo código que describa la suma de los números pares comprendidos entre 2 y 200
PROGRAMA: SUMA DE PARES ENTRE 2 Y 200
ENTORNO:
DECLARO suma, i de tipo entero
ALGORITMO:
suma ! 0
PARA i = 0 HASTA i =200 [INCREMENTO 2] HACER
suma! suma + i
FIN PARA
ESCRIBIR “La suma de los pares es:”, suma
FIN ALGORITMO
Ó
PROGRAMA: SUMA DE PARES ENTRE 2 Y 200
ENTORNO:
DECLARO suma, i de tipo entero
ALGORITMO:
suma ! 0
i! 0
MIENTRAS (i<= 200) HACER
suma! suma + i
i! i + 2
FIN MIENTRAS
ESCRIBIR “La suma de los pares es:”, suma
FIN ALGORITMO
Ó
PROGRAMA: SUMA DE PARES ENTRE 2 Y 200
ENTORNO:
DECLARO suma, i de tipo entero
ALGORITMO:
suma ! 0
i! 0
REPETIR
suma! suma + i
i! i + 2
HASTA (i > 200)
ESCRIBIR “La suma de los pares es:”, suma
FIN ALGORITMO
12. Realizar un pseudo código que dados dos números correspondientes a la base y al exponente, calcule la potencia asociada.
PROGRAMA: POTENCIA
ENTORNO:
DECLARO base, exponente de tipo entero
ALGORITMO:
ESCRIBIR “Introduce la base:”
LEER base
ESCRIBIR “Introduce el exponente:”
LEER exponente
SI exponente = 0 HACER
resultado! 1
SI NO
exponente! 1
REPETIR
resultado! base* resultado
exponente! exponente - 1
HASTA (exponente = 0)
FIN SI
FIN ALGORITMO
14. Realizar un pseudo código que lea N números enteros introducidos por teclado e imprima: la suma de los pares, la cantidad de números pares y la media de los impares.
PROGRAMA: CLASIFICACION DE NUMEROS ENTEROS
ENTORNO:
DECLARO N, num, suma _ pares, pares, suma_ impares de tipo entero
ALGORITMO:
ESCRIBIR “Cuantos números vas a introducir:”
LEER N
num ! 0
suma _ pares ! 0
suma _ impares ! 0
PARA i = 1 HASTA i = N
ESCRIBIR “Introduce número”, N, “:”
LEER num
SI (num MOD 2 = 0) ENTONCES
suma _ pares ! suma _ pares + num
num ! num + 1
SI NO
suma _ impares ! suma _ impares + num
FIN SI
FIN PARA
ESCRIBIR “La suma de los pares es:”, suma _ pares
ESCRIBIR “El número de pares es:”, pares
ESCRIBIR “La media de los impares es:”, suma _ impares / (N - pares)
FIN ALGORITMO
EN LO SUCESIVO, LOS PROBLEMAS ESTARAN REFERIDOS A LA HOJA DE PROBLEMAS NUMERO 2.
1. Una empresa desea saber qué cantidad de dinero debe pagar a sus empleados, a los cuales paga a final de semana. La hora de trabajo es pagada a 594 pts. y a 1188 pts. todas aquellas horas que superen las 40 semanales. Haga un algoritmo en el que introduciendo el número de horas trabajadas por un empleado en una semana, nos diga cuál es su sueldo.
PROGRAMA: SALARIOS
ENTORNO:
DECLARO horas, extra, salario de tipo real
ALGORITMO:
ESCRIBIR “Introduzca el número de horas trabajadas:”
LEER horas
extra ! 0
SI (horas > 40) ENTONCES
extra ! horas - 40
salario ! extra * 1188 + 40 * 594
ESCRIBIR “El salario a pagar es:”, salario
SI NO
salario ! horas * 594
ESCRIBIR “El salario a pagar es:”, salario
FIN SI
FIN ALGORITMO
2. Diseña un algoritmo que visualice en pantalla la tabla de multiplicar del 1 al 10
PROGRAMA: TABLA DE MULTIPLICAR DEL 1 AL 10
ENTORNO:
DECLARO a, b de tipo entero
ALGORITMO:
PARA a = 1 HASTA a = 10 HACER
ESCRIBIR “Tabla del”, a, “:”
PARA b = 1 HASTA b = 10 HACER
ESCRIBIR a “*” b “=”, a * b
FIN PARA
FIN PARA
FIN ALGORITMO
Ó
PROGRAMA: TABLA DE MULTIPLICAR
ENTORNO:
DECLARO a, b, de tipo entero
ALGORITMO:
a ! 1
b ! 1
MIENTRAS (a<=10) HACER
ESCRIBIR “La tabla del “, a, “es:”
MIENTRAS (b<= 10) HACER
ESCRIBIR a, “*”, b, “=”, a * b
b! b + 1
FIN MIENTRAS
a ! a + 1
FIN MIENTRAS
FIN ALGORITMO
Ó
PROGRAMA: TABLA DE MULTIPLICAR
ENTORNO:
DECLARO a, b, de tipo entero
ALGORITMO:
a! 1
b! 1
REPETIR
ESCRIBIR “La tabla del”, a; “es:”
REPETIR
ESCRIBIR a, “*”, b, “=”, a * b
b ! b + 1
HASTA (b>10)
a ! a + 1
HASTA (a>10)
FIN ALGORITMO
3. Diseña un algoritmo en el que, dados dos números introducidos por el teclado, visualice los números comprendidos entre ambos (sin incluir los extremos), calcule la suma de los números pares e impares comprendidos entre ambos y los cuente.
PROGRAMA: PROBLEMA 3
ENTORNO:
DECLARO num1, num2, intervalo, suma _ pares, suma _ impares de tipo entero
ALGORITMO:
ESCRIBIR “Introduce número menor:”
LEER num1
ESCRIBIR “Introduce número mayor”
LEER num2
SI (num2 > num1) ENTONCES
pares ! 0
suma _ pares ! 0
impares ! 0
suma _ impares ! 0
PARA (intervalo = num2 - 1) HASTA (intervalo = num1 +1) HACER
ESCRIBIR intervalo
SI (intervalo MOD 2 = 0) ENTONCES
pares ! pares + 1
suma _ pares ! suma _ pares + intervalo
SI NO
impares ! impares + 1
suma _ impares ! suma _ impares + intervalo
FIN PARA
FIN SI
ESCRIBIR “Los números comprendidos entre ambos son:”, intervalo
ESCRIBIR “El número de pares es:”, pares
ESCRIBIR “El número de impares es:”, impares
ESCRIBIR “La suma de los pares es:”, suma _ pares
ESCRIBIR “La suma de los impares es:”, suma _ impares
FIN ALGORITMO
6. Vectores y Arrays
Son dos tipos de estructuras, de las llamadas estructuras estáticas lineales. El carácter de estática se lo da el hecho de que una vez introducidos los datos (cargados), no varían de forma o de posición, salvo que una nueva instrucción o bucle lo impongan.
6.1 Vectores
Son estructuras estáticas de una dimensión. Se definen de la forma siguiente:
nombre _ vector [dimensión]
La dimensión determina el número de elementos que posee el vector.
V.g.:
DECLARO tabla [15] de tipo entero
Sería un vector llamado “tabla”, que contiene 15 elementos.
Por lo general, los vectores deben cargarse en algún momento del programa. Para ello, se suele utilizar un índice, que indicará la posición dentro del vector. Un bucle del tipo PARA es el más usado.
V.g.:
PARA i = 1 HASTA i = 15
ESCRIBIR “Introduce elemento” i, “:”
LEER tabla [i]
FIN PARA
6.2 Arrays (matrices)
Son estructuras estáticas de dos dimensiones. Se definen de la forma siguiente:
nombre _ array [fila] [columna]
V.g.:
DECLARO array [15] [20] de tipo entero
Sería una matriz llamada “array”, que contiene 15 filas y 20 columnas.
Por lo general, las matrices deben cargarse en algún momento del programa. Para ello, se suelen utilizar dos índices, que indicarán las posiciones dentro de la matriz. Un bucle del tipo PARA es el más usado.
V.g.:
PARA i = 1 HASTA i = 15
PARA j = 1 HASTA j = 20
ESCRIBIR “Introduce elemento” i, “,”, j, “:”
LEER array [i] [j]
FIN PARA
FIN PARA
EJERCICIOS
4. Cree Una tabla de 10 elementos. Se pide:
- Contar los elementos positivos, negativos, ceros y visualizar el resultado
- Visualizar los elementos, sus cuadrados y sus cubos
- Contar y visualizar los elementos pares y los impares
PROGRAMA: TABLA 10 Y OTROS
ENTORNO:
DECLARO tabla [10], i, positivos, negativos, ceros, pares, impares de tipo entero
ALGORITMO:
PARA i = 1 HASTA i = 10 HACER
ESCRIBIR “Introduce el valor”, i, “:”
LEER tabla [i]
FIN PARA
ceros ! 0
positivo ! 0
negativo ! 0
PARA i = 1 HASTA i = 10 HACER
SI (tabla [i] = 0) ENTONCES
ceros ! ceros + 1
SI NO
SI (tabla[i] > 0) ENTONCES
positivo ! positivo + 1
SI NO
negativo ! negativo + 1
FIN SI
FIN SI
FIN PARA
ESCRIBIR “La tabla tiene “, positivos, “elementos positivos”
ESCRIBIR “La tabla tienen”, negativos, “elementos negativos”
ESCRIBIR “La tabla tiene”, ceros, “elementos de valor cero”
PARA i =1 HASTA i = 10 HACER
ESCRIBIR tabla[i]
ESCRIBIR tabla [i] ^2
ESCRIBIR tabla [i] ^3
FIN PARA
pares ! 0
impares ! 0
PARA i = 1 HASTA i = 10 HACER
SI (tabla [i] MOD 2 = 0) ENTONCES
ESCRIBIR “Los pares son:”
ESCRIBIR tabla [i]
pares ! pares + 1
SI NO
ESCRIBIR “Los impares son:”
ESCRIBIR tabla [i]
impares ! impares + 1
FIN SI
ESCRIBIR “El número de elementos pares es:”, pares
ESCRIBIR “El número de elementos impares es:”, impares
FIN PARA
FIN ALGORITMO
5. Cree una tabla de 20 elementos. Se pide:
- Cargar los elementos positivos sobre otra tabla, y los negativos sobre otra diferente.
- Una vez cargadas las tablas anteriores, se desea saber cuál es el mayor de los positivos, el mayor de los negativos, y el índice que ocupa en cada tabla (ojo: no los estamos ordenando).
PROGRAMA: PROBLEMA 5
ENTORNO:
DECLARO principal [20], positiva [20], negativa [20] de tipo entero
DECLARO i, j, k, mayor _ p, mayor _ n, de tipo entero
ALGORITMO:
PARA i = 1 HASTA i = 20 HACER
ESCRIBIR “Introduce elemento”, i, “:”
LEER principal [i]
FIN PARA
j ! 0
k ! 0
PARA i = 1 HASTA i = 20 HACER
SI principal [i] >= 0 ENTONCES
positiva [j] = principal [i]
j ! j + 1
SI NO
negativa [k] ! principal [i]
k ! k + 1
FIN SI
mayor _ p ! positiva [1]
PARA i = 1 HASTA i = 20 HACER
SI positiva [i] > mayor _ p ENTONCES
mayor _ p ! positiva [j]
j ! i
FIN SI
FIN PARA
mayor _ n ! negativa [1]
PARA i = 1 HASTA i = 20 HACER
SI negativa [i] > mayor _ n ENTONCES
mayor _ n ! negativa [k]
k ! i
FIN SI
FIN PARA
ESCRIBIR “El mayor de los positivos es el número”, mayor _ p, “y se encuentra en la posición”, j
ESCRIBIR “El mayor de los negativos es el número”, mayor _ n, “y se encuentra en la posición”, k
FIN ALGORITMO
6. Genere una tabla de 5 filas y ocho columnas, de forma que las filas pares se llenen de unos y las impares de ceros
PROGRAMA: MATRIZ 5X8
ENTORNO:
DECLARO i, j de tipo entero
DECLARO tabla [5] [8] de tipo entero
ALGORITMO:
PARA i = 1 HASTA i = 5 HACER
PARA j = 1 HASTA j = 8 HACER
SI (i MOD 2 = 0) ENTONCES
tabla [i] [j] ! 1
SI NO
tabla [i] [j] ! 0
FIN SI
FIN PARA
FIN PARA
FIN ALGORITMO
7. Rellene la matriz de la siguiente forma:
111111
232323
111111
232323
Hacer también el diagrama de flujo.
PROGRAMA: MATRIZ PROBLEMA 7
ENTORNO:
DECLARO i, j, tabla [4] [6]
ALGORITMO:
PARA i = 1 HASTA i = 4 HACER
PARA j = 1 HASTA j = 6 HACER
SI (i MOD 2 = 1) ENTONCES
tabla [i] [j] ! 1
SI NO
SI (j MOD 2 = 0) ENTONCES
tabla [i] [j] ! 3
SI NO
tabla [i] [j] ! 2
FIN SI
FIN SI
FIN PARA
FIN PARA
FIN ALGORITMO
8. Crear una tabla de 4x6 de forma que calculemos la suma de cada fila y se visualice el resultado. Ídem para las columnas.
PROGRAMA: TABLA 4X6 PROBLEMA 8
ENTORNO:
DECLARO i, j, tabla [4] [6], suma _ fila, suma _ columna de tipo entero
ALGORITMO:
PARA i = 1 HASTA i = 4 HACER
PARA j = 1 HASTA j = 6 HACER
ESCRIBIR “Introduce valor (“, i, “,”, j “):”
LEER tabla [i] [j]
FIN PARA
FIN PARA
PARA i = 1 HASTA i = 4 HACER
suma _ fila ! 0
PARA j = 1 HASTA j = 6 HACER
suma _ fila ! suma _ fila + tabla [i] [j]
FIN PARA
ESCRIBIR “La suma de la fila”, i, “es:”, suma _ fila
FIN PARA
PARA j = 1 HASTA j = 6 HACER
suma _ columna ! 0
PARA i = 1 HASTA i = 4 HACER
suma _ columna ! suma _ columna + tabla [i] [j]
FIN PARA
ESCRIBIR “La suma de la columna “, j, “es:”, suma _ columna
FIN PARA
FIN ALGORITMO
9. Cargar una matriz en memoria de 6x10 de forma que cada elemento de la tabla sea la suma de su posición en la fila y de su posición en la columna, para posteriormente visualizarla.
PROGRAMA: MATRIZ 6X10 PROBLEMA 9
ENTORNO:
DECLARO i, j, tabla [i] [j], de tipo entero
ALGORITMO:
PARA i = 1 HASTA i = 6 HACER
PARA j = 1 HASTA j = 10 HACER
tabla [i] [j] ! i + j
ESCRIBIR “El valor (“, i, j, “) de la tabla es”, tabla [i] [j]
FIN PARA
FIN PARA
FIN ALGORITMO
10. Cargar dos vectores (A y B) numéricos de 25 componentes cada uno. Visualizar los elementos comunes a los dos vectores, así como sus posiciones.
PROGRAMA: PROBLEMA 10
ENTORNO: DECLARO A[25], B[25], i, j de tipo entero
ALGORITMO:
PARA i = 1 HASTA i = 25 HACER
ESCRIBIR “Introduzca elemento”, i, “del vector A[25]”
LEER A[i]
ESCRIBIR “Introduzca elemento”, i, “del vector B[25]”
LEER B[i]
FIN PARA
PARA i = 1 HASTA i = 25 HACER
PARA j = 1 HASTA j = 25 HACER
SI (A[i] = B[j]) ENTONCES
ESCRIBIR “Elemento coincidente:” A[i]
ESCRIBIR “En la posición”, i, j, “respectivamente”
FIN SI
FIN PARA
FIN PARA
FIN ALGORITMO
11. Realizar un programa que genere una tabla de 10x5 componentes enteras, de forma que el valor de los elementos de cada columna sean respectivamente tablas de multiplicar de los números 1, 3, 5, 7, 9. Visualizar la tabla.
PROGRAMA: PROBLEMA 11
ENTORNO: DECLARO tabla[10] [5], i, j, de tipo entero
ALGORITMO:
PARA i = 1 HASTA i = 10 HACER
PARA j = 1 HASTA j = 5 HACER
tabla [i] + [j] ! i * (j * 2 - 1)
ESCRIBIR tabla [i] [j]
FIN PARA
FIN PARA
FIN ALGORITMO
12. Cargar Un vector V de 18 componentes numéricas enteras. Crear a partir de él un vector Q, de modo que las componentes pares de V pasen a ser las impares de Q, y las impares de V sean las pares de Q.
PROGRAMA: PROBLEMA 12
ENTORNO: DECLARO V[18],Q[18], i, de tipo entero
ALGORITMO:
PARA i = 1 HASTA i = 18 HACER
ESCRIBIR “Introduce elemento de posición”, i, “:”
LEER V[i]
FIN PARA
PARA i = 1 HASTA i = 18 HACER
SI (i MOD2 = 0) ENTONCES
Q[i - 1] = V[i]
SI NO
Q[i + 1] = V[i]
FIN SI
FIN PARA
FIN ALGORITMO
13. Crear una tabla A de 10x5. Se desea crear a partir de ella una tabla B, de tal forma que la primera fila de B sea la última de A, la segunda fila de B sea la penúltima de A, y así sucesivamente hasta que la última fila de B sea la primera de A.
PROGRAMA: PROBLEMA 13
ENTORNO: DECLARO A[10][5], B[10][5], i, j, de tipo entero
ALGORITMO:
i! 1
MIENTRAS (i<10)
j! 1
MIENTRAS (j<5)
ESCRIBIR “Introduce elemento”, i, j, “:”
LEER A[i][j]
B[11 - i][j] ! A[i][j]
j! j + 1
FIN MIENTRAS
i ! i + 1
FIN MIENTRAS
FIN ALGORITMO
14. Cargar un vector de 20 componentes numéricos. Se pide:
- Calcular e imprimir el mayor valor, la última posición que ocupa y el número de veces que se repite
- Desplazar todas las componentes del vector un lugar a la izquierda; la primera pasará a la última posición
- Escribir la suma de los números que sean pares y que se encuentren en posiciones impares ¿Cuántos valores cumplen estas condiciones.
PROGRAMA: PROBLEMA 14
ENTORNO: DECLARO Vector[20], i, aux, repv, suma, de tipo entero
ALGORITMO:
PARA i = 1 HASTA i = 20 HACER
ESCRIBIR “Introduce elemento de posición”, i, “:”
LEER Vector[i]
FIN PARA
mayor ! Vector [1]
posición ! 1
repv ! 0
PARA i = 2 HASTA i = 20 HACER
SI (Vector [i] > mayor) ENTONCES
mayor ! Vector[i]
posición ! i
repv ! 0
FIN SI
SI (Vector[i] = mayor) ENTONCES
repv ! repv + 1
posición ! i
FIN SI
FIN PARA
ESCRIBIR “El valor mayor es:”, mayor, “y se repite”, repv, “veces, siendo la última posición la número”, posición”
aux ! Vector[1]
PARA i = 1 HASTA i = 20 HACER
Vector[i] = Vector[i+1]
FIN PARA
Vector[20] ! aux
suma ! 0
PARA i = 1 HASTA i = 19 [INCREMENTO 2]
SI (Vector[i]MOD2 = 0) ENTONCES
suma ! suma + Vector [i]
FIN SI
FIN PARA
FIN ALGORITMO
Otras técnicas.
Diagrama de caja N-S (Nassi-Schneiderman)
Se basan en la representación de las distintas instrucciones utilizando “cajas”. La simbología es:
-
Alternativas
-
Simple
-
Doble
-
Variable
-
Repetitivas
-
Mientras
-
Repetir
Tablas de decisión
Es una herramienta basada en la construcción de una tabla en la que se recojan las condiciones que pueden dar el problema y las acciones que se deben tomar cuando se cumplan las condiciones.
Diagramas estructurados
Técnicas de programación
Existen tres tipos:
Técnica convencional
Fueron el comienzo de la programación, pero con el desarrollo de la tecnología, presentaba muchos inconvenientes. Para superar estos inconvenientes, se desarrollaron las IPT (Técnicas para a mejora de la programación), dando como resultado las técnicas estructurada y modular.
Programación estructurada
Deben cumplir las siguientes condiciones:
-
Debe ser un código comprensible sin necesidad de información adicional
-
Se puedan cambiar partes del programa sin que afecten al resto
-
El programa se implementa con partes fácilmente ensamblables
Lo que diferencia a la programación estructurada de otra que no lo sea, son una serie de reglas que contienen los siguientes elementos:
Razonamiento deductivo (proceso descendente). Se define como el proceso mediante el cual un programa se resuelve en una serie de niveles de de arriba abajo, realizando refinamientos sucesivos (top-down). Adquiere una estructura jerárquica.
Recursos abstractos. La traducción de las ideas a las instrucciones no es directa. Para facilitar la utilización de los recursos abstractos se divide el problema en partes más pequeñas, lo que simplifica la concepción del mismo.
Estructuras básicas. Se basa en el teorema de la estructura, que dice que:”cualquier programa con un punto de entrada, sin bucles infinitos, puede describirse utilizando solamente las estructuras de control alternativa, repetitiva y/o secuencial (primitiva).
Programación modular
Consiste en la descomposición del problema en trozos denominados “módulos”, cada uno de los cuales realiza una tarea concreta. Presentan la siguiente estructura: un módulo principal desde el que se llamará al resto de los módulos, devolviendo el control al módulo principal cuando finalice.
La mayoría de los lenguajes de programación ponen a disposición del usuario mecanismos para usar la modularidad: en “C” las funciones, en “BASIC” las subrutinas, en “PASCAL” los procedimientos y funciones, en “MODULA2” los módulos, etc.
Existen dos tipos de módulos o subprogramas:
-
Funciones
Módulos que, recibiendo uno o varios datos de entrada, devuelven un único valor a la salida. No se permiten funciones que no devuelvan nada. La estructura es la que sigue:
TIPO _FUNCION NOMBRE _FUNCION (tipo _nombre parámetro _formal1, tipo _nombre parámetro _formal2, …)
INSTRUCCIONES
DEVOLVER RESULTADO
FIN DE FUNCION
V.g:
int suma (int num1, int num2)
{
int resultado
resultado = num1 + num2
return resultado
}
-
Procedimientos
Son módulos que tienen las siguientes diferencias con respecto a la función:
-
Puede devolver más de un valor
-
Pueden no devolver ningún valor
-
Al llamar al procedimiento no hay que hacerlo desde una expresión. Se utiliza como una instrucción concreta
En la programación modular, hay que hacer referencia al concepto de AMBITO DE UN IDENTIFICADOR (o variable), que se define como la parte del programa donde puede ser utilizado porque se conoce su existencia. Atendiendo al ámbito, las variables se pueden clasificar en:
-
Locales
Se definen dentro de un módulo, no pudiendo acceder a ella desde fuera de éste. Incluso se puede definir una variable con el mismo nombre fuera del módulo. Se crean en la llamada a la función y se destruyen cuando finaliza la ejecución.
-
Globales
Están definidas en el programa principal. Se puede acceder a ellas desde todos los módulos. En caso de que se declarase una variable local y global con el mismo nombre se accedería a la local por defecto, es decir, se accede siempre al ámbito más restringido.
A continuación, se van a realizar una serie de clasificaciones de los parámetros formales, atendiendo a distintos criterios:
a) Según sea su función
- Parámetros de entrada: introducen datos del módulo. No modifican su valor. Lo utilizan las funciones.
- Parámetros de salida: devuelven valores al exterior del módulo.
- Parámetros de entrada/salida: introducen información al módulo y extraen información al exterior. El valor de entrada es distinto al de salida.
b) Según se almacenen físicamente:
- Paso de parámetro por copia: al realizar la llamada se copia el valor del parámetro real al formal, y pueden ocurrir los siguientes casos:
- Por valor. Una vez que sea copiado el parámetro real al formal, al término de la ejecución del módulo, no se hace el inverso, es decir, no se copia el valor del parámetro formal a real (no se modifica el parámetro real). Es el que utilizan las funciones.
- Por valor resultado. Al final de la ejecución se hace el inverso, es decir, se copia el valor del parámetro formal a real, variando su contenido.
- Paso de parámetro por referencia: El parámetro real y formal tienen asociadas la misma dirección de memoria. Cuando se hace una llamada, la dirección de memoria del parámetro real se copia en el parámetro formal. Por tanto en la ejecución del módulo, al cambiar el contenido del parámetro formal se está cambiando el contenido del parámetro real. Es el método más utilizado con los procedimientos.
ENTRADA / SALIDA
ENTRADA / SALIDA
SALIDA
PROGRAMA
ENTRADA
TECLADO
GENERICO
IMPRESORA
PANTALLA
DISQUETE
DISCO DURO
PROCESO
ENTRADA / SALIDA
INICIO / FIN
NO
SI
SI
NO
N
3
2
1
SI
NO
SI
NO
INICIALIZAR
CONDIC.
INSTRUCCION
CAMBIAR CONTADOR
NO
SI
FIN
ESCRIBIR “El.. es:”, aprobado
alumno = alumno + 1
aprobado =aprobado + 1
nota>=5
LEER nota
ESCRIBIR “Introduce … alumno”, alumno
alumno<50
alumno =0
aprobado = 0
INI-CIO
NO
SI
SI
NO
NO
SI
SI
NO
FIN
ESCRIBIR “El número de alumnos aprobados es:”, aprobado
aprobado = aprobado + 1
alumno = alumno + 1
nota>=5
LEER nota
ESCRIBIR “Introduce la nota del alumno”, alumno
alumno<=49
alumno =0
aprobado = 0
INICIO
NO
SI
SI
NO
FIN
ESCRIBIR “El número de alumnos aprobados es:”, aprobado
alumno = alumno + 1
aprobado =aprobado + 1
nota>=5
LEER nota
ESCRIBIR “Introduce la nota del alumno”, alumno
alumno = 49
alumno =0
aprobado = 0
INICIO
INICIO
i! 1
suma! 0
producto! 1
num<=350
suma!suma+i
producto!producto*i
i!i+1
ESCRIBIR “La suma e:”, suma
ESCRIBIR “El producto es:”, producto
FIN
NO
SI
INICIO
i! 1
suma! 0
producto! 1
num>350
suma!suma+i
producto!producto*i
i!i+1
ESCRIBIR “La suma e:”, suma
ESCRIBIR “El producto es:”, producto
FIN
NO
SI
INICIO
ESCRIBIR “Introduce base:”
LEER base
ESCRIBIR “Introduce exp:”
LEER exponente
exponente =0
resultado! 1
resultado! resultado * base
exponente! exponente - 1
exponente = 0
ESCRIBIR “El resultado es 1”
ESCRIBIR “El resultado es:”, resultado
SI
NO
SI
NO
INICIO
i ! 1
i <= 4
i ! 1
j < 6
i MOD2 = 1
tabla [i] [j] = 2
tabla [i] [j] = 1
tabla [i] [j] = 3
j ! j + 1
i ! i + 1
FIN
j MOD2 = 0
INICIO
i ! 1
i < = 25
ESCRIBIR “Introduzca elemento”, i, “del vector A[25]”
LEER A[i]
ESCRIBIR “Introduzca elemento”, i, “del vector B[25]”
LEER B[i]
i ! i + 1
SI
NO
i ! 1
i<=25
j ! 1
j<=25
A[i] = B[j]
ESCRIBIR…
j ! j + 1
i ! i + 1
SI
FIN
NO
NO
SI
SI
NO
INICIO
i! 1
i<=18
ESCRIBIR…
LEER…
i! i + 1
i ! 1
i <= 18
Q[i-1]=V[i]
Q[i+1]=V[i]
i! i+1
imod2=0
FIN
INICIO
i ! 1
i<= 10
j! 1
j<= 5
ESCRIBIR…
LEER…
B[11-i][j] ! A[i][j]
j! j + 1
i! i + 1
FIN
NO
SI
NO
SI
SI
NO
NO
SI
NO
SI
CONDICION
SI
INSTRUCCIONES
NO
SI
CONDICION
INSTR.1
INSTR.2
VARIABLE
VALOR1
VALOR2
ENOTROCASO
INSTR.1
INSTR. 2
INSTR. N
CONDICION
INSTRUCCIONES
INSTRUCCION
CODICION
Descargar
Enviado por: | La Pomada |
Idioma: | castellano |
País: | España |