Está en la página 1de 33

CONALEP 058 “DON JUAN OSORIO

LOPEZ”

MATERIAL DIDÁCTICO

ANTOLOGIA:

PROGRAMACIÓN ESTRUCTURADA

SIGLEMA:

PRES-02

DOCENTE:

LIC. FERNANDO ESCOTO GUTIÉRREZ

GRUPO:

EKIN18-301

PERIODO:

AGOSTO 2023- ENERO 2024

COATZACOALCOS, VER. A 11 DE SEPTIEMBRE DEL


2023
DOCENTE: LIC. FERNANDO ESCOTO GUTIERREZ.
ANTOLOGIA: PROGRAMACIÓN
ESTRUCTURADA.
INRODUCCIÓN

La competencia que se adquiere con el desarrollo del módulo, implica la elaboración


programas estructurados, empleando el lenguaje de programación C, para solucionar
problemas elementales de lógica computacional y obtener los elementos necesarios en la
programación de computadoras y dispositivos electrónicos presentes en distintos ámbitos.
El estudio de la programación estructurada permite la escritura de programas fáciles de leer
y modificar, aplicables a diversos contextos, pero en particular al desarrollo de funciones en
dispositivos electrónicos programables tales como los microcontroladores. En un programa
estructurado el flujo lógico se gobierna por estructuras de control secuenciales, repetitivas
y selectivas.
Durante los últimos años, la proliferación del uso de sistemas digitales y el fenomenal
aumento en la complejidad de dichos sistemas, ha impulsado cambios significativos en la
forma de operación empleados; cambios que las carreras tecnológicas fundamentadas en
dispositivos y sistemas electrónicos programables que se deben dominar para realizar
actividades laborales, de manera eficiente y efectiva. Un egresado de esta área, necesita de
bases sólidas que aseguren la comprensión y aplicación del conjunto de técnicas de
programación que han ido evolucionando. Técnicas que aumentan considerablemente la
productividad de programas computacionales, reduciendo el tiempo requerido para
escribir, verificar, depurar y mantener a los mismos. La programación estructurada utiliza
un número limitado de estructuras de control que minimizan la complejidad de los
problemas y que reducen los errores. Ésta incorpora entre otros elementos: el diseño
descendente, recursos abstractos y estructuras básicas. Por ello, las actividades que se
plantean en forma individual o en equipo, para el alumno, serán parte esencial de su
formación, pues buscan asegurar habilidades básicas del área tecnológica y, a la vez, crear
un ambiente que le lleve a adquirir una cultura de trabajo individual y la disposición para
trabajar colaborativamente.
Dado la naturaleza de formación integral, el módulo también fomenta en el alumno el
desarrollo de las competencias genéricas tales como la interpretación y emisión de
mensajes pertinentes en distintos contextos mediante el uso de medios, códigos y
herramientas apropiados para el desarrollo de algunos temas, estableciendo una postura
personal sobre los temas abordados e identificando su relevancia general en su formación,
considerando otros puntos de vista de manera crítica y reflexiva, y manteniendo relaciones
interpersonales positivas con sus maestros y compañeros de grupo; mostrando una actitud
respetuosa hacia la interculturalidad y la diversidad de creencias, valores, ideas y prácticas
sociales; desarrollando habilidades matemáticas al manejar el sistema binario y las
operaciones que se realizan; desarrollando innovaciones y proponiendo soluciones a
problemas a partir de métodos establecidos en este campo específico de la electrónica.

1
DOCENTE: LIC. FERNANDO ESCOTO GUTIERREZ.
ANTOLOGIA: PROGRAMACIÓN
ESTRUCTURADA.
Unidad de aprendizaje: Generación de Pseudocódigos.
Resultado de aprendizaje: 1.1 Desarrolla la lógica de programas computacionales,
mediante la creación de algoritmos.

A. Desarrollo del procedimiento para tratar problemas por computadora.


Las fases y creación de un programa son las siguientes:
• Entender el problema
• Hacer análisis del mismo
• Programar el modelo de solución propuesto
• Codificarlo
• Cargarlo en la computadora para su ejecución y ajuste
• Darle mantenimiento a lo largo de su vida útil

DEFINICIÓN DEL PROBLEMA


Especificar con claridad cada uno de los componentes estructurales del sistema, proponer
un modelo de solución.

Convertirlo en un programa de computadora


Pseudocódigo
Estructura de control Estructura de datos
Lenguaje de programación

Lenguaje de programación
Son lenguajes utilizados para escribir programas de computadoras que pueden ser
entendidos por ellas. Se clasifican en tres grandes categorías:
• Maquina
• Bajo nivel (Ensamblador)
• Alto nivel

Lenguaje maquina: Son aquellas cuyas instrucciones son directamente entendibles por la
computadora y no necesitan traducción posterior para que la CPU pueda comprender y
ejecutar el programa.
Las instrucciones en este, se expresan en términos de la unidad de memoria más pequeña,
el bit (digito binario 0 o bien 1) en esencia una secuencia de bits que especifican la operación
y las celdas de memoria implicadas en una operación.

2
DOCENTE: LIC. FERNANDO ESCOTO GUTIERREZ.
ANTOLOGIA: PROGRAMACIÓN
ESTRUCTURADA.
Lenguaje de Bajo nivel (ensamblador): Son generalmente dependientes de la máquina:
dependen de un conjunto de instrucciones específicas de la computadora. En este lenguaje
las instrucciones se escriben en códigos alfabéticos conocidos como nemotécnicos.
Lenguaje de Alto nivel: son aquellos en las que las instrucciones o sentencias a la
computadora son escritas con palabras similares a los lenguajes humanos, lo que facilita la
escritura y la fácil comprensión por el programador.

Características de los lenguajes de programación

• Los lenguajes de programación son transportables: un programa escrito en un


lenguaje de alto nivel se puede escribir con poca o ninguna modificación en
diferentes tipos de computadoras.
• Son independientes de la máquina: las sentencias del programa no dependen del
diseño del hardware de una computadora específica. No son entendibles
directamente por la máquina. Necesitan ser traducidos a instrucciones en el
lenguaje máquina que la computadora entienda, los programas que realizan estas
traducciones se llaman compiladores. Los programas escritos en un lenguaje de alto
nivel se llaman programa fuente.
• El compilador traduce el programa fuente en un programa llamado programa
objeto. Este programa objeto se utiliza en la fase de ejecución del programa. El
proceso de traducción de un programa fuente se denomina compilación y tras la
fase de enlace se obtiene un programa ejecutable directamente por la
computadora.

DEFINICIÓN DE ALGORITMOS
Un algoritmo es una lista de instrucciones para realizar algún proceso, un algoritmo describe
el método mediante el cual se realiza una tarea, consiste en una secuencia de instrucciones,
las cuales, realizadas adecuadamente, dan lugar al resultado deseado.
El término algoritmo es en parte similar a los términos: receta, proceso, método, técnica,
procedimiento, rutina, etc. A demás de ser un conjunto finito de reglas que dan lugar a una
secuencia de operaciones para resolver un tipo específico de problema.

Condiciones que deben cumplir un algoritmo:

1. Finito. Un algoritmo tiene que acabar siempre tras un número finito de pasos. Un
procedimiento que tiene todas las características de un algoritmo salvo que posiblemente
falle a su finitud puede ser llamado método de cálculo).
2. Definilidad. Cada paso debe definirse de modo preciso; las acciones a realizar han de
estar especificadas para cada caso rigurosamente y sin ambigüedad.
3. Conjunto de entradas. Debe existir un conjunto específico de objetos, cada uno de los
cuales constituye los datos iniciales de un caso particular de un problema que reserve el
algoritmo. A este conjunto se le llama conjunto de entrada de algoritmo.
3
DOCENTE: LIC. FERNANDO ESCOTO GUTIERREZ.
ANTOLOGIA: PROGRAMACIÓN
ESTRUCTURADA.
4. Conjunto de salida. Debe existir un conjunto especificado de objetos, cada uno de los
cuales constituye la salida o respuesta que debe tener el algoritmo para los diferentes casos
particulares del problema.
5. Efectividad. Un algoritmo debe ser efectivo. Esto significa que todas las operaciones a
realizar en el algoritmo deben ser lo bastante básicas para poder ser efectuadas de modo
exacto en un lapso de tiempo finito por el procesador que ejecute el algoritmo.

Diseño de algoritmos
En la etapa de diseño, se determina como hace el programa la tarea solicitada, las dos
herramientas más comunes utilizadas para diseñar algoritmos son: pseudocódigos y
diagramas de flujo.

Ejemplo: Algoritmo para cambiar una llanta.

Pseudocódigo Diagrama de Flujo


1. Inicio
2. Levantar el carro con el gato.
3. Quitar los tornillos
4. Quitar la llanta
5. Poner la llanta de refacción
6. Apretar los tornillos
7. Bajar el gato
8. Fin

4
DOCENTE: LIC. FERNANDO ESCOTO GUTIERREZ.
ANTOLOGIA: PROGRAMACIÓN
ESTRUCTURADA.
DEFINICIÓN DE LENGUAJES ALGORITMICOS
Los algoritmos pueden describirse utilizando diversos lenguajes, cada uno de estos
lenguajes permiten describir los pasos con mayor o menor detalle.
La clasificación de los lenguajes para algoritmos puede enunciarse de la siguiente manera:
❖ Lenguaje natural
❖ Lenguaje de diagrama de flujo
❖ Lenguaje natural de programación
❖ Lenguaje de programación de algoritmos

Lenguaje natural: es aquel que se escribe en español, para nuestro caso, los pasos a seguir
utilizando un vocabulario cotidiano. Se le conoce como lenguaje jerga cuando se utilizan
términos especializados de una determinada ciencia, profesión o grupo.
Lenguaje de diagrama de flujo: es aquel que se vale de diversos símbolos para representar
las ideas o acciones a desarrollar. Es útil para organizar las acciones o pasos de un algoritmo,
pero requiere de etapas posteriores para implementarse en un sistema de cómputo.
Lenguaje natural de programación: Son aquellos que están orientados a la solución de
problemas que se definen de una manera precisa. Generalmente son aplicados para la
elaboración de fórmulas o métodos científicos.
Tienen las siguientes características:
✓ Evita la ambigüedad
✓ Son precisos y bien definidos
✓ Utiliza términos familiares al sentido común
✓ Elimina instrucciones innecesarias

DIAGRAMAS DE FLUJO
Un diagrama de flujo presenta generalmente un único punto de inicio y un único punto de
cierre, aunque puede tener más, siempre que cumpla con la lógica requerida.
Las siguientes son acciones previas a la realización del diagrama de flujo:
Identificar las ideas principales al ser incluidas en el diagrama de flujo. Deben estar
presentes el autor o responsable del proceso, los autores o responsables del proceso
anterior y posterior y de otros procesos interrelacionados, así como las terceras partes
interesadas.
• Definir qué se espera obtener del diagrama de flujo.
• Identificar quién lo empleará y cómo.
• Establecer el nivel de detalle requerido.
• Determinar los límites del proceso a describir.
5
DOCENTE: LIC. FERNANDO ESCOTO GUTIERREZ.
ANTOLOGIA: PROGRAMACIÓN
ESTRUCTURADA.
Los pasos a seguir para construir el diagrama de flujo son:

• Establecer el alcance del proceso a describir. De esta manera quedará 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 título al diagrama y verificar que esté completo y describa con exactitud
el proceso elegido.

6
DOCENTE: LIC. FERNANDO ESCOTO GUTIERREZ.
ANTOLOGIA:PROGRAMACIÓN ESTRUCTURADA.

SIMBOLOGÍA UTILIZADA EN UN DIAGRAMA DE FLUJO

7
DOCENTE: LIC. FERNANDO ESCOTO GUTIERREZ.
ANTOLOGIA: PROGRAMACIÓN
ESTRUCTURADA.
FASES PARA EL DESARROLLO DE PROGRAMAS.
1. SOLUCIÓN DE PROBLEMAS

Se podría considerar la programación como el conjunto de actividades y operaciones


realizadas por el personal informático tendentes a instruir a la máquina para que pueda
realizar las funciones previstas en el algoritmo. La programación se manifiesta en los
programas.
El desarrollo de un programa abarca diferentes etapas, de las cuales la escritura puede ser
la menos significativa.
La primera etapa al escribir un programa es la definición del problema. Una vez definido el
problema se puede diseñar la solución. El diseño general elegido se desarrolla
posteriormente en forma algorítmica; un método muy utilizado para el desarrollo, es el
método arriba-abajo (top-down), que consiste en partir de una idea general y definir cada
paso posterior con más detalle hasta llegar a la resolución del problema. En esta
descomposición de la idea general, se suele recurrir, a veces, a algoritmos normalizados.
Tras diseñar el algoritmo, se pasa a la escritura en un lenguaje de programación. El proceso
de escribir las sentencias reales de un lenguaje de programación se denomina codificación.
Es importante no realizar la codificación hasta tanto el algoritmo no este prácticamente
definido. La codificación es una parte de la programación.
Una vez codificado el programa, se ejecuta y se comprueban sus errores. La operación de
detectar y corregir errores se denomina depuración. Las comprobaciones sucesivas del
programa permitirán detectar la presencia de errores, pero no detectaran su ausencia, ya
que pueden existir otros errores que no se hayan encontrado por no haberse probado. Tras
la depuración final del programa y la ejecución sin errores, es preciso documentar el
programa. Es necesaria una documentación interna con comentarios convenientes a lo
largo del programa que permitan ayudar a futuras modificaciones, y documentación
externa basada en la descripción completa de algoritmo, organigrama, tablas de decisión,
etc.
La vida del programa se continúa con la fase de mantenimiento, que consiste en las
operaciones necesarias para mantener el programa al día, es decir, posibilitar que el
programa cumpla sus objetivos pese a las variantes o modificaciones que sus datos,
acciones, etc., pueden sufrir con el paso del tiempo.
2. ANÁLISIS DE LOS DATOS

Para poder definir con precisión el problema se requiere que las especificaciones de entrada
y salida sean descritas con detalles ya que esto es requisito para lograr la solución eficaz.
Una vez que el problema ha sido definido y comprendido, deben analizarse los siguientes
aspectos:

8
DOCENTE: LIC. FERNANDO ESCOTO GUTIERREZ.
ANTOLOGIA: PROGRAMACIÓN
ESTRUCTURADA.

• Los resultados esperados


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

3. DISEÑOS DE SOLUCIÓN
Podemos utilizar la computadora para procesamiento de información como elemento de
interacción como elemento de interacción o de comunicación, muchas clases de programas
educativos normalmente se agrupan bajo el nombre de enseñanza asistida por
computadora “EAC”.
La mayoría de ellos siguen el camino clásico de la instrucción programada. Actualmente
como se mencionó anteriormente hay un movimiento bastante fuerte en que el desarrollo
de programas que promueven el aprendizaje significativo, se procura que el diseño sea
centrado en el estudiante, que ayude al estudiante a resolver problemas, que pueda ser
utilizado en el aprendizaje a distancia.

4. CODIFICACIÓN
Una buena codificación es indispensable para hacer software público. Como no existe
ninguna documentación de diseño del software, toda la documentación de un proyecto se
encuentra inicialmente en el código acompañado de un simple archivo de descripción del
software. Sin embargo si el código es fácilmente comprensible el proyecto va recibiendo
cada vez más contribuciones donde finalmente se incluye un proyecto de documentación.
Son todos los comentarios, referencias desde que se dio el problema hasta que se encontró
la solución.
a) documentación interna, es el encabezado, descripción, declaración del problema, son
todos los comentarios que puedan llegar a servir dentro del código fuente.
b) documentación externa, son los manuales que se hacen para una mejor ejecución del
programa, ahí se explicara cómo usar el programa.

5. PRUEBA Y DEPURACIÓN
Una vez que se ha obtenido el programa ejecutable, este es sometido a pruebas a fin de
determinar si resuelve el problema planteado en forma satisfactoria. Las pruebas que se le
aplican son de diversa índole y generalmente dependen del tipo de problema que se está
resolviendo. Comúnmente se inicia la prueba de un programa introduciendo datos válidos,
inválidos e incongruentes y observando cómo reacciona en cada ocasión.

9
DOCENTE: LIC. FERNANDO ESCOTO GUTIERREZ.
ANTOLOGIA: PROGRAMACIÓN
ESTRUCTURADA.
El proceso de depuración consiste en localizar los errores y corregirlos en caso de que estos
existan. Si no existen errores, puede entenderse la depuración como una etapa de
refinamiento en la que se ajustan los detalles para optimizar el desempeño del programa.

6. DOCUMENTACIÓN
Uno de los problemas más comunes en todas las organizaciones es creer que la
documentación del nuevo sistema nos resolverá todos nuestros problemas dentro de el que
podamos tener, en cuanto al manejo del mismo, esto es cierto muy parcialmente pues las
documentaciones de sistemas que se conocen son desde el punto de vista operativo
automatizado y técnico.
Al sacar un manual de documentación, donde se habla de las acciones del sistema dentro
de la computadora, descuidamos todas las actividades que se realizan antes y después de
cada acción específica y el sistema puede comenzar a fallar, empiezan a no tener
concordancia con la información que maneja, empieza a faltar documentación para nutrir
los procesos de este mismo.
Entonces qué es lo que pasa, que cuando hablamos de la documentación del sistema,
tendremos que pensar que debe ser en un plan estructurado o consulta rápida para resolver
cualquier duda en cuanto a las funciones creadas por el mismo sistema, por lo anterior el
manual de documentación del sistema deberá contener las funciones del puesto, los
métodos de operación, los procedimiento relacionados y las políticas aplicables.
Debido a que el programa resultante en esta etapa se encuentra totalmente depurado (sin
errores), se procede a la utilización para resolver problemas del tipo que dio origen a su
diseño.
EN viste de que esta utilización no podrá ser supervisada en todas las ocasiones por el
programador, debe crearse un manual o guía de operación que indique los pasos a seguir
para utilizar este programa.

7. MANTENIMIENTO DE LOS PROGRAMAS


Después de que los programas han sido verificados, probados e implantados, se les debe
seguir dando mantenimiento. Las rutinas de mantenimiento variarán de acuerdo con el tipo
de complejidad de la tecnología de la tecnología. Los fabricantes o proveedores suelen
indicar en muchos productos el programa o calendario de mantenimiento requerido. El
mantenimiento también puede ser realizado por el fabricante o el proveedor como parte
del acuerdo de compra.
A los sistemas se les debe dar mantenimiento para asegurar que continúen operando en el
nivel mostrado durante la etapa de prueba. Si los sistemas se deterioran, existe el riesgo de
que no se desempeñen conforme a los estándares requeridos. Puede ser necesario instalar
sistemas de monitoreo o prueba para asegurar que las necesidades de mantenimiento sean

10
DOCENTE: LIC. FERNANDO ESCOTO GUTIERREZ.
ANTOLOGIA: PROGRAMACIÓN
ESTRUCTURADA.
identificadas y satisfechas cuando resulte necesario. Cuando los sistemas son de uso
prolongado, se puede establecer un mecanismo para recibir retroalimentación de los
usuarios como otra forma de determinar las necesidades de mantenimiento y modificación.
Cuando se realicen las modificaciones a los programas como resultado de ejercicios de
mantenimiento o actualización, puede ser necesario promover rondas adicionales de
verificación y prueba del sistema para asegurarse que sigan cumpliendo con las normas
exigidas.

11
DOCENTE: LIC. FERNANDO ESCOTO GUTIERREZ.
ANTOLOGIA: PROGRAMACIÓN
ESTRUCTURADA.
B. DISEÑO DE ELEMENTOS DE PROGRAMAS DESARROLLADOS POR COMPUTADORA.
1. TIPOS DE DATOS

Todos los datos tienen un tipo asociado con ellos. Un dato puede ser un simple carácter, tal
como ´b´, un valor entero tal como 35. El tipo de dato determina la naturaleza del conjunto
de valores que puede tomar una variable.

Tipos de datos Simples


✓ Datos numéricos: permiten representar valores escalares de forma numérica, esta
incluye a los números enteros y los reales. Este tipo de datos permiten realizar
operaciones aritméticas comunes.
✓ Datos lógicos: son aquellos que solo pueden tener dos valores (cierto o falso) ya que
representan el resultado de una comparación entre otros datos (numéricos o
alfanuméricos).
✓ Datos alfanuméricos: es una secuencia de caracteres alfanuméricos que permiten
representar valores identificables de forma descriptiva, esto incluye nombres de
personas, direcciones, etc. Es posible representar números como alfanuméricos,
pero estos pierden su propiedad matemática, es decir, no es posible hacer
operaciones con ellas.

Operadores y operandos
• Operadores: son elementos que relacionan de forma diferente los valores de una o
más variables y/o constantes.

12
DOCENTE: LIC. FERNANDO ESCOTO GUTIERREZ.
ANTOLOGIA: PROGRAMACIÓN
ESTRUCTURADA.

✓ Operadores aritméticos: permiten la realización de operaciones matemáticas con


los valores (variables y constantes). Pueden ser utilizados con tipos de datos enteros
o reales. Si ambos son enteros, el resultado es entero; si alguno de ellos es real, el
resultado es real.

Expresiones
Las expresiones son combinaciones de constantes, variables, símbolos de operaciones,
paréntesis y nombres de funciones especiales.
Cada expresión toma un valor que se determina tomando los valores de las variables y
constantes implicados y la ejecución de las operaciones indicadas.
Una expresión consta de operadores y operandos. Según sea el tipo de datos que
manipulan, se clasifican las expresiones en:
• Aritméticas
• Relacionales
• Lógicas

Ejemplos:
Expresión Resultado
7/2 3.5
12 mod 7 5
4+ 2 * 5 14
Prioridad de los operadores aritméticos:
• Todas las expresiones entre paréntesis se evalúan primero. Las expresiones con
paréntesis anidados se evalúan de dentro a fuera, el paréntesis más interno se
evalúa primero.

13
DOCENTE: LIC. FERNANDO ESCOTO GUTIERREZ.
ANTOLOGIA:PROGRAMACIÓN ESTRUCTURADA.

• Dentro de una misma expresión los operadores se evalúan en el siguiente orden:


1. ^ Exponenciación
2. *, /, Mod Multiplicación, división, modulo
3. +,- Suma y resta

Los operadores en una misma expresión con igual nivel de prioridad se evalúan de izquierda a
derecha.
Ejemplos:
4+2*5 =14
23*2/5=9.2
3+5*(10-(2+4))=23
3.5+5.09-14.0/40= 5.09
2.1*(1.5+3.0*4.1)= 28.98

Operadores Relacionales:
• Se utilizan para establecer una relación entre dos valores.
• Compara estos valores entre si y esta comparación produce un resultado de certeza o
falsedad (verdadero o falso)
• Los operadores relacionales comparan valores del mismo tipo (numéricos o cadenas)
• Tienen el mismo nivel de prioridad en su evaluación
• Los operadores relacionales tienen menor prioridad que los aritméticos

Operadores relacionales:
> Mayor que
< Menor que
>= Mayor o igual que
<= Menor o igual que
<> Diferente
= Igual

Ejemplos:

Si a=10 b=20 c=30


a + b > c Falso
a - b < c Verdadero
a – b = c Falso
a * b <> c Verdadero

14
DOCENTE: LIC. FERNANDO ESCOTO GUTIERREZ.
ANTOLOGIA:PROGRAMACIÓN ESTRUCTURADA.

Operadores lógicos:
• Estos operadores se utilizan para establecer relaciones entre valores lógicos.
• Estos valores pueden ser resultado de una expresión relacional.

Operadores lógicos
And Y
Or O
Not Negación

Ejemplos:
(a < b) and (b < c)
(10<20) and (20<30)
T and T = T

Prioridad de los operadores Lógicos:


NOT
AND
OR

Prioridad de los operadores en general:


1. ( )
2. ^
3. * , / , Mod, NOT
4. + , - , AND
5. > , < , >= , <= , <>, = , OR

15
DOCENTE: LIC. FERNANDO ESCOTO GUTIERREZ.
ANTOLOGIA:PROGRAMACIÓN ESTRUCTURADA.

Ejemplos: (se realizarán en clase)

a=10 b=12 c=13 d=10

1) ((a > b) or (a < c)) and ((a = c) or (a >= b))

2) ((a >= b) or (a < d)) and ((a >=d) and (c > d))

3) Not (a = c) and (c > b)

16
DOCENTE: LIC. FERNANDO ESCOTO GUTIERREZ.
ANTOLOGIA:PROGRAMACIÓN ESTRUCTURADA.

Identificadores
Los identificadores representan los datos de un programa (constantes, variables, tipos de
datos). Un identificador es una secuencia de caracteres que sirve para identificar una
posición en la memoria de la computadora, que nos permite accesar a su contenido.
Ejemplo: Nombre
Num_hrs
Calif2
Reglas para formar un identificador
• Debe comenzar con una letra (A a Z, mayúsculas o minúsculas) y no deben contener
espacios en blanco.
• Letras, dígitos y caracteres como la subraya ( _ ) están permitidos después del primer
carácter.
• La longitud de identificadores puede ser de hasta 8 caracteres.

Constantes y Variables
Constante: es un dato numérico o alfanumérico que no cambia durante la ejecución del
programa.
Variable: es un espacio en la memoria de la computadora que permite almacenar
temporalmente un dato durante la ejecución de un proceso, su contenido puede cambiar
durante la ejecución del programa. Para poder reconocer una variable en la memoria de la
computadora, es necesario darle un nombre con el cual podamos identificarla dentro de un
algoritmo.

Clasificación de las variables

17
DOCENTE: LIC. FERNANDO ESCOTO GUTIERREZ.
ANTOLOGIA:PROGRAMACIÓN ESTRUCTURADA.

Por su contenido

Variables numéricas: son aquellas en las cuales se almacenan valores numéricos, positivos
o negativos, es decir almacenan números del 0 al 9, signos (+ y -) y el punto decimal.
Ejemplo: IVA=0.16 pi= 3.1416 costo=2500
Variables lógicas: son aquellas que solo pueden tener dos valores (cierto o falso) estos
representan el resultado de una comparación entre otros datos.
Variables alfanuméricas: está formada por caracteres alfanuméricos (letras, números y
caracteres especiales). Ejemplo: letra=´a´ apellido= ´lopez´ dirección= ´Av. Libertad #190´

Por su uso

Variables de Trabajo: variables que reciben el resultado de una operación matemática


completa y que se usan normalmente dentro de un programa.
Contadores: se utilizan para llevar el control del número de ocasiones en que se realiza una
operación o se cumple una condición. Con los incrementos generalmente de uno en uno.
Acumuladores: Forma que toma una variable y que sirve para llevar la suma acumulativa de
una serie de valores que se van leyendo o calculando progresivamente.

Ejemplos de algoritmos (se realizarán en clase):

1. Realizar un algoritmo que lea el principio de un producto y calcule el IVA y despliegue el


total a pagar.
2. Realizar un algoritmo que lea un numero e indique si es par o impar
3. Realizar un algoritmo que lea cinco números y almacene su valor cada uno de ellos en
una variable determinada para obtener la suma total de los cinco números.

18
DOCENTE: LIC. FERNANDO ESCOTO GUTIERREZ.
ANTOLOGIA:PROGRAMACIÓN ESTRUCTURADA.

Estructuras básicas de control.


• Estructura secuencial
• Estructura condicional
• Estructura Repetitiva

Estructura secuencial: 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 así sucesivamente hasta el fin del proceso. En Pseudocódigo una
Estructura Secuencial se representa de la siguiente forma:

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 sé cómo hacerlo.

19
DOCENTE: LIC. FERNANDO ESCOTO GUTIERREZ.
ANTOLOGIA:PROGRAMACIÓN ESTRUCTURADA.

El anterior ejemplo es un sencillo algoritmo de un problema cotidiano dado como muestra


de una estructura secuencial. Ahora veremos los componentes que pertenecen a ella:
Asignación 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 un sumador en un proceso (a a + b)
• De trabajo: Donde puede recibir el resultado de una operación matemática 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 instrucción presenta en pantalla el mensaje escrito entre comillas o el
contenido de la variable. Este proceso se representa, así como sigue:

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 así:

20
DOCENTE: LIC. FERNANDO ESCOTO GUTIERREZ.
ANTOLOGIA:PROGRAMACIÓN ESTRUCTURADA.

DECLARACION DE VARIABLES Y CONSTANTES


La declaración de variables es un proceso que consiste en listar al principio del algoritmo
todas las variables que se usarán, además de colocar el nombre de la variable se debe decir
qué tipo de variable es.

Contador: ENTERO Edad, I: ENTERO


Direccion : CADENA_DE_CARACTERES
Salario_Basico : REAL
Opcion : CARACTER

En la anterior declaración de variables Contador, Edad e I son declaradas de tipo entero;


Salario_Basico es una variable de tipo real, Opcion es de tipo carácter y la variable Direccion
está declarada como una variable alfanumérica de cadena de caracteres.

En el momento de declarar constantes debe indicarse que lo es y colocarse su respectivo


valor. CONSTANTE Pi 3.14159
CONSTANTE Msg “Presione una tecla y continue”
CONSTANTE ALTURA 40

Cuando se trabaja con algoritmos por lo general no se acostumbra a declarar las variables
ni tampoco constantes debido a razones de simplicidad, es decir, no es camisa de fuerza
declarar las variables. Sin embargo, en este curso lo haremos para todos los algoritmos que
realicemos, con esto logramos hacerlos más entendibles y organizados y de paso permite
acostumbrarnos a declararlas ya que la mayoría de los lenguajes de programación (entre
ellos el C++) requieren que necesariamente se declaren las variables que se van a usar en
los programas.

Veamos algunos ejemplos donde se aplique todo lo que hemos visto hasta el momento
sobre algoritmos:

Ejemplo 1: Escriba un algoritmo que pregunte por dos números y muestre como resultado
la suma de estos. Use Pseudocódigo y diagrama de flujos.

21
DOCENTE: LIC. FERNANDO ESCOTO GUTIERREZ.
ANTOLOGIA:PROGRAMACIÓN ESTRUCTURADA.

Ejemplo 2: Escriba un algoritmo que permita conocer el área de un triángulo a partir de la


base y la altura. Exprese el algoritmo usando Pseudocódigo y diagrama de flujos.

Estructura condicional: Las estructuras condicionales comparan una variable contra


otro(s)valor (es), para que en base al 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 tres tipos básicos, las
simples, las dobles y las múltiples.
• Simples: Las estructuras condicionales simples se les conoce como “Tomas de
decisión”. Estas tomas de decisión tienen la siguiente forma:
Pseudocódigo: Diagrama de flujo:

22
DOCENTE: LIC. FERNANDO ESCOTO GUTIERREZ.
ANTOLOGIA:PROGRAMACIÓN ESTRUCTURADA.

Dobles: Las estructuras condicionales dobles 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:
Pseudocódigo: Diagrama de flujo:

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 la condición
Instrucció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 pueden realizar una o más acciones.

• Múltiples: Las estructuras de comparación múltiples, son tomas de decisión


especializadas que permiten comparar una variable contra distintos posibles
resultados, ejecutando para cada caso una serie de instrucciones específicas. La
forma común es la siguiente:

Pseudocódigo: Diagrama de flujo:

23
DOCENTE: LIC. FERNANDO ESCOTO GUTIERREZ.
ANTOLOGIA:PROGRAMACIÓN ESTRUCTURADA.

Estructura Repetitiva: Son operaciones que se deben ejecutar un número repetido de veces.
El conjunto de instrucciones que se ejecuta repetidamente cierto número de veces, se llama
Ciclo, Bucle o Lazo.
Iteración es cada una de las diferentes pasadas o ejecuciones de todas las instrucciones
contenidas en el bucle.

Fases de un Programa Cíclico:


1. Entrada de datos e instrucciones previas
2. Lazo o bucle
3. Instrucciones finales o resto del proceso
4. Salida de resultado

Ejemplo de bucle infinito:

En el flujograma anterior, observa que la flecha que se regresa hacia arriba nos está
indicando que hay que volver a evaluar la expresión. En ese caso como el bucle es infinito,
no se tiene una condición para terminar y se estará haciendo siempre. En el siguiente
ejemplo, ya se agregó una condición, la cual nos permitirá finalizar la ejecución del bucle en
el caso en que la condición se cumpla.

24
DOCENTE: LIC. FERNANDO ESCOTO GUTIERREZ.
ANTOLOGIA:PROGRAMACIÓN ESTRUCTURADA.

Bucles Repetitivos:

A continuación, te muestro tres diseños de estructuras cíclicas: las independientes son


cuando los bucles se realiza uno primero hasta que se cumple la condición y solo en ese
caso se entra al bucle B.

En los ciclos anidados, al entrar a una estructura de repetición, dentro de ella se encuentra
otra. La más interna se termina de realizar y se continúa con la externa hasta que la
condición se cumple.

En los bucles cruzados, los cuales no son convenientes de utilizar, se tiene que iniciamos un
bucle y no se ha terminado cuando empezamos otro, luego utilizamos estructuras goto
(saltos) para pasar al bucle externo y se quedan entrelazados.

Esto puede ocasionar que el programa pierda el control de cuál proceso se está ejecutando
y podamos obtener resultados erróneos. Veamos gráficamente el diseño de estas tres
formas cíclicas:

25
DOCENTE: LIC. FERNANDO ESCOTO GUTIERREZ.
ANTOLOGIA:PROGRAMACIÓN ESTRUCTURADA.

26
DOCENTE: LIC. FERNANDO ESCOTO GUTIERREZ.
ANTOLOGIA:PROGRAMACIÓN ESTRUCTURADA.

Unidad de aprendizaje: Generación de Pseudocódigos.


Resultado de aprendizaje: 1.2 Realiza la estructuración de pseudocódigos, empleando
diagramas de flujo.
A. Desarrollo de estructuras de datos.

Vectores y matrices.
En programación, una matriz o vector (llamado en inglés array) es una zona de
almacenamiento continuo, que contiene una serie de elementos del mismo tipo, los
elementos de la matriz. Desde el punto de vista lógico una matriz se puede ver como un
conjunto de elementos ordenados en fila (o filas y columnas si tuviera dos dimensiones).
En principio, se puede considerar que todas las matrices son de una dimensión, la dimensión
principal, pero los elementos de dicha fila pueden ser a su vez matrices (un proceso que
puede ser recursivo), lo que nos permite hablar de la existencia de matrices
multidimensionales, aunque las más fáciles de imaginar son los de una, dos y tres
dimensiones.
Estas estructuras de datos son adecuadas para situaciones en las que el acceso a los datos
se realice de forma aleatoria e impredecible. Por el contrario, si los elementos pueden estar
ordenados y se va a utilizar acceso secuencial sería más adecuado utilizar una lista, ya que
esta estructura puede cambiar de tamaño fácilmente durante la ejecución de un programa.

Matriz unidimensional con 10 elementos.

Pilas y colas.
Pilas
Una pila representa una estructura lineal de datos en que se puede agregar o quitar
elementos únicamente por uno de los dos extremos. En consecuencia, los elementos de
una pila se eliminan en el orden inverso al que se insertaron. Debido a esta característica,
se le conoce como estructura LIFO (last input, first output). Existen muchos casos prácticos
en los que se utiliza la idea de pila:
Ejemplo; pila de platos, en el supermercado latas. Las pilas con estructuras lineales como
los arreglos, ya que sus componentes ocupan lugares sucesivos en la ED y c/u tienen un
único sucesor/predecesor, con excepción del primero/último.
Definición de Pila:
Una colección de datos a los cuales se les puede acceder mediante un extremo, que se
conoce generalmente como tope.

27
DOCENTE: LIC. FERNANDO ESCOTO GUTIERREZ.
ANTOLOGIA:PROGRAMACIÓN ESTRUCTURADA.

Colas
Una cola es un tipo especial de lista abierta en la que sólo se pueden insertar nodos en uno
de los extremos de la lista y sólo se pueden eliminar nodos en el otro. Además, como sucede
con las pilas, las escrituras de datos siempre son inserciones de nodos, y las lecturas siempre
eliminan el nodo leído.
Este tipo de lista es conocido como lista FIFO (First In First Out), el primero en entrar es el
primero en salir.
El símil cotidiano es una cola para comprar, por ejemplo, las entradas del cine. Los nuevos
compradores sólo pueden colocarse al final de la cola, y sólo el primero de la cola puede
comprar la entrada.
tipoNodo es el tipo para declarar nodos, evidentemente. pNodo es el tipo para declarar
punteros a un nodo. Cola es el tipo para declarar colas.

Es evidente, a la vista del gráfico, que una cola es una lista abierta. Así que sigue siendo muy
importante que nuestro programa nunca pierda el valor del puntero al primer elemento,
igual que pasa con las listas abiertas. Además, debido al funcionamiento de las colas,
también deberemos mantener un puntero para el último elemento de la cola, que será el
punto donde insertemos nuevos nodos.
Teniendo en cuenta que las lecturas y escrituras en una cola se hacen siempre en extremos
distintos, lo más fácil será insertar nodos por el final, a continuación del nodo que no tiene
nodo siguiente, y leerlos desde el principio, hay que recordar que leer un nodo implica
eliminarlo de la cola.
Listas
El problema surge a la hora de hacer un programa al estilo de una agenda. No sabemos a
priori cuántos nombres vamos a meter en la agenda, así que si usamos un array para este
programa podemos quedarnos cortos o pasarnos. Si por ejemplo creamos una agenda con
un array de mil elementos (que pueda contener mil números) y usamos sólo 100 estamos
desperdiciando una cantidad de memoria importante. Si por el contrario decidimos crear
una agenda con sólo 100 elementos para ahorrar memoria y necesitamos 200 nos vamos a
quedar cortos. La mejor solución para este tipo de programas son las listas enlazadas.
En una lista enlazada la memoria se va tomando según se necesita. Cuando queremos
añadir un nuevo elemento reservamos memoria para él y lo añadimos a la lista. Cuando
queremos eliminar el elemento simplemente lo sacamos de la lista y liberamos la memoria
usada.

28
DOCENTE: LIC. FERNANDO ESCOTO GUTIERREZ.
ANTOLOGIA:PROGRAMACIÓN ESTRUCTURADA.

Las listas enlazadas pueden ser simples, dobles o circulares. En este capítulo y el siguiente
vamos a ver sólo las listas simples.
Para crear una lista necesitamos recordar nuestros conocimientos sobre estructuras y
asignación dinámica de memoria. Vamos a desarrollar este tema creando una sencilla
agenda que contiene el nombre y el número de teléfono.
Una lista enlazada simple necesita una estructura con varios campos, los campos que
contienen los datos necesarios (nombre y teléfono) y otro campo que contiene un puntero
a la propia estructura. Este puntero se usa para saber dónde está el siguiente elemento de
la lista, para saber la posición en memoria del siguiente elemento.
Podríamos representar la estructura algo así:
Ahora supongamos que añadimos un elemento a la lista, por ejemplo mis datos:
nombre="Gorka Urrutia", telefono="99 429 31 23" (el teléfono es totalmente falso :-). Lo
primero que debemos hacer es reservar (con la función malloc que ya hemos visto) un
espacio en memoria para almacenar el elemento. Supongamos que se almacena en la
posición 3000 (por decir un número cualquiera). El puntero siguiente debe apuntar a NULL,
ya que no hay más elementos en la lista. El elemento quedaría así:
Ahora añadimos un nuevo elemento: nombre="Alberto López" telefono="99 999 99 99".
Hay que reservar (con malloc) memoria para este nuevo elemento. Vamos a imaginar que
este elemento se guarda en la posición de la memoria número 3420. La lista quedaría así:
Lo primero que debemos hacer es reservar la memoria para el elemento, luego se le
rellenan los datos, se pone el puntero siguiente apuntando a NULL (porque será el último),
y decir al elemento anterior que apunte al elemento que hemos añadido.
Si quisiéramos mostrar en pantalla la lista comenzaríamos por el primer elemento, lo
imprimiríamos y con el puntero siguiente saltaríamos al segundo elemento, y así hasta que
el puntero siguiente apunte a NULL.

Árbol
Las listas ligadas, las pilas y las colas son estructuras de datos lineales. Un árbol es una
estructura de datos no lineal de dos dimensiones, con sus propiedades especiales. Tres
nodos contienen dos o más ligas.
Explicaremos lo árboles binarios; árboles cuyos nodos contienen dos ligas (ninguna, una, o
ambas de las cuáles pueden ser NULL). El nodo raíz es el primer nodo del árbol. Cada liga
del nodo raíz hace referencia a un hijo. El hijo izquierdo es el primer nodo del subárbol
izquierdo, y el hijo derecho es el primer nodo del subárbol derecho .

29
DOCENTE: LIC. FERNANDO ESCOTO GUTIERREZ.
ANTOLOGIA:PROGRAMACIÓN ESTRUCTURADA.

Investigando sobre el tema encontré que los científicos en computación generalmente


dibujan árboles del nodo raíz hacía abajo; exactamente lo contrario a un árbol natural.
En está publicación vamos a crear un árbol binario de búsqueda. Un árbol binario de
búsqueda (sin valores duplicados de nodos) tiene la característica de que los valores de
cualquier subárbol izquierdo son menores que el valor de su nodo padre, y que los valores
de cualquier subárbol derecho son mayores que el valor de su nodo padre.

B. Desarrollo de programación estructurada.

• Estructura secuencial
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 así sucesivamente hasta el fin del proceso.
La estructura secuencial es aquella en la que una acción sigue a otra en secuencia. Las
operaciones se suceden de tal modo que la salida de una es la entrada de la siguiente y así
sucesivamente hasta el fin del proceso. La asignación de esto 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:
1. Simples: Consiste en pasar un valor constante a una variable (a ← 15)
2. Contador: Consiste en usarla como un verificador del número de veces que se realiza un
proceso (a ← a + 1)
3. Acumulador: Consiste en usarla como un sumador en un proceso (a ← a + b)
4. De trabajo: Donde puede recibir el resultado de una operación matemática que involucre
muchas variables (a ← c + b*2/4).

30
DOCENTE: LIC. FERNANDO ESCOTO GUTIERREZ.
ANTOLOGIA:PROGRAMACIÓN ESTRUCTURADA.

• Estructura repetitiva
Hasta ahora hemos empleado estructuras SECUENCIALES y CONDICIONALES. Existe otro
tipo de estructuras tan importantes como las anteriores que son las estructuras
REPETITIVAS. Una estructura repetitiva permite ejecutar una instrucción o un conjunto de
instrucciones varias veces. Una ejecución repetitiva de sentencias se caracteriza por:
- La o las sentencias que se repiten.
- El test o prueba de condición antes de cada repetición, que motivará que se repitan o no
las sentencias.

No debemos confundir la representación gráfica de la estructura repetitiva while (Mientras)


con la estructura condicional if (Si)

Funcionamiento: En primer lugar se verifica la condición, si la misma resulta verdadera se


ejecutan las operaciones que indicamos por la rama del Verdadero. A la rama del verdadero
la graficamos en la parte inferior de la condición. Una línea al final del bloque de repetición
la conecta con la parte superior de la estructura repetitiva. En caso que la condición sea
Falsa continúa por la rama del Falso y sale de la estructura repetitiva para continuar con la
ejecución del algoritmo.
El bloque se repite MIENTRAS la condición sea Verdadera.

Importante: Si la condición siempre retorna verdadero estamos en presencia de un ciclo


repetitivo infinito. Dicha situación es un error de programación, nunca finalizará el
programa.

31
DOCENTE: LIC. FERNANDO ESCOTO GUTIERREZ.
ANTOLOGIA:PROGRAMACIÓN ESTRUCTURADA.

FUENTES BIBLIOGRAFICAS

LIBROS:

• Libro de problemas fundamentos de programación algoritmos, estructuras de datos y


objetos. Luis Joyanes Aguilar. Mc GrawHill, Segunda edición.
• Diseño de algoritmos y su codificación en lenguaje C. Maria Adriana Corona
Nakamura. Maria de los Angeles Acona Valdez. Mc GrawHill.
• Tesina desarrollada en el ITESCO. 2008. Fernando Escoto Gutiérrez.

REFERENCIAS ALECTRONICAS:

• http://www.uaeh.edu.mx/docencia/P_Presentaciones/icbi/asignatura/Cap3PilasColas.
pdf
• http://www.c.conclase.net/edd/?cap=003
• http://www.santiagoapostol.net/srca/cursoc/cursoc22.html
• http://www.codejobs.biz/es/blog/2013/07/02/estructura-de-datos-en-c-
arboles#sthash.XOohkSpT.dpbs
• http://www.ecured.cu/index.php/Estructura_secuencial
• http://www.desarrolloweb.com/articulos/2199.php
• http://www.javaya.com.ar/detalleconcepto.php?codigo=83&inicio
• http://books.google.com.mx/books?id=AZ1ZXBlu9Y8C&pg=PA90&lpg=PA90&dq=diagr
ama+estructuras+repetitiva+en+c&source=bl&ots=YakkrIEZ1G&sig=Cr595o-
9mPeaVGr-8v-
Lxs_WgKU&hl=es&sa=X&ei=3snwU5WlCKi58gGpmIC4Aw&ved=0CGIQ6AEwEg#v=one
page&q=diagrama%20estructuras%20repetitiva%20en%20c&f=false

32

También podría gustarte