Programacion General
-
Upload
independent -
Category
Documents
-
view
1 -
download
0
Transcript of Programacion General
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
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
2
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)
3
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
4
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
5
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 unainteligencia humana. La realidad es que una computadora no tiene ninguna inteligencia. No olvidemos que noes más que una máquina creada por el hombre, y por tanto, no podrá realizar una tarea que no haya sidopreviamente determinada por él.
Una computadora (ordenador) es una máquina de origen electrónico que puede realizar una gran variedadde 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éticassencillas.
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 llamamosprograma, se pueden llegar a realizar tareas increíblemente complejas que aporten la solución a undeterminado 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 seencuadran 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 unacomputadora. Para ello necesitaremos, en primer lugar, un lenguaje o notación para expresar la soluciónobtenida. Tal solución debe estar adaptada a las particularidades de la computadora, si bien en una primerafase 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, enCobol o Pascal, y, finalmente para su ejecución, la máquina precisará realizar una traducción a su lenguajenativo, el denominado lenguaje máquina.
6
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, sedenomina 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 ointérpretes.
3.− Fase de montaje
En los programas compilados es necesario añadir al programa objeto algunas rutinas del sistema o en algunoscasos subprogramas externos que se hayan compilado separadamente. De ello se encarga el programamontador (linker)
7
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 buenfuncionamiento.
1.3. ERRORES
Corresponden al incumplimiento de las reglas sintácticas del lenguaje, como, por ejemplo, una palabrareservada 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 unavariable 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 incorrectasmotivadas 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 elrefinamiento 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 deejecución de las instrucciones.
1.7. OBJETOS DE UN PROGRAMA
Son aquellos manipulados por las instrucciones. Mediante ellos, en un programa podremos realizar elalmacenamiento 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
8
Son palabras creadas por el programador para dar nombre a los objetos y demás elementos que necesitadeclarar 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 yexponente 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)
+, −, *, /, =, <, >, ...
., ,, ;, :, (, ), ?, ¡ ...
9
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 determinadasreglas 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 losoperadores aritméticos.
•
Ejemplo: PI * SQR(X)
Alfanuméricas.− Son las que producen resultados de tipo alfanumérico. Se construyen mediante losoperadores alfanuméricos.
•
Ejemplo: Don + N
10
Booleanas.− Son las que producen resultados CIERTO o FALSO. Se construyen mediante losoperadores 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.
11
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
12
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
13
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 encuentralocalizado siempre por delante del comienzo de las acciones.
•
Bloque de instrucciones. Constituido por el conjunto de operaciones que se han de realizar para laobtenció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 podemosdiferenciar 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 losalmacenan en la memoria central para que puedan ser procesados.
Datos de Memoria
Entrada Central
14
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 losdispositivos 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 laejecución de la instrucción) y otro final (estado en que quedan los objetos después de la instrucción). El estadofinal de una instrucción siempre coincide con el estado inicial de la siguiente. Según la función quedesempeñ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 otrascaracterí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 deentrada, 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 memoriacentral 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 literalsiguiente:
Leer <lista de objetos>
Donde <lista de objetos> es el conjunto de elementos donde se van a depositar en memoria central los datosleí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
15
objeto o realizar movimientos de datos de un valor final en un objeto o realizar movimientos de datos de unobjeto 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 lamemoria 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 variablesDÍ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, generalmentelógicas, con el objetivo de controlar la ejecución de otras instrucciones o alterar el orden de ejecución normalde 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ípicosde instrucciones alternativas:
Alternativa simple•
Controla la ejecución de un conjunto de instrucciones por el cumplimiento o no de una condición, si secumple, 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 esmayor 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 primerbloque: 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
16
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 encuentrerelacionado con el valor que resulta de la evaluación de la expresión de tal forma que si este no aparece seejecutará 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 lapropia 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 laevaluació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 seejecutan 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 ejecutanhasta que se cumpla la condición que será evaluada siempre después de cada repetición, es decir, hasta que lacondición sea CIERTA.
17
Instrucción PARA (FOR)•
Controla la ejecución del conjunto de instrucciones que configuran su rango, de tal forma que estas seejecutan un número determinado de veces que queda definido en lo que se denomina la cabecera del bucle. Enella se define un identificador de variable de control del bucle (Vc) definientose al mismo tiempo su valorinicial (Vi), su balor final (Vf) y el incremento (In) que esta variable de control va a adquirir en cadarepetició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 seejecutan 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 secuenciashace 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 lainstrucció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ónasociada a la propia instrucción continuando la misma en la instrucción referenciada por una etiqueta quefigura 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 enotra 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 masrecomendable 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
18
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 sedesea realizar otro tipo de cuenta.
•
CONTADOR 0
Contabilización o incremento: Cada vez que aparece el evento a contar se ha de incrementar el contadoren 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. Engeneral se utilizan para calcular sumas y productos, para utilizarlos hay que realizar sobre ellos dosoperaciones básicas:
Inicialización: Todo acumulador necesita ser inicializado con el valor neutro de la operación que va aacumular, 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 unalectura 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 yFALSO, 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 seutiliza 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 elorden en que han sido escritas).
•
Programas alternativos: Consisten en el anidamiento de acciones alternativas entremezcladas coninstrucciones primitivas.
•
Programas cíclicos: Son aquellos en los que un conjunto de instrucciones de las existentes en el•
19
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 losproblemas 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 lacomputadora y que se diferencia de unas a otras dependiendo del procesador que posean. Su alfabeto secompone exclusivamente de unos y ceros.
El lenguaje ensamblador resultó de la simplificación del lenguaje máquina cambiando las cadenas de unos yceros por símbolos nemotécnicos, existiendo una correspondencia de instrucciones de 1 a 1, con respecto allenguaje máquina.
Posteriormente surgieron los lenguajes de alto nivel, que se alejaban notablemente del lenguaje binarioformando 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
20
Diremos que una notación es un pseudocódigo si mediante ella podemos describir la solución de un problemaen 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 sepueden 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 lecturase 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
21
Escribir MEDIA
Alternativa•
Alternativa simple:•
Las instrucciones I1, I2.... In se ejecutan solamente si la evaluación de la condición produce el resultadoCIERTO; 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; encaso 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 indicadosexplicitamente, 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
22
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 lassiguientes sentencias:
Mientras (while):•
Se evalua la condición antes de iniciar el bucle, y se repiten sucesivamente las instrucciones mientras sigasiendo 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 controldel bucle Vc desde incicialmente Vi incrementándose a cada repetición en In, hasta que el valor de Vc superaVf.
Si el incremento es +1, que es el caso más usual, el bucle se expresa:
Ejemplo: Para I de 1 a 6 hacer
23
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 seejecutan 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 unbucle iterar en lugar de cualquiera de los otros, aunque cada uno de ellos se adapta mejor a una determinadasituació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 accionessimples 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.
24
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 compuestapor un nombre y seis números correspondientes al nombre de un alumno y las calificaciones que ha obtenidoen 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 alumnoseguido 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
25
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
26
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
27
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 notomensual, 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
28
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 datosinterna. 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 laestructura 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 unnombre 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 esel número de componentes que contiene.
El tipo de una tabla es el tipo de sus componentes (neméricos, alfanuméricos, etc).
29
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 unavariabla alfanumérica auxiliar AUX de la siguiente manera:
AUX ! ALUMNOS(1)
ALUMNOS(1) ! ALUMNOS(2)
ALUMNOS(2) ! AUX
30
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 ycalcula 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
31