Programacion General

31
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

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