You are on page 1of 54

UNIVERSIDAD AUTONOMA DE TAMULIPAS

UNIDAD ACADEMICA MULTIDICIPLINARIA REYNOSA-AZTLAN

DISEÑO ESTRUCTURADO DE ALGORITMOS

ALUMNO: DANIEL MAYORGA HERNANDEZ

CARRERA: INGENIERO QUIMICO

GRUPO: 3° “C”

CATEDRATICO: CESAR MEADE ALFARO

31-NOVIEMBRE-2010
DISEÑO ESTRUCTURADO DE ALGORITMOS

POR:
DANIEL MAYORGA HERNANDEZ

INSTRUCTOR:
ING. CESAR MEADE ALFARO

UNIVERSIDAD AUTONOMA DE TAMULIPAS

UNIDAD CADAEMICA MULTIDICIPLINARIA REYNOSA-AZTLAN

31-NOVIEMBRE-2010
Diseño estructurado de algoritmos

CONTENIDO

Tabla de los sistemas de codificación 3


Unidad I.- Conceptos básicos. 4
1.1.- Definición de lenguaje
1.2.- Definición de algoritmo
1.3.- Algoritmos cotidianos
1.4.- historia y aplicación de los lenguajes algorítmicos

Unidad II.- Metodología para la resolución de problemas. 8


2.1.- Definición del problema
2.2.- Análisis de datos
2.3.- Diseño de la solución
2.4.- Codificación
2.5.- Prueba y depuración
2.6.- Documentación
2.7.- Mantenimiento

Unidad III.- Entidades primitivas para el diseño de instrucciones. 15


3.1.- Tipos de datos
3.2.- Operadores y operandos
3.3.- Expresiones
3.4.- Identificaciones como localidades de memoria

Unidad IV.- Diseño de algoritmos. 26


4.1.- Diagramas de flujo
4.2.- Pseudocódigo
4.3.- Diagramas estructurados
4.4.- Secuenciales
- Asignación entrada – salida
4.5.- Condicionales
- Simple, múltiple

Unidad V.- Introducción a un lenguaje de programación. 34


5.1.- Conceptos básicos
5.2.- Estructura general de un programa
5.3.- Tipos de datos

1
Diseño estructurado de algoritmos

5.4.- Variables, constantes, comentarios


5.5.- Operadores aritméticos ilógicos
5.6.- Instrucciones
- Instrucción de asignación
- Instrucción de lectura de datos
- Instrucción de escritura de resultados
- Instrucción de ciclos

5.7.- Elementos básicos de un programa


- Contadores
- Acumuladores
-Interruptores
- Estilos de escritura de programas

Bibliografía 53

2
Diseño estructurado de algoritmos

SISTEMAS DE CODIFICAION

Decimal Binario Hexadecimal Octal


0 0000 0 000
1 0001 1 001
2 0010 2 010
3 0011 3 011
4 0100 4 100
5 0101 5 101
6 0110 6 110
7 0111 7 111
8 1000 8
9 1001 9
10 1010 A
11 1011 B
12 1100 C
13 1101 D
14 1110 E
15 1111 F

Ejemplo de cómo pasar de decimal a sistema binario:

2 1 0
2 5 22 2 1
1 0 1

Residuo

1 0 1

3
Diseño estructurado de algoritmos

UNIDAD I.
CONCEPTOS BASICOS

1.1 Definiciones de lenguaje

Lenguaje.- Medio de comunicación entre los seres humanos atreves de signos orales y
escritos que posen un significado.
Desde el punto de vista informático el lenguaje es: la presentación por medio de
signos, símbolos, caracteres que existen entre comunicaciones de la PC.

Lenguaje Maquina.- Es el lenguaje propio de la computadora basada en la lógica binomial,


de ceros y unos. Este lenguaje resulta difícil de utilizar para que las personas; ya que el
programa debe introducir todas y cada uno de los comandos y datos en forma binaria, y una
operación sencilla como comparar el contenido de un registro con los datos situados en una
ubicación del chip de memoria.

Lenguaje de Bajo nivel.- Este lenguaje dan a cada instrucción un mnemónico. Los
lenguajes de bajo nivel permiten crear programas muy rápidos, pero que son a menudos
difíciles de aprender.

Lenguaje Ensamblador.- Al asignar un código mnemónico (por lo general de 3 letras) a


cada comando el lenguaje maquina, es posible escribir y depurar o eliminar los errores
lógicos y de datos en los programas escritos en lenguaje ensamblador, empleando para ello
solo una fracción de tiempo necesario para programar el lenguaje maquina.
En el lenguaje ensamblador cada comando mnemónico y sus operadores
simbólicos equivalente a una instrucción de máquina. Un programa ensamblador traduce el
código fuente (una lista de códigos operación mnemónicos y de operadores simbólicos) y a
continuación ejecuta el programa, todos esto gracias a un intérprete o compilador.

Lenguaje de Alto nivel.- Estos son los que se emplean con mayor frecuencia como
lenguajes de programación, porque permiten expresar los algoritmos de alguna manera y
con un estilo fácilmente reconocible por parte de diversos programadores y usuarios,
algunos ejemplos: list, print, open.

Ms-Dos.- Dos es un acrónimo de “Disk Operating System”, sistema operativo creado por
Microsoft, y que tiene instalado la mayoría de las ordenadores PC.
Dos es aparte de un sistema operativo, un conjunto de programas que nos
permiten manipular información contenida en discos, de esta forma podemos trabajar con
facilidad, comodidad y rapidez con estos; además, el Dos coordina el funcionamiento del
microprocesador para que todo funcione bien en el interior de nuestro ordenador.

Pascal.- Fue creado por el matemático Suizo Niclaus Wirth en 1970, basándose en el
lenguaje Al-Gol. Su nombre proviene del filosofo y matemático Francés del siglo XVII
Blaise Pascal.

4
Diseño estructurado de algoritmos

La idea de diseñador era proprrcionar un lenguaje adecuado para la enseñanza de


los conceptos y técnicas de programación con el tiempo a llegado a ser un lenguaje
ampliamente utilizado en todo tipo de aplicaciones. Aporta los conceptos de tipo de datos,
programación estructurada y diseño descendente.
Al respecto existen 2 tipos fundamentales de interface que son:

Compiladores
Interpretes

Un compilador, es un traductor que facilita la comunicación entre el


programador y la maquina, por medio de un proceso de transformación llamado
compilación. El compilador es el más eficaz para la mayor parte de las maquinas, puesto
que presenta la ventaja de cada una de las sentencias del programa, es interpretada y
traducida al lenguaje maquina solo una vez.

Un intérprete, es un programa que se traduce línea por línea bajo la misma


plataforma. Es un traductor pero más lento que los compiladores ya que no producen un
código objeto, si no que recorre el código fuente una línea cada vez, cada línea se traducen
a código maquina y se ejecuta.

1.2 Definición de Algoritmo.

Es un conjunto prescrito de instrucciones o reglas bien definidas, ordenadas y


finitas que permite realizar una actividad mediante pasos sucesivos que ni generen duda
alguna a quien lo ejecuten.
Los algoritmos tienen ciertas características que son:

Precisión: Esto quiere decir que debe indicarle orden a cada paso.

Definido: Es decir se sigue dos veces o tiene el mismo resultado cada vez.

Finito: Que tiene fin.

Algunos ejemplos para la utilización de algoritmos pueden ser: instrucciones para


montar una bicicleta y hacer una receta de cocina.

Medios de Expresión de un Algoritmo.

Los algoritmos pueden ser expresados de muchas maneras, incluyendo al lenguaje


natural, pseudocódigo, diagrama de flujo y lenguaje de programación entre otras.
La descripción de un algoritmo usualmente se hace en 3 niveles:

1.- Descripción de alto nivel. Establece el problema, se selecciona un modelo matemático y


se explica el algoritmo de manera verbal.

5
Diseño estructurado de algoritmos

2.-Descripcion formal. Se usa pseudocódigo para describir la secuencia de pasos que


encuentran la solución.

3.- Implementación. Se muestra algoritmo expresado en un lenguaje de programación


específico o algún objeto capaz de llevar acabo instrucciones.

Diagrama de Flujo.

Los diagramas de flujo son descripciones graficas de algoritmos; usan símbolos


conectados con flechas para indicar la secuencia de instrucciones.
Los diagramas de flujo son usados para representar algoritmos pequeños, ya que abarcan
mucho espacio y su construcción es laboriosa.

Pseudocódigo.
Es la descripción de un algoritmo que asemeja a un lenguaje de programación pero
no algunas conversiones al lenguaje natural. Tiene varias ventajas con respecto a los
diagramas de flujo, entre las que se destacan el poco espacio que se requiere para
representar instrucciones completas.

Tipos de Algoritmos según su Función.

Algoritmos de ordenamiento
Algoritmos de búsqueda

Técnicas de diseño de algoritmos.


Algoritmos borases (greedy).- seleccionan los elementos mas prometedores del
conjunto de candidatos hasta encontrar una solución.

Algoritmos paralelos.- permite la división de un problema en sub-problemas de


forma que se puedan ejecutar de forma simultánea en varios procesadores.

Algoritmos probabilísticos.- algunos de los pasos de este tipo de algoritmos están


en función de valores seudoaleatorios.

Algoritmos deterministicos.- el comportamiento del algoritmo es lineal, cada


paso del algoritmo tiene únicamente un paso sucesor y otro antecesor.

Algoritmos no deterministicos.- el comportamiento de algoritmo tiene forma de


árbol y a cada paso puede bifurcarse a cualquier numero de pasos inmediatamente
posteriores.

Divide y vencerás.- divide el problema en subconjuntos distintos obteniendo una


solución de cada una de ellas para después unirlas, logrando asi la solución al problema
completo.

Meta heurísticas.- encuentra soluciones aproximadas a problemas basándose en


un conocimiento anterior de los mismos.

6
Diseño estructurado de algoritmos

Programación dinámica.- intenta resolver problemas disminuyendo su coste


computacional aumentando el coste espacial.
Ramificación y acotación.- se basa en la construcción de las soluciones a problemas
mediante un árbol implícito que se recurre de forma controlada encontrara las mejores
soluciones.
Vuelta atrás (back tracking).-se construye el espacio de soluciones de problema
en un árbol que se examina completamente, almacenando las soluciones menos costosas.

1.3 Algoritmos cotidianos

Es la serie de pasos que realizamos en la vida diaria para realizar diferentes tareas
y actividades comunes.
Y para definir el lenguaje algorítmico cabe recordar que el conjunto de todas las
operaciones a realizar y el orden en el que deben efectuarse, se denomina algoritmo.

1.4 Historia y aplicación de los algoritmos

Los lenguajes de computadora toman diferentes formas, los de las primeras


computadoras se componían en el lenguaje real de las maquinas mismas, la dificultad de
programar las maquinas de esta manera limitaba drásticamente su utilidad y proporcionaba
un fuerte incentivo para que se desarrollaran lenguajes de programación orientados hacia la
expresión de la solución con la notación de los problemas mismos.
A mediados de los años 60’s aparecieron los primeros lenguajes de propósito
general como fortran, fortran 4, algol, cobol, basic, pl/1, ada, c++, y pascal.

7
Diseño estructurado de algoritmos

UNIDAD II
METODOLOGIA PARA LA RESOLUCION DE PROBLEMAS

2.1 Definición de problema

Problema es toda situación o asunto del que se espera una rápida y efectiva
solución.
La primer fase en la resolución de un problema por computadora es la definición o
análisis del problema. El objetivo de un programa es resolver un problema en particular.
El problema expresado habitualmente de forma natural permite desarrollar un
programa que resuelva dicha situación.

La fase de resolución de un problema con computadora es:


Análisis del problema.
Diseño del algoritmo.
Codificación.
Compilación y ejecución.
Verificación.
Depuración.
Mantenimiento.
Documentación.

El algoritmo es un método para resolver un problema mediante una serie de pasos


definidos y finitos, ejemplo:

8
Diseño estructurado de algoritmos

Los requisitos mas importantes para llegar a una solución eficaz.

Definir con precisión el problema.


Los problemas complejos se pueden resolver más eficazmente por la computadora
cuando se dividen en subproblemas que sean más fácil de solucionar.
La primera fase de la resolución de un problema con computadora es el análisis del
problema. Esta fase requiere una clara definición, donde se contemple exactamente lo que
debe hacer el programa y el resultado o solución deseada.

La complejidad provoca que muchas veces no se aprecie el verdadero problema.


Planificar el problema es necesario encontrar dentro de la situación todos los
elementos importantes: aquellos que están presentes (lo que tenemos) y aquellos que están
ausentes (lo que deseamos).
Al abordar un problema que se quiere resolver mediante un ordenador, el
programador necesita de la experiencia del experto del dominio para entender el problema.

¿Qué datos son necesarios para resolver el problema?


¿Qué información debe proporcionar la resolución del problema?

Las dos primeras fases conducen a un diseño detallado escrito en forma de


algoritmo.
Mientras más tiempo se gaste en la fase de análisis y diseño, menos se gasta en la
depuración del problema. Ejemplo:

Nuestro personaje está sentado en su casa viendo la televisión. Afuera está lloviendo
y como su techo esta en mal estado el agua se introduce a la habitación.
¿Cuál es su problema?
A) el problema es que la televisión no se ve bien.
B) el problema es que el sillón no es cómodo.
C) el problema es que las gotas hacen ruido.
D) el problema es que se está metiendo el agua a su casa.

2.2 análisis de datos

¿Cómo poder analizar datos?


Para poder definir con precisión el problema se requiere que las especificaciones de
entrada y salida sean descritas con detalle ya que esto es un requisito para lograr una
solución eficaz.

9
Diseño estructurado de algoritmos

Una vez que el problema ha sido definido y comprendido, deben analizar los
siguientes aspectos.

Los resultados esperados.


Los datos de entrada disponibles.
Herramientas que podemos utilizar.
Herramientas a nuestro alcance para manipular los datos y alcanzar un resultado (formulas,
tablas, accesorios diversos).
Una medida aconsejable para facilitar esta etapa consiste en colocarnos en un lugar
de la computadora deduciendo los elementos que necesitaremos para alcanzar el resultado

Ejemplo de análisis de datos:

Quick es un lenguaje de programación estructurado y el algoritmo se representa en


pseudocódigo y/o diagrama de flujo.

Análisis de datos y problema.


Requiere la clara definición del problema donde se indique que va hacer el
programa y cuál va a ser el resultado. Debe detallarse las especificaciones de entrada y
salida, los resultados que definen el análisis son:

Para ver el grafico seleccione la opción “descargar”


La ecuación de segundo grado se define algebraicamente como:

ax2 + bx + c = 0

La solución general viene dada por la expresión algebraica (algoritmo).

Proceso de Análisis de Datos.


Un proceso típico de los análisis de datos consta de los siguientes típicos pasos
generales:
Selección del conjunto de datos, tanto en lo que se refiere a las variables objetivo
(aquellas que se quiere predecir, calcular o inferir), como a las variables independientes (las
que sirven para hacer el calculo o proceso), como posiblemente al muestro de los registros
disponibles.
Análisis de las propiedades de los datos, en especial los histogramas, diagramas de
dispersión, presencia de valores tipos y ausencia de datos (valores nulos)
Transformación del conjunto de datos de entrada, se realizara de diversas formas en
función del análisis previo, con el objetivo de prepararlo para aplicar la técnica de minería
de datos que mejor se adapte a los datos y al problema, a este paso también se le conoce
como pre procesamiento de datos.
Seleccionar y aplicar la técnica de minería de datos, se construye el modelo
predictivo, de clasificación o segmentación.
Extracción de conocimiento, mediante una técnica de minería de datos, se obtiene
un modelo de conocimiento, que representa patrones de comportamiento observados en los
valores de las variables del problema o relacionados de asociación entre dichas variables.

10
Diseño estructurado de algoritmos

También pueden usarse varias técnicas a la vez para generar distintos modelos,
aunque generalmente cada técnica obliga a un pre procesado diferente de los datos.
Interpretación y evaluación de datos, una vez obtenido el modelo, se debe proceder
a su validación comprobando que las conclusiones que arroja son validas y suficientemente
satisfactorias. En el caso de haber obtenido varios modelos mediante el uso de distintas
técnicas, se deben comparar los modelos en busca de aquel que se ajuste mejor al problema.
Si ninguno de los modelos alcanza los resultados esperados, debe alterarse alguno de los
pasos anteriores para generar nuevos modelos.
Para analizar un algoritmo o datos.
Para analizar un algoritmo o datos es determinar la cantidad de recursos, como el
tiempo y el almacenamiento necesario para ejecutarlos. Por lo general, la eficiencia o
tiempo de ejecución de un algoritmo se plantea como una función que relaciona la longitud
de entrada para el numero de pasos, complejidad del tiempo o lugares de almacenamiento,
complejidad de espacio.
El análisis de datos o algoritmos es una parte importante de una mas amplia teoría
de complejidad computacional que proporciona estimaciones teóricas para los recursos que
necesita cualquier algoritmo que resuelve cualquier problema computacional. Estas
estimaciones resultan ser bastante útiles en la búsqueda de algoritmos útiles.

Técnicas Para el Análisis de Datos

De la información toma las siguientes técnicas para el análisis de datos:


Algoritmos genéticos: son métodos numéricos de optimización en los que aquella
variable que se pretende optimizar junto con las variables de estudio constituyen un
segmento de información. Aquellas configuraciones de las variables de análisis que
obtengan mejores valores para la variable de respuesta, corresponderán a segmentos con
mayor capacidad reproductiva. A través de la reproducción, los mejores segmentos
perduran y su proporción crece de generación en generación. Se puede además introducir
elementos aleatorios para la modificación de las variables (mutaciones). Al cabo de cierto
número de interacciones, la población estará constituida por buenas soluciones al problema
de optimización, pues las malas soluciones han ido descartándose, interacción tras
interacción.
Inteligencia artificial: mediante un sistema informático que simula un sistema
inteligente, se procede al análisis de los datos disponibles. Entre los sistemas de inteligencia
artificial se encuadrarían los sistemas expertos y las redes neuronales.
Sistemas expertos: son sistemas que an sido creados a partir de reglas prácticas
extraídas del conocimiento de expertos. Principalmente a base de inferencias causa-efecto.
Sistemas inteligentes: son similares a los sistemas expertos, pero con mayor ventaja
ante nuevas situaciones desconocidas para el experto.
Redes neuronales: genéricamente, son métodos de proceso numérico en paralelo, en
el que las variables interactúan mediante transformaciones lineales o no lineales, hasta
obtener unas salidas. Estas salidas se concentran con los que tenían que haber salido,
basándose en unos datos de prueba, dando lugar a un proceso de retroalimentación
mediante el cual la red se reconfigura, hasta obtener un modelo adecuado.

11
Diseño estructurado de algoritmos

Ejemplo de un problema de análisis de datos:

Leer el radio de un circulo y calcular e imprimir su superficie y circunferencia.


-análisis
Las entradas de datos en este problema se concentran en el radio del circulo. Dado
que el radio puede tomar cualquier valor dentro del rango de los números reales, el tipo de
datos radio debe ser real.
Las salidas serán dos variables: superficie y circunferencia que también será del tipo
real.
-entradas: radio del circulo (variable radio).
-salidas: superficie del circulo (variable área).
- circunferencia del circulo (variable circunferencia).
-variables: radio, área, circunferencia tipo real.

2.3 Diseño De La Solución

Como todos sabemos, una computadora no tiene capacidad para solucionar


problemas más cuando se le proporcional los sucesivos pasos a realizar, esto se refiere a la
obtención de un algoritmo que resuelva adecuadamente el problema.
En caso de que obtengamos varios algoritmos, seleccionaremos uno de ellos
utilizando criterios ya conocidos.

Esta etapa incluye:

La descripción del algoritmo resultante en un lenguaje natural, en un diagrama de flujo o


natural de programación.
De esta manera, solo se establece la metodología para alcanzar la solución en forma
conceptual, es decir, sin alcanzar la implementación en el sistema de cómputo.
A si tenemos que la información proporcionada constituye su entrada y la
información producida por el algoritmo constituye su salida.
Los problemas complejos se pueden resolver más eficazmente por la computadora
cuando se dividen en subproblemas que sean más fáciles de solucionar.

2.4 Codificación

Se llama codificación a la transformación de la formulación de un mensaje a través


de las reglas o normas de un código o lenguaje predeterminado. Se refiere a la obtención de
un programa definido que pueda ser comprensible para la maquina. Incluyendo una etapa
que se reconoce como compilación.
En informática, por lo tanto, la codificación es también aquella operación que tiene
lugar para enviar datos de un lugar a otro, procesarlos y obtener resultados a partir de ellos.
Todas las operaciones informáticas están cifradas en código binario, o bien, combinaciones
más o menos complejas de unos y ceros que ocurren constantemente.
Por ejemplo a alguien se le ocurrió enumerar cada una de las letras del alfabeto
ingles del 1 al 26, esta persona posee un hardware y un firmware especial y quiere

12
Diseño estructurado de algoritmos

transmitir la palabra “hello” de un dispositivo electrónico a otro, entonces lo hace


empleando su codificación así: 85121215, digito a digito, a esto se le denomina
codificación.
La razón de la existencia de la codificación es que sería difícil para nosotros
comprender este lenguaje de ceros y unos.

2.5 Prueba y depuración

Si tras la decopilación se presentan errores en el programa fuente es preciso volver a


editar el programa, corregir los errores u copilar de nuevo, este proceso se repite hasta que
no se producen errores. De esta manera se obtiene el programa objeto.
El programa objeto todavía no es ejecutable directamente pero si no contiene errores
se debe incluir al sistema para que realice la fase de montaje o enlace del programa objeto
con las librerías del programa del compilador, este proceso de montaje produce un
programa ejecutable.
La depuración es el proceso de encontrar los errores del programa o corregirlo o
eliminar dichos errores.
Cuando se ejecuta un programa se puede producir tres tipos de errores:
Errores de compilación
Errores de ejecución
Errores de lógicos
En este caso se debe volver a la fase del diseño del algoritmo, modificarlo, cambiar le
programa fuente, compilar y ejecutar una vez mas.

Errores de compilación:
Son en las que ocurre un uso incorrecto de las reglas de lenguaje de programación,
por ejemplo invertir palabras o darle inicio al algoritmo pero no darle fin.

Errores de ejecución:
Son aquellos en las que ocurren paradojas. Ejemplo, dividir una cantidad entre cero.
(la computadora marcara error)

Errores lógicos:
Son más difíciles de detectar, pero al checar resultados no es idéntico al original. El
resultado varia en el resultado de datos ya analizados anterior mente.

2.6Documentación

La documentación es un problema, consta de las descripciones de los pasos a dar en


el proceso de resolución de un problema. La importancia de la documentación es por su
decisiva influencia en su producto final.
Programas previamente documentadas son mas difícil de leer, mas difícil de depurar
y casi imposibles de mantener y modificar. La documentación es imposible corregir errores
futuros o bien cargar el programa.

13
Diseño estructurado de algoritmos

Documentación interna
Son los comentarios o mensajes que se añaden al condigo fuente para hacer mas
claro el entendimiento de un proceso. Hay dos tipos de comentarios: iniciales o de prologo
y descriptivos.

Documentación externa
La forman todos los documentos externos al programa;

Descripción de problema

Nombre del autor

Algoritmo (diagrama de flujo o seudocódigo)

Diccionario de datos

Código fuente (programa)

Manual de usuario
Describe paso a paso como funciona el programa, con el fin de que el usuario
obtenga el resultado deseado.
Es la documentación del usuario. En este manual no existe documentación de tipo
técnico, sino la descripción del funcionamiento del programa.

2.7Mantenimiento

El mantenimiento se define como la modificación del programa por medio de


actualizaciones, que mejoran el programa, corrigiendo errores o bien actualizándolos para
un mejor funcionamiento.

14
Diseño estructurado de algoritmos

UNIDAD III
ENTIDADES PRIMITVAS PARA EL DISEÑO DE INSTRUCCIONES

Datos: Se describe como la expresión general que describe los objetos con los cuales opera
una PC.
Datos numéricos: Enteros (integer) reales(real)
Datos tipo cadena(string)
Apóstrofes;

Datos lógicos:

Bolean.-aquel que solo puede tomar 1 de 2 valores falsos y verdaderos

Subrango: 0 100(enteros)
A 2 tipo cadena
Los reales no son validos para crear enumerativos, ya que su intervalo no esta
definido.

Enumerativos: son aquellos en los que se detienen individualmente los valores para un dato.
(O, 25,40 ,52) siempre deben ponerse entre paréntesis.
TYPE AA = (A, B, C, D)
TYPE BB = (A, A2, A3, A4)
VAR A; AA, B= BB
Begin
A:=A, introducción correcta
B: =A3, introducción incorrecta
A: = A4 A4 No detenidos para A
B : = A+ 3 suma no definida

END.
Definidos por el usuario: aquellos que el programa da crear para satisfacer el programa.
División real = /
División entera= div
MOD=resid
Exponente= ˄

Operadores logicos
(a<b) and (b<1)
NOT: operador falso AND: ambos operadores son verdaderos
X asignaciones aritméticas, lógicas y de caracteres
X’ 3 de mayo de 1999’- ejemplo
Entrada Y Salida De Información

En el lenguaje informáticos- identificadores =símbolos


Semántica y número flotante
OPERADORES;

15
Diseño estructurado de algoritmos

AND
(a<b) AND (B<C) (10<20) AND (20<30)
V V F F

V F
Operadores simbolos
NOT !
AND &
OR ´´
(6 div 3<3 mod 6) AND (NOT) (X*a>y/b)
Valores
a=5
b=4
x=5n-2
y=2

OPERADORES LOGICOS
AND OR NOT
VV=V VV=V V=F
VF=F VF=V F=V
FV=F FV=V
FF=F FF=F

3.1Tipos de Datos.

Un dato se refiere como la expresión general que describe los objetivos con los cuales
opera una computadora. Los datos de entrada se transforman por el programa, después de
las etapas intermedias, en los datos de salida. Los datos se clasifican en diversas categorías,
según el tipo de maquina o del lenguaje en uso. Generalmente podemos encontrar las
siguientes categorías:
Numéricos
Lógicos
Cadenas

Datos numéricos:
Son aquellos que representan una cantidad o valor determinado. Su representación se lleva
a cabo en los formatos ya conocidos (enteros, punto y fracciones decimales si estas
existen).
Estos pueden presentarse en dos formas distintas:
Tipo Numérico Entero (integer).
Tipo Numérico Real (real).

Enteros: Es un conjunto finito de los números enteros. Los enteros son números completos,
no tienen componentes fraccionarios o decimales y pueden ser negativos y positivos.
Algunos ejemplos:
3, 7

16
Diseño estructurado de algoritmos

-10, 9

Reales: Consisten en un subconjunto de los números reales. Estos números siempre tienen
un punto decimal y pueden ser positivos o negativos. Un número real consiste de un
número entero y una parte decimal. Algunos ejemplos son:
0.52664
6.579, 8.0

datos de cadena
Son los datos que representan información textual (palabras, frases, símbolos, etc). No
representan valor alguno para efectos numéricos. Pueden distinguirse porque son
delimitados por apostrofe o comillas.
Se clasifican en dos categorías:
Datos tipo carácter (char)
Datos tipo cadena (string)

Datos tipo caracter: Es un conjunto finito y ordenado de caracteres que la computadora


reconoce. Un dato de este tipo contiene solo un carácter.

Reconoce los siguientes caracteres:


Caracteres alfabéticos (A,B,C,…Z,a,b,c,…z)
Caracteres numéricos (0,1,2…9)
Caracteres especiales (+,-,*,/, , . : )

Datos Tipo Cadena: Es una sucesión de caracteres que se encuentran delimitados por una
comilla (apostrofe) o dobles comillas, según el tipo de lenguaje de programación. La
longitud de una cadena de caracteres es el numero de ellos comprendidos entre los
separados o delimitados.
Ejemplos.
Buenos días
12 de octubre de 1496
Enunciado cualquiera

Nota: Los símbolos disponibles para la formulación de caracteres y de cadenas son aquellos
que se encuentran en el código ASCII.
ASCII (American Standard Code For Information Interchange)

Datos lógicos
También se le denominan Booleano, es aquel dato que solo puede tomar uno de dos
valores: Falso y verdadero. Se utiliza para representar las alternativas (si/no) a
determinadas condiciones. Por ejemplo, cuando se pide si un valor entero sea primo, la
respuesta será verdadera o falsa, según sea. Las categorías y tipos que se mencionan
anteriormente se conocen como Tipos Simples, puesto que no poseen una estructura
compleja. En forma adicional, cada lenguaje puede proporcionar la utilización de Tipos
Compuestos, siendo estos, datos que tienen una estructura predeterminada.

17
Diseño estructurado de algoritmos

Tipos compuestos.
Entre los principales tipos compuestos se encuentran los siguientes:

A.- Subrango: Son aquellos en los que especifica con precisión el intervalo de valores para
un dato.
Ejemplos:
0..100 (son enumerativos de tipo entero)
“A”..”Z” (son numerativos de tipo cadena)
Los reales no son validos para crear enumerativos, ya que su intervalo no esta definido.

B.- Enumerativos: Son aquellos en los que se definen individualmente los valores para un
dato.
Ejemplos:
(0,25,40,52) siempre deben ponerse entre paréntesis

C.- Definidos por el usuario: Son aquellos que el programador crea para satisfacer las
necesidades del programa en diseño.

Constantes y Variables.
Una constante es aquella que no cambia de valor durante la ejecución de un
programa (o comprobación de un algoritmo en este caso). Se representa en la forma
descrita para cada categoría.
La variable son aquellas que pueden modificar su valor durante la ejecución de un
programa.
Su representación se da a través de letras y símbolos generalmente numéricos a los
que se les asigna un valor.

3.2 Operadores y operandos

Un operador es el símbolo que determina el tipo de operaciones o relación que


habrá de establecer entre, los operadores para alcanzar un resultado.
Los operadores se clasifican en tres grupos:
Aritméticos
Relacionales
Lógicos

1.- Operadores Aritméticos: Son aquellos que permite la realización de cálculos


aritméticos. Utilizan operadores numéricos y proporciona resultados numéricos.

18
Diseño estructurado de algoritmos

Operador Operación
+ Suma
- Resta
* Multiplicación
/ División real
Div División entera
Mod Residuo
^ Exponenciación

Ejemplos:
7+3=10
7-3=4
7*3=21
10/4=2.5
10 div 4=2
20 mod 3=2
5 mod 7=5
4^2=16

En la expresión 7+3, los valores 7 y 3 se denominan operadores. El valor de la


expresión 7+3 se conoce como resultado de la expresión.

Todos los operadores aritméticos no existen en todos los lenguajes de programación, por
ejemplo, en Fortran no existe Div y Mod.
Operadores Div y Mod
el símbolo / se utiliza para la división real, el operador Div representa la división entera.

Expresión Resultado Expresión Resultado


10.5/3.0 3.5 10Div 3 3
¼ 0.25 18Div 2 9
2.0/4.0 0.5 30Div 30 1
30/30 1.0 10Mod 3 1
6/8 0.75 10Mod 2 0

Operadores irelacionales
Permiten realizar comparaciones de valores de tipo numérico o carácter. Estos
operadores sirven para expresar las condiciones en los algoritmos. Proporcionan resultados
lógicos.

Operador Significado
< Menor que
> Mayor que
= Igual que
<= Menor o igual que
>= Mayor o igual que
<> Diferente de

19
Diseño estructurado de algoritmos

El formato general para las comparaciones es:

Expresion1 operador de relación expresión2


El resultado de la operación será Verdadero o Falso. Asi por ejemplo, si A=4 y B=3,
entonces:
A>B Es veredadero
(A-2)<(B-4) Es Falso

Los operadores de relación se pueden aplicar a cualquiera de los cuatro tipos de


datos estándar: enteros, real, lógico y carácter.
‘A’<’K’ = Verdadero
‘A’>’a’ = Falso
‘MARIA’<’JUAN’ = Falso (se considera la primera letra)
‘JAIME’>’JORGE’ = Falso

Nota: la comparación de cadenas se rige por el código ASCIL

Prioridad De Operaciones Aritméticos y Relacionales


Determina el orden en que habrán de realizarse las operaciones e una expresión
determinada. Para obtener la prioridad se deben conocer las siguientes reglas:
Las operaciones que están encerradas entre paréntesis se evalúan primero. Si existen
diferentes paréntesis anidados (interiores unos a otros), las expresiones mas internas se
evalúan primero.
Las operaciones aritméticas dentro de una expresión suelen seguir el siguiente orden
de prioridad:

Operador Prioridad
^ Alta
*,/,Div
+,-,Mod
Relacionales Baja

En caso de coincidir varios operadores de igual prioridad en una expresión o


subexpresíon encerrada entre paréntesis, el orden de prioridad en este caso es de izquierda a
derecha. Cuando se desea realizar una operación con baja prioridad por adelantado, debe
agruparse a los operandos involucrados.
4+12/2=10 (sin agrupar)
(4+12)/2=8 (con agrupador)

Los paréntesis tienen prioridad sobre el resto de las operaciones.


A*(b+3) La constante 3 se suma primero al valor de B, después este resultado se
multiplica por el valor de A.
(A*B)+3 A y B se multiplican primero y después se suma 3.
A+(B/C)+D Esta expresión equivale a A+B/C+D

20
Diseño estructurado de algoritmos

Operadores lógicos.
Son aquellos que permiten la combinación de condiciones para formar una sola
expresión lógica. Utilizan operandos lógicos y proporcionan resultados lógicos también.

Operador Relación
not Negación (No)
and Conjunción (Y)
or Disyuncion (O)
xor Disyuncion Exclusiva (O/SOLO)

Se obtiene Verdadero si:


NOT El operando es falso
AND Ambos operandos son verdaderos
OR Al menos un operando es verdadero
XOR Solo uno de los operandos son verdadero

X Y NOT(X) NOT(Y) X AND Y X OR Y X XOR Y


F F V V F F F
V F F V F V V
F V V F F V V
V V F F V V F

Prioridad De Los Operadores Lógicos


Los operandos aritméticos seguían un orden especifico o de prioridad cuando
existían mas de un operador en las expresiones. De modo similar los operadores lógicos y
relacionales tuenen un orden de prioridad.

Ejemplos:
Not 4 > 6: produce un error, ya que el operador not se aplica a 4
Not (4 > 14): produce un valor verdadero.
(1.0 < x) And (x < z + 7.0): Si x vale 7 y z vale 4, se obetiene un valor falso.

Asignación.
La operación de asignación es el modo de darle valores a una variable. La operación
de asignación se representa por el símbolo y operador. La operación de asignación se
conoce como instrucción o sentencia de asignación cuando se refiere a un lenguaje de
programación. A fin de manejar datos por medio de variables, estos pueden recibir valores
determinados. El tipo de valores que pueden recibir dependen de la declaración previa de
tales variables. En una asignación se resuelve, primeramente la expresión (al lado derecho
del símbolo de asignación) y se asigna el resultado en la variable.
El formato general de asignación es:
Nombre variable Expresión
Donde Expresión puede ser una variable o constante, operación, función.
Ejemplo:
A 9

21
Diseño estructurado de algoritmos

Significa que la variable A se le ha asignado el valor 9. La acción de asignar es


destructiva, ya que el valor que tuviera la variable antes de la asignación se pierde y se
remplaza por el nuevo valor. Así en la sevuencia de operaciones:
A 30
A 189
A 9
Cuando se ejecuta el ultimo valor que toma A será 9, ya que los valores anteriores a este
han desaparecido.
Las acciones de asignación se clasifican según sea el tipo de expresiones:

Aritméticas Lógicas y de Caracteres.

Asignación Aritmética
Las expresiones en las operaciones de asignación son aritméticas:
Suma 5+10+2 Se devalúa la exprecion 5+10+2 y se asigna a la variable
Suma, es decir 17 sera el valor que toma Suma.

Asignación Lógica
La expresión que se evalua en la operación de asignación es lógica. Supóngase que M, N, y
P son variables de tipo lógico.
M 8<5
N M o (7 <= 12)
P 7>6
Tras ejecutar las operaciones anteriores, las variables M, N, P oman valores, falso,
verdadero, verdadero, respectivamente.

Asignación de Caracteres
La operación que se evalúa es de tipo carácter.
X ‘3 de Mayo de 1999’
La acción de asignación anterior asigna la cadena de caracteres ‘3 de Mayo de 1999’
a la variable de tipo carácter x.

Entrada y salida de información


Los cálculos que realizan las computadoras requieren para ser utiles la Entrada de
los datos necesarios para ejecutar las operaciones que posteriormente se convertirán
resultados, es decir, Salida. Las operaciones de entrada permiten leer determinados valores
y asignarlos a determinadas variables. Esta entrada se conoce como operación de Lectura
(read). Los datos de entrada se introducen al procesador mediante dispositivos de enrada.
La salida se denomina escritura (write). En la escritura de algoritmos las acciones de
lectura y escritura se representan pir los formatos siguientes:
Leer (Nom_variable)
Escribir (lista de variables de saluda)
Ejemplo: Obtener área de un triangulo
Entrada
Formula (A=B*h/2)
Datos (base, altura)
Proceso

22
Diseño estructurado de algoritmos

Multiplicar base y altura


Dividir resultado de la multiplicación anterior entre dos
Mostrar el resultado de la división anterior
Salida
Área del triangulo

Algoritmo
Inicio
Leer(B)
Leer(h)
X B*h
A x/2
Escribir(a)
Fin

3.3 Expresiones.

Las expresiones son combinaciones de constantes, variables, simbolos de


operadores, paréntesis y nombres de funciones especiales. Las mismas ideas son utilizadas
en notación matemática tradicional; por ejemplo.
a + b (b + 2) Aquí los paréntesis indican el orden de calculo
Cada expresión toma un valor que se denomina tomando los valores de las variables
y constantes implicadas y la ejecución de las operaciones indicadas.
Una expresión consta de operadores y operandos. Según sea el tipo de objetos que
manipulan, las expresiones se clasifican en:
Aritméticas
Relacionales
Lógicas
Carácter
El resultado de la expresión numérica es de tipo numérico: el resultado de la
expresión relacional y de una expresión lógica es de tipo lógico; el resultado de la
expresión carácter es de tipo carácter.

Expresiones Aritméticas
Las expresiones aritméticas son análogas a las formulas matemáticas. Las las
variables y constantes son numéricas y las operaciones son las aritméticas. Los cálculos que
implican tipos de datos reales y enteros suelen dar normalmente resultados del mismo tipo
si los operandos lo son también. Por ejemplo, el producto de operandos reales produce un
real.

23
Diseño estructurado de algoritmos

+ Suma
- Resta
/ División
**, ^ Exponenciación
Div División entera
Mod Modulo (resto)

Expresiones lógicas (booleanas)


Es una expresión que solo pueden tomar los valores de: verdadero y falso. Las expresiones
lógicas se forman combinando constantes lógicas, variables lógicas y otras expresiones y
otras expresiones lógicas utilizando los operadores lógicos not, and y or, los operadores
relacionales (de relación o comparación) =, >, <, <=, >=, <>.

3.4 Identificadores como localidades de memoria

Los identificadores (IDs) son símbolos léxicos que nombran entidades. El concepto
es análogo al “nombre”. Los identificadores se usan ampliamente en prácticamente todos
los sistemas de procesamiento de la información. Nombrar las entidades hace posible
referirse a las mismas, lo cual es esencial para cualquier tipo de procesamiento simbólico.
Identificadores en lenguajes informáticos

En los lenguajes informáticos, los identificadores son elementos textuales que


nombra entidades del lenguaje. Algunas de las variables, las constantes, los tipos de dato,
las etiquetas, las subrutinas (procedimientos y funciones) y los paquetes. En muchos
lenguajes algunas secuencias tienen la forma lexica de un identificador pero son conocidos
como palabras clave. Lo habitual es que si un identificador se corresponde con una palabra
clave o reservada, este ya no puede utilizarse para referirse a otro tipo de identidades como
variables o constantes. Los lenguajes informáticos normalmente ponen restricciones en que
caracteres pueden aparecer en un identificador. Por ejemplo, en las primeras versiones de C
y C++, los identificadores están restringidos para que sean una secuencia de una o mas
letras ASCIL, dígitos numéricos y barras bajas. Las versiones posteriores de estos
lenguajes, asi como otros muchos mas lenguajes modernos soportan casi los caracteres
Unicode en un identificador. Una restricción común es que no esta permitido el uso de
espacios en blanco ni operadores del lenguaje. En lenguajes de programación compilados,
los identificadores generalmente entidades en un tiempo de compilación, es decir, en
tiempo de ejecución del programa compilado contiene referencias a direcciones de
memoria y offsets mas que identificadores textuales (estas direcciones de memoria, han
sido asignadas por el compilador a cada identificador). En lenguajes interpretados los
identificadores están frecuentemente en tiempo de ejecución, a veces incluso como objetos
de primera clase que pueden ser manipulados y evaluados libremente. En Lisp, estos se
llaman símbolos. Los compiladores e intérpretes normalmente no asignan ningún
significado semántico a un idenetificador basado en la seciencia de caracteres actual. Sin
embargo, hay excepciones. Por ejemplo:

24
Diseño estructurado de algoritmos

En Perl una variable se indica utilizando en prefijo llamado sigil, que especifica
aspectos de cómo se interpreta la variable en las expresiones.

En Ruby una variable se considera automáticamente como inmutable si su


identificador empieza con una letra mayúscula.

En Fortran, la primera letra de la variable indica si por defecto es creada como


entero o como flotante.

Reglas para formar un identificador


Debe comenzar con una letra.
Después de la primera letra pueden aparecer otras letras, digitos y caracteres.
No debe contener espacios en blanco
Ejemplos;
SUMA n_primo
NUMERO1 num_horas

25
Diseño estructurado de algoritmos

UNIDAD IV
DISEÑO DE ALGORITMOS

4.1 Diagramas de flujo

Los diagramas de flujo son una manera de representar visualmente el flujo de datos
atravéz de sistemas de tratamiento de información. Los diagramas de flujo describen que
operaciones y en secuencia se requieren para solucionar un problema dado.

Un diagrama de flujo u organigrama es una representación diagramática que ilustra


la secuencia de las operaciones que se realizan para conseguir la solución de un problema.
Los diagramas de flujo se dibujan generalmente antes de comenzar a programar el código
frente a la computadora. Los diagramas de flujo facilitan la comunicación entre los
programadores y la gente del negocio. Estos diagramas de flujo desempeñan un papel vital
en la programación de un problema y facilitan la comprensión de problemas complicados y
sobre todo muy largos. Una vez que se dibuja el diagrama de flujo, llega a ser fácil escribir
el programa en cualquier idioma de alto nivel. Vemos a menudo como los diagramas de
flujo nos dan ventaja al momento de explicar el programa a otros. Por lo tanto, esta correcto
decir que un diagrama de flujo es una necesidad para la documentación mejor de un
programa complejo.

Símbolos estándares.
Los diagramas de flujo se dibujan generalmente usando algunos símbolos
estándares; sin embargo algunos símbolos especiales pueden también ser desarrollados
cuando sean requeridos. Algunos símbolos estándares, que se requieren con frecuencia para
diagramar programas de computadora se muestran a continuación:

Símbolos gráficos.
Dentro de los símbolos fundamentales para la creación de diagrama de flujo, los
símbolos gráficos son utilizados específicamente para operaciones aritméticas y relaciones
condicionales.
+ Sumar
- Menos
* Multiplicación
/ División
± Mas o menos
= Equivalente a
> Mayor que
< Menor que
3
Mayor o igual que
£ Menor o igual que
1
O <> Diferente de
Si
No
True
False

26
Diseño estructurado de algoritmos

Ventajas Del Diagrama de Flujo


Los diagramas de flujo deben escribirse de arriba hacia abajo, y/o de izquierda a
derecha.
Los símbolos se unen con líneas, las cuales tienen en la punta una flecha que indica
la dirección que fluye la información procesos, se debe de utilizar solamente líneas de flujo
horizontal o verticales (nunca diagonales).
Se debe evitar el cruce de líneas, para lo cual se quisiera separar el flujo del
diagrama a un sitio distinto, se podría realizar utilizando los conectores. Se debe tener en
cuenta que solo se van a utilizar conectores cuando sea estrictamente necesario.
No deven quedar líneas del flujo sin conectar.
Todo texto escrito dentro de un símbolo debe ser legible, preciso, evitando el uso de
muchas palabras.
Todos los símbolos pueden tener mas de una línea de entrada, excepción del
símbolo final.
Solo los símbolos de decisión pueden y deben tener mas de una línea de flujo de salida.

Desarrollo Del Diagrama De Flujo


Identificar a los participantes de la reunión donde se desarrollara el diagrama de
flujo.
Deben estar presentes el dueño responsable del procesos.
Anterior y posterior y de otros procesos interrelacionados, otras partes interesadas.
Definir que se espera obtener el diagrama de flujo.
Identificar quien lo empleara y como.
Establecer el nivel de detalle requerido
Determinar los limites del proceso a describir.

Pasos Para Describir Un Diagrama De Flujo.


Establecer el alcance del proceso a describir. De esta manera quedara fijado el
comienzo y el final del diagrama. Frecuentemente el comienzo es la salida del proceso
previo y el final la entrada al proceso siguiente.
Identificar y listar las principales actividades/subprocesos que están incluidos en el
proceso a describir y su orden cronológico.
Si el nivel de detalle definido incluye actividades menores, listarlas también
Identificar y listar los puntos de decisión.
Construir el diagrama respetando la secuencia cronológica y asignando los
correspondientes símbolos
Asignar un titulo al diagrama y verificar que este completo y describa con exactitud
el proceso elegido.

4.2 Pseudocodigo.
El pseudocódigo (falso lenguaje) es común mente utilizado por los trabajadores para
omitir secciones de código o para dar una explicación del paradigma que tomo el mismo
programador para hacer sus códigos esto quiere decir que el pseudocódigo no es
programable sino que facilita la programación.

27
Diseño estructurado de algoritmos

El principal objetivo del pseudocódigo es el de representar la solución a un


algoritmo de la forma mas detallada posible, y a su vez lo mas parecida posible al lenguaje
que posteriormente se utilizara para la codificación del mismo.

Definición De Datos Del Pseudocódigo.


La definición de datos se da por supuesta, sobre todo en las variables sencillas, si se
emplea formaciones: pilas, colas, vectores o registros, se pueden definir en la cabecera del
algoritmo, y naturalmente cuando empleamos el pseudocódigo para definir estructuras de
datos, esta parte la desarrollaremos adecuadamente.

Ventajas Del Pseudocódigo Sobre El Diagrama De Flujo.


Ocupan mucho menos espacio en el desarrollo del problema.
Permite representar de forma fácil operaciones repetitivas complejas.
Es mas sencilla la tarea de pasar del pseudocódigo a un lenguaje de programación
formal.
Si se siguen las reglas de identacion se puede observar claramente los niveles en la
estructura del programa.
En los procesos de aprendizaje de los alumnos de programación, estos están mas
cerca del paso siguiente (codificación en un lenguaje determinado, que los que se inician en
esto con la modalidad diagramas de flujo).
Mejora la claridad de la solución de un problema.

Características y Partes
Las principales características de este lenguaje son:
Se puede ejecutar en un ordenador.
Es una forma de representación sencilla de utilizar y de manipular
Facilita el paso del programa al lenguaje de programación.
Es independiente del lenguaje de programación que se vaya a utilizar.
Es un método que facilita la programación y solución al algoritmo del programa.

Todo documento en pseudocódigo debe permitir la descripción de:


Instrucciones primitivas
Instrucciones de proceso.
Instrucciones de control.
Instrucciones compuestas.
Instrucciones de descripción.

Estructura a seguir en su realización:


Cabecera.
Programa
Modulo
Tipos de datos
Constantes
Variables

28
Diseño estructurado de algoritmos

Cuerpo
Inicio
Instrucciones
Fin

4.3 diagramas estructurados

Ventajas
Adoptar la filosofía de la programación estructurada, que utiliza un enfoque
descendente.
Utiliza un numero limitado de símbolos de tal forma que el diagrama de flujo ocupa
menos espacio y puede leerse con cierta finalidad.

Desventajas
Deben estar completos y ser muy claros, con el fin de que se entiendan.

Ejemplo:
Se desea calcular el salario neto semanal de un trabajador en función del numero de
horas trabajadas y la taza de impuestos.

Descripción del diagrama estructurado


Login: pantalla de entrada del usuario a la aplicación
Menú principal: pantalla de menú para escoger entre las operaciones principales del sistema
Pantalla de cambio contraseña: pantalla que permite cambio de contraseña por el usuario
Informes: permite al usuario escoger entre una variedad de informes
Crear reservación: usado para la reservación de horarios de clases en los laboratorios para
el próximo periodo lectivo.

Para crear una reservación se procede a realizar los pasos siguientes:


Seleccionar el periodo lectivo interesado (termino)
Seleccionar el salón deseado para ofrecer el curso en el próximo periodo lectivo
Seleccionar el curso interesado
Seleccionar los días y horas a ofrecer el curso
Seleccionar el instructor que ofrecerá el curso
Crear la nueva reservación para el próximo periodo lectivo

Mantenimiento: permite al oficial de programación hacer tareas administrativas sobre el


sistema.

Tareas Administrativas.
Activar o inactivar la función de asignación de prioridades departamentales a
salones de laboratorio
Añadir salones
Añadir cursos
Añadir departamentos
Añadir periodos lectivos (términos)

29
Diseño estructurado de algoritmos

Añadir programas y equipos a los salones


Añadir profesores a los departamentos
Asignar equipos o software a un salón.

4.4 diagramas secuenciales.

La estructura secuencial es aquella en la que una acción (instrucción) sigue a otra en


secuencia. Las tareas se suceden de tal modo que la salida de una es la entrada de la
siguiente y asi sucesivamente hasta el fin del proceso.

En pseudocódigo una Estructura Secuencial se representa de la siguiente forma:


En diagrama de flujo se realiza asi:
inicio
INICIO Acción
Acción 1 1
Acción 2
Acción
2
Acción acción

FIN fin

Observe el siguiente problema de tipo cotidiano y sus respectivos algoritmos


representados en pseudocódigo y en diagramas de flujos:
Tengo un teléfono y necesito llamar a alguien pero no se como hacerlo.
Pseudocodigo: Diagrama de flujos:
INICIO INICIO
Levante la bocina
Espere tono Levante la bocina
Marque el numero
Espere que contesten Espere el tono
Hable con la persona
Cuelgue la bocina Marque el numero
FIN
Espere a que contesten

Hable con

Culge la

FIN
El anterior ejemplo es un sencillo algoritmo de un problema cotidiano dado como
muestra secuencial. Ahora veremos los componentes que pertenecen a ella:

30
Diseño estructurado de algoritmos

4.4.1 asignación entrada-salida.

La asignación consiste, en el paso de valores o resultados a una zona de la memoria.


Dicha zona será reconocida con el nombre de la variable que recibe el valor.

La asignación se puede clasificar de la siguiente forma:


Simples: Consiste en pasar un valor constante a una variable (a 15).
Contador: Consiste en usarla como un verificador del número de veces que se realiza un
proceso (a a + 1).
Acumulador: Consiste en usarla como sumador en un proceso (a a + b).
De trabajo: Donde puede percibir el resultado de una operación matematica que involucre
muchas variables (a c + b*2/4).
En general el formato a utilizar es el siguiente:
< Variable > < Valor o expresión >
El símbolo debe leerse “asigne”.

Escritura o salida de datos.


Consiste en mandar por un dispositivo de salida (p.ej. monitor o impresora) un
resultado o mensaje. Esta situación presenta en pantalla el mensaje escrito entre comillas o
el contenido de la variable. Este proceso se representa asi como sigue:
Pseudocodigo: Diagrama de flujo:
ESCRIBA “MENSAJE CUALQUIERA” <
MENSAJE O
ESCRIBA <Variable>
VARIABLE
ESCRIBA “ La Variable es”: <variable>
CUALQUIERA>

Lectura o entrada de datos


La lectura o entrada de datos consiste en recibir desde un dispositivo de entrada
(p.ej. el teclado) un valor o dato. Este dato va a ser almacenado en la variable que aparece a
continuación de la instrucción. Esta operación se representa asi:
Pseudocodigo: Diagrama de flujo:
LEA <variable>
VARIABLE

4.5 Condicionales

Las estructuras condicionales compraran una variable contra otro(s) valor(es), para
que en base a l resultado de esta comparación, se siga un curso de acción dentro del
programa. Cabe mencionar que la comparación se puede hacer contra otra variable o contra
una constante, según se necesite. Existen dos tipos, las simples y las multiples.

31
Diseño estructurado de algoritmos

4.5.1 simples

Las estructuras condicionales simples se les conocen como “Tomas de decisión”.


Estas tomas de decisión tienen la siguiente forma:
Pseudocódigo: Diagrama de flujo:
SI
Si <condición> entonces Condici NO
Instrucción (es) ón
Tarea a realizar si la
Fin-Si NO condición es falsa
SI
FI
N
Dobles:
Las estructuras condicionales dobles nos permiten elegir entre dos opciones o
alternativas posibles en función del cumplimiento o no de una determinada condición. Se
representa de la siguiente forma:

Pseudocodigo: Diagrama de flujo:


Si <condición> entonces
Condic
Instrucción(es) NO SI
Si no ión
Tareas a realizar Realizar si la
TAREAS A REALIZAR SI LA
si la condición condición es
Instrucción(es)
CONDICION ES VERDADERA es falsa verdadera
Fin-Si fi
n

Donde:
Si: Indica el comando de comparación
Condición: Indica la condición a evaluar
Entonces: Precede a las acciones a realizar cuando se cumple o no la condición
Introducción(es): Son las acciones a realizar cuando se cumple o no la condición
Si no: Precede a las acciones a realizar cuando no se cumple la condición.

Dependiendo de si la comparación es cierta o falsa, se puede realizar una o mas acciones.

4.5.2 multiple

Las estructuras de comparación multiples, son tomas de decisiones especializadas


que permiten comparar una variable con otra distintos posibles resultados, ejecutando para
cada caso una serie de instrucciones especificas. La forma común es la siguiente:

32
Diseño estructurado de algoritmos

Pseudocódigo: Tare Diagrama de flujo:


SI aa
<Condición> realiz Si la
Si <condición> entonces ar condición es
Instrucción(es) verdadera
Si no NO
Si <condición> entonces
Instrucción(es) Condic SI Tarea a
Si no ión realizar

Varias condiciones NO
SI
Condic Tareas a
si la condición es ión realizar
verdadera
NO

fi
n

33
Diseño estructurado de algoritmos

UNIDAD V
INTRODUCCIÓN A UN LENGUAJE DE PROGRAMACIÓN

5.1 Conceptos básicos

Combinación de símbolos y reglas que permiten la construcción de programas con


los que la computadora puede operar, así como resolver problemas de manera eficaz.
Estos contienen un conjunto de instrucciones, que nos permiten realizar operaciones de
entrada y salida , cálculos, manipulaciones de textos ,lógica (comparación) y
almacenamiento (recuperación).

Los lenguajes de programación se clasifican en :


1.-lenguaje de maquina: aquellos cuyas instrucciones son directamente entendibles por
la computadora y no necesitan traducción posterior para que la CPU pueda comprender y
ejecutar el programa.

2.-lenguaje de bajo nivel (ensamblador): en este las instrucciones se escriben en códigos


alfabéticos conocidos como mnemotécnicos para las operaciones y direcciones simbólicas.

3.-lenguaje de alto nivel : los lenguajes de programación de alto nivel (basic, pascal,
cobol, fortran, c, etc.) son aquellos en los que las instrucciones o sentencias a la
computadora son escritas con palabras similares a los lenguajes hum

anos(en general en ingles) lo que facilita la escritura y comprensión del programa.


Algoritmo
Se denomina algoritmo al conjunto de pasos ordenados y finitos que permiten resolver
un problema o tarea específica. Todo algoritmo debe ser :*finito,
*preciso,*definido,*general.

Programa de computadora
Existen diferentes conceptos :
1.-es un algoritmo desarrollado en un determinado lenguaje de programación , para ser
utilizado por la computadora; es decir una serie de pasos o instrucciones ordenadas y finitas
que pueden ser procesadas por una computadora , permitiéndonos resolver un problema o
tarea específica.
2.-secuencia de instrucciones mediante las cuales se ejecuta diferentes acciones de
acuerdo con los datos que se desse procesar.
3.- expresión de un algoritmo en un lenguaje preciso que puede llegar a entender una
computadora.

Etapas o pasos en la creación de un programa

34
Diseño estructurado de algoritmos

Definición del problema: esta fase está dada por el enunciado del problema , el cual
requiere una definición clara y precisa . Es importante que se entienda perfectamente lo que
se desea realizar la computadora, para poder continuar con la siguiente etapa.

Análisis del problema.


Una vez que se ha comprendido lo que se desea que la computadora haga , la etapa de
análisis es muy importante ya que se identifican tres factores indispensables:
1.-que información se necesita para obtener el resultado deseado (datos de entrada ).
2.-que información se desea producir (datos de salida)
3.-los métodos y formulas que se necesitan para procesar los datos y producir esa salida.

Diseño y técnicas para la formulación de un algoritmo


La etapa de diseño se centra en desarrollar el algoritmo basándonos en las
especificaciones de la etapa del análisis ; un algoritmo lo podemos representar mediante el
diagrama de flujo o el pseudocódigo.

Diagrama de flujo
un diagrama de flujo es la representación grafica de un algoritmo . También e puede
decir que es la representación detallada en forma grafica de cómo deben realizarse los pasos
en la computadora para producir los resultados deseados.
Pseudocódigo
Es una mezcla de lenguaje de programación que se emplea, dentro de la programación
estructurada para realizar el diseño de un programa .se puede definir como un lenguaje de
especificaciones de algoritmos.

Codificación
En la etapa de codificación se transcribe el pseudocódigo definido en la etapa de diseño en
código de un lenguaje de programación, es decir un programa reconocido por la
computadora a este se le conoce como código fuente.

Prueba y depuración
Los errores humanos dentro de la programación de computadoras son muchos y
aumentan considerablemente con la complejidad del problema. Al proceso de identificar y
elimina errores , para dar paso a una solución sin errores , se les llama depuración.

Existen dos tipos : las pruebas de sintaxis y las de lógica.


Documentación
Es la guía o comunicación escrita es sus variadas formas , ya sea en enunciados ,
procedimientos , dibujos o diagramas .

35
Diseño estructurado de algoritmos

Tipos de documentación: interna y externa.


Mantenimiento
Se lleva a cabo después de terminado el programa, cuando se detecta que es necesario
hacer algún cambio , ajuste o complementación al programa para que siga trabajando de
manera correcta.

5.2Estructura general de un programa

La base de la programación en c es la función, ya que constituye una parte de la


codificación en el proceso de solución de problemas. Un programa contiene una o más
funciones en uno o más archivos. Una de las funciones es main(), donde se inicia la
ejecución del programa . El resto de las funciones se llama desde main() y desde el interior
de otras funciones.

/*estructura de un programa en c*/


#include <librerías de cabecera>
Prototipo de la funciones
#define (constantes)
Declaración variables globales
Main()
{
Declaración variables locales
Instrucciones……
}

Declaración completa de funciones


A continuación explicaremos cada parte
Cabecera o encabezado de un programa
La primera línea de un programa en c suele ser una línea de comentario , en la cual se
escribe el nombre del programa y lo que realiza , así como los datos de autor , fecha y
versión. Las líneas de comentarios en c estándar se encierran entre los caracteres /* y */.en
C++los comentarios se inician con //.

Declaración archivos de cabecera o encabezado (librerías o bibliotecas)


(librerías o bibliotecas)
Indican al compilador que esta posición se incluyan las líneas de sentencia que están en
el archivo que se declara .generalmente en estas líneas se incluyen archivos estándares
proporcionados por el fabricante del compilador , y en ellas se suelen declarar funciones ,
variables y constantes que van a ser utilizadas por las sentencias que el programador va a
utilizar en las siguientes líneas del programa.

Los archivos de inclusión contienen definiciones y declaraciones que pueden ser


incorporadas en un programa específico.

36
Diseño estructurado de algoritmos

El programa principal o función principal main()


Posteriormente se introduce el programa principal , el cual contiene el flujo del
programa llamando a las funciones necesarias para su funcionamiento.

La función main() indica donde empieza el programa , cuyo cuerpo principal es un


conjunto de instrucciones delimitadas por dos llaves , una inmediatamente después de la
declaración main(), ¨{¨, y otra que finaliza el listado , ¨}¨. Todos los programas c arrancan
del mismo punto : la primera instrucción dentro de dicha función.

5.3 Tipos de datos.

Los diferentes objetos de información con los que un programa trabaja se conocen
colectivamente como datos. El tipo de un dato es el conjunto (rango) de valores que puede
tomar durante el programa. Por lo tanto los tipos de datos son los valores que una variable
puede tomar.

Las computadoras pueden trabajar con varios tipos de datos; los algoritmos y programas
operan sobre estos.

La asignación de tipos a los datos tiene dos objetivos principales:

Detectar errores de operaciones en programas.

Determinar cómo ejecutar las operaciones.


Los datos que utilizan los programas los podemos clasificar en simples o compuestos.
Un dato simple es indivisible, no se puede descomponer.
Un dato compuesto está integrado por varios datos.
Datos numéricos
Tipos enteros. Son aquellos números que no tienen fracciones o decimales. Pueden ser
negativos o positivos.
Tipos reales o de coma flotante. Representan números reales que contienen una coma (un
punto) decimal, tal como 3.1416, o números muy grandes, y pueden ser positivos y
negativos formando el subconjunto de los números reales.
Datos lógicos. Aquel que solo puede tomar uno de dos valores: verdadero (true) o falso
(false).
Caracteres. El almacenamiento de caracteres en el interior de la computadora se hace en
“palabras” de 8 bits (1 byte). Los caracteres se almacenan internamente como números y
por tanto se pueden realizar operaciones aritméticas con datos tipos char.
Una característica de la parte estándar del conjunto de caracteres es que contiene las letras
mayúsculas, las minúsculas y los dígitos, y que cada uno de estos tres subconjuntos esta
ordenado con su orden natural, por lo que podemos manejar rangos de caracteres bien
definidos.

37
Diseño estructurado de algoritmos

5.4 Variables, constantes comentarios.

Una variable es un dato cuyo valor puede cambiar durante el desarrollo del algoritmo o
ejecución del programa.”
Es decir que representara un valor almacenado en memoria que se puede modificar en
cualquier momento o conservar para ser usado tantas veces como se desee.

Tipos de variables
Enteras
Reales
Caracteres
Cadenas

(una variable que es de cierto tipo solo puede tomar valores que correspondan a ese tipo,
si se asigna un valor de tipo diferente se producirá un error)

El programador de lenguaje C es libre de denominar a sus variables con el nombre que


considere más adecuado, respetando las normas para nombrar un identificador.

El lenguaje C acepta letras mayúsculas y minúsculas, siendo distintos los nombre, por
ejemplo: lado y Lado se refieren a diferentes variables.

Declaración de Variables.
Todas las variables deben ser declaradas antes de ser usadas. Cada variable por lo tanto
tiene asociado un nombre (identificador), un tipo y un valor. No se admiten como
identificadores palabras reservadas del lenguaje de programación que se esté utilizando.
Los nombres de variables que se elijan para el algoritmo o programa deben ser
significativos y tener relación con el objeto que representa. En lenguaje C la sintaxis para
definir una variable es:

Pseudocódigo Lenguaje C
tipo_dato variable(s) tipo_dato variable(s);
Ejemplos:
Pseudocódigo Lenguaje C
Entero i,j,k int i,j,k;
Real si float si;
Carácter s, nom(25) char s, nom(25)

38
Diseño estructurado de algoritmos

Las variables del mismo tipo pueden definirse con una definición múltiple, separándolas
mediante “,” : int x, y, z;
Una variable puede declararse en cuatro lugares diferentes del programa:
Fuera de todas las funciones(global)
Dentro de una función(local a la función)
Dentro de un bloque enmarcado por llaves {} local al bloque.
Como parámetro formal (local a la función).

Reservación de memoria
Cuando declaramos una variable le estamos diciendo al compilador que debe: reservar
espacio en memoria, que a cada espacio en memoria le asigne un nombre y un número
determinado de bytes, dependiendo del tipo de dato asignado; también se le dice que tipos
de datos puede almacenar. En C una variable es una posición de memoria de la
computadora con nombre (identificador) donde se almacena un valor con cierto tipo de
dato. Una variable es un lugar donde se puede almacenar temporalmente un dato; las
variables nos permiten guardar información

Las variables pueden también ser inicializadas en el momento de declararse:


Pseudocódigo Lenguaje C
tipo_dato variable ß valor tipo_dato variable = valor;
Ejemplos:
Pseudocódigo Lenguaje C
Entero i ß 0 int i = 0;
Real sal ß 30.5 float sal = 30.5

En lenguaje C una constante se define por medio de la instrucción #define (directiva del
procesador) o de la palabra const.
Pseudocódigo Lenguaje C
Constante iden_const ß valor #define iden_const valor ò const tipo iden_const
=valor;
Uso de #define
El compilador C tiene un pre-procesador incorporado. Si las líneas
# define LIMTE 100
# define PI 3.14159

se encuentran en un archivo que se está compilando, el pre-procesador cambia primero


todos los identificadores LIMITE por 100 y todos los PI por 3.14159, excepto los que estén
en cadenas entre comillas. Una línea # define puede estar en cualquier lugar del programa,
pero debe empezar en la columna 1 y solo cambiara los identificadores que se escriben con
mayúsculas.

39
Diseño estructurado de algoritmos

Uso de Const
El cualificador const permite dar nombres simbólicos a constantes. Su valor no puede
ser modificado por el programa.

Ejemplos:
Pseudocódigo Lenguaje C
Constante MAX ß 100 #define MAX 100 const int MAX = 100;
Constante CAR ß ‘a’ #define CAR ‘a’ const char CAR = ‘a’ ;
Constante CAR ß “a” #define CAR “a” const char CAR(4) = “a”;
Constante PI ß 3.1416 #define PI 3.1416 const float PI = 3.1416;
Constante NOM ß “Marco” #define NOM “Marco” const char NOM(10) =
“Marco”;
NOTA: “a” es diferente de ‘a’.

Comentarios.
Los comentarios son útiles para identificar los elementos principales de un programa o
para explicar la lógica subyacente de estos. Deben ser breves y evitar ambigüedades.
Los comentarios en cualquier lenguaje de programación sirven para que el código fuente
sea más entendible, aumenta la claridad de un programa ayuda para la documentación y
bien utilizados nos pueden ahorrar mucho tiempo.
Se debe utilizar comentarios solo cuando sean necesarios, por ejemplo:
Al principio del programa: nombre del autor o autores, fecha de elaboración, etc.
En cada sentencia o bloque ( bucle, if ,switch…) que presenten cierta complejidad

(el comentario indicara que se realiza).

En la declaración de variables y constantes cuyo identificador no sea suficiente para


comprender su utilidad.

En los cierres de los bloques con para indicar a que sentencia de control de flujo
pertenecen, lo0s principalmente cuando existe mucho anidamiento de sentencias y los
bloques contienen muchas líneas de código.

Los comentarios los reconocerá la persona que elaboro el programa o cualquier otro
programador, inclusive después de un tiempo. Para el compilador, los comentarios son
inexistentes, aunque con mediada.

40
Diseño estructurado de algoritmos

En lenguaje C se toma como comentario todo carácter interno a los símbolos /**/ o
iniciarlos con //. L os comentarios pueden ocupar uno o más renglones, por ejemplo:

/* Este es un comentario */ C estándar

// Este es un comentario. C++

5.5 Operadores aritméticos y lógicos.

Operadores
Un operador es un símbolo que permite relacionar dos datos en una expresión y
evaluar el resultado de la operación.

Los programas de las computadoras se apoyan esencialmente en la realización de


numerosas operaciones aritméticas y matemáticas de diferente complejidad. Los operadores
fundamentales son:

Aritméticos.
Relacionales.
Lógicos.
Asignación.

En este capítulo explicaremos los operadores aritméticos y lógicos

Operadores aritméticos
Los operadores aritméticos (+,-,*,/,++,--) pueden ser utilizados con tipos enteros o reales y
sirven para realizar operaciones aritméticas básicas. Por ejemplo si a= 15 y b= 3.

Operadores lógicos.
Las expresiones lógicas pueden combinarse para formar expresiones mas complejas
utilizando los operadores lógicos. Estos operadores se utilizan con constantes lógicas de
forma similar al modo en que los operadores aritméticos se utilizan con las constantes
numéricas; estos operadores trabajan con operadores que son expresiones lógicas.

5.6Instrucciónes.

41
Diseño estructurado de algoritmos

En informática, una instrucción es una única operación de un procesador definida


por un conjunto de instrucciones de una arquitectura.

En las arquitecturas típicas, una instrucción cuenta con un opcode (que especifica cuál es la
operación que se realizará, como por ejemplo: agregar datos a un registro de memoria) y
cero, uno o más operandos (que especifica registros, ubicaciones de memoria o datos).

Arquitectura, En informática, se refiere a la forma de estructurar una computadora, un


sistema operativo, un microprocesador, un software, etc.

1. Arquitectura de sistemas.
Es una descripción del diseño y contenido de un sistema de computadora. Puede incluir
información como el hardware y software que contiene, y la capacidad de la red.
2. Arquitectura de la información.

La Arquitectura de Información es la disciplina encargada del estudio, análisis,


planificación y fundamentación de la organización, disposición y estructuración de espacios
de información, y de la selección y presentación de los datos contenidos en los sistemas de
información interactivos

3. Arquitectura de software.
(arquitectura lógica). La arquitectura de software de un programa o sistema de
computadora, es la estructura de ese sistema, que incluye componentes de software, las
propiedades visibles externas de esos componentes, y las relaciones entre estos. El término
también puede incluir la documentación sobre la arquitectura de software del sistema

4. Arquitectura de hardware.
(hardware architecture). La arquitectura de hardware es una representación de un sistema
de hardware electromecánico o electrónico desarrollado o a desarrollar.

La arquitectura de hardware primero se concentra en las interfaces eléctricas internas entre


los componentes o subsistemas del sistema, y luego la interfaz entre el sistema y su
entorno.

Las acciones o instrucciones se deben escribir y posteriormente almacenar en memoria en


el mismo orden en que han de ejecutarse, es decir, en secuencia.

42
Diseño estructurado de algoritmos

Un programa puede ser lineal o no lineal.


Un programa en lineal si las instrucciones se ejecutan secuencialmente, sin
bifurcaciones, decisiones ni comparaciones.
Un programa es no lineal cuando se interrumpe la secuencia mediante instrucciones de
bifurcaciones.

Las instrucciones que forman un programa generalmente se escriben en lenguaje


ensamblador (con palabras humanas como ADD o STORE) o el compilador se encarga de
generarlas a partir de un código escrito en un lenguaje de programación de alto nivel.
Raramente el programador programa escribiendo la forma numérica de las instrucciones,
debido a su complejidad.

Instrucciones de entrada y salida

Una instrucción de entrada (o simplemente entrada) consiste en asignar a una o más


variables, uno o más valores (datos) recibidos desde el exterior. Normalmente, los datos son
recogidos desde la entrada estándar (el teclado), pero, también existen otros dispositivos de
entrada (el ratón, el escáner,...).

Una instrucción de salida (o simplemente salida) consiste en llevar hacia el exterior los
valores (datos) obtenidos de la evaluación de una lista de expresiones. Normalmente, los
datos son enviados a la salida estándar (la pantalla), pero, también existen otros dispositivos
de salida (la impresora, el plotter,...).

En un ordinograma, tanto las instrucciones de entrada como las de salida, se escriben igual
que en pseudocódigo, pero, dentro de un romboide:

5.6.1 Instrucciones de asignación

La operación de asignación es el modo de darle valores a una variable se representa con el


operador

la operación de asignación se conoce como instrucción o sentencia de asignación en


lenguaje de programación.

43
Diseño estructurado de algoritmos

La flecha se sustituye en algunos lenguajes con el signo = (BASIC, FORTRAN)

Ejemplos
A 5
La acción de asignar es destructiva ya que el valor que tuviera la variable antes se perdería.

A 21

A 15

A 5

El valor que quedara Serra 5 los otros han desaparecido.


Las acciones de asignación se clasifican según sea el tipo de expresiones en aritméticas,
lógicas y de caracteres.

Asignación aritmética
La expresión que se evalúa es de tipo aritmético
AMN 3+14+8 Se evalúa la expresión y se asigna a la

variable AMN, es decir será igual a 25

TER1 14.5+8 Se evalúan las expresiones en la tercera


acción

TER2 0.75*3.4 Se dividen los resultados de cada expresión


y

MEDIA TER1/TER2 y se asigna a la variable MEDIA,

Asignación lógica
La expresión que se evalúa es de tipo lógico.

Ejemplo

M 8>5 Su valor lógico es verdadero.

Asignación de caracteres
La expresión que se evalúa es de tipo carácter

44
Diseño estructurado de algoritmos

X ’19 de Septiembre de 1991’

5.6.2 Instrucciones de lectura de datos


Esta instrucción lee datos de algún dispositivo de entrada
a) leer NUMERO, HORAS, TASA
¿Cuál será el significado de las instrucciones siguientes?
Leer del terminal los valores NUMERO, HORAS, TASA.
Archivándolos en la memoria si los tres números que se teclean en respuesta a la
instrucción son:

12325, 32, 1200, significaría que se han asignado a las variables esos valores y
equivaldría a la ejecución de las instrucciones.

NUMERO 12325
HORAS 32
TASA 1200

5.6.3 Instrucciones de escritura de resultados

Estas instrucciones se escriben en un dispositivo de salida.


Se asignaron previamente valores a las variables A B C . de manera que:

A 100

B 200

C 300

Se imprimirán o visualizaran en la pantalla los valores 100, 200, 300.


Instrucciones de bifurcación

El desarrollo lineal de un programa se interrumpe cuando se ejecuta una bifurcación pueden


ser según el punto del programa a donde se bifurca hacia delante o hacia atrás.
La bifurcación puede ser condicional o incondicional:
Incondicional: la bifurcación se da sin necesidad del cumplimiento de ninguna
condición.
Condicional: la bifurcación depende del cumplimiento de una determinada condición.

45
Diseño estructurado de algoritmos

5.6.4 Instrucción de ciclos.

Un ciclo de instrucción (también llamado ciclo de fetch-and-execute o ciclo de fetch-


decode-execute en inglés) es el período que tarda la unidad central de proceso (CPU) en
ejecutar una instrucción de lenguaje máquina.

Comprende una secuencia de acciones determinada que debe llevar a cabo la CPU para
ejecutar cada instrucción en un programa. Cada instrucción del juego de instrucciones de
una CPU puede requerir diferente número de ciclos de instrucción para su ejecución. Un
ciclo de instrucción está formado por uno o más ciclos máquina.

Para que cualquier sistema de proceso de datos basado en microprocesador (por ejemplo un
ordenador) o microcontrolador (por ejemplo un reproductor de MP3) realice una tarea
(programa) primero debe buscar cada instrucción en la memoria principal y luego
ejecutarla.

Secuencia de acciones del ciclo de instrucción


Habitualmente son cuatro los eventos o pasos que se llevan a cabo en cada ciclo de
instrucción, los cuales son:

(1) Buscar la instrucción en la memoria principal


Se vuelca el valor del contador de programa sobre el bus de direcciones. Entonces la CPU
pasa la instrucción de la memoria principal a través del bus de datos al Registro de Datos de
Memoria (MDR). A continuación el valor del MDR es colocado en el Registro de
Instrucción Actual (CIR), un circuito que guarda la instrucción temporalmente de manera
que pueda ser decodificada y ejecutado.

(2) Decodificar-- la instrucción


El decodificador de instrucción interpreta e implementa la instrucción. El registro de
instrucción (IR) mantiene la instrucción en curso mientras el contador de programa (PC,
program counter) guarda la dirección de memoria de la siguiente instrucción a ser
ejecutada.
Recogida de datos desde la memoria principal

También se lee la dirección efectiva de la memoria principal si la instrucción tiene una


dirección indirecta, y se recogen los datos requeridos de la memoria principal para ser
procesados y colocados en los registros de datos.

46
Diseño estructurado de algoritmos

(3) Ejecutar la instrucción


A partir del registro de instrucción, los datos que forman la instrucción son decodificados
por la unidad de control. Ésta interpreta la información como una secuencia de señales de
control que son enviadas a las unidades funcionales relevantes de la CPU para realizar la
operación requerida por la instrucción.

(4) Almacenar o guardar resultados


El resultado generado por la operación es almacenado en la memoria principal o enviado a
un dispositivo de salida dependiendo de la instrucción. Basándose en los resultados de la
operación, el contador de programa se incrementa para apuntar a la siguiente instrucción o
se actualiza con una dirección diferente donde la próxima instrucción será recogida.

El ciclo de búsqueda
Los pasos 1 y 2 del ciclo de instrucción se conocen como ciclo de búsqueda (fetch). Estos
pasos son idénticos en todas las instrucciones. El ciclo de búsqueda procesa la instrucción a
partir de la palabra de instrucción, que contiene el código de operación y el operando.

El ciclo de ejecución
Los pasos 3 y 4 del ciclo de instrucción se conocen como ciclo de ejecución. Estos pasos
cambiarán con cada tipo de instrucción.

El primer paso del ciclo de ejecución es el proceso de memoria, en que los datos se
transfieren entre la CPU y el módulo de entrada/salida (I/O). A continuación se produce el
proceso de datos, que usa operaciones matemáticas así como operaciones lógicas en
referencia a los datos. Después tiene lugar el paso de alteraciones centrales, que son una
secuencia de operaciones, por ejemplo una operación de salto. El último paso es una
operación combinada de todos los otros pasos.

5.7 Elementos básicos de un programa.

Palabras reservadas (inicio, fin, si, entonces... etc.)


Idenntificadores (nombres de variables esencialmente)
Caracteres especiales (coma apostrofe, etc.)
Constantes
Variables
Expresiones
Instrucciones

47
Diseño estructurado de algoritmos

5.7.1 Contadores
Un contador es una variable cuyo valor se incremento o decremento, Una forma de
controlar a un bucle es mediante un contador. Los procesos repetitivos son la base del uso
de las computadoras. En estos procesos se necesitan normalmente contar los sucesos o
acciones internas del bucle, como pueden ser los elementos de un fichero de interacciones a
realizar por el bucle.

El contador se muestra en el ejemplo siguiente con la variable CONT.

Este es un diagrama de flujo para un algoritmo que se desea repetir 50 veces.

5.7.2 Acumulador
Un acumulado es una variable cuya misión es almacenar cantidades variables resultantes de
sumas sucesivas.

Realiza la misma función que un contador con deferencia de que el incremento o


decremento de cada suma es variable en lugar de constante como en el caso del contador.

Se representa con la instrucción S S+N, donde N es una variable y no una


constante.
Decisión o selección
Cuando se quiere especificar dos o mas caminos alternativos en un algoritmos se deben
utilizar estructuras de decisión o solución. Una instrucción de decisión o selección evalúa
una condición y en función del resultado de esa condición se bifurca en un determinado
punto.

5.7.3 Interruptores
Un interruptor o conmutador (switsh) a veces se les denomina indicador, o bandera (flag) es
una variable que puede tomar diversos valores a lo largo de la ejecución del programa y que
permite comunicar información de una parte a otra del mismo. Los interruptores pueden
tomar dos valores diferentes 1 y 0 (De ahí su nombre interruptor prendido apagado).

5.7.4 Estilo de Escritura de programas:

Un algoritmo consta de dos componentes:


Una cabecera de programa
Un bloque algoritmo

.
La cabecera de programa es una acción simple que comienza con la palabra algoritmo.

Esta palabra estará seguida por el nombre asignado al programa completo.

48
Diseño estructurado de algoritmos

El bloque es el resto del programa y consta de dos componentes o secciones: las acciones
de declaración u las acciones ejecutables.

Las declaraciones definen o declaran las variables y constantes que tengan nombres.
Las acciones ejecutables: son las acciones que posteriormente deberá realizar el
computador cuando el algoritmo convertido en programa se ejecute.

Cabecera del programa o algoritmo


Todos los algoritmos y programas deben comenzar con una cabecera,
en la que se expresa el identificado o nombre correspondiente con la palabra reservada que
señala el lenguaje.

En los lenguajes de programación la palabra reservada suele ser programa.


Declaración de variables

En esta sección se declaran o describen todas las variables utilizadas en el algoritmo,


listándose sus nombres y especificando sus tipos.

Esta sección comienza con la palabra reservada var (abreviatura de variable) y tiene el
formato
var
Lista de variables-1: tipo-1
.
.
lista de variables- n : tipo- n

Donde cada lista de variables es una variable simple o una lista de variables separadas por
comas y cada tipo es uno de los tipos de datos básicos (entero real char, o boolean)

Declaración de constantes numéricas


En esta sección se declara todas las constantes que tengan nombre su formato es

Const
Pi=3.141592
Tamaño=43
Horas=6.50

49
Diseño estructurado de algoritmos

Declaración de constantes variables carácter


Las constantes de carácter simple y cadenas de caracteres pueden ser declaradas en la
sección del programa const, al igual que las constantes numéricas.

Ejem:
const
Estrella= ’*’
Frase= ’12 de octubre’
Mensaje= ‘hola mi nene’

Documentación
La documentación de un programa es el conjunto de información interna y externa al
programa que facilitara su mantenimiento.

Bibliografía:
Seccion o Articulo web:
Instrucciones www.Alegsa.com de:
http://www.alegsa.com.ar/Dic/instruccion.php

Seccion o Articulo web:


Instrucciones www.carlospes.com de:
http://www.carlospes.com/sintaxis_ordinogramas/instrucciones_de_entrada_y_salida.pp

Seccion o Articulo web:


Elementos bassicos un programa msdn.microsoft.com de:
http://msdn.microsoft.com/es-es/library/z2wkh0tk%28VS.80%29.aspx

Seccion o Articulo web:


Programacion basica www.dei.uc.edu de:
http://www.dei.uc.edu.py/tai20032/programacion.basica/Estructura%20General%20de
%20un%20Programa.htm

Seccion o Articulo web:


Concepto de programa www.tripod.com de:
http://conceptodeprograma.tripod.com/paginaprincipal.htm

Seccion o Articulo web:


Ciclo de Instrucciones www.wikipedia.com:
http://es.wikipedia.org/wiki/Ciclo_de_instrucci%C3%B3nn

50
Diseño estructurado de algoritmos

Luis Co. James Aguilar


-fundamentos de programación, algoritmos y estructura de datos
Ed. Mc Graw Hill

Dale y Lilly
-pascal y estructura de datos
Mc Graw Hill

King Ville
-introducción al lenguaje C.
Mc Graw Hill

Guillermo Levine
Introducción a la computación y programación estructurada.

Esta obra se empezó a elaborar el 22 de agosto del año 2010 y se termino el 21 de


noviembre del año 2010.

51

You might also like