Metodología de la programación de ordenadores

Anuncio
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
1
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:
2
• 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
3
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. REPETIRHASTA: 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
4
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
5
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
6
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
7
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.
8
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
9
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'
10
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
11
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
12
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
13
• 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
Ó
14
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
15
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
16
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
17
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:
18
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
19
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
20
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)
21
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
22
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:
23
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
24
Ó
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
25
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
26
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]
27
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, :
28
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
29
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
30
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
31
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]
32
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
33
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
34
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
35
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
36
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
37
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)
38
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).
39
• 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:
40
♦ 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
41
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
42
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
43
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
44
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
45
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]
46
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
47
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
48
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
49
Descargar