Informática: aplicaciones

Informática. Errores. Programación: lenguajes. Programa: elementos. Módulos. Tablas. Arrays. Archivos. Ordenadores. Lenguaje C

  • Enviado por: La Del Quinto
  • Idioma: castellano
  • País: España España
  • 336 páginas
publicidad
cursos destacados
Objective-C para verdaderos principiantes
Objective-C para verdaderos principiantes
Objective-C es el pilar correcto para desarrollar aplicaciones para iPhones y iPads. Podrás probar paquetitos y...
Ver más información

Diseño Web
Diseño Web
Con este curso serás capaz de:

* Entender y aplicar conceptos clave de HTML5, CSS3 y JQuery
* Estructurar...
Ver más información

publicidad

TEMA 1.- APLICACIONES INFORMÁTICAS.

1.1.- ¿QUÉ ES UN ORDENADOR?. ¿PARA QUÉ SIRVE?.

1.2.- ¿QUÉ ES UN PROGRAMA?.

1.3.- ¿POR QUÉ FASES SE PASA PARA REALIZAR UNA APLICACIÓN INFORMÁTICA?.

1.3.1.- DISEÑO DEL PROGRAMA:

1.3.1.1.- Fase de Análisis.

1.3.1.2.- Fase de programación.

1.3.1.3.- Fase de codificación.

1.3.2.- PUESTA A PUNTO DEL PROGRAMA:

1.3.2.1.- Fase de edición.

1.3.2.2.- Fase de compilación.

1.3.2.3.- Fase de montaje.

1.3.2.4.- Fase de ejecución.

1.4.- ERRORES: TIPOS DE ERRORES.

1.5.- DOCUMENTACIÓN DE LOS PROGRAMAS: FORMAS DE DOCUMENTACIÓN.

1.6.- PROGRAMACIÓN.

1.6.1.- ¿CÓMO DEBE SER UN BUEN PROGRAMA?.

1.6.2.- ¿CUÁNTOS TIPOS DE PROGRAMAS HAY?.

1.7.- ¿QUÉ ES UN LENGUAJE DE PROGRAMACIÓN?.

1.7.1.- TIPOS DE LENGUAJES.

1.7.2.- FORMAS DE TRADUCCIÓN DE UN LENGUAJE DE PROGRAMACIÓN A LENGUAJE MÁQUINA: ENSAMBLADOR, INTERPRETE Y COMPILADOR.

TEMA 2.- PROGRAMACIÓN

2.1.- ¿DE QUÉ PARTES CONSTA UN PROGRAMA?.

2.1.1.- ¿QUÉ OBJETOS INTERVIENEN EN UN PROGRAMA?.

2.1.1.1.- DATOS Y SU DIVISIÓN.

2.1.1.2.- IDENTIFICADORES Y PALABRAS RESERVADAS.

2.1.1.3.- CONSTANTES Y VARIABLES.

2.1.1.4.- EXPRESIONES.

2.1.1.4.1.- TIPOS DE EXPRESIONES.

2.1.1.4.2.- ORDEN DE EVALUACION DE LOS OPERADORES.

2.1.2.- ¿QÚÉ TIPOS DE INSTRUCCIONES TENEMOS?.

2.1.2.1.- DE DECLARACION.

2.1.2.2.- DE EJECUCIÓN.

2.1.2.2.1.- PRIMITIVAS O SIMPLES.

2.1.2.2.2.- COMPUESTAS O COMPLEJAS.

2.1.2.2.3.- DE CONTROL.

2.2.- ¿CÓMO REPRESENTAR LOS ALGORÍTMOS?.

2.3.- ¿HAY ALGÚN OTRO ELEMENTOS A TENER EN CUENTA EN LOS PROGRAMAS.

2.3.1.- CONTADOR.

2.3.2.- ACUMULADOR.

2.3.3.- INTERRUPTORES.

2.4.- EJERCICIOS.

Boletín 1 (TEMA 2).

Boletín 2 (TEMA 2).

Boletín 3 (TEMA 2).

TEMA 3.- ¿QUÉ TÉCNICAS UTILIZAR PARA DESARROLLAR BUENOS PROGRAMAS?.

3.1.- ¿QUÉ ES LA PROGRAMACIÓN MODULAR?.

3.1.1.- CARACTERISTICAS DE LOS MODULOS.

3.1.2.- VENTAJAS DE LA PROGRAMACION MODULAR.

3.2.-¿QUÉ ES LA PROGRAMACION ESTRUCTURADA?.

3.3.- OTRA HERRAMIENTA PARA REPRESENTAR LOS ALGORITMOS. PSEUDOCODIGOS.

3.3.1.- DEFINICION DE PSEUDOCODIGO.

3.3.2.- FORMATO PSEUDOCODIFICADO DE LAS INSTRUCCIONES.

3.3.2.1.- SIMPLES.

3.3.2.2.- DE CONTROL. (ESTRUCTURAS DE CONTROL).

3.3.2.3.- COMPUESTAS.

3.3.3.- FORMATO DE LA DECLARACION DE LOS OBJETOS.

3.3.4.- FORMATO GENERAL DE UN PROGRAMA.

3.3.5.- PASO DE DIAGRAMA DE FLUJO A PSEUDOCODIGO.

3.3.6.- PASO DE PSEUDOCODIGO A LENGUAJE DE PROGRAMACIÓN.

3.4.- OTRAS TÉCNICAS DE PROGRAMACIÓN ESTRUCTURADA.

3.4.1.- MÉTODO WARNIER.

3.4.2.- MÉTODO DE JACKSON.

3.4.3.- MÉTODO DE CHAPIN.

3.5.- EJERCICIOS.

Boletín 4 (TEMA 3).

Boletín 5 (TEMA 3).

TEMA 4.- ¿CÓMO REALIZAR LA PROGRAMACIÓN MODULAR?.

4.1.- ¿DÓNDE UBICAR LOS MÓDULOS?. ¿SUBPROGRAMA O SUBRUTINA?.

4.2.- ¿CÓMO ENLAZAR LOS MÓDULOS?. PROGRAMA PRINCIPAL Y SUBPROGRAMAS.

4.3.- ¿QUÉ FORMATO ELEGIR PARA PROGRAMAR LOS MÓDULOS?. ¿PROCEDIMIENTOS O FUNCIONES?.

4.4.- ¿CÓMO COMUNICAR LA INFORMACIÓN DE UN MÓDULO A OTRO?. PASO DE PARÁMETROS Y ÁMBITO DE VARIABLES.

4.5.- RECURSIVIDAD.

4.6.- EJERCICIOS.

Boletín 6 (tema 4).

TEMA 5.- ¿QUÉ ES EL C?.

5.1.- EL LENGUAJE C.

5.2.- ENTORNOS INTEGRADOS Y COMPILADORES EN C. INSTALACIÓN Y MANEJO.

5.2.1.-¿QUÉ COMPILADOR ELEGIR?

5.2.2.- INSTALACIÓN Y MANEJO.

5.3.- EDICIÓN DE LOS PROGRAMAS. EL PRIMER PROGRAMA EN C.

5.3.1.- EL PRIMER PROGRAMA EN C.

5.4.- COMPILACIÓN Y LINKADO EN C. ERRORES.

5.4.1.- ERRORES DEL COMPILADOR.

5.4.2.- ERRORES DEL LINKADOR.

5.5.- DEPURACIÓN.

TEMA 6.- ELEMENTOS DEL LENGUAJE C.

6.1.- VARIABLES, TIPO Y DECLARACIONES.

6.1.1.- SE NECESITA UN TIPO.

6.1.1.1.- Int.

6.1.1.1.1.- ¿Hay límites en los enteros?.

6.1.1.1.2.- ¿Qué pasa si se superan los límites?.

6.1.1.1.3.- Long int.

6.1.1.2.- Double, Float, long double.

6.1.1.2.1.- Double.

6.1.1.2.2.- Float y long double.

6.1.1.3.- Char.

6.1.1.4.- Short, signed y unsigned.

6.1.1.5.- Conversión de tipos.

6.2.- CONSTANTES.

6.3.- COMENTARIOS. FORMATO LIBRE.

6.4.- EXPRESIONES.

6.4.1.- Aritméticas.

6.4.2.- Operadores de asignación.

6.4.2.1.- Pre y post-incremento.

6.4.2.2.- Inicializaciones.

6.4.2.- Expresiones condicionales.

6.4.2.1.- Operadores relacionales.

6.4.2.2.- Operadores lógicos.

6.4.3.3.- Operador ternario ?.

TEMA 7.- SENTENCIAS DE C.

7.1.- INSTRUCCIONES DE ENTRADA Y SALIDA.

7.1.1.- SALIDA.

ööööööööööööööööö

7.1.1.2.- putchar.

7.1.1.3.- Código ASCII extendido, caracteres de control.

Caracteres de control.

7.1.2.- ENTRADA.

7.1.2.1.- scanf.

7.1.2.2.- getchar, getche y getch.

7.1.2.3.- Un problema: EOF.

7.2.- INSTRUCCIONES DE CONTROL.

7.2.1.- ALTERNATIVAS.

7.2.1.1.-Ejecución condicional: if

7.2.1.2.- Opción múltiple. else if.

7.2.1.3.- Switch.

7.2.2.- REPETITIVAS.

7.2.2.1.- while.

7.2.2.2.- do.

7.2.2.3.- Variables de control: for.

7.2.2.4.- Salir de un bucle: break, continue.

7.2.2.5.- Asignaciones en las comparaciones.

7.3.- CONSTANTES: #DEFINE, ENUM.

7.4.- MÁS SOBRE DIRECTIVAS.

7.5.- REALIZACIÓN DE PROGRAMAS.

7.5.1.- PREPARACIÓN DEL ENTORNO INTEGRADO (IDE).

7.5.2.- RECOMENDACIONES ANTES DE EMPEZAR UN NUEVO PROGRAMA .

7.5.3.- PROGRAMAS PROPUESTOS:

7.5.3.1.- MENU GENERAL (CON OPCIONES GENÉRICAS).

7.5.3.1.- MENU GENERAL (CON MANIPULACIONES DE FECHAS).

TEMA 8.- FUNCIONES.

8.1.- CONCEPTOS.

8.2.- DEFINICIÓN.

8.3.- LLAMADA.

8.4.- VARIABLES LOCALES.

8.5.- DEVOLVER UN VALOR.

8.6.- PASO DE PARÁMETROS.

8.7.- DECLARACIÓN. PROTOTIPOS.

Conversiones de tipos:

8.8.- VARIABLES GLOBALES.

8.9.-VARIABLES ESTÁTICAS.

8.10.-VARIABLES LOCALES A UN BLOQUE.

8.11.- VARIABLES DECLARADAS EXTERNAMENTE.

8.12.- FUNCIONES PREDEFINIDAS EN C.

8.12.1.- Funciones matemáticas.

8.12.2.- Funciones trigonométricas.

8.12.3.- Otras funciones de interés.

8.12.3.1.- Funciones de pruebas de caracteres.

8.12.3.2.- Funciones de aleatoriedad.

8.12.3.3.- Funciones de hora y fecha.

8.13.- FUNCIONES DE ENTRADA Y SALIDA PROPIAS.

8.13.1.- CAPTURAR UNA TECLA.

8.13.2.- CAPTURAR UN ENTERO.

8.13.3.- CAPTURAR UN LARGO.

8.13.4.- VISUALIZAR UN LITERAL.

8.14.- REALIZACIÓN DE PROGRAMAS.

8.14.1.- PROGRAMAS PROPUESTOS:

8.14.1.1.- MENU GENERAL (CON OPCIONES GENÉRICAS).

8.14.1.2.- MENU GENERAL (CON MANIPULACIONES DE FECHAS).

8.14.1.3.- Programa de varias funciones con distintos tipos de paso de parámetros. (ver Boletín 6)

TEMA 9.- ESTRUCTURAS DE DATOS INTERNAS.

9.1.- INTRODUCCIÓN.

9.2.- ESTRUCTURAS ESTÁTICAS INTERNAS: TABLAS.

9.2.1.-CONCEPTOS Y DEFINICIONES.

9.2.2.- TIPOS DE TABLAS.

9.2.2.1.- Tablas unidimensionales.

9.2.2.2.- Tablas bidimensionales.

9.2.2.3.- Tablas multidimensionales.

9.2.3.- REPRESENTACIÓN GRÁFICA DE LAS TABLAS.

9.2.4.- TRATAMIENTO SECUENCIAL DE UNA TABLA.

9.2.4.1.- Tratamiento secuencial de un vector.

9.2.4.2.- Tratamiento secuencial de una matriz.

9.2.4.3.- Tratamiento secuencial de un poliedro.

9.3.- BÚSQUEDA Y CLASIFICACIÓN INTERNA.

9.3.1.- BÚSQUEDA LINEAL.

9.3.1.1.- Búsqueda lineal en un vector.

9.3.1.2.- Búsqueda lineal en una matriz.

9.3.2.-BÚSQUEDA BINARIA O DICOTOMICA.

9.3.3.- ORDENACIÓN DE TABLAS.

9.3.3.1.- Ordenación por selección directa (o del mínimo).

9.3.3.2.- Ordenación por intercambio (burbuja).

9.3.3.3.- Ordenación por intercambio con test.

9.3.3.4.- Ordenación por método shell.

9.4.- EJERCICIOS.

Boletín 7 (TEMA 9).

Boletín 8 (TEMA 9).

Boletín 9 (TEMA 9).

TEMA 10.- TABLAS O ARRAYS Y CADENAS EN C.

10.1.- ARRAYS.

10.1.1.- DECLARACIÓN E INICIALIZACIÓN.

10.1.2.- ARRAYS DE VARIAS DIMENSIONES.

10.2.- CADENAS.

10.2.1.- ARRAYS DE CHAR.

10.2.2.- CADENAS, CHAR E INT.

10.2.3.- SALIDA DE UNA CADENA. printf y puts.

10.2.4.- ENTRADA DE UNA CADENA. gets y scanf.

10.2.5.- OTRAS FUNCIONES DE CADENA. strcat, strcmp, strcp, strlen.

10.2.6.- MÁS FUNCIONES DE CADENA. sscanf, sprintf y conversiones directas.

10.2.7.- ARRAYS DE CADENAS.

10.3.- FUNCION DE ENTRADA DE CADENAS PROPIA.

10.4.- REALIZACIÓN DE PROGRAMAS.

10.4.1.- PROGRAMAS PROPUESTOS:

10.4.1.1.- Programa Agenda. (agenda1.c)

10.4.1.2.- Mismo caso anterior pero con funciones y pasando los arrays. (agenda2.c)

TEMA 11.- ESTRUCTURAS Y PUNTEROS EN C.

11.1.- ESTRUCTURAS.

11.1.1.- CREACIÓN.

11.1.2.- OPERACIONES CON ESTRUCTURAS.

11.1.3.- ARRAYS DE ESTRUCTURAS.

11.2.- UNIONES.

11.3.- TIPOS DEFINIDOS POR EL USUARIO.

11.3.1.- TIPOS COMPUESTOS. typedef.

11.3.2.- CONVENIOS DE NOMENCLATURA.

11.4.- REALIZACIÓN DE PROGRAMAS.

11.4.1.- PROYECTOS.

11.4.2.- PROGRAMAS PROPUESTOS:

11.4.2.1.- Programa Agenda3.

11.5.- PUNTEROS.

11.5.1.- CREACIÓN.

11.5.2.- UTILIZACIÓN.

11.5.3.- OPERACIONES CON PUNTEROS

11.6.- PUNTEROS Y ARRAYS.

11.6.1.- PASAR ARRAYS COMO PUNTEROS.

11.6.2.- PUNTEROS A CADENAS DE CARACTERES.

11.7.- PUNTEROS A PUNTEROS. ARRAYS DE PUNTEROS.

11.7.1.- PUNTERO A UN PUNTERO.

11.7.2.- ARRAYS DE PUNTEROS.

11.7.3.- INICIALIZACIÓN Y USO DE UN ARRAY DE PUNTEROS A CADENAS DE CARACTERES.

11.7.3.1.- Búsquedas en una cadena.

11.7.3.2.- Ordenación: qsort.

11.7.3.3.- Array de índices.

11.8.- PUNTEROS A ESTRUCTURAS.

11.8.1.- Punteros a arrays de estructuras.

11.9.- PUNTEROS A FUNCIONES. atexit.

11.9.1.- Antes de salir: atexit.

11.10.- FORMAS CONCISAS.

11.11.- REALIZACIÓN DE PROGRAMAS.

11.11.1.- PROGRAMA PROPUESTO.

TEMA 12.- ESTRUCTURAS DINÁMICAS: PUNTEROS

12.1. INTRODUCCIÓN.

12.2.- LISTAS.

12.3.- PILAS.

12.4.- COLAS.

12.5.- ÁRBOLES.

12.7.- REALIZACIÓN DE PROGRAMAS.

12.7.1.- EDITOR DE PANTALLAS “EP”.

12.7.2.- FUNCIÓN PROPIA VENTANA.

12.7.3.- PROGRAMA PROPUESTO.

TEMA 13.- ESTRUCTURAS DE DATOS EXTERNAS.

13.1.- INTRODUCCION.

13.2.- CONCEPTOS Y DEFINICIONES.

13.3.- CARACTERISTICAS DE LOS ARCHIVOS.

13.4.-ORGANIZACION DE LOS ARCHIVOS.

13.4.1.- ORGANIZACION SECUENCIAL.

13.4.2.- ORGANIZACION DIRECTA O ALEATORIA.

13.4.3.- ORGANIZACION SECUENCIAL INDEXADA.

13.5.- MODOS DE ACCESO A UN ARCHIVO.

13.6.- OPERACIONES SOBRE ARCHIVOS.

TEMA 14.- ARCHIVOS SECUENCIALES.

14.1.- OPERACIONES SOBRE ARCHIVOS ESCUENCIALES.

14.2.- CREACION.

14.3.- CONSULTA.

14.4.- BORRADO.

14.5.- REORGANIZACION.

14.6.- ACTUALIZACION.

14.7.- BÚSQUEDA Y CLASIFICACIÓN EXTERNA.

14.7.1.- BÚSQUEDA.

14.7.1.1. - BÚSQUEDA EN ARCHIVOS DESORDENADOS.

14.7.1.2.- BÚSQUEDA EN ARCHIVOS ORDENADOS.

14.7.2.- PARTICIÓN.

14.7.2.1.- PARTICIÓN EN SECUENCIAS.

14.7.3.- MEZCLA O FUSION.

14.7.4.- CLASIFICACIÓN.

14.8.- EJERCICIOS.

Boletín 10 (TEMA 14)

Boletín 11 (TEMA 14)

Boletín 12 (TEMA 14)

Boletín 13 (TEMA 14)

TEMA 15.- EXTRUCTURAS EXTERNAS EN C.

15.1.- TIPOS DE FICHEROS EN C: DE TEXTO Y BINARIOS.

15.2.- FUNCIONES SOBRE FICHEROS DE TEXTO.

15.2.1.- Abrir: fopen y Cerrar: fclose.

15.2.2.- Grabar: fprintf, fputc y fputs. Leer: fscanf, fgets y fgetc.

15.2.3.- Detectar el fin de fichero: feof.

15.3.- FUNCIONES SOBRE FICHEROS BINARIOS.

15.3.1.- Abrir: fopen.

15.3.2.- Grabar: fwrite y Leer: fread.

15.4.- MODOS DE ACCESO: SECUENCIAL Y DIRECTO.

15.5.- FICHEROS ALEATORIOS: FUNCIONES DISPONIBLES.

15.5.1.- Función fseek.

15.5.2.- Otras funciones: rewind y ftell.

15.6.- FICHEROS PREDEFINIDOS. REDIRECCIONAMIENTO.

15.6.1.- Ficheros predefinidos.

15.6.2.- Redireccionamiento.

15.7.- USO DE LA IMPRESORA.

15.8.- CONTROL DE ERRORES EN LOS FICHEROS (ferror).

15.9- OTRAS OPERACIONES CON LOS FICHEROS.

15.10.- Ficheros y directorios, operaciones con directorios.

15.11.- REALIZACIÓN DE PROGRAMAS.

15.11.1.- PROGRAMA PROPUESTO: PROGRAMA DE BIBLIOTECA.

TEMA 16.- ARCHIVOS DIRECTOS.

16.1.- OPERACIONES SOBRE ARCHIVOS DIRECTOS.

16.2.- CREACION.

16.2.1.- Método transformación directa.

16.2.2.- Método del resto.

16.3.- CONSULTA.

16.4.- REORGANIZACION.

16.5.- CLASIFICACION, FUSION y PARTICION.

16.6.- BORRADO.

16.7.- ACTUALIZACION

16.7.1.- Actualización por el método transformación directa.

16.7.2.- Actualización por el método del resto.

16.8.- EJERCICIOS.

Boletín 14 (TEMA 16)

Boletín 15 (TEMA 16)

16.9.- REALIZACIÓN DE PROGRAMAS.

16.9.1.- PROGRAMA PROPUESTOS:

16.9.1.1.- PROGRAMA DE BIBLIOTECA DIRECTO.

16.9.1.2.- PROGRAMA DE VIDEO CLUB.

TEMA 17.- ARCHIVOS INDEXADOS.

17.1.- OPERACIONES SOBRE ARCHIVOS INDEXADOS.

17.2.- CREACION.

17.3.- CONSULTA.

17.4.- REORGANIZACION.

17.5.- FUSION y PARTICION.

17.6.- CLASIFICACION.

17.7.- BORRADO.

17.8.- ACTUALIZACION.

17.9.- DISEÑO DE RUTINAS DE INDEXADOS EN LENGUAJES QUE NO LOS CONTEMPLAN.

17.9.1.- RUTINAS DE INDEXADOS BASADAS EN TABLAS.

17.9.2.- RUTINAS DE INDEXADOS BASADAS EN FICHEROS INDICES.

17.10.- EJERCICIOS.

Boletín 16 (TEMA 17)

Boletín 17 (TEMA 17)

Boletín 18 (TEMA 17)

17.11.- REALIZACIÓN DE PROGRAMAS.

17.11.1.- PROGRAMA PROPUESTOS:

17.11.1.1.- PROGRAMA DE BIBLIOTECA INDEXADO.

17.11.1.2.- PROGRAMA DE CLIENTES INDEXADO.

17.11.1.3.- PROGRAMA DE BIBLIOTECA, ESTILO BROWSE INDEXADO.

17.11.1.4.- FUNCION DE AYUDA PARA SELECCIÓN DE CÓDIGO DE BIBLIOTECA.

17.11.1.2.- PROGRAMA DE FACTURACIÓN.

TEMA 18.- PROGRAMACIÓN AVANZADA EN C.

18.1.- DOMINANDO LA PANTALLA.

18.1.1.- CONTROL DE LA PANTALLA.

18.1.1.1.- El driver ANSI.SYS.

18.1.1.2.- La librería de consola.

18.1.1.3.- Las funciones del BIOS.

18.1.1.4.- Acceso directo al hardware

18.1.2.- TIPOS DE PANTALLAS.

18.1.2.1.- La pantalla alfanumérica.

6.1.2.2.- Caracteres semigráficos.

18.1.2.3.- La pantalla gráfica.

18.1.3.- LIBRERÍAS GRÁFICAS, SELECCIÓN DEL MODO GRÁFICO.

18.1.3.1.- Librerías gráficas.

18.1.3.2.- Elegir el modo gráfico.

18.1.3.3.- Mostrar un pixel.

18.1.4.- DIBUJANDO EN LA PANTALLA.

18.1.4.1.- Líneas rectas.

18.1.4.2.- Borrados y rectángulos.

18.1.4.3.- Factor de cuadratura.

18.1.5.- MEMORIZANDO PANTALLAS.

18.1.5.1.- Nociones de la memoria de pantalla.

18.1.5.2.- Leer zonas de pantalla.

18.1.5.3.- Escribir en la pantalla gráfica.

18.1.6.- IMPRESIÓN DE GRÁFICOS.

18.1.6.1.- Imprimir gráficos: (int 05h). Bandas gráficas.

Bandas gráficas.

18.1.6.2.- Comandos gráficos. Imprimir una banda gráfica.

Imprimir una banda gráfica.

18.1.6.3.- El lenguaje PostScript.

18.2.- INTERACCIÓN DE C CON DOS.

18.2.1.- ARGUMENTOS DE MAIN.

18.2.2.- ACCESO A DOS: SYSTEM. VARIABLES DE ENTORNO.

Variables de entorno.

18.2.3.- LOS REGISTROS DE LA CPU. LLAMADAS AL BIOS.

Llamadas al BIOS

18.2.4.- ERRORES DE HARDWARE, HARDERR.

18.2.5.- PORTS DE E/S.

18.3.- MANEJO DE BITS.

18.3.1.- BASES NUMÉRICAS.

18.3.1.1.- Introducción al código binario.

18.3.1.2.- Base diez.

18.3.1.3.- Base dos.

18.3.1.4.- Complemento a 2.

18.3.1.5.- Hexadecimal y octal.

Código hexadecimal.

Código octal.

18.3.1.6.- Números hexadecimales en C.

18.3.2.- OPERADORES LÓGICOS DE BITS.

18.3.2.1. Desplazamientos.

18.3.2.2.- Campos de bits.

18.4.- MACROS.

18.4.1.- SUSTITUCIONES CON #DEFINE.

18.4.2.- MACROS.

18.4.2.1.- Macros y funciones.

18.4.2.2.- Macros y portabilidad.

18.5.- MODELOS DE MEMORIA.

18.5.1.- SEGMENTOS.

18.5.2.- MODELOS DE MEMORIA.

18.5.3.- PROBLEMAS CON LOS PUNTEROS.

18.5.3.1.- Punteros huge.

18.5.3.2.- Array mayores que 64 Kb

18.5.3.3.- Más sobre los segmentos.

18.6.- FUNCIONES PROPIAS.

18.6.1.- FUNCIONES PARA EL RATÓN.

18.6.2.- FUNCIONES PARA LA FECHA DEL SISTEMA.

18.7.- REALIZACIÓN DE PROGRAMAS.

18.7.1.- PROGRAMA PROPUESTOS:

18.7.1.1.- PROGRAMA DE TERMÓMETRO.

18.7.1.2.- PROGRAMA DE ALARMAS.

TEMA 1.- APLICACIONES INFORMÁTICAS.

1.1.- ¿QUÉ ES UN ORDENADOR?. ¿PARA QUÉ SIRVE?.

Podemos decir que un ordenador es un conjunto de componentes interrelacionados entre sí, con un único fin: procesar información.

Esta es la misma definición que se da para todo tipo de sistemas, tanto naturales (por ejemplo el sistema solar), como artificiales (cualquier fábrica). Lo que diferencia a un sistema de otro es precisamente el fin que persigue.

Habría que decir también que hay otro tipo de sistemas que procesan información, como el teléfono, pero mientras éste sólo transmite la información, sin variarla, nuestro sistema (el ordenador) es capaz de transformarla.

Para cumplir esta función de procesar datos, se deben cubrir fundamentalmente tres fases:

ENTRADA PROCESO SALIDA

Recopilación de datos, proceso de los mismos y la comunicación de la información resultante.

Por otro lado, en el ordenador podemos diferenciar dos partes fundamentales: la parte física: plásticos, circuitos, elementos mecánicos, etc., es decir todo lo que se ve o se puede ver (por hacer comparaciones, podría decirse que el cuerpo del ordenador), y que se conoce por HARDWARE, y la parte lógica: información con la que trabajará o datos y las instrucciones para manejarla o programas (siguiendo con las comparaciones el cerebro del ordenador).

Dentro de la parte física podemos encontrar las siguientes partes básicas (en cuanto a proceso de datos se refiere): entrada, almacenamiento principal, almacenamiento auxiliar, procesador central y salida.

1

MEMORIA AUXILIAR

DISPOSITIVO MEMORIA PRINCIPAL DISPOSITIVO

ENTRADA SALIDA

UNIDAD CENTRAL

DE PROCESO

Líneas de flujo

Líneas de control

La entrada realiza la función de recibir los datos de un medio externo en el formato apropiado a ese medio y transmitirlos al almacenamiento principal en el formato adecuado.

El almacenamiento principal se usa para conservar los datos y la lista de operaciones que deben realizarse con ellos para conseguir unos determinados resultados.

Debido a que el almacenamiento principal debe ser de muy rápido acceso es relativamente costoso y limitado y además suele alimentarse con la corriente del ordenador, es decir que cuando se corta dicha corriente (se apaga) deja de funcionar, perdiendo la información almacenada, por todo ello estos sistemas incluyen un almacenamiento auxiliar o secundario, con acceso más lento pero con almacenamiento permanente, encargado principalmente de guardar aquellos datos que, siendo necesarios para la consecución de los objetivos previstos, no caben en el almacenamiento principal, llevándose a cabo los traslados necesarios de un almacenamiento a otro.

El procesador central controla y coordina las funciones de los demás componentes del sistema e incluye las capacidades aritméticas y lógicas.

La salida es la encargada de transmitir los datos resultantes del proceso a un medio externo, cambiándoles su formato a un formato externo (comprensible para el usuario).

Según las funciones que se pueden realizar nos encontramos con que un ordenador sólo hace o puede hacer tres tipos de operaciones: mover datos de uno de sus componentes a otro, cálculos aritméticos, y comparaciones lógicas (si un dato es mayor, menor o igual que otro). Pues bien, con esta gama de operaciones es con lo que se deberá preparar la lista de operaciones a realizar para conseguir unos determinados resultados.

1.2.- ¿QUÉ ES UN PROGRAMA?.

Como se apuntaba en el apartado anterior, puede decirse que la misión de un programa es proporcionar instrucciones específicas bajo las cuales el procesador (UCP) tiene que realizar los cálculos necesarios para obtener los resultados esperados. Las diferentes instrucciones de un ordenador realizan el movimiento o transferencia de datos desde dispositivos de entrada o almacenamiento secundario hacia la memoria, entre la memoria y el procesador, donde se realizan los cálculos reales, y desde la memoria a los dispositivos de salida, donde los resultados de los cálculos se ponen a disposición del usuario.

Definiéndolo diríamos que un programa puede considerarse como la secuencia de acciones (instrucciones) que manipulan un conjunto de objetos (datos). Contendrá por tanto dos bloques para la descripción de los dos aspectos citados.

-Bloque de declaraciones. En él se especifican todos los objetos que utiliza el programa (constante, variable, etc.).

-Bloque de instrucciones. Constituido por el conjunto de operaciones que se han de realizar para la obtención de los resultados deseados.

La ejecución de un programa consiste en la realización secuencial del conjunto de instrucciones desde la primera a la última, de una en una. Este orden de realización únicamente será alterado mediante instrucciones denominadas de ruptura de secuencia (o de control).

Los objetos del programa se pueden considerar como el conjunto de recipientes necesarios para contener, tanto los datos de entrada, como los datos resultantes de todos los procesos que se lleven a cabo. (Se verán en el tema 2).

Las instrucciones de un programa consisten, en general, en modificaciones sobre los objetos del programa desde un estado inicial hasta otro final que contendrá los resultados del proceso. (Se verán en el tema 2).

La tarea de un programador es producir la secuencia apropiada de instrucciones, para resolver el problema.

1.3.- ¿POR QUÉ FASES SE PASA PARA REALIZAR UNA APLICACIÓN INFORMÁTICA?.

El proceso que se sigue desde el planteamiento de un problema, hasta que se tiene una solución instalada en el ordenador y lista para su ejecución, se compone de varias fases agrupadas en dos bloques bien diferenciados (si bien es verdad que estas partes pueden variar según los autores):

1.3.1.- DISEÑO DEL PROGRAMA:

Se engloban en este bloque las fases correspondientes a la creación del programa.

Problema --------> ANÁLISIS ------> Especificación

Especificación --> PROGRAMACIÓN --> Algoritmo

Algoritmo -------> CODIFICACIÓN --> Programa

1.3.1.1.- Fase de Análisis.

El primer paso para encontrar la solución a un problema mediante un ordenador es el análisis del problema con una definición lo más exacta posible. Esta fase requiere el máximo de imaginación y creatividad por parte del programador.

Consiste en el examen y descripción detallada de los siguientes aspectos relativos al problema:

-Equipo a utilizar.

-Personal informático.

-Estudio de los datos de salida o resultados.

-Estudio de los datos de entrada.

-Relación entre los datos de entrada y los de salida.

-Estudio de las fórmulas y / o procedimientos a aplicar a los datos de entrada para conseguir los resultados.

-Descomposición del problema en subproblemas (módulos).

El resultado de esta fase será la especificación del problema, formada por una serie de documentos elaborados para los aspectos citados.

1.3.1.2.- Fase de programación.

Consiste en el diseño de la solución al problema planteado en forma de algoritmo.

Podemos definir algoritmo como la secuencia de pasos que deberá realizar el ordenador para llegar a la solución de un problema.

Un algoritmo debe ser, entre otras cosas, preciso e indicar el orden de realización de cada paso, debe estar bien definido, dar siempre el mismo resultado y ser finito.

La elaboración de algoritmos se debe abordar de forma sistemática, esto es, aplicando explícitamente un conjunto de técnicas como son las de programación estructurada y programación modular.

Así mismo para la representación de algoritmos se utilizan diferentes notaciones como diagramas de flujo y pseudocódigos, entre otros, que desde ahora llamaremos lenguajes algorítmicos.

1.3.1.3.- Fase de codificación.

En esta fase se transcribe el algoritmo resultante de la fase anterior a un lenguaje de programación concreto. En general es una tarea totalmente mecánica.

Al resultado se le denomina programa. Antiguamente esta fase daba como resultado unas hojas de codificación que se usaban como soporte de partida en la fase siguiente, actualmente esta fase y la siguiente se han refundido en una sola.

1.3.2.- PUESTA A PUNTO DEL PROGRAMA:

Se engloban en este bloque las fases correspondientes a la instalación del programa en el ordenador.

Programa (papel) -----> EDICIÓN -----> Programa fuente

Programa fuente -----> COMPILACIÓN --> Programa objeto

Programa objeto -----> MONTAJE ------> Programa ejecutable

Programa ejecutable --> EJECUCIÓN ----> Resultados deseados.

1.3.2.1.- Fase de edición.

Escritura del programa fuente a partir de las hojas de codificación en la memoria del ordenador, grabándolo en algún soporte permanente (disquete, o disco duro). Se hace con la ayuda de un programa del sistema llamado editor, en este punto cabe preguntarse ¿cuál de los editores existentes utilizar?, la respuesta depende del lenguaje, y más concretamente del compilador, en el que se vaya a codificar, ya que la mayoría vienen con un entorno integrado dentro del cual se encuentra el editor a usar. No obstante siempre puede elegirse cualquier otro editor que pueda generar textos que el compilador que usemos sepa reconocer (comúnmente en ASCII).

1.3.2.2.- Fase de compilación.

Traducción del programa fuente a lenguaje máquina cuyo resultado es el programa objeto. Para ello se dispone de programas compiladores o intérpretes, que además comprueban la correcta sintaxis del programa.

1.3.2.3.- Fase de montaje.

En los programas compilados es necesario añadir al programa objeto resultante, algunas rutinas del sistema o, en algunos casos, subprogramas externos que se hayan compilado separadamente. De ello se encarga el programa montador (linker).

1.3.2.4.- Fase de ejecución.

Consiste en probar el programa ejecutable resultante de la fase anterior, con datos de prueba para asegurar el correcto funcionamiento del mismo.

1.4.- ERRORES: TIPOS DE ERRORES.

Fundamentalmente hay que distinguir tres tipos de errores:

De compilación: el compilador utilizado para traducir nuestro código fuente a objeto detecta algún tipo de error de sintaxis. Normalmente los modernos compiladores nos señalan perfectamente el lugar donde se encuentra el error y el tipo de error que se ha producido: una identificador no declarado, una instrucción mal escrita o con los parámetros y / u opciones mal especificados, un signo de puntuación mal puesto, etc.

De Linkado (montaje): el linkador utilizado para montar nuestro código objeto y las librerías necesarias no se corresponden, Normalmente también los modernos linkadores nos señalan el tipo de error que se ha producido, no así el lugar, ya que la mayoría de las veces son llamadas a instrucciones, sentencias o subrutinas que no aparecen en los objetos y librerías especificadas, de forma que sabe en que parte del fuente se hace la llamada pero no donde debería estar.

De ejecución: Se producen cuando ejecutamos el programa y no responde de la forma esperada, o se bloquea o se aborta su ejecución inesperadamente. Estos errores son los más difíciles de localizar, la única herramienta que nos puede ayudar un poco es el “debugger” o ejecutor con supervisión de las distintas zonas de memoria en cada momento y de la secuencia de ejecución paso a paso.

1.5.- DOCUMENTACIÓN DE LOS PROGRAMAS: FORMAS DE DOCUMENTACIÓN.

Hay que hablar de dos tipos de documentación según para quien esté orientada: para programadores que vayan a utilizar nuestros fuentes o nosotros mismos, o para el usuario final de nuestra aplicación.

Para programadores: Es bueno añadir comentarios al inicio de cada tarea o grupo de tareas, indicando cómo se ha planteado la solución; así mismo debería documentarse cada sentencia que resulte especialmente complicada.

Para el usuario final existen varias formas de documentar los programas:

  • Una es de forma impresa y consiste en el manual del usuario, en el que se explican las distintas funciones que realiza y que significa cada elemento que aparece en el mismo: instalación, distintas opciones de los menús, pantallas de datos con sus respectivos campos, salidas impresas, etc.

  • Otra es la ayuda interactiva del propio programa, para lo cual toda la información recogida en el manual e incluso alguna adicional puede ser visualizada de forma más o menos ordenada a través de alguna opción del propio programa.

  • También es bueno añadir información en las diferentes pantallas, referente a los datos que se piden o se muestran.

1.6.- PROGRAMACIÓN.

1.6.1.- ¿CÓMO DEBE SER UN BUEN PROGRAMA?.

Como características principales podemos destacar:

-Ser correcto: el programa debe realizar el trabajo para el que fue diseñado y hacerlo sin errores. Para conseguirlo es importante tener una especificación completa y clara de los propósitos y funciones del programa. (Depuración).

-Ser comprensible: Una persona diferente al autor debe ser capaz de leer y entender el propósito y las funciones del programa. (Autodocumentación).

-Ser fácil de cambiar: Los cambios de los productos, los cambios en los procedimientos de una compañía, las nuevas regulaciones del gobierno, etc. implican la necesidad de modificar los programas de computador que existen actualmente. Esto conlleva en los programas no pensados para eso un tiempo considerado y grandes esfuerzos. (Dividido en módulos).

-Que haya sido escrito eficientemente: Se refiere a la cantidad de tiempo gastado en la escritura del programa. Este objetivo es secundario en cuanto a que el programa sea correcto, comprensible y fácil de cambiar. Rápido sí, pero sin olvidar las otras características. (Uso de bibliotecas y subrutinas disponibles).

-Que ejecute eficientemente: debe escribirse de tal forma, que no utilice más almacenamiento de ordenador ni tampoco más tiempo de proceso del que sea necesario. (Un buen análisis)

Todas estas características pueden conseguirse más fácilmente haciendo uso conjunto de la programación Modular y la Programación Estructurada (se verán en el tema 3).

1.6.2.- ¿CUÁNTOS TIPOS DE PROGRAMAS HAY?.

A parte de otras clasificaciones que consideramos de menor interés, podemos referirnos a una clasificación relativa a la aplicación desarrollada por el programa, según la cual tenemos los siguientes tipos de programas:

-Programas de gestión. Se caracterizan por el manejo de gran cantidad de datos con pocos cálculos.

-Programas técnico-científicos. Al contrario que los anteriores, realizan gran cantidad de cálculos con pocos datos.

-Programas de diseño. (CAD). Se caracterizan por la utilización de técnicas gráficas para resolver problemas de diseño.

-Programas de simulación. Intentan reflejar una situación real, para facilitar su estudio.

-Programas educativos. (Enseñanza Asistida por Ordenador). Utilizan las ventajas del ordenador para la docencia.

-Programas de inteligencia artificial. Se usan para simular el razonamiento humano.

1.7.- ¿QUÉ ES UN LENGUAJE DE PROGRAMACIÓN?.

Un lenguaje es una serie de caracteres, palabras y reglas sintácticas que se pueden emplear para escribir un programa de ordenador.

1.7.1.- TIPOS DE LENGUAJES.

Cada modelo de ordenador tiene su propio lenguaje, el cual está determinado por la estructura del HARDWARE. Estos lenguajes nativos reciben el nombre de lenguajes de máquina. La primera programación de ordenadores era casi exclusivamente en lenguaje máquina. Un paso que permitió hacer más fácil la programación fue el desarrollo de los lenguajes simbólicos. Los lenguajes simbólicos utilizan códigos nemotécnicos (tres o cuatro letras asociadas al nombre del verbo que identifica la acción a realizar) para representar las instrucciones de la máquina. Pero el ordenador no entiende los nemotécnicos y por eso deben ser traducidos a lenguaje máquina. Un ensamblador es un programa que traduce instrucciones en lenguaje simbólico a instrucciones en lenguaje máquina. Los lenguajes simbólicos son dependientes de la máquina.

La siguiente etapa en el desarrollo de lenguajes de programación fue la llegada de los lenguajes de alto nivel, que están más orientados al proceso que a la máquina. Estos lenguajes son independientes de las máquinas. Un programa escrito en un lenguaje de alto nivel se llama programa fuente. El compilador es un programa que traduce (o compila) el programa fuente a un programa en lenguaje máquina, que se denomina programa objeto, que es el que entiende el ordenador.

1.7.2.- FORMAS DE TRADUCCIÓN DE UN LENGUAJE DE PROGRAMACIÓN A LENGUAJE MÁQUINA: ENSAMBLADOR, INTERPRETE Y COMPILADOR.

La diferencia fundamental entre un ensamblador y un compilador es que la compilación es más compleja que el ensamblaje. El ensamblaje normalmente implica una traducción de uno a uno, de un código nemotécnico a un código máquina; la compilación implica una traducción de muchos a uno. Una instrucción de alto nivel suele ser el equivalente de varias instrucciones a nivel de máquina.

Como ya se ha mencionado en los diferentes tipos de programas y centrándonos en dos de ellos que son los procesamientos administrativos y procesamientos científicos; en los primeros se utiliza un gran volumen de datos de entrada, un proceso consistente sobre todo en la actualización de archivos y una salida en forma de informes también numerosa; mientras que en los científicos hay un volumen bajo de entrada, lógica de proceso con extensas operaciones aritméticas y necesidades de informes más limitados.

En virtud de las diferencias de procesos, se han desarrollado diferentes lenguajes de programación. Para las tareas administrativas es para las que se ideó COBOL, entre otros, y para tareas científicas se empezó usando FORTRAN. Por supuesto, muchos lenguajes pueden realizar tareas tanto científicas como administrativas, pero en general cada lenguaje ha sido pensado para una determinada y es en esta donde puede sacársele más rendimiento.

TEMA 2.- PROGRAMACIÓN.

2.1.- ¿DE QUÉ PARTES CONSTA UN PROGRAMA?.

Hasta este punto ya hemos contestado a lo siguiente:

¿Qué es un programa?

¿Qué se busca conseguir con él?

¿Cuál es el camino a seguir para conseguir realizarlo?

¿Qué características debe cumplir para que sea considerado bueno?

¿En qué lenguajes lo podemos hacer?

También comentamos que en todo programa se suelen distinguir claramente dos bloques (depende del estilo de programación y del lenguaje elegido se distinguirán más o menos), que, recordando, decíamos que se llamaban: bloque de declaraciones y bloque de instrucciones; aunque en realidad dentro de ambos escribiremos instrucciones, en un bloque irán las de declaración o definición y en el otro las de ejecución.

También decíamos que los objetos del programa los considerábamos como el conjunto de recipientes necesarios para contener, tanto los datos de entrada, como los datos resultantes de todos los procesos que se lleven a cabo, y que las instrucciones de un programa consisten, en general, en modificaciones sobre los objetos del programa desde un estado inicial hasta otro final que contendrá los resultados del proceso.

Veamos estos dos aspectos más explícitamente.

2.1.1.- ¿QUÉ OBJETOS INTERVIENEN EN UN PROGRAMA?.

2.1.1.1.- DATOS Y SU DIVISIÓN.

Los datos son los objetos sobre los que un ordenador opera. Se pueden clasificar en los siguientes tipos:

-SIMPLES : -Numéricos: -Enteros

-Reales

-Carácter: -Cadenas

-Lógicos

-Punteros

-ESTRUCTURADOS: -Tablas

-Estructuras dinámicas: -Pilas

-Colas

-Árboles

-Grafos

-Registros

-Conjuntos

-Ficheros

-DEFINIDOS POR EL USUARIO.

Los de tipo numérico son los relativos a las diferentes clase de números: enteros y reales. Sólo admiten dígitos, puntos decimales y signos.

Los de tipo carácter son los caracteres que puede interpretar el ordenador: alfabéticos (A,B..Z,a,b,..z), dígitos (0,..9), especiales ($,*,<...). Un dato tipo carácter es un solo carácter. Los caracteres se organizan en cadenas. Una cadena es una secuencia de caracteres válidos encerrados entre delimitadores (normalmente comillas simples o dobles)

Los de tipo lógico son aquellos que sólo pueden tomar dos valores: cierto y falso. Básicamente se usan para representar las condiciones que se incluyen en las estructuras de control, aunque también se pueden utilizar para representar objetos de tipo binario o digital (0 y 1).

Los de tipo puntero se usan para guardar la dirección de otros datos.

En cuanto a los datos estructurados, decir de momento, que son una combinación especial de estos datos simples. Estos tipos se estudiarán en capítulos posteriores.

Los datos definidos por el usuario podrían considerarse como un conjunto de datos que conservan un orden, tal que cada elemento tiene sucesor y predecesor, excepto el primero y el último. Sólo son admitidos por ciertos lenguajes y merecen ser abordados en el estudio del lenguaje en cuestión.

2.1.1.2.- IDENTIFICADORES Y PALABRAS RESERVADAS.

Cuando se escriben programas se necesita utilizar nombres para identificar a los objetos que se desea manipular: variables, constantes, procedimientos, etc.

Identificadores son los nombres que se dan a los programas, variables, constantes, subprogramas y otros objetos o entidades de dígitos. Deben escribirse de acuerdo a unas reglas que cada lenguaje establece.

Palabras reservadas son palabras clave y propias de un lenguaje, que constituyen la base de las sentencias, funciones, expresiones y órdenes.

2.1.1.3.- CONSTANTES Y VARIABLES.

Constantes son datos cuyo valor no cambia durante la ejecución del programa. Existen tantos tipos de constantes como tipos de datos.

Existen lenguajes en los que ciertas constantes que son muy frecuentes pueden recibir un nombre (identificador) con el que se les reconocerá a lo largo de todo el programa.

Variables son objetos que pueden cambiar su valor durante la ejecución del programa. Para nombrar variables se utilizan identificadores que deben seguir las reglas de formación de cada lenguaje. Al igual que en el caso de las constantes, la declaración de una variable origina una reserva de una posición en la memoria del ordenador, y además etiquetada con el identificador.

Aunque no es obligatorio en todos los lenguajes sí que es conveniente declarar las variables al principio del programa (zona de declaraciones que veremos más adelante), y por lo tanto del algoritmo.

Es una buena práctica de programación utilizar nombres de variables significativos que sugieran lo que representan, ya que eso hará los algoritmos / programas más legibles y fáciles de comprender.

2.1.1.4.- EXPRESIONES.

Una expresión puede estar definida mediante: un valor, una constante o variable, una función y una combinación de valores, constantes, variables, funciones y operadores cumpliendo determinadas reglas de construcción.

2.1.1.4.1.- TIPOS DE EXPRESIONES.

Las expresiones, según el resultado que producen, se clasifican en:

Numéricas: Son las que producen resultados de tipo numérico. se construyen mediante los operadores aritméticos.

Los operadores aritméticos a usar son:

. ** potencia

. * producto

. / división

. + suma

. - resta

. MOD Módulo (resto de una división en ciertos lenguajes)

Alfanuméricas: Son las que producen resultados de tipo alfanumérico. Se construyen con los operadores alfanuméricos.

El único operador alfanumérico es la concatenación que usa el signo +, y que producen la secuenciación de cadenas o caracteres.

Lógicas: Son las que producen resultados CIERTO o FALSO. Se construyen mediante los operadores relacionales y lógicos.

Los operadores relacionales se usan para expresan condiciones y son:

. = igual a

. < menor que

. > mayor que

. <= menor o igual que

. >= mayor o igual que

. <> distinto a.

Los operadores lógicos (o booleanos) se usan para representan condiciones compuestas y son:

. NOT negación (no)

. AND conjunción (y)

. OR disyunción (o).

El resultado de aplicar estos operadores en las expresiones viene determinado por sus tablas de verdad:

variable NOT variable

Falsa Verdadera

Verdadera Falsa

variable1 variable2 variable1 AND variable2

verdadera verdadera verdadera

verdadera falsa falsa

falsa verdadera falsa

falsa falsa falsa

variable1 variable2 variable1 OR variable2

verdadera verdadera verdadera

verdadera falsa verdadera

falsa verdadera verdadera

falsa falsa falsa

Para todo tipo de expresión pueden usarse los paréntesis: ( ).

2.1.1.4.2.- ORDEN DE EVALUACION DE LOS OPERADORES.

Los operadores de una expresión se evalúan, en general, según el siguiente orden.

1º Paréntesis (comenzando por los más internos).

2º Potencias.

3º Productos y divisiones.

4º Sumas y restas.

5º Módulo (o resto).

6º Concatenación.

7º Relacionales.

8º Negación.

9º Conjunción.

10º Disyunción.

La evaluación de operadores de igual orden se realiza siempre de izquierda a derecha.

2.1.2.- ¿QÚÉ TIPOS DE INSTRUCCIONES TENEMOS?.

Dentro del bloque de instrucciones de un programa podemos a su vez, diferenciar tres partes fundamentales. En algunos casos estas tres partes están perfectamente delimitadas; pero, en la mayoría, sus instrucciones quedan entremezcladas a lo largo del programa, si bien mantienen una cierta localización geométrica impuesta por la propia naturaleza de las mismas.

ENTRADA DE DATOS. La constituyen todas aquellas instrucciones que toman datos de un dispositivo externo, almacenándolos en la memoria central para que puedan ser procesados.

PROCESO. Está formado por las instrucciones que modifican los objetos a partir de su estado inicial hasta el estado final, dejando éstos disponibles en la memoria central.

SALIDA DE RESULTADOS. Conjunto de instrucciones que toman los datos finales de la memoria central y los envían a los dispositivos externos.

Según la función que desempeñan dentro del algoritmo, las instrucciones pueden ser:

2.1.2.1.- DE DECLARACION.

Se utilizan en aquellos lenguajes de programación que tienen declaración explícita de los objetos. Su misión consiste en indicar al procesador que reserve espacio en la memoria para un objeto del programa, indicando asimismo su nombre, tipo y características.

2.1.2.2.- DE EJECUCIÓN.

2.1.2.2.1.- PRIMITIVAS O SIMPLES.

Son aquellas que ejecuta el procesador de modo inmediato. Las principales son asignación, entrada y salida.

Instrucción de asignación: Consiste en calcular el valor de una expresión y almacenarlo en una variable.

Instrucción de entrada: Toma un dato de un dispositivo de entrada y lo almacena en un objeto.

Instrucción de salida: Toma el valor de una expresión u objeto y lo lleva a un dispositivo externo.

2.1.2.2.2.- COMPUESTAS O COMPLEJAS.

Son aquellas que el procesador no puede ejecutar directamente, sino que realiza una llamada a un subprograma, subrutina o procedimiento.

2.1.2.2.3.- DE CONTROL.

Son aquellas encargadas de decidir que instrucción será la siguiente a ejecutar. Esta decisión estará basada en el cumplimiento o no de una condición. Podemos distinguir varios tipos:

Instrucción alternativa: Decide un camino a seguir de dos posibles. Dentro de estas podemos hablar de alternativa simple en la que en uno de los dos caminos a elegir se realiza una determinada acción antes de volver a juntarse con el otro camino, y en el segundo camino no se realiza nada; y alternativa doble donde en los dos caminos se realizan acciones diferentes antes de volver a unirse.

Instrucción repetitiva: Hace que se repita una o varias acciones (instrucciones) un número determinado o indeterminado de veces. Podemos distinguir varios tipos:

Instrucción PARA: El número de repeticiones está fijado de antemano.

Instrucción MIENTRAS: El número de repeticiones viene determinado por una condición que se ha de verificar antes de cada nueva repetición.

Instrucción HASTA (o repetir -- hasta): La terminación del bucle (proceso repetitivo) depende del cumplimiento de una condición de salida que se evalúa después de cada repetición.

2.2.- ¿CÓMO REPRESENTAR LOS ALGORÍTMOS?.

Los diagramas de flujo han sido y, aún hoy siguen siendo, muy empleados. Son fáciles de diseñar porque el flujo lógico del algoritmo se muestra en un dibujo en lugar de con palabras. Sin Embargo, tienen una limitación grande: son difíciles de actualizar y complejos de leer si ocupan varias páginas, cuando se han de modificar resultan difíciles precisamente por su carácter gráfico.

En la práctica se suelen utilizar indistintamente los términos de diagrama de flujo, organigrama y ordinograma para referenciar cualquier representación gráfica de los flujos de datos o de las operaciones de un programa. Es importante diferenciarlos porque no corresponden a las mismas fases del diseño de los programas. Aunque utilicen algunos símbolos comunes, el significado de éstos no es el mismo.

La secuencia de aparición de los diagramas de flujo se puede representar de la siguiente forma:

Problema --> Organigrama --> Ordinograma --> Programa

fase de análisis fase de programación

Los diagramas de flujo del sistema (organigramas) representan gráficamente el flujo de datos e informaciones que maneja un programa.

En los casos de aplicaciones que comprenden más de un programa, se realizará un organigrama, para cada uno de ellos y es conveniente realizar uno general que englobe todo el conjunto.

Un Organigrama debe reflejar: Los soportes de los datos, los nombres de los programas, los soportes de los resultados y el flujo de los datos.

En su representación se siguen las siguientes reglas:

-En el centro del organigrama figurará el símbolo de proceso correspondiente al programa.

-En la parte superior, los soportes de entrada.

-En la parte inferior, los soportes de salida.

-Al mismo nivel que el símbolo de proceso y a ambos lados, los soportes de entrada y salida.

Los símbolos utilizados son los de la figura 1.

Entrada / Salida Proceso

(Sin especificar)

Impresora Clasificación

de archivos

Teclado Fusión de archivos

Pantalla Partición de archivos

Tambor magnético Líneas de teleproceso

Disco magnético Dirección de flujo

Cinta magnética

Los diagramas de flujo del programa (ordinogramas) representan gráficamente la secuencia lógica de las operaciones en la resolución de un problema, por medio de un programa de ordenador.

En la fase de programación, el programador crea para cada programa un ordinograma. Una vez diseñados y sabiendo en qué lenguaje se va a codificar, lo único que necesitamos conocer es la técnica de paso del ordinograma al lenguaje, que en la mayoría de los casos es bastante sencilla.

Un ordinograma debe reflejar: el comienzo del programa, las operaciones, la secuencia en que se realizan y el final del programa (procurando que sea único).

En la representación de ordinogramas, es conveniente seguir las siguientes reglas:

-El comienzo del programa figurará en la parte superior.

-Los símbolos de comienzo y fin deberán aparecer una única vez.

-El flujo de las operaciones será, siempre que sea posible, de arriba a abajo y de izquierda a derecha, en cuyo caso pueden omitirse las puntas de flechas.

-Se debe guardar una cierta simetría en la representación de bifurcaciones y bucles, así como en el conjunto total del programa.

-Se evitarán siempre los cruces de líneas de flujo usando conectores.

-El uso de comentarios estará restringido al mínimo imprescindible; al contrario que en la codificación, en la que son mucho más recomendables.

-Si en un ordinograma se ha separado una parte de otra por medio de un conector, las posibles conexiones que puedan aparecer desde esta última a la anterior, se harán igualmente con conectores, evitando el uso de líneas de flujo directas.

Los símbolos utilizados, además de los ya vistos de soportes y líneas de flujo, son los de la figura 2.

Operación Conexión

Terminal Conector en

la misma página

Operación Conector en

en general distinta página

Subprograma Decisión

o subrutina

Decisión de dos salidas

Decisión de más de dos

salidas

Como alternativa al diagrama de flujo surgió el pseudocódigo que es similar al castellano o al inglés pero más conciso y que permite una redacción rápida del algoritmo aunque lógicamente no tendrá la precisión en sus operaciones que los lenguajes de programación. El pseudocódigo es fácil de mantener, ya que sus modificaciones se pueden realizar -incluso- con procesadores de texto (o editores).

2.3.- ¿HAY ALGÚN OTRO ELEMENTOS A TENER EN CUENTA EN LOS PROGRAMAS.

Los lenguajes de programación -como los restantes lenguajes- tienen elementos básicos que se utilizan como bloques constructivos así como reglas por las que esos elementos se combinan. Estas reglas se denominan sintaxis del lenguaje. Solamente las instrucciones sintácticamente correctas pueden ser interpretadas por el ordenador y los programas que contengan errores de sintaxis son rechazados por la máquina.

Recordando los elementos básicos constructivos de un programa son: palabras reservadas, identificadores (nombres de variables, procesos, etc.), caracteres especiales (coma, punto y coma, etc.), constantes, variables, expresiones, instrucciones.

Además de estos elementos básicos existen otros elementos que forman parte de los programas, cuya comprensión y funcionamiento será vital para el correcto diseño de un algoritmo, y naturalmente la codificación del programa.

Son variables que realizan funciones específicas dentro de un programa, y por su gran utilidad, frecuencia de uso y peculiaridades, conviene hacer un estudio separado de las mismas. Los más importantes son contadores, acumuladores e interruptores.

2.3.1.- CONTADOR.

Es un campo de memoria cuyo valor se incrementa en una cantidad fija, positiva o negativa, generalmente asociado a un bucle.

Se utiliza en los siguientes casos:

-Para contabilizar el número de veces que es necesario repetir una acción (variable de control del bucle).

-Para contar un suceso particular solicitado por el enunciado del problema.

Un contador toma un valor inicial (0 en la mayoría de los casos) antes de comenzar su función, posteriormente, y cada vez que se realiza el suceso a contar, incrementa su valor (1 en la mayoría de los casos).

2.3.2.- ACUMULADOR.

Es un campo de memoria cuyo valor se incrementa sucesivas veces en cantidades variables.

Se utiliza en aquellos casos en que se desea obtener el total acumulado de un conjunto de cantidades, siendo preciso inicializarlo con el valor 0.

También en las situaciones en que hay que obtener un total como producto de distintas cantidades se utiliza un acumulador, debiéndose inicializar con el valor 1.

2.3.3.- INTERRUPTORES.

También se denominan conmutadores. Es un campo de memoria que pude tomar dos valores (o más en algunos casos) exclusivos (0 y 1; cierto y falso; etc.)

Se utiliza para:

-Recordar en un determinado punto de un programa la ocurrencia o no de un suceso anterior, para salir de un bucle o para decidir en una instrucción alternativa que acción realizar.

-Para hacer que dos acciones diferentes se ejecuten alternativamente dentro de un bucle.

2.4.- EJERCICIOS.

Boletín 1 (TEMA 2).

PROCESOS REALIZADOS UNA SOLA VEZ.

1.- Suma, producto y división de dos valores tomados del teclado, imprimiendo el resultado.

2.- Cálculo del área de un rectángulo, tomando los datos necesarios del teclado y presentando el resultado por pantalla.

3.- Dados 2 valores por teclado imprimirlos en orden de menor a mayor.

4.- Leer un número del teclado y decir por pantalla si es positivo o negativo.

5.- Cálculo de una ecuación de 2º grado, tomando los datos necesarios del teclado e imprimiendo el resultado.

6.- Tomando por teclado 3 números correspondientes al día, mes y año de una determinada fecha, sacar por pantalla estos tres datos y un mensaje que diga si es correcta o errónea.

PROCESOS REALIZADOS REPETIDAS VECES.

7.- Presentar por pantalla todos los números positivos leídos de una serie con identificativo de final. (0)

8.- Sacar un listado de los empleados que tengan 18 años o más, pero menos de 21 y midan más de 180 cm. Los datos de entrada están en un fichero (con identificativo de final /*) y en cada ficha hay dos números relativos a la edad y estatura de cada empleado, además de otros datos que no nos interesan.

9.- Cálculo de una ecuación de 2º grado, tomando los datos necesarios del teclado e imprimiendo el resultado; repetir el proceso hasta que el operador desee terminar.

10.- Leer una serie de números y presentar por impresora el mayor y el menor (con un mensaje que los identifique).

11.- Dado un fichero que contiene en cada ficha datos relativos al sexo (H / V), estado civil (S / C / V) y Nº de hijos de los empleados de una empresa. Se pide un listado de todos los varones, casados y con más de 4 hijos.

12.- Otro fichero contiene información de empleados que consiste en: Nombre, Horas trabajadas, Precio de hora, Anticipos y % de descuentos. Se pide un listado por impresora de los empleados que deban dinero a la empresa por haber recibido más anticipos que sueldo liquido a percibir y decir también cuanto han de devolver.

Boletín 2 (TEMA 2).

1.- Se leen 30 números del teclado y se pide que se listen sólo los positivos menores de 5 y los negativos mayores de -5.

2.- Tenemos un fichero con el nombre, la hora de entrada y la hora de salida de cada empleado. Se quiere obtener un listado en el que figuren aquellos que entraron tarde y los que salieron antes de tiempo, para saber cual es la hora correcta de entrada y la de salida se pedirán por el teclado.

3.- Programa que lea un número correspondiente a un año y escriba si es o no bisiesto. (Son bisiestos los múltiplos de 4, excepto los múltiplos de 100 que no lo son de 400).

4.- Programa que calcule e imprima la edad de una persona, a partir de la fecha de su nacimiento y la fecha actual.

5.- Programa que lea una fecha en formato DD MM AA y la imprima en el formato: día N de MES del AÑO.

6.- Programa que nos liste a todos los individuos contenidos en un fichero; de los que tenemos, entre otras informaciones, el nombre y la fecha de nacimiento, y que cumplan la condición de no haber cumplido años hasta el día de la fecha que tomaremos del teclado. Si alguno cumple años se añadirá un mensaje de "felicidades" por pantalla.

7.- Tenemos un fichero de la CTNE con los siguientes datos de los abonados: Número de abonado, Nombre, Lectura anterior y Lectura actual.

Se trata de obtener un listado de los abonados que deban pagar más de 6000 ptas. por el recibo teniendo en cuenta que cada paso se paga a 6 ptas.

8.- Programa para crear un fichero en disco que tendrá la siguiente información: Clave-empleado, Nombre, Sueldo Neto, Categoría.

Para ello se introducirán por teclado los siguientes datos: Clave, nombre, categoría, sueldo anual, % retenciones.

El sueldo neto se calcula a partir del anual (14 pagas) y aplicándole las retenciones.

9.- Partiendo de un fichero en disco con los siguientes campos: Nº-cliente, nombre, C1, C2, C3, C4, Impuesto.

Se pide un listado con el nombre y el total a pagar de cada cliente. Sabiendo que

Total = C1 + C2 + C3 + C4 + Pts Impuesto

y que Pts Impuesto se calcula de la siguiente forma:

-Si Impuesto = 1 se calcula un recargo del 6% de C1.

-Si Impuesto = 2 se calcula un descuento de 5% de C2.

-En cualquier otro caso no se aplican ni descuentos ni recargos.

Boletín 3 (TEMA 2).

1.- Programa que calcule e imprima la suma y el producto de los 100 primeros números pares.

2.- En un fichero tenemos datos de alumnos tales como el nombre, la altura, al edad y sexo. Se quiere obtener en un resumen impreso la altura media de la clase, el nombre y altura del alumno más alto y del más bajo, además de la edad media de los varones y la media de las mujeres.

3.- Imprimir la tabla de multiplicar de un número tomado del teclado.

4.- Hacer lo mismo que en el ejemplo anterior pero con los 10 primeros números naturales.

5.- Programa que calcule la multiplicación de dos números tomados del teclado, pero sin utilizar la operación de multiplicar. (Con sumas sucesivas).

6.- Lo mismo que en el anterior pero con la operación de dividir. (Con restas sucesivas).

7.- Programa que calcule el factorial de una serie de números entrados por teclado. (0 para terminar).

8.- Tenemos un fichero con los alumnos de un centro escolar, en cada registro tenemos como datos: curso, nombre del alumno, número de expediente y dirección. Queremos un listado de una hoja por cada curso diferente, sabiendo que los alumnos pertenecientes a un mismo curso están consecutivos y son 40. En el listado debe figurar:

CURSO: XXXX

NUMERO NOMBRE Nº EXPEDIENTE

-------------------------------------

XX XXXXXXXXXXXXXXXXX XXXX

.. ........... ....

9.- El mismo caso pero sin saber cuantos alumnos tiene cada grupo. (uso de un campo Guarda)

10.- Tenemos un fichero con: nombre del alumno y seis campos que contienen notas de cada alumno. Se trata de listar cada alumno con su nota media y al final la nota media del curso.

11.- Lo mismo pero para varios cursos y sin saber el número de alumnos en cada curso.

12.- Lo mismo (con un solo curso) que el anterior pero se trata de listar aquellos alumnos que tengan por lo menos 4 notas por encima de 5, o bien tengan 3 notas por encima del 5 y las otras 3 entre 4 y 5, o bien la nota media sea superior a 5 y tenga como mucho una nota por debajo de 3.

TEMA 3.- ¿QUÉ TÉCNICAS UTILIZAR PARA DESARROLLAR BUENOS PROGRAMAS?.

3.1.- ¿QUÉ ES LA PROGRAMACIÓN MODULAR?.

Todas las características presentadas en el tema 1 sobre cómo deben ser los buenos programas, pueden conseguirse más fácilmente haciendo uso conjunto de las siguientes reglas:

  • Diseñar algoritmos en etapas yendo de los conceptos generales a los conceptos de detalle mediante el método descendente. (Programación modular).

  • Dividir un algoritmo en partes independientes -módulos - y tratar cada módulo independientemente. (Programación modular).

  • Establecer y utilizar para la resolución de problemas las técnicas de programación estructurada. (Programación estructurada).

  • Dar importancia relevante a las estructuras de datos.(Diseño abstracto de estructuras de datos).

  • Describir completa y claramente cada algoritmo. (Documentación).

  • Verificar y validar el programa con datos significativos.

Pasaremos entonces a estudiar las primeras reglas a cumplir a través de la programación modular.

La programación modular consiste en descomponer un trabajo grande de programación en varias tareas o funciones más pequeñas y más específicas, que vamos a llamar módulos. Un programa debe subdividirse, por tanto en varios módulos.

Cada módulo debe identificarse con la realización de una función del programa, entendiendo por función una tarea específica y diferenciada lógicamente de las demás. Puede definirse como un conjunto de instrucciones enlazadas de forma lógica, mediante el cual se expresa la solución para una tarea concreta que forma parte de un conjunto de tareas más amplio.

No es fácil dar una regla para dividir la tarea global del programa en tareas específicas, pero como regla general un módulo no debe exceder de más de 100 líneas de instrucciones; aunque en muchos casos pueden ser unas pocas líneas.

Para lograr una buena descomposición modular del programa se usa el concepto de jerarquía. La aplicación de este concepto exige que las funciones o módulos se relacionen entre sí de forma que se clasifiquen algunos módulos como subordinados de otros, es decir, en una estructura jerárquica.

Diagrama de estructura de la jerarquía de un programa:

Informática: aplicaciones

2

El desarrollo de una jerarquía lógica y con propósitos determinados, se logra aplicando el método de diseño de arriba a abajo. De acuerdo con este diseño empezamos por identificar el módulo de la parte superior, que describe toda la función del programa. Luego distribuimos toda esta función en sus componentes principales. Después revisamos estas funciones y vemos si algunos módulos se pueden agregar o suprimir.

Cuando estemos satisfechos de que la determinación de los módulos en el nivel 1 está completa, consideramos cada uno de los módulos a su vez y repetimos el proceso de análisis como si estuviéramos en el nivel 0. Es decir para cada función en el nivel 1 tratamos de identificar subfunciones específicas que incluyan esa función.

El proceso general de identificación de subfunciones continúa tomando cada nivel inferior correspondiente. Paramos cuando ya no se pueda subdividir más ninguna función en algún nivel. (recordar que una función no debería tener más 100 líneas de instrucciones, pero con mucha frecuencia se requiere mucho menos).

Hay que procurar que las divisiones de un módulo no sea en demasiados submódulos o en demasiados pocos; si se dieran estos casos habrá que ver la posibilidad de englobar funciones de varios submódulos en uno sólo o la de dividir alguno en varios, según el caso.

Otro concepto útil es el de la independencia del módulo con respecto a sus compañeros de nivel. Esto es, que cada módulo represente una función que claramente sea distinta de todos los demás de su mismo nivel. Además, un módulo que es subordinado debe ser dependiente de su inmediato superior, lo cual significa que el módulo debe ser ejecutado únicamente bajo el control de ese superior. Sin embargo, un módulo puede estar subordinado a más de un módulo superior y posiblemente en diferentes niveles en cada caso.

Por ejemplo, una función común, como leer un registro de un archivo puede solicitarla varios módulos superiores. Un módulo subordinado de este tipo debe repetirse en los sitios apropiados del diagrama de estructura y debe mostrar que en cada caso está representando la misma tarea.

3.1.1.- CARACTERISTICAS DE LOS MODULOS.

  • Posibilidad de compilación separada.

  • El nombre del módulo debe reflejar la función que realiza.

  • Debe retornar el control a su llamador.

  • Puede llamar a otros módulos.

  • Debe tener una única entrada y una única salida (aunque más adelante veremos la posibilidad de varias entradas sin perjuicio de esta regla).

  • Tener un pequeño tamaño para mejorar su modificación, verificación y reutilización, aunque esto conlleve mas tiempo de diseño, más líneas y más documentación.

  • Debe ocultar, en lo posible, lo que ocurre dentro de él, se conoce su nombre y sus resultados pero no sus operaciones internas (como una caja negra).

3.1.2.- VENTAJAS DE LA PROGRAMACION MODULAR.

  • Permite que un programa sea escrito por varios programadores, lo cual da lugar a una mayor rapidez en su elaboración.

  • Fomenta la creación de librerías de rutinas, que más tarde pueden usarse en otros programas.

  • Simplifica o puede simplificar el número de procedimientos a cargar en memoria. (Ahorro de la misma).

  • Proporciona puntos de ruptura para medir avances en la realización del programa y permitir una completa verificación.

  • Simplifica el diseño, haciendo el programa más fácil de escribir, depurar, modificar y ampliar.

3.2.-¿QUÉ ES LA PROGRAMACION ESTRUCTURADA?.

En los temas anteriores se han desarrollado algoritmos para resolver problemas sencillos en un ordenador. Sin embargo, mucha de la potencia real de un ordenador procede de su capacidad de tomar decisiones.

Los dos conceptos de programación que se requieren para conseguir potencia de decisión son: la capacidad para seleccionar una acción de un conjunto de alternativas especificadas y la capacidad para repetir una serie de acciones. Estos dos conceptos se conocen como estructuras selectivas y estructuras repetitivas.

Estas estructuras junto con la estructura secuencial, que la constituye el hecho de secuenciar una acción con otra, son el pilar de la programación estructurada, no obstante y enumerándolas las tres reglas fundamentales de este tipo de programación son:

  • Utilizar para cualquier tipo de programa (o subprograma o módulo) sólo tres estructuras de control (secuencial, alternativa y repetitiva).

  • No utilizar la instrucción de bifurcación incondicional (no “goto”).

  • Tener un único punto de entrada y uno de salida.

  • 3.3.- OTRA HERRAMIENTA PARA REPRESENTAR LOS ALGORITMOS. PSEUDOCODIGOS.

    La solución de un problema, dirigida a su ejecución por parte de un ordenador, requiere el uso de una notación que sea entendida por él, es decir, un lenguaje de programación. No obstante, durante la fase de diseño del programa, la utilización de un lenguaje así no es aconsejable debido a su rigidez.

    Además de la utilización de las representaciones gráficas (ordinogramas), un programa puede describirse mediante un lenguaje intermedio entre el lenguaje natural y el lenguaje de programación, de tal manera que permita flexibilidad para expresar las acciones que se han de realizar y, sin embargo, imponga algunas limitaciones, importantes desde el punto de vista de su posterior codificación en un lenguaje de programación determinado.

    Al igual que las otras técnicas, la utilización de una notación intermedia, permite el diseño del programa sin depender de ningún lenguaje de programación, y es posteriormente al diseño cuando se codificará el algoritmo obtenido en aquel lenguaje que nos interese.

    3.3.1.- DEFINICION DE PSEUDOCODIGO.

    Diremos que una notación es un pseudocódigo si mediante ella podemos describir el algoritmo, utilizando palabras y frases del lenguaje natural sujetas a unas determinadas reglas.

    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, a refinar posteriormente.

    3.3.2.- FORMATO PSEUDOCODIFICADO DE LAS INSTRUCCIONES.

    3.3.2.1.- SIMPLES.

    -Asignación: variable = expresión

    -Entrada: pedir variable (para teclado)

    leer nombre-fichero (para ficheros)

    -Salida: escribir variable (para pantalla)

    imprimir variable (para impresora)

    grabar fichero (para ficheros)

    3.3.2.2.- DE CONTROL. (ESTRUCTURAS DE CONTROL).

    -Secuencial: sentencia-simple-1 (o acción-1)

    sentencia-simple-2

    .........

    sentencia-simple-n

    Se ejecutan las instrucciones en el mismo orden en que aparecen escritas. También puede utilizarse el punto y coma como separador de instrucciones puestas en la misma línea.

    Alternativa:

    .simple: si condición entonces

    acción-1; acción-2;...

    fin si

    En esta instrucción la condición es una expresión lógica, si su evaluación produce el resultado CIERTO se ejecutarán la acción-1, acción-2, etc.; y en caso de ser FALSO no se ejecuta nada.

    .doble: si condición entonces

    acción-1; acción-2;...

    sino

    acción-a; acción-b....

    fin si

    En este caso si el resultado es CIERTO se ejecutan la acción-1, acción-2, etc., y en caso de ser FALSO se ejecutarán la acción-a, acción-b, etc.

    Repetitiva: En todo bucle hay una o varias acciones que se han de repetir y una condición que determina el número de repeticiones de las mismas. Es fundamental que el valor de la condición sea afectado por las acciones para asegurar la terminación del bucle en algún momento.

    Según dónde se evalúe la condición se tienen las siguientes sentencias:

    .Mientras (WHILE): mientras condición hacer

    acción-1; acción-2;....

    fin mientras

    Se evalúa la condición antes de iniciar el bucle, y se repiten sucesivamente las acciones mientras siga siendo cierta.

    .Hasta (UNTIL): repetir

    acción-1; acción-2;....

    hasta condición

    Se evalúa la condición después de cada ejecución de las acciones, y se termina el bucle si es CIERTA.

    .Para (FOR): para Vc de Vi a Vf incrementando en In hacer

    acción-1; acción-2;.....

    fin para

    Se repiten las acciones un número fijo de veces, tantas como sucesivos valores toma la variable de control del bucle Vc desde, inicialmente 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:

    para Vc de Vi a Vf hacer

    acciones

    fin para

    3.3.2.3.- COMPUESTAS.

    Una acción compuesta es aquella que ha de ser realizada dentro del algoritmo, pero que aún no está resuelta en términos de acciones simples y sentencias de control.

    En el diseño del programa se incluirán los nombres de las acciones compuestas en el algoritmo y posteriormente habrá que refinarlas, colocándolas aparte, mediante lo que se denomina subprograma.

    acción-1

    <subprograma>

    acción-2

    3.3.3.- FORMATO DE LA DECLARACION DE LOS OBJETOS.

    Como ya hemos dicho, podemos considerarlos como los recipientes de los datos que manipula el programa. Será necesario indicar cuáles son sus nombres y sus tipos, lo que se hará previamente a la descripción del conjunto de instrucciones que forman el algoritmo. Al 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

    3.3.4.- FORMATO GENERAL DE UN PROGRAMA.

    Un programa es la solución final de un problema. En esta notación consiste en la descripción de los objetos (entorno) y de las instrucciones (algoritmo).

    Tendrá una cabecera con el nombre del programa y dos bloques precedidos por las palabras "entorno" y "algoritmo".

    Programa NOMBRE DEL PROGRAMA

    Entorno:

    I es numérica entera;

    SUELDO es numérica real;

    ........

    Algoritmo:

    ** descripción de las acciones

    ..........

    Fin de programa

    3.3.5.- PASO DE DIAGRAMA DE FLUJO A PSEUDOCODIGO.