Está en la página 1de 7

Desarrollo de la secuencia lógica

Plan Lector Tercer Corte

Introducción al desarrollo del software

Presentado Por:

Camilo Andres Quintana Pimentel

Dirigido A:

Jairo Rico Calvano

Cartagena de indias
Principios de la programación estructurada
La programación estructurada surge del análisis de las estructuras de control de flujo a
todo programa de computador. El producto de este estudio reveló que es posible
construir cualquier estructura de control de flujo por medio de tres estructuras básicas:
la secuencial, la condicional y la iterativa.
La conjunción de estas propuestas nos proporciona las bases para la construcción de
programas estructurados en los que las estructuras de control de flujo se pueden
realizar mediante un conjunto de instrucciones muy reducido.
También es importante resaltar que la estructura secuencial no necesita ninguna
instrucción adicional, pues los programas se ejecutan normalmente llevando a cabo
las instrucciones en el orden en que aparecen en el código fuente.
La instrucción if, permite una ejecución condicional de bloques de instrucciones. Hay
que tener presente que, para que sea un programa propio, debe existir la posibilidad
de que se ejecuten todos los bloques de instrucciones.
Tenemos que resaltar que, en cuanto a la programación estructurada se refiere, sólo
es necesaria una única estructura de control de flujo iterativa. A partir de ésta se
pueden construir todas las demás.

Esquemas algorítmicos: recorrido y búsqueda

Los esquemas algorítmicos para el procesado de secuencias de datos son unos


patrones que se repiten frecuentemente en muchos algoritmos. Existen unos patrones
equivalentes en los lenguajes de programación como el C.

Vamos a explicar un poco los patrones básicos de tratamiento de secuencias, el de


recorrido y el de búsqueda.

Recorrido

Un recorrido de una secuencia se basa de realizar un tratamiento idéntico a todos los


miembros de la misma, supone tratar cada uno de los elementos de la secuencia,
desde el primero hasta el último. Si el número de elementos de que constará la
secuencia es conocido, y la inicialización del bucle es muy simple, entonces puede ser
conveniente emplear un bucle for.

El esquema algorítmico del recorrido de una secuencia sería, en su versión para C, el


que se presenta a continuación:

/* Inicialización para el procesamiento de la secuencia*/


/* (puede incluir el tratamiento del primer elemento) */
while( ! /* final de secuencia */ ) {
/* tratar el elemento */
/* avanzar en secuencia */
} /* while */
/* finalización del procesamiento de la secuencia */
/* (puede incluir el tratamiento del último elemento) */
El patrón que hemos observado podría realizarse con alguna otra instrucción iterativa,
si las circunstancias lo aconsejaran.

Para ilustrar varios ejemplos de recorrido, tengamos en cuenta que se desea obtener
la temperatura media en la zona de una estación meteorológica.

Para ello, tenemos que hacer un programa al que se le suministran las temperaturas
registradas a intervalos regulares por el termómetro de la estación y obtenga la media
de los valores introducidos.

Así pues, el cuerpo del bucle consiste, simplemente, en acumular la temperatura y en


leer una nueva temperatura:

/* ... */
acumulado = acumulado + temperatura;
cantidad = cantidad + 1;
scanf( “%f”, &temperatura );
/* ... */

En este bloque iterativo podemos observar que la temperatura debe tener un valor
determinado antes de poderse acumular en la variable acumulado, la cual también
tiene que estar inicializada.

Por ello, la fase de inicialización y preparación de la secuencia ya está lista:

/* ... */
unsigned int cantidad;
float acumulado;
/* ... */
cantidad = 0;
acumulado = 0.00;
scanf( "%f", &temperatura );
/* bucle ... */

Aún queda por resolver el problema de establecer la condición de finalización de la


secuencia de datos. En este sentido, puede ser que la secuencia de datos tenga una
marca de final de secuencia o que su longitud sea conocida.

Búsqueda

Las búsquedas consisten en recorridos de secuencias de datos de entrada. Se


recorren los datos de una secuencia de entrada hasta encontrar el que satisfaga una
determinada condición. Si no se encuentra ningún elemento que satisfaga la
condición, se realizará el recorrido completo de la secuencia.
La búsqueda consiste en recorrer una secuencia de datos de entrada hasta que se
cumpla una determinada condición o se acaben los elementos de la secuencia. No es
necesario que la condición afecte a un único elemento.

Es posible hacer una búsqueda que detenga el recorrido cuando la media progresiva
se mantenga en un margen de ±1 oC respecto de la temperatura detectada durante
más de 10 registros.
El esquema algorítmico es muy parecido al del recorrido, salvo por el hecho de que se
incorpora la condición de búsqueda y que, a la salida del bucle, es necesario
comprobar si la búsqueda se ha resuelto satisfactoriamente o no:
/* inicialización para el procesamiento de la secuencia */
/* (puede incluir el tratamiento del primer elemento) */
encontrado = FALSO;
while( ! /* final de secuencia */ && !encontrado ) {
/* tratar el elemento */
if( /* condición de encontrado */ ) {
encontrado = CIERTO;
} else {
/* avanzar en secuencia */
} /* if */
} /* while */
/* finalización del procesamiento de la secuencia */
if( encontrado ) {
/* instrucciones */
} else {
/* instrucciones */
} /* if */

En este esquema se supone que se han definido las constantes FALSO y CIERTO del
modo siguiente:

#define FALSO 0
#define CIERTO 1

Si se aplica el patrón anterior a la búsqueda de una media progresiva estable, el


código fuente sería el siguiente:

/* ... */
cantidad = 0;
acumulado = 0.00;
scanf( "%f", &temperatura );
seguidos = 0;
encontrado = FALSO;
while( ! ( temperatura == MIN_TEMP ) && ! encontrado ) {
acumulado = acumulado + temperatura;
cantidad = cantidad + 1;
media = acumulado / (float) cantidad;
if( mediatemperatura+1.0 || temperatura-1.0media ) {
seguidos = seguidos + 1;
} else {
seguidos = 0;
} /* if */
if( seguidos == 10 ) {
encontrado = CIERTO;
} else {
scanf( "%f", &temperatura );
} /* if */
} /* while */
/* ... */
En los casos de búsqueda no suele ser conveniente emplear un for, ya que suele ser
una instrucción iterativa que emplea un contador que toma una serie de valores desde
uno inicial hasta uno final. Es decir, hace un recorrido por la secuencia implícita de
todos los valores que toma la variable de conteo.

Depurado de programas

El depurado de programas se basa en eliminar los errores que éstos contengan. Los
errores pueden ser debidos tanto a la programación como al algoritmo programado.
El depurado de un programa puede implicar un cambio en el algoritmo
correspondiente. Cuando la causa del error se encuentra en el algoritmo o en su
incorrecta programación se habla de error de lógica. Si el error tiene su razón en la
violación de las normas del lenguaje de programación se habla de un error de sintaxis.

Los errores de sintaxis son detectados por el compilador, ya que le impiden generar
código ejecutable. Si el compilador puede generar código a pesar de la posible
existencia de un error, el compilador suele emitir un aviso.

Estructuras de datos

Los tipos de datos básicos pueden agruparse en estructuras homogéneas o


heterogéneas, de manera que se facilita el acceso a sus componentes dentro de un
programa.

Una estructura homogénea es aquella cuyos datos son todos del mismo tipo y una
heterogénea puede estar formada por datos de tipo distinto.

En los apartados siguientes se revisarán las principales estructuras de datos en C,


aunque existen en todos los lenguajes de programación estructurada. Cada apartado
se organiza de manera que se vea cómo se pueden llevar a cabo las siguientes
operaciones sobre las variables:
– Declararlas, para que el compilador les reserve el espacio correspondiente.
– Inicializarlas, de manera que el compilador les dé un contenido inicial en el programa
ejecutable resultante.
– Referenciarlas, de forma que se pueda acceder a su contenido, tanto para
modificarlo como para leerlo.

Como es obligatorio anteponer el tipo de la variable en su declaración, resulta


conveniente identificar a los tipos de datos estructurados con un nombre de tipo. Estos
nuevos tipos de datos se conocen como tipos de datos abstractos. El último apartado
estará dedicado a ellos.

Matrices

Las matrices son estructuras de datos homogéneas de tamaño fijo. Se representa


siempre una información que emplea un número determinado de datos. También se
llaman arreglos, tablas o vectores. En el caso particular de los vectores de caracteres,
reciben el nombre de cadenas de caracteres.
Referencia

Para hacer referencia, en alguna expresión, a un elemento de una matriz, basta con
indicar su nombre y la posición que ocupa dentro de ella:

matriz[i0][i1]...[in]

Donde ik son expresiones el resultado de las cuales debe de ser un valor entero.
Habitualmente, las expresiones suelen ser muy simples: una variable o una constante.

Ejemplos

En este primer ejemplo, el programa comprobará si una palabra o frase corta es un


palíndromo; es decir, si se lee igual de izquierda a derecha que de derecha a
izquierda.

#include <stdio.h>
#define LONGITUD 81
#define NULO '\0'
main( )
{
char texto[LONGITUD];
unsigned int longitud, izq, der;
printf( "Comprobación de palíndromos.\n" );
printf( "Introduzca texto: ");
gets( texto );
longitud = 0;
while( texto[longitud] != NULO ) {
longitud = longitud + 1;
} /* while */
izq = 0;
der = longitud;
while( ( texto[izq] == texto[der] ) && ( izq < der ) ) {
izq = izq + 1;
der = der – 1;
} /* while */
if( izq < der ) {
printf( "No es palíndromo.\n" );
} else {
printf( "¡Es palíndromo!\n" );
} /* if */
} /* main */

Como gets toma como argumento la referencia de toda la cadena de caracteres, es


decir, la dirección de la posición inicial de memoria que ocupa, no es necesario
emplear el operador de “dirección de”.
Bibliografia

Introducción al desarrollo de software


David Megías Jiménez – Coordinador
Jordi Mas - Coordinador
Josep Anton Pérez López - Autor
Lluís Ribas i Xirgo - Autor
Primera edición: marzo 2004
© Fundació per a la Universitat Oberta de Catalunya
Av. Tibidabo, 39-43, 08035 Barcelona
Material realizado por Eureca Media, SL
© Autores: Josep Antoni Pérez López y Lluís Ribas i Xirgo
Depósito legal: B-7.600-2004
ISBN: 84-9788-119-2
GNU Free Documentation License
Version 1.2, November 2002
Copyright (C) 2000, 2001,2002 Free Software Foundation, Inc.
59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.

También podría gustarte