Ingeniero en Informática
Metodología de programación
METODOLOGÍA
contenido primera
evaluación
Capítulo 1.- La programación de computadoras.
1.1. Introducción
1.2. Ciclo de vida de una aplicación informática
1.2.1. Diseño del programa
1.2.2. Instalación y explotación del programa
1.3. Errores
1.3.1. Errores de compilación
1.3.2. Errores de ejecución
1.3.3. Errores de lógica
1.3.4. Errores de especificación
1.4. Calidad de los programas
1.5. Metodología de la programación
1.5.1. Programación modular
1.5.2. Programación estructurada
1.6. Documentación de los programas
1.6.1. Documentación interna
1.6.2. Documentación externa
1.7. Objetos de un programa
1.8. Identificadores
1.9 Tipos de datos
1.9.1. Tipo numérico entero
1.9.2. Tipo numérico real
1.9.3. Tipo carácter
1.9.4. Tipo booleano
1.10. Constantes
1.11. Variables
1.12. Expresiones
1.12.1. Tipos de expresiones
1.12.2. Operadores
1.12.3. Tablas de verdad de los operadores lógicos
1.12.4. Orden de evaluación de los operadores
Capítulo 3.- Estructura general de un programa.
3.1. Introducción
3.2. Partes principales de un programa
3.2.1. Entrada de datos
3.2.2. Proceso o algoritmo
3.2.3. Salida de resultados
3.3. Clasificación de las instrucciones
3.3.1. Instrucciones de declaración
3.3.2. Instrucciones primitivas
3.3.3. Instrucciones de control
3.3.4. Instrucciones compuestas
3.3.5. Comentarios
3.4. Variables auxiliares de un programa
3.4.1. Contadores
3.4.2. Acumuladores
3.4.3. Interruptores o conmutadores (switches)
3.5. Tipos de programas
3.6. Lenguajes de programación
Capítulo 4.- Pseudocódigo
4.1. Introducción
4.2. Pseudocodificación de programas
4.2.1. Acciones simples
4.2.2. Sentencias de control
4.2.3. Acciones compuestas
4.2.4. Comentarios
4.2.5. Objetos del programa
4.2.6. Programa
4.3. Paso de Pseudocódigo a diagrama de flujo
4.4. Paso de Pseudocódigo a lenguaje de programación
contenido segunda
evaluación
Capítulo 5.- Estructuras de datos internas (tablas)
5.1. Introducción
5.2. Conceptos y definiciones
5.3. Tipos de tablas
5.3.1. Tablas unidimensionales (vectores)
5.3.2. Tablas bidimensionales (matrices)
5.3.3. Tablas multidimensionales (poliedros)
5.4. Representación gráfica de las tablas
5.4.1. Tabla de una dimensión (vector)
5.4.2. Tabla de dos dimensiones (matriz)
5.4.3. Tabla de tres dimensiones (poliedro-3)
5.4.4. Tabla de cuatro dimensiones (poliedro-4)
5.5. Tratamiento secuencial de una tabla
5.5.1. Tratamiento secuencial de un vector
5.5.2. Tratamiento secuencial de una matriz
5.5.3. Tratamiento secuencial de un poliedro
Capítulo 6.- Búsqueda y clasificación interna.
6.1. Introducción
6.2. Búsqueda lineal
6.2.1. Búsqueda lineal en un vector
6.2.2. Búsqueda lineal en un vector ordenado
6.2.3. Búsqueda lineal en una matriz
6.3. Búsqueda binaria o dicotómica
6.4. Ordenación de tablas
6.4.1. Ordenación por inserción directa
6.4.2. Ordenación por selección directa
6.4.3. Ordenación por intercambio directo. Método de la burbuja
6.4.4. Ordenación por intercambio directo con el test de comprobación (switch)
6.4.5. Ordenación por intercambio directo. Método de la sacudida
6.4.6. Ordenación por intercambio con incrementos decrecientes. Método Shell
Capítulo 9.- Estructuras de datos externas (archivos).
9.1. Introducción
9.2. Conceptos y definiciones
9.3. Características de los archivos
9.4. Clasificación de los archivos según su uso
9.5. Organización de archivos
9.5.1. Organización secuencial
9.5.2. Organización aleatoria o directa
9.5.3. Organización secuencial indexada
9.6. Operaciones sobre archivos
9.7. Instrucciones para manejo de archivos
9.7.1. Creación de archivos secuenciales
9.7.2. Lectura de archivos secuenciales
9.7.3. Lectura-escritura de archivos directos
9.7.4. Lectura-escritura de archivos indexados
Capítulo 10.- Métodos de tratamiento de archivos.
10.1. Introducción
10.2. Búsqueda en archivos secuenciales
10.2.1. Búsqueda en archivos desordenados
10.2.2. Búsqueda en archivos ordenados
10.3. Partición de archivos
10.3.1. Partición por contenido
10.3.2. Partición en secuencias
10.4. Mezcla de archivos
10.4.1. Mezcla con registro centinela
10.4.2. Mezcla controlada por valor de clave máximo
10.4.3. Mezcla controlada por fin de fichero
10.5. Clasificación de archivos
10.5.1. Clasificación por mezcla directa
10.5.2. Clasificación por mezcla equilibrada
10.5.3. Clasificación de raíz
10.6. Actualización de archivos
10.6.1. Actualización de archivos secuenciales
10.6.2. Actualización de archivos directos
10.6.3. Actualización de archivos indexados
10.6.4. Actualización interactiva
10.7. Rupturas de secuencia
10.8. Sincronización de archivos
TEMA 1.- LA PROGRAMACIÓN DE COMPUTADORAS
1.1 INTRODUCCIÓN
Muchas personas piensan que una computadora puede realizar tareas o trabajos de complejidad superior a una inteligencia humana. La realidad es que una computadora no tiene ninguna inteligencia. No olvidemos que no es más que una máquina creada por el hombre, y por tanto, no podrá realizar una tarea que no haya sido previamente determinada por él.
Una computadora (ordenador) es una máquina de origen electrónico que puede realizar una gran variedad de trabajos, pero, en principio, sólo es capaz de hacer físicamente tres clases de operaciones básicas:
1. Sumar, restar, multiplicar y dividir dos valores numéricos, es decir, realizar operaciones aritméticas sencillas.
2. Comparar dos valores (comprobar si son iguales, si el primero es mayor que el segundo, etc.), es decir, realizar operaciones lógicas sencillas.
3. Almacenar o recuperar información.
Con estas pocas operaciones utilizadas y combinadas de forma adecuada, mediante lo que llamamos programa, se pueden llegar a realizar tareas increíblemente complejas que aporten la solución a un determinado problema, ya sea de gestión, técnico o de cualquier otro tipo.
La potencia de cálculo de una computadora se deriva de las características físicas que posee, entre las que se encuadran principalmente:
RAPIDEZ | PRECISIÓN | MEMORIA |
Las características citadas provienen de los componentes electrónicos que conforman una computadora:
-
Velocidad de conmutación de circuitos electrónicos.
-
Rapidez de transmisión de señales eléctricas.
-
Fiabilidad de los circuitos.
-
Manejo de señales digitales.
-
Gran capacidad de almacenamiento de información.
Nuestro objetivo es, para un problema dado, diseñar una solución que pueda ser realizada por una computadora. Para ello necesitaremos, en primer lugar, un lenguaje o notación para expresar la solución obtenida. Tal solución debe estar adaptada a las particularidades de la computadora, si bien en una primera fase de su diseño podremos utilizar una notación intermedia entre el lenguaje natural y el de la computadora, posteriormente será preciso escribirla en un lenguaje comprensible por la máquina, como, por ejemplo, en Cobol o Pascal, y, finalmente para su ejecución, la máquina precisará realizar una traducción a su lenguaje nativo, el denominado lenguaje máquina.
1.2. CICLO DE VIDA DE UNA APLICACIÓN INFORMÁTICA
Una aplicación informática se compone de uno o varios programas interrelacionados.
El proceso que se sigue desde el planteamiento de un problema hasta que tiene una solución instalada, se denomina ciclo de vida de una aplicación informática.
FASES DE DISEÑO FASES DE INSTALACIÓN
1.2.1. DISEÑO DEL PROGRAMA
1.- Fase de análisis
* Equipo a utilizar.
* Personal informático.
* Estudio de los datos de entrada (INPUT).
* Estudio de los datos de salida o resultados (OUTPUT).
* Relación entre la salida y la entrada.
* Descomposición del problema en módulos.
2.- Fase de programación
Consiste en el diseño de la solución al problema planteado en forma de algoritmo.
3.- Fase de codificación
En esta fase se transcribe el algoritmo resultante de la fase anterior a un lenguaje de programación concreto.
Al resultado se le denomina programa.
1.2.2. INSTALACIÓN Y EXPLOTACIÓN DEL PROGRAMA
1.- Fase de edición
Escritura del programa fuente. Se hace con la ayuda de un programa del sistema denominado editor.
2.- Fase de compilación
Traducción del programa fuente a lenguaje máquina. Para ello se dispone de programas compiladores o intérpretes.
3.- Fase de montaje
En los programas compilados es necesario añadir al programa objeto algunas rutinas del sistema o en algunos casos subprogramas externos que se hayan compilado separadamente. De ello se encarga el programa montador (linker)
4.- Fase de prueba de ejecución
Consiste en ejecutar el programa sucesivas veces don diferentes datos de prueba.
5.- Fase de explotación y mantenimiento
La explotación consiste en el uso continuo y habitual por parte de los usuarios.
Paralelamente a la explotación de una aplicación, consiste en la comprobación periódica de su buen funcionamiento.
1.3. ERRORES
Corresponden al incumplimiento de las reglas sintácticas del lenguaje, como, por ejemplo, una palabra reservada del lenguaje mal escrita, una instrucción incompleta, etc.
1.3.2. ERRORES DE EJECUCIÓN
Se deben generalmente a operaciones no permitidas, como dividir por cero, leer un dato no numérico en una variable numérica, exceder un rango de valores permitidos, etc.
1.3.3. ERRORES DE LÓGICA
Corresponden a la obtención por el programa de resultados que no son correctos.
1.3.4. ERRORES DE ESPECIFICACIÓN
Es posiblemente el pero tipo de error. Se deben a la realización de unas especificaciones incorrectas motivadas por una mala comunicación entre el programador y quien plantea el problema.
1.5. METODOLOGÍA DE LA PROGRAMACIÓN
1.5.1. PROGRAMACIÓN MODULAR
Se basa en la realización de una serie de descomposiciones sucesivas del algoritmo inicial, que describen el refinamiento progresivo del repertorio de instrucciones que van a constituir el programa.
1.5.2. PROGRAMACIÓN ESTRUCTURADA
Se basa en el uso exclusivo de las estructuras secuencia, alternativa e iteración para el control del flujo de ejecución de las instrucciones.
1.7. OBJETOS DE UN PROGRAMA
Son aquellos manipulados por las instrucciones. Mediante ellos, en un programa podremos realizar el almacenamiento de los datos y de los resultados de las distintas operaciones. Tiene tres atributos:
-
Nombre: Es el identificador del mismo.
-
Tipo: Conjunto de valores que puede tomar.
-
Valor: Elemento del tipo que se asigna.
1.8. IDENTIFICADORES
Son palabras creadas por el programador para dar nombre a los objetos y demás elementos que necesita declarar en un programa: variables, constantes, tipos, estructuras de datos, archivos, subprogramas, etc.
1.9. TIPOS DE DATOS
Los tipos de datos pueden ser simples o elementales y estructuras de datos o estructurados.
1.9.1. TIPO NUMÉRICO ENTERO.
Ejemplo: 1987
-12
+3300
1.9.2. TIPO NUMÉRICO REAL.
Ejemplo: 97.84
-12.00
+0.5
Un valor en notación exponencial tiene la forma “mantisa E exponente”, donde “mantisa” es un número real y “exponente” un número entero y representa la cantidad “mantisa multiplicado por 10 elevado al exponente”.
1.9.3. TIPO CARACTER
Es el conjunto formado por todos los caracteres o símbolos de que dispone la computadora.
Se expresan entre comillas.
-
Los caracteres alfabéticos mayúsculas
“A”, “B”, “C”, ....... “Z”
-
Los caracteres alfabéticos minúsculas
“a”, “b”, “c”, ....... “z”
-
Los caracteres dígitos
“0”, “1”, “2”, .......... “0”
-
Los caracteres especiales
“ “ (espacio carácter en blanco)
“+”, “-“, “*”, “/”, “=”, “<”, “>”, ...
“.”, “,”, “;”, “:”, “(“, “)”, “?”, “¡” ...
1.9.4. TIPO BOOLEANO
Es el conjunto formado por los valores FALSO y CIERTO. Se expresan con su nombre.
1.10. CONSTANTES
Son objetos cuyo valor permanece invariable a lo largo de la ejecución de un programa.
PI=3.141592 PI
1.11. VARIABLES
Son objetos cuyo valor puede ser modificado a lo largo de la ejecución de un programa.
1.12. EXPRESIONES
Es la representación de un cálculo necesario para la obtención de un resultado.
Se define una expresión de la siguiente forma:
Un valor es una expresión
Ejemplo: 1.25, “JUAN”
Una constante o variable es una expresión.
Ejemplo: PI, E, X.
Una función es una expresión.
Ejemplo: COS(X), SQR(25)
Una combinación de valores, constantes variables, funciones y operadores que cumplen determinadas reglas de construcción es una expresión.
Ejemplo: COS(PI * X) + 1.25
2 * PI * X
N = “JUAN”
1.12.1. TIPOS DE EXPRESIONES
-
Numéricas.- Son las que producen resultados de tipo numérico se construyen mediante los operadores aritméticos.
Ejemplo: PI * SQR(X)
-
Alfanuméricas.- Son las que producen resultados de tipo alfanumérico. Se construyen mediante los operadores alfanuméricos.
Ejemplo: “Don” + N
-
Booleanas.- Son las que producen resultados CIERTO o FALSO. Se construyen mediante los operadores relacionados y lógicos.
Ejemplo: A > 0 y B <= 5
1.12.2. OPERADORES
-
Aritméticos:
^ Potencia A^B
* Producto A*B
DIV o \ División A\B=2.5
MOD División entera A\B
+ Suma o signo positivo
- Resta o signo negativo
-
Alfanuméricos:
+ Concatenación
-
Relacionales:
= Igual a
< Menor que
> Mayor que
<= Menor o igual que
>= Mayor o igual que
<> Distinto a
-
Lógicos:
no negación
y conjunción
o disyunción
* Paréntesis:
( ) Se utilizan para anidar expresiones.
1.12.3. TABLAS DE VERDAD DE LOS OPERADORES LÓGICOS.
-
Operador NO:
FALSO >> CIERTO
CIERTO >> FALSO
-
Operador Y:
FALSO Y FALSO >> FALSO
FALSO Y CIERTO >> FALSO
CIERTO Y FALSO >> FALSO
CIERTO Y CIERTO >> CIERTO
-
Operador O:
FALSO O FALSO >> FALSO
FALSO O CIERTO >> CIERTO
CIERTO O FALSO >> CIERTO
CIERTO O CIERTO >> CIERTO
1.12.4. ORDEN DE EVALUACION DE LOS OPERADORES
1.º Paréntesis (comenzando por los más internos)
2.º Signo
3.º Potencias
4.º Productos y divisiones
5.º Sumas y restas
6.º Concatenación
7.º Relaciones
8.º Negación
9.º Conjunción
10.º Disyunción
1.Dadas las siguientes variables y constantes:
x y z PI E
Evaluar las siguientes expresiones
2 * x + 0.5 * y -1 / 5 * z
2 + 0.5 * y -1 / 5 * z
2 + 2 -1 /5 * z
2 +0-0.2 * z
2 + 2 -2
4 - 2
2
PI * X ^ 2 > Y o 2 * PI * X <= Z
PI * 1 > Y o 2 * PI * X <= Z
3.14159 > Y o 2 * PI * X <= Z
3.14159 > Y o 6.28318 * X <= Z
3.14159 > Y o 6.28318 <=Z
FALSO O 6.28318 <= Z
FALSO o CIERTO
CIERTO
E ^ (X - 1) / (X * Z) / (X / Z)
E ^ 0 / (X * Z) / (X / Z)
E ^ 0 / 10 / (X / Z)
E ^ 0 / 10 / 0.1
1 / 10 / 0.1
0.1 / 0.1
1
“DON” + “JUAN” = “DON JUAN” o “A” = “a”
“DON JUAN” = “DON JUAN” o “A” = “a”
CIERTO o “A” = “a”
CIERTO O FALSO
CIERTO
2 Construir expresiones correctas para las siguientes:
1.- ax2 + bx + c " 0
A * X ^ 2 + B * X + C >= 0
2.- A es igual a B, pero no es igual a C
A = B Y no (A = C)
3.- Con DN, MN, AN dia, mes y año de nacimiento de una persona y DA, MA, AA dias, mes y año actual. Espresar si tiene 18 años cumplidos.
AA - AN > 18 o AA - AN = 18 y MA > MN o AA - AN = 18 y MA = MN y DA >= DN
TEMA 3.- ESTRUCTURA GENERAL DE UN PROGRAMA
3.1. INTRODUCCIÓN
-
Bloque de declaraciones. En él se especifican todos los objetos que utiliza el programa (constantes, variables, tablas, registros, archivos, etc.) indicando sus características. Este bloque se encuentra localizado siempre por delante del comienzo de las acciones.
-
Bloque de instrucciones. Constituido por el conjunto de operaciones que se han de realizar para la obtención de los resultados deseados.
3.2. PARTES PRINCIPALES DE UN PROGRAMA.
Están relacionadas con sus dos bloques ya mencionados. Dentro del bloque de instrucciones podemos diferenciar tres partes fundamentales.
DECLARACIONES
PROGRAMA
Entrada de datos
INSTRUCCIONES Proceso o algoritmo
Salida de resultados
3.2.1. ENTRADA DE DATOS
La constituyen todas las instrucciones que toman los datos de entrada desde un dispositivo externo y los almacenan en la memoria central para que puedan ser procesados.
Datos de Memoria
Entrada Central
3.2.2. PROCESO O ALGORITMO
DATOS
DE ENTRADA PROCESO RESULTADOS
3.2.3. SALIDA DE RESULTADOS
Conjunto de instrucciones que toman los datos finales (resultados) de la memoria central y los envían a los dispositivos externos.
MEMORIA DATOS
CENTRAL DE SALIDA
3.3. CLASIFICACIÓN DE LAS INSTRUCCIONES
Una instrucción se caracteriza por un estado inicial (estado de los objetos que maneja el programa antes de la ejecución de la instrucción) y otro final (estado en que quedan los objetos después de la instrucción). El estado final de una instrucción siempre coincide con el estado inicial de la siguiente. Según la función que desempeñan dentro de un programa, las instrucciones se clasifican de la siguiente manera.
3.3.1. INSTRUCCIONES DE DECLARACIÓN
Su misión es anunciar la utilización de objetos en un programa indicando qué identificador, tipo y otras características corresponde a cada uno de ellos.
3.3.2 INSTRUCCIONES PRIMITIVAS
Son aquellas que ejecuta el procesador de modo inmediato. Las instrucciones primitivas pueden ser de entrada, de asignación o de salida.
-
Instrucción de entrada
Su misión consiste en tomar uno o varios datos desde un dispositivo de entrada y almacenarlos en la memoria central en los objetos cuyos identificadores aparecen en la propia instrucción.
En un ordinograma aparece con el símbolo de operación de entrada/salida (romboide) y con la fórmula literal siguiente:
Leer <lista de objetos>
Donde <lista de objetos> es el conjunto de elementos donde se van a depositar en memoria central los datos leídos. Cuando la lista se compone de más de un elemento, estos se separan por comas.
Ejemplo: Entrada de los datos DÍA, MES y AÑO desde un dispositivo estándar (teclado).
Leer DÍA, MES, AÑO
-
Instrucción de asignación.
Es la instrucción que nos permite realizar cálculos evaluando una expresión y depositando su valor final en un objeto o realizar movimientos de datos de un valor final en un objeto o realizar movimientos de datos de un objeto a otro.
Esta instrucción se realiza en dos tiempos:
1.- Se evalúa la expresión convirtiéndose en su valor final.
2.- El valor final se asigna al objeto borrándose cualquier otro valor previo que éste pudiera tener.
A A + 1
-
Instrucción de salida.
Su misión consiste en enviar datos a un dispositivo externo, bien tomándolos de objetos depositados en la memoria central o definidos de alguna forma en la propia instrucción.
Ejemplo: Escritura en un dispositivo estándar (pantalla) de una fecha situada en la memoria en las variables DÍA, MES y AÑO.
Escribir DIA, MES, AÑO
3.3.3. INSTRUCCIONES DE CONTROL
Son instrucciones que no realizan trabajo efectivo alguno salvo la evaluación de expresiones, generalmente lógicas, con el objetivo de controlar la ejecución de otras instrucciones o alterar el orden de ejecución normal de las instrucciones de un programa.
-
Instrucciones alternativas
Son aquellas que controlan la ejecución de uno o varios bloques de instrucciones. Existen tres modelos típicos de instrucciones alternativas:
Alternativa simple
Controla la ejecución de un conjunto de instrucciones por el cumplimiento o no de una condición, si se cumple, se ejecutan, si no se cumple no se ejecutan
Ejemplo: Instrucción alternativa simple que escribe la palabra positivo si el contenido de la variable A es mayor que 0.
A>0
SI A>0 ESCRIBIR “positivo”
SI A<0 FIN
Alternativa doble
Controla la ejecución de dos conjuntos de instrucciones, si se cumple, se ejecutan las instrucciones del primer bloque: si no se cumple se ejecutan las instrucciones del segundo.
Ejemplo: Instrucción alternativa doble que escribe la palabra POSITIVO si el contenido de la variable A es mayor que y NEGATIVO si no lo es.
A>0
SI A>0 ESCRIBIR “POSITIVO”
SI A<0 ESCRIBIR “NEGATIVO”
Alternativa multiple.
Controla la ejecución de varios conjuntos de instrucciones. Se ejecutará el conjunto que se encuentre relacionado con el valor que resulta de la evaluación de la expresión de tal forma que si este no aparece se ejecutará el último. Las distintas opciones tienen que ser disjuntas, es decir, sólo puede cumplirse una de ellas.
Ejemplo: Instrucción alternativa múltiple que escribe una nota numérica entera de 0 a 10 con el nombre de la propia nota en letras.
NOTA
SI NOTA=0 ESCRIBIR “CERO”
SI NOTA=1 ESCRIBIR “UNO”
*
*
*
SI NOTA=10 ESCRIBIR “DIEZ”
SI NOTA=OTROS ESCRIBIR “NOTA NO VALIDA”
-
Instrucciones repetitivas
Son aquellas que controlan la repetición de un conjunto de instrucciones denominado rango mediante la evaluación de una condición que se realiza dada nueva repetición o por medio de un contador asociado.
Existen cuatro tipos de instrucciones:
Instrucción MIENTRAS (WHILE)
Controla la ejecución del conjunto de instrucciones que configuran su rango, de tal forma que éstas se ejecutan mientras se cumpla la condición, que será evaluada siempre antes de cada repetición, es decir, mientras la condición sea CIERTA.
Instrucción REPETIR (REPEAT-UNTIL)
Controla la ejecución del conjunto de instrucciones que configuran su rango de tal forma que estas se ejecutan hasta que se cumpla la condición que será evaluada siempre después de cada repetición, es decir, hasta que la condición sea CIERTA.
Instrucción PARA (FOR)
Controla la ejecución del conjunto de instrucciones que configuran su rango, de tal forma que estas se ejecutan un número determinado de veces que queda definido en lo que se denomina la cabecera del bucle. En ella se define un identificador de variable de control del bucle (Vc) definientose al mismo tiempo su valor inicial (Vi), su balor final (Vf) y el incremento (In) que esta variable de control va a adquirir en cada repetición.
La definición del bucle será:
Vc = Vi, Vf [,In]
Instrucción ITERAR (LOOP)
Controla la ejecución de dos conjuntos de instrucciones de manera alternativa, de tal forma que estos se ejecutan hasta que se cumpla a condición.
-
Instrucciones de ruptura de secuencia.
Alteran la secuencia normal de ejecución de instrucciones en un programa, la alteración de esta secuencias hace que continue en otro lugar definido en la propia instrucción utilizando lo que se denomina etiqueta.
Instrucción de salto incondicional.
Alteran la secuencia normal de ejecución de las instrucciones de un programa continuando la misma en la instrucción referenciada por medio de la etiqueta que figura en la propia instrucción.
Ejemplo: ir a <etiqueta>
B) Instrucción de salto condicional
Alteran la secuencia normal de ejecución de las instrucciones de un programa si se cumple una condición asociada a la propia instrucción continuando la misma en la instrucción referenciada por una etiqueta que figura también en la instrucción.
Ejemplo: Si CONDICION entonces ir a <etiqueta>
3.3.4. INSTRUCCIONES COMPUESTAS
Una instrucción compuesta es aquella que representa a un conjunto de instrucciones que estan definidas en otra parte, en genral son llamadas a sus programas (funciones, subrutinas, parrafos, etc.)
3.3.5. COMENTARIOS
Son frases que se incluyen de forma moderada en el diseño de un algoritmo (en la codificación suele ser mas recomendable su uso) con intención de aclarar el cometido o función de un objeto o conjunto de instrucciones.
-----[ Comentario
3.4. VARIABLES AUXILIARES DE UN PROGRAMA
Son objetos que utiliza un programa y por la función que realizan dentro del mismo toman un nombre especial
3.4.1. CONTADORES
Un contador es un objeto que se utiliza para contar cualquier evento que pueda ocurrir dentro de un programa. En general suslen contar desde forma natural desde 0 y de 1 en 1.
Se utilizan dos operaciones básicas:
Inicialización: Todo contador se inicializa a 0 si realiza cuenta natural o a Vi (Vi = Valor inicial) si se desea realizar otro tipo de cuenta.
CONTADOR 0
Contabilización o incremento: Cada vez que aparece el evento a contar se ha de incrementar el contador en 1 si se realiza cuenta natural o en la In (incremento) si se realiza otro tipo de cuenta.
CONTADOR CONTADOR +1
3.4.2. ACUMULADORES
Son objetos que se utilizan en un programa para acumular elementos sucesivos con una misma operación. En general se utilizan para calcular sumas y productos, para utilizarlos hay que realizar sobre ellos dos operaciones básicas:
Inicialización: Todo acumulador necesita ser inicializado con el valor neutro de la operación que va a acumular, que en el caso de la suma es 0 y del producto es 1.
SUMA 0
PRODUCTO 1
Acumulación: Cuando se hace presente en la memoria el elemento a acumular por la realización de una lectura o un calculo, se efectúa la acumulación del mismo por medio de la asignación:
SUMA SUMA + elemento
PRODUCTO PRODUCTO * elemento
3.4.3. INTERRUPTORES O CONMUTADORES (SWITCHES)
Los interruptores son objetos que se utilizan en un programa y solo pueden tomar dos valores (CIERTO y FALSO, 0 y1), realizando la función de transmitir información de un punto a otro dentro del programa.
Un conmutador es un objeto que sólo puede tomar dos valores opuestos(CIERTO y FALSO, 1 y -1) que se utiliza para conmutar entre dos procesos distintos de forma alternativa. Es lo contrario al anterior.
3.5. TIPOS DE PROGRAMAS
-
Programas lineales: Consisten en una secuencia de acciones primitivas (su ejecución es lineal en el orden en que han sido escritas).
-
Programas alternativos: Consisten en el anidamiento de acciones alternativas entremezcladas con instrucciones primitivas.
-
Programas cíclicos: Son aquellos en los que un conjunto de instrucciones de las existentes en el programa se repite un número determinado o indeterminado de voces.
Otra clasificación relacionada con la naturaleza de las operaciones que se realizan en la misma, es:
-
Programas de gestión: resuelven problemas de gestión.
-
Programas técnico-científicos: resuelven problemas matemáticos, físicos, etc.
-
Programas de diseño (CAD). Resuelven problemas de diseño.
-
Programas de simulación. Intentan reflejar una situación real para facilitar su estudio y analizar los problemas que se pueden plantear.
-
Programas educativos (EAO). Utilizan las ventajas de la computadora para la docencia, convirtiéndola en un profesor para autodidactas.
-
Programas de inteligencia artificial. Se utilizan para simular el razonamiento humano.
-
Etcétera.
3.6. LENGUAJES DE PROGRAMACIÓN
El primer lenguaje de programación que se utilizó fue el lenguaje máquina, que es el único que entiende la computadora y que se diferencia de unas a otras dependiendo del procesador que posean. Su alfabeto se compone exclusivamente de unos y ceros.
El lenguaje ensamblador resultó de la simplificación del lenguaje máquina cambiando las cadenas de unos y ceros por símbolos nemotécnicos, existiendo una correspondencia de instrucciones de 1 a 1, con respecto al lenguaje máquina.
Posteriormente surgieron los lenguajes de alto nivel, que se alejaban notablemente del lenguaje binario formando instrucciones con frases relativamente parecidas al lenguaje utilizado por las personas.
Pueden clasificarse de la siguiente manera:
Según su parecido con el lenguaje natural.
-
Bajo nivel: Lenguajes máquina y ensambladores.
-
Alto nivel: Todos los demás.
Según la estructura de los programas.
-
Convencionales o línea a línea.
-
Estructurados.
Según la realización de los programas.
-
Funcionales.
-
Imperativos.
Según el tipo de proceso.
-
Interactivos o conversacionales:
-
Orientados al proceso por lotes (batch).
TEMA 4.- PSEUDOCÓDIGO
4.2.PSEUDOCODIFICACIÓN DE UN PROGRAMA
Diremos que una notación es un pseudocódigo si mediante ella podemos describir la solución de un problema en forma de algoritmo dirigido a la computadora.
Todo pseudocódigo debe posibilitar la descripción de:
-
Instrucciones de entrada/salida
-
Instrucciones de proceso
-
Sentencias de control del flujo de ejecución
-
Acciones compuestas que hay que refinar posteriormente
4.2.1. ACCIONES SIMPLES
Son aquellas que el procesador ejecuta de forma inmediata.
-
Asignación
Almacena en una variable el resultado de evaluar una expresión.
Ejemplo:
MEDIA SUMA / 6
-
Entrada
Toma un dato del dispositivo estándar de entrada y lo almacena en una variable. Si se leen varias variables se pueden colocar éstas en una misma instrucción separándolas por comas.
Ejemplo:
Leer ALUMNO, CALIFICACIÓN
-
Salida
Imprime en el dispositivo estándar de salida el resultado de evaluar una expresión. Al igual que en la lectura se pueden imprimir varias expresiones en una sola instrucción de escritura.
Ejemplo:
Escribir SUMAMEDIAS/NUMALUMNOS
4.2.2. SENTENCIAS DE CONTROL
Controlan el flujo de ejecución de otras instrucciones.
Ejemplo:
Leer NOTA
SUMA SUMA+NOTA
MEDIA SUMA/6
Escribir MEDIA
-
Alternativa
-
Alternativa simple:
Las instrucciones I1, I2.... In se ejecutan solamente si la evaluación de la condición produce el resultado CIERTO; en otro caso no se hace nada.
Ejemplo:
Si NOTA > 0
Entonces SUMA SUMA + NOTA
Finsi
-
Alternativa doble:
Si la evaluación de la condición produce el resultado CIERTO se ejecutarán las instrucciones I1, I2, ... In; en caso contrario, las J1, J2,...Jk.
Ejemplo:
Si NOTA < 5
Entonces escribir “SUSPENSO”
Sino escribir “APROBADO”
Finsi
-
Alternativa múltiple
La expresión puede ser alfanumérica o numérica entera. Si su valor es V1 se ejecutaran las instrucciones I1, I2, .... Ip; Si es V2, las J1, J2,...Jq, etc. Si el valor de la expresión no es ninguno de los indicados explicitamente, V1, V2, ... , Vn, entonces se ejecutarán las instrucciones L1, L2, ... , Ls.
Ejemplo:
Opción ESTADO-CIVIL de
“S” hacer escribir “SOLTERO”
“C” hacer escribir “CASADO”
“V” hacer escribir “VIUDO”
“D” hacer escribir “DIVORCIADO”
Otro hacer escribir “Error: datos incorrectos”
Finopción
-
Repeticiones o bucles
Según que la evaluación de la condición se realice al comienzo, al final o dentro del bucle, se tienen las siguientes sentencias:
-
Mientras (while):
Se evalua la condición antes de iniciar el bucle, y se repiten sucesivamente las instrucciones mientras siga siendo CIERTA.
Ejemplo:
Mientras IN = 0 hacer
Leer NOTA
Si NOTA > 0
Entonces SUMA SUMA + NOTA
Sino IN 1
Finsi
Finmientras
-
Repetir (repeat):
Se evalúa la condición después de cada ejecución de las instrucciones y se termina el bucle si es CIERTA.
Ejemplo:
Repetir
Leer NOTA
SUMA SUMA + NOTA
Hasta NOTA = 0
-
Para (for):
Se repiten las instrucciones un número fijo de veces tantas como sucesivos valores toma la variable de control del bucle Vc desde incicialmente Vi incrementándose a cada repetición en In, hasta que el valor de Vc supera Vf.
Si el incremento es +1, que es el caso más usual, el bucle se expresa:
Ejemplo: Para I de 1 a 6 hacer
Leer NOTA
SUMA SUMA + NOTA
finpara
-
Iterar (loop)
Se ejecutan las instrucciones y a continuación se evalua la condición de salida del bucle; si no es cierta se ejecutan las siguientes repitiéndose de nuevo el proceso hasta que la condición sea cierta.
Ejemplo:
Iterar
Leer NOMBRE
Salir si NOMBRE = “FIN”
Leer NOTA1, NOTA2
MEDIA (NOTA1 + NOTA2) / 2
Escribir NOMBRE, MEDIA
Finiterar
Los bucles mientras, hasta y para son casos particulares del anterior, es decir siempre se puede utilizar un bucle iterar en lugar de cualquiera de los otros, aunque cada uno de ellos se adapta mejor a una determinada situación.
4.2.3. ACCIONES COMPUESTAS
Es aquella que ha de ser realizada dentro del algoritmo, pero que no esta resuelta en términos de acciones simples y sentencias de control.
4.2.4. COMENTARIOS
Son líneas explicativas.
Los comentarios se utilizan para aclarar:
-
El significado o cometido de un objeto del programa.
-
El objetivo de un bloque de instrucciones.
-
La utilización de una determinada instrucción.
-
Cualquier aspecto del programa que sea necesario aclarar.
4.2.5. OBJETOS DEL PROGRAMA
Podemos considerarlos como los recipientes de los datos que manipula el programa.
El conjunto de objetos de un programa se denomina entorno.
Ejemplo:
Entorno:
I es numérica entera
NOTA es numérica real
NOMBRE es alfanumérica
4.2.6. PROGRAMA
Un programa es la solución final de un problema. Esta notación consiste en la descripción de los objetos (entorno) y de las instrucciones (algoritmo).
Ejemplo:
Generación de actas. Se introduce por teclado una secuencia de informaciones, cada una de ellas compuesta por un nombre y seis números correspondientes al nombre de un alumno y las calificaciones que ha obtenido en sus seis asignaturas. La secuencia termina al introducir el nombre <<FIN>>
Se desea un programa que imprima un listado de calificaciones en el que ha de figurar el nombre del alumno seguido de su nota media. Finalmente se imprimirá la nota media del grupo.
La entrada de datos será de la forma:
EMILIO PEREZ GARCIA
5, 8, 7, 5, 6, 6
...
ANA CASAS ORTIZ
5, 3, 6, 2, 7, 4
El listado proporcionado será:
LISTADO DE CALIFICACIONES
-------------------------------------
NOMBRE DEL ALUMNO NOTA MEDIA
--------------------------- ----------------
EMILIO PEREZ GARCIA 6.1
... ...
ANA CASAS ORTIZ 4.5
NOTA MEDIA DEL GRUPO: 5.7
Diseño del programa:
Algoritmo:
Imprimir cabeceras del listado
Inicializar acumuladores
Iterar
Leer NOMBRE = “FIN”
Salir si NOMBRE = “FIN”
Contabilizar alumno
Leer notas del alumno
Calcular su nota media
Imprimir linea con alumno y nota media
Finiterar
Obtener nota media del grupo
Imprimir nota media del grupo
Finalgoritmo
Mediante refinamientos del algoritmo anterior obtenemos el siguiente programa:
Programa GENERACION DE ACTAS
Entorno:
NOMBRE es alfanumérica
I, NUMALUMNOS son numéricas enteras
NOTA, SUMA, MEDIA, SUMAMEDIA, MEDIAGRUPO son numéricas reales
Algoritmo:
Escribir “ LISTADO DE CALIFICACIONES”
Escribir “ -------------------------------------“
Escribir “NOMBRE DEL ALUMNO NOTA MEDIA”
Escribir “--------------------------- ----------------“
NUMALUMNOS 0
SUMAMEDIA 0
Iterar
Leer NOMBRE
Salir si NOMBRE = “FIN”
NUMALUMNOS NUMALUMNOS + 1
SUMA 0
Para I de 1 a 6 hacer
Leer NOTA
SUMA SUMA + NOTA
Finpara
MEDIA SUMA / 6
Escribir NOMBRE, MEDIA
SUMAMEDIA SUMAMEDIA + MEDIA
Finiterar
MEDIAGRUPO SUMAMEDIA / NUMALUMNOS
Escribir “NOTA MEDIA DEL GRUPO:” , MEDIAGRUPO
Finprograma
1. Programa que lee una frase en una línea y cuenta su número de vocales.
Programa CONTAR VOCALES
Entorno:
FRASE es alfanumérica
NV, I son numéricas enteras
Algoritmo:
Leer FRASE
NV ! 0
Para I de 1 a longitud (FRASE) hacer
Si es vocal el carácter I de FRASE
Entonces NV ! NV + 1
Finsi
Finpara
Escribir “Número de vocales de la frase: “ ,NV
Finprograma
2. Programa que lee 100 datos, compuesto cada uno de ellos por un nombre de persona y su sueldo noto mensual, y obtiene e imprime el nombre y sueldo de la persona que cobra más y de la que menos cobra.
Programa SUELDOS
Entorno:
NOMBRE, NMAX, NMIN son alfanuméricas
SUELDO, SMAX, SMIN son numéricas reales
I es numérica entera
Algoritmo:
Leer NOMBRE, SUELDO
NMAX ! NOMBRE
SMAX ! SUELDO
NMIN ! NOMBRE
SMIN ! SUELDO
Para I de 2 a 100 hacer
Leer NOMBRE, SUELDO
Si SUELDO > SMAX
Entonces NMAX ! NOMBRE
SMAX ! SUELDO
Sino si SUELDO < SMIN
Entonces NMIN ! NOMBRE
SMIN ! SUELDO
Finsi
Finsi
Finpara
Escribir NMAX, SMAX, NMIN, SMIN
Finprograma
TEMA 5.- ESTRUCTURAS DE DATOS INTERNAS (TABLAS)
5.1. INTRODUCCIÓN
Un conjunto de datos homogéneos que se tratan como una sola unidad se denomina estructura de datos.
Si una estructura de datos reside en la memoria central de la computadora se denomina estructura de datos interna. Recíprocamente, si reside en un soporte externo, se denomina estructura de datos externa.
Las estructuras de datos internas pueden ser:
-
Estáticas. Tienen un número fijo de elementos que queda determinado desde la declaración de la estructura en el comienzo del programa.
La estructura de datos interna más importante, desde el punto de vista de utilización, es la tabla.
5.2. CONCEPTOS Y DEFINICIONES
Una tabla consiste en un número fijo, finito y ordenado de elementos, todos del mismo tipo y bajo un nombre común para todos ellos.
NOMBRE
1 2 3 4 5 6 7 ... N !nºorden
Val. 1 | Val. 2 | Val. 3 | Val. 4 | Val. 5 | Val. 6 | Val. 7 | ... | Val. N |
!
1er elemento
Se denomina componentes a los elementos de una tabla.
Por tanto, la dimension de una tabla es el número de índices que utiliza. Longitud o tamaño de una tabla es el número de componentes que contiene.
El tipo de una tabla es el tipo de sus componentes (neméricos, alfanuméricos, etc).
La posición de cada componente dentro de la tabla está determinada por uno o varios índices.
Un índice puede estar expresado, en una refernecia a un elemento de una tabla, de tres formas:
-
Por un valor numérico entero (por ejemplo 8)
-
Por una variable numérica entera (por ejemplo I)
-
Por una expresión numérica entera (por ejemplo I + 1)
Ejemplo: Tabla que contiene ocho nombres de cuatro caracteres.
Alumnos | |||||||
1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |
Luis | Jose | Rosa | Juan | Tere | Rafa | Javi | Lola |
TABLA: La estructura de datos representada.
NOMBRE DE LA TABLA: ALUMNOS.
COMPONENTES: ALUMNOS(1), ALUMNOS(2), ..., ALUMNOS(8)
INDICE: Los números del 1 al 8 que direccionan cada componente.
DIMENSION: Una
LONGITUD: Ocho
TIPO: Alfanumérica.
5.3. TIPOS DE TABLAS
-
Unidimensionales.
-
Bidimensionales.
-
Multidiminensionales.
5.3.1. TABLAS UNIDIMENSIONALES (VECTORES)
Son las tablas de una dimensión. También se denominan vectores.
Tienen un solo índice. Cada componente del vector se direcciona mediante su nombre.
El ejemplo anterior nos muestra una tabla de este tipo, en la cual la componente tercera que contiene el valor <<ROSA>> se denota por ALUMNOS(3)
Si queremosintercambiar los contenidos de los componentes primera y segunda, lo haremos utilizando una variabla alfanumérica auxiliar AUX de la siguiente manera:
AUX ! ALUMNOS(1)
ALUMNOS(1) ! ALUMNOS(2)
ALUMNOS(2) ! AUX
Los elementos de un vector se almacenan de forma consecutiva.
ALUMNOS(1), ALUMNOS(2), ..., ALUMNOS(8)
Ejercicio: Programa que lee las calificaciones de un alumno en 10 asignatura, las almacena en un vector y calcula e imprime su media.
-
Objetos:
I es el contador asociado a los bucles e indice de la tabla.
SUMA es un acumulador de notas.
MEDIA es una variable para el cálculo final.
Notas |
Enviado por: | Sierra |
Idioma: | castellano |
País: | España |