Está en la página 1de 30

Semana N° 3

Material bibliográfico
SEMANA N° 3 (Miércoles 08/03/2023 hasta el martes 14/03/2023)
Diseño del Algoritmo
Resolución de un Problema por un Sistema computacional
Diagrama de flujo o Pseudocódigo
Programación estructurada
Recursos abstractos
Diseño descendente (top-down)
Solución de problemas secuenciales con programación estructurada
Herramientas de programación para la solución de problemas
computacionales
Entidades primitivas para el desarrollo de algoritmos
Tipos de Datos
Expresiones
Operadores y Operandos
Prioridad de los Operadores Aritméticos
Identificadores
¿Qué son los identificadores?
Reglas para formar un identificador
Constantes
Variables
Por su Contenido
Técnicas para la formulación de Algoritmos.
Diagramas de flujo
Recomendaciones para el diseño de Diagramas de Flujo
Pseudocódigo
Ventajas de utilizar un Pseudocódigo a un Diagrama de Flujo
64

DATOS N

¿VÍNCULO N <100?

R1 = N * N si N < 100

R2 = N/2 si N >= 100

RESULTADO R1, R2 (carrizo et al., n.d., # 2,3 )

Diseño del Algoritmo


Las computadoras no son capaces de resolver problemas a menos que se

les dé pasos sucesivos a seguir. Estos pasos sucesivos instruyen a la máquina

para ejecutar las instrucciones. Estas etapas o instrucciones constituyen los

algoritmos.

La información proporcionada al algoritmo constituye su entrada, y la

información producida por el algoritmo constituye su salida.

Las computadoras pueden resolver problemas complejos de manera más

eficiente cuando se dividen en subproblemas que son más fáciles de resolver

que el problema original. Este método consiste en dividir problemas complejos y

convertirlos en problemas simples.

Por lo tanto, el problema de encontrar el área y la longitud de un círculo se

puede dividir en tres preguntas o subpreguntas más simples:


65

Figura: Análisis del algoritmo.

Descomponer el problema original en subproblemas más simples y luego

descomponer estos subproblemas en subproblemas más simples que se pueden

resolver en una computadora se denomina diseño descendente (rop-down

design).

A menudo, los pasos ideados en el primer boceto de un algoritmo están

incompletos y sólo se indican unos pocos pasos (hasta 12 aproximadamente).

Después de la primera descripción, se ampliarán a descripciones más detalladas

con pasos más específicos. Este proceso se llama refinamiento del algoritmo

(stepwise refinement). Para problemas complejos, a menudo se requieren

diferentes grados de refinamiento para obtener algoritmos claros, precisos y

completos. (Pinales Delgado, 2014)


66

El problema de cálculo de la circunferencia y superficie de un círculo se

puede descomponer en subproblemas más simples:

● leer datos de entrada

● calcular superficie y longitud de circunferencia y

● escribir resultados (datos de salida).

Las ventajas más importantes del diseño descendente son:

✔ El problema se comprende más fácilmente al dividirse en partes más

simples denominadas módulos.

✔ Las modificaciones en los módulos son más fáciles.

✔ La comprobación del problema se puede verificar fácilmente.

Tras los pasos anteriores (diseño descendente y refinamiento por

pasos) es preciso representar el algoritmo mediante una determinada

herramienta de programación: diagrama de flujo, pseudocódigo o

diagrama N-S.
67

Figura: Diseños de un algoritmo.

Resolución de un Problema por un Sistema computacional

Una vez que el algoritmo está diseñado y representado gráficamente

mediante una herramienta de programación, este mismo, se debe traspasar a la

fase de resolución práctica del problema.

Esta fase se descompone a su vez en las siguientes subfases:

● Codificación del algoritmo en un programa.

● Ejecución del programa.

● Comprobación del programa.

En el diseño del algoritmo, éste se describe con una herramienta de

programación llamadas:
68

Diagrama de flujo o Pseudocódigo

Sin embargo, el programa que implementa el algoritmo debe ser escrito

en un lenguaje de programación y siguiendo las reglas gramaticales o sintaxis

del mismo. La fase de conversión del algoritmo en un lenguaje de programación

se denomina codificación, ya que el algoritmo en lenguaje de programación se

denomina código. (Joyanes Aguilar, 1993, # 50)

Programación estructurada

La programación estructurada significa escribir un programa de

acuerdo a las siguientes reglas:

● El programa tiene un diseño modular.

● Los módulos están diseñados de modo descendente.

● Cada módulo se codifica utilizando las tres estructuras de control

básicas: secuencia, selección y repetición.

El término programación estructurada se refiere a un conjunto de

técnicas que han ido evolucionando desde los primeros trabajos de Edgar

Dijkstra. Estas técnicas aumentan la productividad del programa reduciendo el

elevado tiempo requerido para escribir, verificar, depurar y mantener los

programas. La programación estructurada utiliza un número limitado de

estructuras de control que minimizan la complejidad de los programas y,

por consiguiente, reducen los errores; hace los programas más fáciles de

escribir, verificar, leer y mantener. (Joyanes Aguilar, 1993, # 51 )

Los programas deben estar dotados de una estructura.


69

La programación estructurada es el conjunto de técnicas que incorporan:

● Recursos abstractos.

● diseño descendente (top-down).

● estructuras básicas.

Recursos abstractos

La programación estructurada se respalda, en los recursos abstractos,

en lugar de los recursos concretos que dispone un determinado lenguaje de

programación.

Descomponer un programa en términos de recursos abstractos -según

Dijkstra- consiste en descomponer una determinada acción compleja en un

número de acciones más simples. Que sean capaces de ser ejecutadas o que

constituyan instrucciones de computadoras disponibles.

Un programa estructurado cumple las siguientes características:

● Posee un solo punto de entrada y uno de salida. (Inicio – Fin)

● Existen caminos desde la entrada hasta la salida que se pueden seguir.

Estas mismas, pasan por todas partes del programa.

● Todas las instrucciones son ejecutables y no existen lazos o bucles

infinitos (sin fin).

A este tipo de programación se le suele denominar también algorítmico.

Dado que el significado de algoritmo es similar al de elaborar una receta. Es un

método, técnica, procedimiento o rutina, que se define como “Un conjunto finito
70

de reglas diseñadas para crear una secuencia de operaciones para resolver un

tipo específico de problemas”.

Así es qué para N. Wirth un programa viene definido por la ecuación:

Algoritmos + Estructuras de Datos = Programas (Carrizo et al., n.d., # 4)

También se define algoritmo como una estrategia que exige precisión en

las instrucciones (descripción de los pasos a seguir). Donde cada instrucción

debe ser:

● Clara y precisa para que no surja ninguna duda en cuanto a su

ejecución.

● Sencilla para que no surja ninguna duda en su comprensión y pueda

ser ejecutada sin dificultad.

Por ejemplo:

Leer dos números, escribirlos, calcular su suma y su producto y

escribirlos.

Paso 1: Leer y escribir números.

Paso 2: Calcular la suma y el producto de los dos números.

Paso 3: Escribir el resultado de la suma y el producto.

El paso siguiente, diseño de algoritmos, va a depender de esta forma de

encarar los problemas y las soluciones.


71

Diseño descendente (top-down)

El diseño descendente (top-down) es el proceso mediante el cual un

problema se descompone en una serie de niveles o pasos sucesivos de

refinamiento (stepwise). (Carrizo et al., n.d., #4) (WIRTH, n.d., #4) Consiste en

determinar una relación entre las sucesivas etapas de estructuración, de modo

que se relacionen unas con otras, mediante entradas y salidas de información.

Es decir, se descompone el problema en etapas o estructuras, de forma

que se puede considerar cada estructura desde dos puntos de vista: ¿Qué

hace? y ¿Cómo lo hace?

Si se considera un nivel n de refinamiento, las estructuras se consideran

de la siguiente manera:
72

Solución de problemas secuenciales con programación

estructurada

Herramientas de programación para la solución de problemas

computacionales

Para implementar la solución de un problema mediante el uso de una

computadora es necesario establecer una serie de pasos que permitan resolver

el problema, a este conjunto de pasos se le denomina algoritmo, el cual debe

tener como característica final la posibilidad de transcribirlo fácilmente a un

lenguaje de programación, para esto se utilizan herramientas de programación,

las cuales son métodos que permiten la elaboración de algoritmos escritos en un

lenguaje entendible.

Un algoritmo, aparte de tener como característica la facilidad para

transcribirlo, debe ser:

● Preciso. Debe indicar el orden en el cual debe realizarse cada uno de

los pasos que conducen a la solución del problema.

● Definido. Esto implica que el resultado nunca debe cambiar bajo las

mismas condiciones del problema, éste siempre debe ser el mismo.

● Finito. No se debe caer en repeticiones de procesos de manera

innecesaria; deberá terminar en algún momento. (Joyanes Aguilar,

1993, # 53)
73

Por consiguiente, el algoritmo es una serie de operaciones detalladas y no

ambiguas para ejecutar paso a paso que conducen a la resolución de un

problema, y se representan mediante una herramienta o técnica O bien, es una

forma de describir la solución de un problema planteado en forma adecuada y de

manera genérica.

Además de esto, se debe considerar que el algoritmo, que posteriormente

se transformará en un programa de computadora, debe considerar las siguientes

partes:

● Una descripción de los datos que serán manipulados.

● Una descripción de acciones que deben ser ejecutadas para manipular

los datos.

● Los resultados que se obtendrán por la manipulación de los datos.

Las herramientas o técnicas de programación que más se utilizan y que

se emplearán para la representación de algoritmos a lo largo del libro son dos:

● Pseudocódigo.

● Diagramas de flujo.

Y alternativamente se presentarán soluciones de problemas donde se

utilicen:

● Diagramas Nassi-Schneiderman (N/S).


74

Entidades primitivas para el desarrollo de


algoritmos

Tipos de Datos

Todos los datos tienen un tipo con el que se asocian. Un dato puede ser

un 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. (Ovideos

Fadul, Marzo de 2004, # 21)

Figura: tipo de datos en la programación

Tipos de Datos Simples

✔ Datos Numéricos: Permiten representar valores escalares de

forma numérica, esto incluye a los números enteros y los reales (decimales del

tipo flotante). 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).


75

✔ Datos Alfanuméricos (String): Es una secuencia de caracteres

alfanuméricos que permiten representar valores identificables de forma

calificativa (describiendo al objeto). 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 ellos. (Joyanes Aguilar, 1993).

Ejemplo:

“Instituto Superior Politécnico Córdoba”

“2023”

Expresiones

Las expresiones son combinaciones de constantes, variables, símbolos

de operación, paréntesis y nombres de funciones especiales.

Por ejemplo:

A + (b + 3) / c
76

Cada expresión toma un valor que se determina 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

datos que manipulan, se clasifican las expresiones en:

● Aritméticas

● Relacionales

● Lógicas

Operadores y Operandos

Operadores: Son elementos que relacionan de forma diferente, los

valores de una o más variables y/o constantes. Es decir, los operadores nos

permiten manipular valores.

Figura: tipo de operadores.


77

Operadores Aritméticos: Los operadores aritméticos permiten la

realización de operaciones matemáticas con los valores (variables y

constantes).

Los operadores aritméticos pueden ser utilizados con tipos de datos

enteros o reales (decimales).

Si ambos son enteros, el resultado es entero; si alguno de ellos es real, el

resultado es real.

Ejemplos:

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.

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

orden.
78

1. ^ (Exponenciación)

2. * / Mod (Multiplicación, división, módulo)

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 4 + 10 = 14

23 * 2 / 5 = 9.2 46 / 5 = 9.2

3 + 5 * (10 - (2 + 4)) = 23 3 + 5 * (10 - 6) = 3 + 5 * 4 = 3 + 20 = 23

Operadores Relacionales: Se utilizan para establecer una relación entre

dos valores.

Compara estos valores entre sí 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.


79

Ejemplos:

Si a = 10 b = 20 c = 30

Operadores Lógicos: Estos operadores se utilizan para establecer

relaciones entre valores lógicos.

Estos valores pueden ser el resultado de expresiones relacionales.


80

Ejemplos:

Prioridad de los Operadores Lógicos

Not

And

Or

Prioridad de los Operadores en General

1. ( )

2. ^

3. * / Mod Not

4. +, -, And

5. >, <, > =, < =, < >, =, Or


81

Ejemplos:

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

Identificadores

Antes de analizar cada herramienta utilizada para representar un

algoritmo para la solución de un problema, se determinará cuáles son los

identificadores utilizados en el algoritmo.

¿Qué son los identificadores?

Los identificadores son nombres asignados a objetos, que pueden ser

considerados variables o constantes, que intervienen en el proceso que se

realiza para resolver un problema, por lo que es necesario determinar qué

características tienen. (Joyanes Aguilar, 1993)

Para establecer los nombres de los identificadores se deben obedecer

ciertas reglas establecidas por cada lenguaje de programación, en el presente

caso se establecen vagamente de acuerdo al problema a resolver, no siguen


82

ninguna regla, generalmente una o más letras, comienza con el nombre de la

variable que representa el objeto a reconocer.

Así, los identificadores representan datos del programa (constantes,

variables, tipo de datos). Un identificador es una serie de caracteres que

identifica una ubicación en la memoria de una computadora, permitiéndonos

acceder a su contenido.

Ejemplo:

Nombre

Num_hrs

Calif2

Reglas para formar un identificador

✔ Debe comenzar con una letra, 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

Los identificadores se clasifican como constantes cuando el valor

asignado al identificador no cambia durante la ejecución o resolución de

problemas. Por ejemplo, en el problema de utilizar el valor de PI, si el lenguaje

utilizado para escribir el programa y ejecutarlo en la computadora no lo define,


83

se puede configurar continuamente configurando un identificador llamado PI y

asignándole el valor correspondiente, como sigue:

PI = 3.1416.

Asimismo, se pueden asignar valores constantes a otros identificadores

según lo requiera el algoritmo que se está diseñando.

Variables

Es un espacio en la memoria de la computadora que permite que los

datos se almacenen temporalmente durante la ejecución de un proceso; su

contenido se puede cambiar durante la ejecución del programa. Para identificar

una variable en la memoria de la computadora, es necesario darle un nombre

por el cual podamos identificarla en un algoritmo.

Ejemplo:

area = pi * radio ^ 2

Las variables son: el radio, el área y la constate es pi


84

Figura : Clasificación de variables

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.15 pi = 3.1416 costo = 2500

Variables Lógicas: Son aquellas que solo pueden tener dos valores

(Verdadero o Falso) estos representan el resultado de una comparación entre

otros datos. (Ovideos Fadul, Marzo de 2004, # 21)

Verdadero (true) Falso (false)


85

Variables Alfanuméricas: Están formadas por caracteres alfanuméricos

(letras, números y caracteres especiales). (Ovideos Fadul, Marzo de 2004, #

21)

Ejemplo:

letra = ’a’ apellido = ’López’ dirección = ’Av. Libertad #190’

Por su Uso

Variables de Trabajo: Una variable que recibe el resultado de una

operación matemática completa, generalmente utilizada en programas.

Ejemplo:

suma = a + b / c

Contadores: Se utilizan para realizar un seguimiento del número de

veces que se realiza una acción o se cumple una condición. Por lo general, se

incrementa uno a la vez.

Ejemplo:

c =c+1 (suma al valor “c”, una unidad y lo vuelve a devolver en la

misma variable)

Acumuladores: Forma que adopta una variable para contener la suma

acumulativa de una serie de valores que se leen o calculan de forma

incremental.

Ejemplo

acum = acum + valor (suma el valor de una operación y lo vuelve a

acumular en la misma variable)


86

Técnicas para la formulación de Algoritmos

Las dos herramientas utilizadas comúnmente para diseñar algoritmos son:

● Diagrama de Flujo

● Pseudocódigo

Diagramas de flujo
Un diagrama de flujo es una herramienta que le permite representar

visualmente las acciones requeridas para resolver un problema determinado y el

orden en que se deben realizar esas acciones. Por lo tanto, un diagrama de flujo

es una representación gráfica de los pasos o procesos que se deben realizar

para resolver un problema dado de manera secuencial y lógica a través de

símbolos especiales. (Ovideos Fadul, Marzo de 2004, # 35)

Los diagramas de flujo juegan un papel vital en la programación de

problemas porque ayudan en la comprensión de problemas complejos,

especialmente aquellos en los que el proceso es largo; por lo general, los

diagramas de flujo se dibujan antes de comenzar a escribir el código fuente, que

luego se ingresa en una computadora.

Los diagramas de flujo facilitan la comunicación entre programadores y

usuarios, además de permitir una detección más rápida de errores lógicos que

pueden ocurrir al implementar algoritmos.

Un diagrama de flujo es una representación gráfica de un algoritmo.

(Ovideos Fadul, Marzo de 2004, # 35)


87

Esta representación gráfica ocurre cuando varios símbolos (que

representan diferentes procesos en una computadora) se relacionan entre sí

mediante líneas que indican el orden en que deben ejecutarse los procesos.

Los símbolos utilizados han sido normalizados por el instituto

norteamericano de normalización (ANSI).

Figura : símbolos utilizados en los diagramas de flujo y su significado

En el ejemplo, se puede observar la solución del diagrama de flujo para

determinar el volumen de una caja de dimensiones “a”, “b” y “c” como se

muestra en la figura:
88

Figura : diagrama de flujo para el cálculo de volumen de un cubo.


89

Recomendaciones para el diseño de

Diagramas de Flujo

● Usar solamente líneas de flujo horizontales y/o verticales.

● Evitar el cruce de líneas utilizando los conectores.

● Usar conectores solo cuando sea necesario.

● No dejar líneas de flujo sin conectar.

● Trazar los símbolos de manera que se puedan leer de arriba hacia

abajo y de izquierda a derecha.

● Todo texto escrito dentro de un símbolo deberá ser escrito claramente,

evitando el uso de muchas palabras.

Pseudocódigo
No hay duda de que en el mundo de la programación, el pseudocódigo es

una de las herramientas de diseño para resolver problemas informáticos más

famosas. Esta herramienta te permite trasladar la solución de un problema casi

directamente a un lenguaje de programación específico. El pseudocódigo es una

serie de pasos detallados y claros para resolver un problema.

Es una mezcla de programación y lenguaje (español, inglés o cualquier

otro).

Se utiliza en programación estructurada para diseñar programas.

Esencialmente, el pseudocódigo se puede definir como un lenguaje de

especificación de algoritmos.
90

Representa los pasos que debe seguir un algoritmo para resolver un

problema dado. El pseudocódigo utiliza palabras que indican el procedimiento a

realizar. (Pinales Delgado, 2014,# 134 )

La conveniencia de transferir el pseudocódigo casi directamente a la

computadora ha llevado a muchos programadores a implementar programas

directamente en la computadora, lo que se desaconseja encarecidamente,

especialmente si uno no tiene la experiencia suficiente para emprender tal

empresa. Porque pueden cometer errores típicos con un poco de experiencia

acumulada en la resolución de diferentes problemas.

Por ejemplo, el pseudocódigo para determinar el volumen de una caja de

dimensiones “a”, “b” y “c” se puede establecer de la siguiente forma:

Como se puede ver, se establece de forma precisa la secuencia de los

pasos por realizar; además, si se le proporciona siempre los mismos valores a

las variables “a”, “b” y “c” el resultado del volumen será el mismo y, por

consiguiente, se cuenta con un final.


91

Ventajas de utilizar un Pseudocódigo a un

Diagrama de Flujo

● Ocupa menos espacio en una hoja de papel.

● Permite representar en forma fácil operaciones repetitivas complejas.

● Es muy fácil pasar de pseudocódigo a un programa en algún lenguaje

de programación.

● Si se siguen las reglas se puede observar claramente los niveles que

tiene cada operación.

Diagramas estructurados
(Nassi-Schneiderman)
Un diagrama de estructura N-S, también conocido como diagrama de

Chapin, es como un diagrama de flujo en el que se omiten las flechas de

conexión y los cuadros son continuos. Las acciones secuenciales se pueden

escribir en cuadros consecutivos, al igual que un diagrama de flujo, se pueden

escribir diferentes acciones en un solo cuadro.

Estructuras Algorítmicas

Una estructura del tipo algorítmica, es un conjunto de métodos de trabajo

que nos permiten realizar ciertos procesos a través de la operación de variables,

llevándonos así a resolver problemas. Estas estructuras se clasifican según su

complejidad: (Pinales Delgado, 2014, # 27,28)

También podría gustarte