Está en la página 1de 25

Fundamentos de Programación

Ing. en Sistemas Computacionales

2. ALGORITMOS

Casi inconscientemente, cotidianamente los humanos efectuamos una serie de pasos,


procedimientos o acciones que nos permiten alcanzar un resultado o resolver un problema.

Esta serie de pasos, procedimientos o acciones, comenzamos a aplicarlos muy temprano en la


mañana cuando, por ejemplo, decidimos tomar un baño, posteriormente cuando pensamos en
desayunar también seguimos una serie de pasos que nos permiten alcanzar un resultado específico:
tomar el desayuno, la historia se repite innumerables veces durante el día. Continuamente seguimos
un conjunto de acciones que nos permiten alcanzar un resultado. Estamos en realidad aplicando un
Algoritmo para resolver un problema.

DEFINICIÓN DE ALGORITMO

Un Algoritmo es un conjunto ordenado y finito de pasos o instrucciones que conducen a la solución


de un problema. La naturaleza de los problemas varía con el ámbito o con el contexto donde están
planteados; así, existen problemas matemáticos, químicos, filosóficos, etc. según esto la naturaleza
de los algoritmos también es variada y no todos ellos pueden ser ejecutados por la computadora.
Aquí consideramos aquellos algoritmos que expresan soluciones usando reglas cuantitativas cuyas
instrucciones pueden ser introducidas en la computadora, a este tipo de algoritmos se denominan
Algoritmos Computacionales.

Formalmente definimos Algoritmo como “un conjunto de pasos, procedimientos o acciones que nos
permiten alcanzar un resultado o resolver un problema”.

ALGORITMOS COTIDIANOS

Muchas veces aplicamos el algoritmo de manera inadvertida, inconsciente o automáticamente. Esto


generalmente se produce cuando el problema que tenemos enfrente lo hemos resuelto con
anterioridad un gran número de veces.

Supongamos que simplemente tenemos que abrir una puerta, lo hemos hecho tantas veces que
difícilmente nos ponemos a enumerar los pasos para alcanzar este objetivo, lo hacemos de manera
automática, lo mismo ocurre cuando queremos subirnos a un automóvil, cuando tenemos que lustrar
nuestros zapatos, cuando nos colocamos el calzado, cuando nos vestimos, cuando tenemos
desafortunadamente que cambiar la llanta de un automóvil o, simplemente cuando queremos tomar
un vaso de agua. Todas estas situaciones son ejemplos de Algoritmos Cotidianos.

Por ejemplo. Algoritmo para beber un vaso con agua tomando en cuenta que se tiene el agua en
una jarra y un vaso.

1. Inicio
2. Tomar el vaso
3. Tomar la jarra que contiene el agua
4. Verter el agua en el vaso
5. Dejar la jarra con el agua en el lugar desde donde se tomó
6. Beber el agua
7. Dejar el vaso en el lugar desde donde se tomó
8. Fin

La ejecución de un algoritmo no debe implicar, normalmente ninguna decisión subjetiva, ni tampoco


debe de hacer preciso el uso de la intuición ni de la creatividad, por tanto se puede considerar que
una receta de cocina es un algoritmo si describe precisamente la forma de preparar un cierto plato,

Elaboró: L.I. Karina Aidee Romero Alvarado


5
Fundamentos de Programación
Ing. en Sistemas Computacionales

proporcionándonos las cantidades exactas que deben utilizarse y también instrucciones detalladas
acerca del tiempo que debe guisarse. Por otra parte, si se incluyen nociones vagas tales como
“poner sal y pimienta al gusto” entonces no se podría llamar algoritmo.

Una aparente excepción a esta regla es que admitiremos como algoritmos unos procedimientos que
se efectúan elecciones aleatorias acerca de lo que hay que hacer en una situación dada.

Por ejemplo. Algoritmo para preparar una taza de café, tomando en cuenta que se tiene agua
caliente, una taza, cuchara, café, crema y azúcar.

1. Inicio
2. Verter agua caliente en la taza
3. Tomar con la cuchara el café
4. Poner el café en la taza
5. ¿Quieres azúcar?
Si 6 No 8
6. Tomar el azúcar con la cuchara
7. Poner el azúcar en la taza
8. ¿Quieres crema?
Si 9 No 11
9. Tomar la crema con la cuchara
10. Poner crema en la taza
11. Revolver
12. Fin

Nota: El algoritmo fue probado repetidas veces y siempre arrojó el mismo resultado.

HISTORIA

La palabra "algoritmo" deriva del nombre latinizado del gran matemático persa Mohamed Ibn
Moussa Al Kow Rizmi (Khowârizmî), el cual recibe el crédito de haber implementado reglas para
realizar sumas, restas, multiplicaciones y divisiones de números decimales paso a paso entre los
años 800 y 825 su obra Quitab Al Jabr Al Mugabala, donde se recogía el sistema de numeración
hindú y el concepto del cero. Fue Fibonacci, el que tradujo su obra al latín y la inició con las
palabras: Algoritmi dicit. Al pasarse el nombre al latín este se convirtió en Algoritsmus, el cual con un
pequeño paso es algoritmo. Euclides, el gran matemático griego (del siglo IV antes de Cristo) que
inventó un método para encontrar el máximo común divisor de dos números, se considera con Al
Kow Rizmi el otro gran padre de la ciencias de los algoritmos o algoritmia.

APLICACION DE LOS ALGORITMOS

Los algoritmos son independientes del lenguaje de programación en que se expresan así como de la
computadora que los ejecuta. En cada problema el algoritmo se puede expresar en un lenguaje
diferente de programación y ejecutarse en una computadora distinta; sin embargo, el algoritmo será
siempre el mismo. Así, por ejemplo, en una analogía con la vida diaria, una receta de un plato de
cocina se puede expresar en español, inglés o francés, pero cualquiera que sea el lenguaje, los
pasos para la elaboración del plato se realizarán sin importar el cocinero.

En la ciencia de la computación y en la programación los algoritmos son más importantes que los
lenguajes de programación o las computadoras. Un lenguaje de programación es solo un medio para
expresar un algoritmo y una computadora es solo un procesador para ejecutarlo. Tanto el lenguaje
de programación como la computadora son los medios para obtener un fin: conseguir que el
algoritmo se ejecute y se efectúe el proceso correspondiente.

Elaboró: L.I. Karina Aidee Romero Alvarado


6
Fundamentos de Programación
Ing. en Sistemas Computacionales

Dada la importancia del algoritmo en la ciencia de la computación, un aspecto muy importante será el
diseño del algoritmo.

El diseño de la mayoría de los algoritmos requiere creatividad y conocimientos profundos. En


esencia, todo problema se puede describir por medio de un algoritmo.

2.1 ANÁLISIS DE PROBLEMAS

ANÁLISIS DE LOS DATOS

Se debe especificar con qué datos se cuentan y cuales se pretenden generar para así determinar los
procesos que se deberán realizar.

MODELO DE SOLUCIÓN

Para poder resolver claramente el problema se puede hacer uso de un modelo de solución donde se
desglosan tres partes muy importantes en la solución del problema: DATOS DE ENTRADA,
PROCESO y DATOS DE SALIDA.

DATOS DE ENTRADA PROCESO DATOS DE SALIDA

Procesos para solucionar el


Datos que se necesitan para Datos que serán la salida, o
problema, por ejemplo los
resolver el problema. sea, los resultados.
cálculos.

Ejemplo 1. Elaborar modelo de solución para calcular el área de un triángulo.

DATOS DE ENTRADA PROCESO DATOS DE SALIDA


Base Area = Base * Altura
Area
Altura 2

Ejercicios

a) Se desea calcular la velocidad de un automóvil en base a la distancia y al tiempo que tarda en


recorrer dicha distancia.
b) Se desea calcular el área de cualquier trapecio.
c) Se desea calcular el área de cualquier círculo.
d) Si un automóvil va a 60 millas/hr y desea recorrer una distancia de 80 km ¿cuánto tiempo le
tomará recorrer dicha distancia?
e) Solicitar el nombre de una persona y mostrarlo al usuario.
f) Se tienen tres calificaciones y se desea calcular y mostrar el promedio de las mismas.
g) El propietario de una casa de cambio desea un programa para convertir pesos a dólares.
h) Se desea calcular el 16% de IVA de cualquier precio y muestre el total del precio más el IVA.
i) Se desea convertir libras a kilogramos y muestre el resultado de la conversión.
j) Mostrar al usuario únicamente tú nombre.
k) Mostrar el nombre de la ciudad que el usuario desee.
l) Se desea un programa que convierta oF a oC y muestre el resultado.
m) El propietario de una casa de cambio desea un programa para convertir dólares a pesos.

Elaboró: L.I. Karina Aidee Romero Alvarado


7
Fundamentos de Programación
Ing. en Sistemas Computacionales

2.2 REPRESENTACIÓN DE ALGORITMOS

DIAGRAMAS DE FLUJO

Representación gráfica para definición, análisis o solución de un problema en la que los símbolos se
utilizan para representar operaciones, datos, flujos, etc.

También se puede decir que es la representación detallada en forma gráfica de cómo deben
realizarse los pasos en la computadora para producir resultados. Esta representación gráfica se da
cuando varios símbolos (que indican diferentes procesos en la computadora), se relacionan entre sí
mediante líneas que indican el orden en que se deben ejecutar los procesos. Los símbolos utilizados
han sido normalizados por el instituto norteamericano de normalización (ANSI).

Esta es una de las técnicas de representación de algoritmos más antigua y a la vez más utilizada. Es
la representación gráfica para definición, análisis o solución de un problema en la que los símbolos
se utilizan para representar operaciones, datos, flujos, etc. Un diagrama de flujo utiliza símbolos
estándar mostrados a continuación:

Símbolos Función

Inicio/Fin. Representa el comienzo <<inicio>> y el final <<fin>>, de un


programa. Puede representar también una parada o interrupción
programada que sea necesario realizar en un programa.

Entrada/Salida. Cualquier tipo de introducción de datos en la memoria


desde los periféricos, <<entrada>>, o registro de la información procesada
en un periférico, <<salida>>.

Proceso. Cualquier tipo de operación que pueda originar cambio de valor,


formato o posición de la información almacenada en memoria, operaciones
aritméticas, de transferencia, etc.

Impresora. Salida por impresora.

Pantalla. Salida por pantalla.

Si
Decisión. Operaciones lógicas o de comparación entre datos y en función
del resultado de la misma determina cuál de los distintos caminos
No alternativos del programa se debe seguir.

Decisión múltiple. En función del resultado de la comparación se seguirá


uno de los diferentes caminos de acuerdo con dicho resultado.

Elaboró: L.I. Karina Aidee Romero Alvarado


8
Fundamentos de Programación
Ing. en Sistemas Computacionales

Símbolos Función

Si
Ciclo For. Representa el ciclo de repetición For.
No

Conector en la misma página. Sirve para enlazar dos partes cualesquiera


de un diagrama en la misma página.

Conector en diferente página. Sirve para enlazar dos partes cualesquiera


de un diagrama en diferente página.

Indicador de dirección o línea de flujo. Indica el sentido de ejecución de las


operaciones.

Llamada a subrutina. Una subrutina es un módulo independiente del


programa principal, que recibe una entrada procedente de dicho programa,
realiza una tarea determinada y regresa, al terminar, al programa principal.

RECOMENDACIONES PARA EL DISEÑO DE DIAGRAMAS DE FLUJO

 Se deben se usar solamente líneas de flujos horizontales y/o verticales.


 Se debe evitar el cruce de líneas utilizando los conectores.
 Se deben usar conectores solo cuando sea necesario.
 No deben quedar líneas de flujo sin conectar.
 Se deben 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.

La siguiente figura muestra un ejemplo de un algoritmo en diagrama de flujo que tiene una entrada,
un proceso y una salida.
Inicio

Leer
Dato

Procesar
Dato

Dar Salida a
Dato

Fin

Elaboró: L.I. Karina Aidee Romero Alvarado


9
Fundamentos de Programación
Ing. en Sistemas Computacionales

PSEUDOCÓDIGO

Es la forma narrativa de desarrollar un algoritmo. Mezcla instrucciones de computadora y lenguaje


natural (español o inglés) utilizados para expresar un algoritmo.

También se conoce como, mezcla de lenguaje de programación y español (o inglés o cualquier otro
idioma) que se emplea, dentro de la programación estructurada, para realizar el diseño de un
programa. En esencia, el pseudocódigo se puede definir como un lenguaje de especificaciones de
algoritmos. Es la representación narrativa de los pasos que debe seguir un algoritmo para dar
solución a un problema determinado. El pseudocódigo utiliza palabras que indican el proceso a
realizar.

El siguiente pseudocódigo hace referencia al algoritmo en diagrama de flujo de la figura anterior.

1.- Inicio
2.- Leer Dato
3.- Procesar Dato
4.- Dar Salida a Dato
5.- Fin

2.3 DISEÑO DE ALGORITMOS

CARACTERISTICAS DE LOS ALGORITMOS

 Preciso/Definido.- Los pasos a seguir en el algoritmo deben ser definidos claramente. Un


algoritmo debe ser preciso e indicar el orden de realización de cada paso. En otras palabras cada
paso de un algoritmo debe ser definido en forma precisa, estableciendo las acciones que van a
efectuar clara y rigurosamente en cada caso.

 Determinación.- El algoritmo, dado un conjunto de datos idénticos de entrada, siempre debe


arrojar los mismos resultados. Un algoritmo debe estar definido. Si se sigue un algoritmo dos
veces, se debe obtener el mismo resultado cada vez.

 Finitud.- El algoritmo, independientemente de la complejidad del mismo, siempre debe ser de


longitud finita. Si se sigue un algoritmo, se debe terminar en algún momento; o sea debe tener un
número finito de pasos.

 Efectivo: Generalmente, también se espera que un algoritmo sea efectivo. Esto significa que
todas las operaciones a ser realizadas en el algoritmo deben ser lo suficientemente básicas de
modo que puedan en principio ser llevadas a cabo en forma exacta y en un período de tiempo
finito por una persona usando lápiz y papel (corrida de escritorio o rutear).

PARTES QUE DESCRIBE UN ALGORITMO

Un algoritmo computacional comprende tres partes fundamentales para resolver cualquier problema:
datos de entrada, procesamiento de los datos y salida de resultados.

Elaboró: L.I. Karina Aidee Romero Alvarado


10
Fundamentos de Programación
Ing. en Sistemas Computacionales

La siguiente figura muestra la estructura básica de las partes que describe un algoritmo al momento
de solucionar un problema.

DATOS DE PROCESAMIENTO SALIDA DE


ENTRADA DE LOS DATOS RESULTADOS

Se puede hacer uso de cada una de estas partes en cualquier momento que se requiera para lograr
el objetivo de solucionar el problema computacional que se presente.

 Datos de entrada.- Representa la operación o acción que permite el ingreso de los datos del
problema. El algoritmo tiene cero o más entradas, es decir cantidades que se entregan
inicialmente al algoritmo antes de su ejecución.

 Procesamiento de los datos.- Representa la operación o conjunto de operaciones secuenciales,


cuyo objetivo es obtener la solución del problema. Aquí incluye instrucciones aritmético-lógicas,
selectivas y repetitivas.

 Salida de resultados.- Representa una operación o conjunto de operaciones que permiten


comunicar al exterior el o los resultados alcanzados. Un algoritmo tiene una o más salidas, es
decir cantidades que tiene una relación específica respecto a las entradas.

TIPOS DE DATOS

El primer objetivo de toda computadora es el manejo de la información o datos. Estos datos pueden
ser cifras de ventas de un supermercado o las calificaciones de una clase. Un dato es la expresión
general que describe los objetos con los cuales opera una computadora. La mayoría de las
computadoras pueden trabajar con varios tipos (modos) de datos. Los algoritmos y los programas
correspondientes trabajan sobre datos.

La acción de las instrucciones ejecutables de las computadoras se refleja en cambios en los valores
de las partidas de datos. Los datos de entrada se transforman por el algoritmo, después de las
etapas intermedias, en datos de salida.

En el proceso de solución de problemas, el diseño de la estructura de datos es tan importante como


el diseño del algoritmo.

Los tipos de datos son:

 Numéricos (Enteros y reales).


 Lógicos (Boolean).
 Caracter

DATOS NUMÉRICOS

El dato numérico es el conjunto de los valores numéricos. Estos pueden representarse en dos formas
distintas:

Elaboró: L.I. Karina Aidee Romero Alvarado


11
Fundamentos de Programación
Ing. en Sistemas Computacionales

 Enteros.- El tipo entero es un subconjunto finito de los números enteros. Los enteros son
números completos, no tienen componentes fraccionarios o decimales y pueden ser negativos o
positivos. Los números enteros máximos y mínimos de una computadora suelen ser valores
entre –32,768 y 32,767. Los números enteros fuera de este rango no se suelen representar como
enteros, sino como reales.

 Reales.- Consiste en un subconjunto de los números reales. Los números reales siempre tienen
un punto decimal y pueden ser positivos o negativos. Un número real consta de un entero y una
parte decimal.

Nota: Cada lenguaje de programación tiene diferentes tipos para manejar datos numéricos y
alfanuméricos.

DATOS LÓGICOS (BOOLEANOS)

El tipo lógico, también denominado booleano, es aquel dato que solo puede tomar uno de dos
valores: cierto o verdadero (true) y falso (false). Este tipo de datos se utiliza para representar las
alternativas (si/no) a determinadas condiciones. Por ejemplo, cuando se pide si un valor entero es
par, la respuesta será verdadera o falsa, según sea par o impar.

DATOS TIPO CARÁCTER

Es el conjunto finito y ordenado de caracteres que la computadora reconoce. La mayoría de los


caracteres que las computadoras reconocen son:

 Caracteres alfabéticos: (A, B, C, …, Z) (a, b, c, …, z)


 Caracteres numéricos: (1, 2, …, 9, 0)
 Caracteres especiales: (+, -, *, /, ^, ., ;, <, >, $, …)

OPERADORES Y OPERANDOS.

Los operadores son elementos que se relacionan de forma diferente, los valores de una o más
variables y/o constantes, es decir; los operadores nos permiten manipular valores.

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.

Operador Función
^ Exponente
* Multiplicación
/ División
+ Suma
- Resta

Elaboró: L.I. Karina Aidee Romero Alvarado


12
Fundamentos de Programación
Ing. en Sistemas Computacionales

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) y tienen el
mismo nivel de prioridad en su evaluación. Los operadores relacionales tienen menor prioridad que
los aritméticos.

Operador Función
> Mayor que
< Menor que
>= Mayor o igual que
<= Menor o igual que
= Igual
<> Diferente

OPERADORES LÓGICOS

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

Operador Condición 1 Condición 2 Evaluación


V V V
F V F
y
V F F
F F F
V V V
F V V
o
V F V
F F F
V F
No
F V

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.

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

Elaboró: L.I. Karina Aidee Romero Alvarado


13
Fundamentos de Programación
Ing. en Sistemas Computacionales

ASIGNACIONES

La operación de asignación es el modo de darle valores a una variable. La operación de asignación


se representa con el símbolo u operador. El formato general de una operación de asignación es:

Nombre de la variable  expresión

La flecha (operador de asignación) se utiliza para evitar ambigüedades y el de = (igual) se usa solo
para la igualdad. La operación de asignación A  5; significa que la variable A se le ha asignado el
valor 5. La acción de asignar es destructiva ya que el valor que tuviera la variable antes de la
asignación se pierde y se reemplaza por el nuevo valor; así, en la secuencia de operaciones

A  25
A  134
A5

cuando éstas se ejecutan, el valor último que toma A será 5 (los valores 25 y 134 han desaparecido).

La manera de asignar valores a una variable alfabética es diferente que las numéricas, ya que no se
da el valor directo, por lo que se debe hacer lo siguiente:

CIUDAD  “Tijuana”
NOMBRE  “Diana”

IDENTIFICADORES COMO LOCALIDADES DE MEMORIA

Los algoritmos y programas de computadora contienen ciertos valores que no deben cambiar durante
la ejecución del programa. Tales valores se llaman constantes.

Existen otros valores que cambiarán durante la ejecución del programa o corrida de escritorio
(también llamada prueba de escritorio) del algoritmo; a estos valores se les llama variables.

CONSTANTES

Son una partida de datos que permanecen sin cambios durante todo el desarrollo del algoritmo o
durante la ejecución del programa. Por ejemplo, si tenemos la fórmula para resolver el área de un
triángulo:

A=bxh
2
independientemente de que los valores de la base y la altura cambien, según la dimensión del
triángulo, siempre se dividirá entre 2, por lo tanto el 2 es una constante ya que nunca cambia.

VARIABLES

Son un objeto o partida de datos cuyo valor puede cambiar durante el desarrollo del algoritmo o
ejecución del programa. Ahora, regresando al ejemplo de la fórmula para resolver el área de un
triángulo, si las dimensiones de éste cambian por lo tanto el valor de la base (b) y de la altura (h)
varía. Entonces podemos decir que la base y la altura son variables.

Elaboró: L.I. Karina Aidee Romero Alvarado


14
Fundamentos de Programación
Ing. en Sistemas Computacionales

IDENTIFICADORES.

Son los nombres que reciben las variables y algunas constantes, suelen constar de varios caracteres
alfanuméricos, de los cuales primero suele ser una letra.

Reglas Para Asignar Identificadores

 Siempre deberán iniciar con una letra.


 Pueden contener letras y números.
 No se permiten caracteres especiales. El único permitido es “ _ “.
 No debe haber espacios en blanco.
 Deben ser significativos y tener relación con el objeto que representan.

Por ejemplo:

A125 NOMBRE DIRECCION NO_CONTROL PRECIO

NOMBRE Puede representar el nombre de una persona.


NO_CONTROL Puede representar el número de control de alumno.
PRECIO Puede representar el precio de un artículo.

Se puede asignar nombre a algunas constantes típicas utilizadas en cálculos matemáticos,


financieros, etc., como un nombre para el valor de , Pi = 3.1416.

Para concluir, imaginemos que la siguiente figura es la memoria principal de la computadora, y que
en ella se encuentran almacenadas en diferentes localidades (direcciones) las variables A, b, h y la
constante Pi:

Identificador

A Pi
3.1416
b
256 1024

h
512
MEMORIA
PRINCIPAL
128

Variable Localidad Constante


(Dirección)

Elaboró: L.I. Karina Aidee Romero Alvarado


15
Fundamentos de Programación
Ing. en Sistemas Computacionales

Como se puede observar, una variable es el área para almacenar en la memoria y su identificador es
la forma como nosotros podemos acceder a ella, ya que éste último tiene ligada la dirección. Una
constante puede tener también ligado un identificador, como ya se mencionó, y por medio de éste
también se puede llegar hasta ella.

Ejercicios

a) De la siguiente lista de posibles nombres para variables y/o constantes marca con una ( X ) los
incorrectos y con una (  ) los correctos, de acuerdo a las reglas vistas sobre asignación de
identificadores.

( ) No.Control ( ) IVA ( ) SdoBruto

( ) NoControl ( ) I.V.A ( ) Sdo-Bruto

( ) No_Control ( )i v a ( ) Sueldo Bruto

( ) No Control ( ) I_V_A ( ) Sdo.Bruto

( ) #Control ( ) 1va ( ) Sueldo_Bruto

ENTRADA

Las operaciones de entrada permiten leer determinados valores y asignarlos a determinadas


variables. Esta entrada se conoce como operación de lectura.

En la escritura de algoritmos la acción de lectura se presenta por el formato siguiente:

Leer (variable de entrada)

Así, por ejemplo:

Leer A (Representa la lectura de un valor que se asignará a la variable A).

SALIDA

La operación de salida se denomina escritura. En la escritura de algoritmos la acción y escritura se


presenta por los formatos siguientes:

Escribir o Imprimir (variable de salida)

Así, por ejemplo:

Escribir A (Visualiza en pantalla el valor contenido en A).


Imprimir A (Imprime el valor contenido en A).

Elaboró: L.I. Karina Aidee Romero Alvarado


16
Fundamentos de Programación
Ing. en Sistemas Computacionales

Por ejemplo. Algoritmo que imprima el mensaje “Hola Mundo”. (Se utiliza constante).

1.- Inicio Inicio


2.- Imprimir “Hola Mundo”
3.- Fin
“Hola Mundo”

Fin

Nota: En este algoritmo ya se conocía el nombre del letrero (por lo tanto era una constante), y
también la operación que debía hacer sobre él. Se utilizó pseudocódigo ya que para dar la
salida se indicó “imprimir”. Además cuando se da salida a un valor específico alfabético, éste
deberá ir entre comillas.

DECLARACION DE VARIABLES

Cuando se va a utilizar una variable en un algoritmo o programa se debe especificar qué nombre
recibirá y el tipo de dato que contendrá, a este procedimiento se le llama declaración de variables. La
declaración en algoritmos será asignar a las variables numéricas un 0 (cero) y a las alfabéticas “ “
(espacio entre comillas).

NOMBRE  “ ” (para alfabéticos)


PRECIO  0 (para numéricas)

Por ejemplo. Algoritmo que imprima el nombre de cualquier fruta. (Se utiliza variable).

Inicio
1.- Inicio
2.- NomFruta  “ “
3.- Leer NomFruta NomFruta” “
4.-Imprimir NomFruta
5.- Fin
NomFruta

NomFruta

Fin

Nota: En este algoritmo no se conocía el nombre de la fruta por lo tanto hubo necesidad de utilizar
una variable para que almacenara cualquier nombre que se leyera. Como se puede observar
se hizo la declaración correspondiente para una variable alfabética. Se dió la instrucción de
leer en pseudocódigo. Además, en el momento de leer e imprimir la variable NomFruta no se
encuentra entre comillas, ya que no se desea imprimir la palabra “NomFruta”, sino el valor
que contiene (en este caso el nombre que se haya leído).

Elaboró: L.I. Karina Aidee Romero Alvarado


17
Fundamentos de Programación
Ing. en Sistemas Computacionales

Por ejemplo. Algoritmo que imprima el nombre de cualquier Ciudad. (Se agregan letreros para
ayudar al usuario posterior del algoritmo).

Inicio
1.- Inicio
2.- NomCiu  “ “
3.- Leer “Ciudad: “, NomCiu
4.- Imprimir NomCiu NomCiu” “
5.- Fin
“Ciudad:”, NomCiu

NomCiu

Fin

Nota: En este algoritmo se agregaron letreros para indicarle al usuario qué se desea que
introduzca. En ocasiones no es suficiente con poner el nombre de la variable, ya que su
nombre a veces no nos dice mucho, sino que además es necesario de insertar letreros (que
irán entre comillas) que nos especifiquen el dato a insertar. Como en el ejercicio 5 no nos
dice si es nombre de persona o de ciudad el que desea, pero ahora en este si lo sabemos.

OPERACIONES ARITMETICAS

No solamente se presentan problemas para solo capturar e imprimir, sino también para hacer
cálculos aritméticos. Las operaciones aritméticas son análogas a las fórmulas matemáticas. Las
variables y constantes son numéricas (real o entera) y las operaciones son las aritméticas. A
continuación se enumeran los operadores disponibles.

OPERADORES ARITMÉTICOS

Operador Significado Tipo de Tipo de Prioridad


operandos resultado
^ Exponente Entero o real Entero o real 1
* Multiplicación Entero o real Entero o real 2
/ División Real Real 2
+ Suma Entero o real Entero o real 3
- Resta Entero o real Entero o real 3

Reglas de prioridad

Las operaciones que tienen dos o más operandos requieren reglas matemáticas que permitan
determinar el orden de las operaciones, se denominan reglas de prioridad o precedencia y son:
1. Las operaciones que están cerradas entre paréntesis se evalúan primero. Si existen diferentes
paréntesis anidados (interiores unos a otros), las expresiones más internas se evalúan primero.
2. Las operaciones aritméticas dentro de una expresión suelen seguir el orden de prioridad
especificado en la tabla.
3. En caso de coincidir varios operandos de igual prioridad en una expresión o subexpresión
encerrada entre paréntesis, el orden de prioridad en este caso es de izquierda a derecha.

Elaboró: L.I. Karina Aidee Romero Alvarado


18
Fundamentos de Programación
Ing. en Sistemas Computacionales

Por ejemplo:

¿Cuál es el resultado de las siguientes expresiones?

a) 3 + 6 * 14 b) 2 ^ 3 * 5 c) ( 5 + 4 ) / 3
3 + 6 * 14 2 ^3*5 (5+4)/3

3+ 84 8 *5 9 /3

87 40 3

Ejercicios

a) Comprobar los resultados de las siguientes expresiones:

1. -4 * 7 + 2 ^3 / 4 – 5 = -31
2. 12 + 3 * 7 + 5 * 4 = 53
3. 6 * ( 3 + 2 ) / 2 ^ 2 = 7.5

Asignación aritmética

Las expresiones en las operaciones de asignación son aritméticas, de tal manera que cuando se
lleva a cabo alguna expresión, el resultado de ésta deberá asignarse a una variable.

TOTAL  8 + 4 (El valor que almacenará TOTAL será 12)

A2 (A la variable A se le asigna el valor de 2)


B7 (A la variable B se le asigna el valor de 7)
CA+B (A la variable C se le asigna el valor resultante
de la suma de A y B, que sería 9)

Por ejemplo. Algoritmo que suma 7 + 4, se le asigna el resultado a una variable y se imprime.

1.- Inicio Inicio


2.- SUMA  0
3.- SUMA  7 + 4
4.- Imprimir SUMA SUMA  0
5.- Fin
SUMA  7 + 4

SUMA

Fin

Nota: En este algoritmo se decidió poner el nombre de SUMA para la variable que guardaría el
resultado. Se hizo la declaración (SUMA  0), se llevó a cabo el proceso (SUMA  7 + 4) y
por último la impresión. El resultado de SUMA es de 11.

Elaboró: L.I. Karina Aidee Romero Alvarado


19
Fundamentos de Programación
Ing. en Sistemas Computacionales

Ejemplo. Algoritmo que suma dos números cualquiera, se le asigna el resultado a una variable y se
imprime.
Inicio
1.- Inicio
2.- Suma  0, N1  0, N2  0
3.- Leer “Número 1:”, N1 Suma  0, N1 0
4.- Leer “Número 2:”, N2 N20
5.- Suma  N1 + N2
6.- Imprimir Suma
7.- Fin
“Número 1:”, N1
“Número 2:”, N2

Suma N1+N2

Suma

Fin

Nota: Aquí no se conocían los valores de los dos números, por lo tanto, se tuvieron que pedir y para
poderlo hacer se utilizaron dos variables (N1 y N2 o cualquier otro nombre que se desee), una
para cada número. Se hizo la declaración de las tres variables a usar (para los dos números y
otra para el resultado), se capturaron los valores de los dos números, se hizo el cálculo (Suma
 N1 + N2) y por último la impresión del resultado (Suma), que dependerá de los valores que
se capturen (N1 y N2).

Ejemplo 1 (continuación). En base al modelo de solución para calcular el área de cualquier


triángulo, elaborar pseudocódigo y diagrama de flujo.

Modelo de solución

DATOS DE ENTRADA PROCESO DATOS DE SALIDA


Base Area = Base * Altura
Area
Altura 2

Pseudocódigo

1.- Inicio
2.- Base  0, Altura  0, Area  0
3.- Leer “Base:”, Base
4.- Leer “Altura:”, Altura
5.- Area  Base * Altura / 2
6.- Imprimir “Area: “, Area
7.- Fin

Nota: Aquí no se conocían los valores de la base y la altura, por lo tanto, se tuvieron que pedir y para
poderlo hacer se utilizaron dos variables (Base y Altura). Se hizo la declaración de las tres

Elaboró: L.I. Karina Aidee Romero Alvarado


20
Fundamentos de Programación
Ing. en Sistemas Computacionales

variables a usar para la base y la altura y otra para el resultado (Area), se capturaron los
valores de la base y la altura, se hizo el cálculo (Area  Base * Altura / 2) y por último la
impresión del resultado (Area), que dependerá de los valores que se capturen (Base y Altura).
Es importante tener presente la sintaxis para la declaración, entrada y salida de datos, así
como para la expresión aritmética con sus reglas de prioridad de operadores.

Diagrama de flujo

Inicio

Base  0, Altura  0,
Area  0

“Introduce base:”, Base


“Introduce altura:”, Altura

Area  Base * Altura / 2

“El área del triángulo es: “,


Area

Fin

Ejercicios

a) Desarrollar pseudocódigo y diagrama de flujo de los ejercicios del 1 al 10 de la página 4 que se


analizaron con el modelo de solución.
b) Algoritmo que permita calcular el total a pagar por un cliente en la compra de una computadora.
Ya que el cliente es un “cliente preferente” recibirá el 20% de descuento. El IVA es del 10%.
c) De los extremos de una cuerda que pasa por una polea sin rozamiento, penden dos cargas de 2
y 6 kg de masa. Calcular la aceleración y la tensión en la cuerda.
d) Floripondio llama a Superman para que le venga a ayudar. Cuando hace el llamado, Superman
está a 4.5 millones de kilómetros de distancia. Floripondio trasmite su mensaje a la velocidad de
la luz (300,000 km/s), Superman escucha, espera 5 segundos y parte en ayuda de su amigo de
la infancia, lo hace a razón de 9/10 la velocidad de la luz. ¿Cuánto tiempo tardará en llegar a
prestar su ayuda?
e) Un auto de juguete avanza según las siguientes condiciones: en madera a 0.5 m/s; en cemento
a 0.4 m/s, en baldosa a 0.8 m/s. ¡Cuánto tarda en recorrer una distancia total de 20 metros,
repartidos en 4 metros de madera, 2.5 metros de cemento y el resto en baldosa?
f) Una concesionaria desea un algoritmo que le permita emitir la factura para un cliente en la
compra de un automóvil. Los costos a considerar son: Precio de fábrica, 20% de ganancia para
la concesionaria, 3% de comisión para el vendedor y el 15% de IVA. La factura deberá incluir:
Descripción del automóvil, Subtotal, IVA y Total.
g) El perímetro de una circunferencia se calcula mediante la fórmula P = 2  r, siendo r el radio de
la circunferencia. El radio de la tierra es de 6,400 km. Se desea saber cuánto tardará en dar la
vuelta a la tierra un avión de acuerdo a su velocidad en machs. (Un mach es la velocidad del
sonido que equivale a 340 m/s). Dar tiempo en horas.

Elaboró: L.I. Karina Aidee Romero Alvarado


21
Fundamentos de Programación
Ing. en Sistemas Computacionales

DISEÑO ALGORÍTMICO DE LAS FUNCIONES.

Un módulo es un segmento, rutina, subrutina, subalgoritmo o procedimiento que puede ser definido
dentro de un algoritmo con el fin de ejecutar una tarea específica y que además puede ser llamado o
invocado desde el algoritmo principal cuando sea necesario.

Como ya se mencionó, los subprogramas (algunas veces llamados módulos) son bloques de
instrucciones independientes que realizan una tarea específica y que pueden ser reutilizados varias
veces durante la ejecución de un programa.

Estos subprogramas pueden ser invocados desde cualquier parte del programa y en cualquier
momento, ya sea desde el principal o desde cualquier otro subprograma. Cuando terminan su bloque
de instrucciones regresan a la parte del programa desde donde fueron llamados.

Programa

Subprog1( ) Subprog2( ) Subprog3( )

Aquí el Subprog1( ) puede llamar al Subprog2( ) y este a su vez al Subprog3( ), o en cualquier otro
orden.

Para poder iniciar con el funcionamiento de los subprogramas, primeramente es necesario definir los
siguientes conceptos que juegan un papel muy importante en el tema:

 Variables locales
 Parámetros
 Variables globales

VARIABLES LOCALES

Son aquellas variables que son declaradas dentro de un subprograma y solamente ahí tienen
validez, de tal manera que si se hiciera referencia de ellas en otro subprograma sería incorrecto
porque para éste último esas variables no existen.

Programa

Sub1( ) Sub2( )
A0 B0
A2+4 B A + 5
Llamar Sub2( ) Imprimir B

En la figura anterior en el Sub1( ) se declaró la variable A localmente (ya que se hizo dentro del
subprograma) y después se le asignó la suma de 2 + 4 para después hacer la llamada al Sub2( ).
Dentro del Sub2 se declaró una nueva variable B para posteriormente guardar el resultado de sumar
A + 5 y así imprimirlo. Pensaríamos que el resultado que imprimiría es 11 ya que supuestamente A =

Elaboró: L.I. Karina Aidee Romero Alvarado


22
Fundamentos de Programación
Ing. en Sistemas Computacionales

6 y se le suma 5, pero no es así. La razón es que para el Sub2 la variable A no existe, por lo tanto
marcaría error.

VARIABLES GLOBALES

Son aquellas variables que son declaradas en la parte global del programa y están disponibles en
todos los subprogramas.

Programa
A0
Sub2( )
Sub1( )
B0
A2+4
Llamar Sub2( ) B A + 5
Imprimir B

En la figura anterior se declaró la variable A globalmente (ya que se hizo fuera de cualquier
subprograma). Dentro de Sub1( ) se le asignó a la variable A la suma de 2 + 4 para después hacer
la llamada al Sub2( ). Dentro del Sub2( ) se declaró una nueva variable B localmente para
posteriormente guardar el resultado de sumar A + 5 y así imprimirlo. Aquí el resultado que imprimiría
será 11 ya que A = 6 y se le suma 5. La razón es que para el Sub2( ) la variable A sí existe porque
fue declarada globalmente.

Nota: Cuando se trata de lenguajes de programación, si es utilizada alguna variable que no haya sido
declarada local o globalmente, el programa marca error.

PARÁMETROS

Son aquellos valores que se envían de un subprograma a otro. Los parámetros se utilizan cuando se
desean compartir valores entre algunos subprogramas pero no en todos. Si se declarara una variable
dentro de un subprograma solo es válida ahí y si se hiciera globalmente sería válida en todos aunque
no sea eso lo que se quiere. Por lo tanto los parámetros vienen a resolver este problema ya que se
puede elegir qué valor pasar y hacia qué subprograma enviarlo. Esto se puede lograr al momento de
hacer la llamada.

Programa

Sub1( ) Sub2(A10)
A0 B0
A2+4 B A1 + 5
Llamar Sub2 (A) Imprimir B

En la figura anterior en el Sub1( ) se declaró la variable A localmente (ya que se hizo dentro del
subprograma) y después se le asignó la suma de 2 + 4 para después hacer la llamada al Sub2( )
enviando como parámetro a la variable A (de hecho lo que envía es el valor, o sea el 6). Dentro del
Sub2( ) se recibe el parámetro (o sea, el 6), se declaró una nueva variable B para posteriormente

Elaboró: L.I. Karina Aidee Romero Alvarado


23
Fundamentos de Programación
Ing. en Sistemas Computacionales

guardar el resultado de sumar A1 + 5 y así imprimirlo. El resultado que imprimirá será 11 ya que el
valor del parámetro que recibió en A1 = 6. La razón es que para el Sub2( ) la variable A1 recibió el
valor que tenía la variable A dentro del Sub1.

¡¡¡ IMPORTANTE !!!

No hay que olvidar que el control del programa se pasa al subprograma que fue llamado en ese
momento y, en el instante que termine con las instrucciones dentro de él, el control regresará a la
instrucción desde donde fue invocado y así continua con la siguiente instrucción.

CLASIFICACION DE LOS MODULOS

Como ya se mencionó, cualquier subprograma o módulo es una secuencia nombrada de


instrucciones que se ejecutan como unidad. Los módulos se clasifican en:

 Procedimientos
 Funciones

FUNCIONES

Son subprogramas o módulos que realizan una tarea específica y que pueden ser invocados desde
cualquier parte del programa enviando valores por medio de parámetros, y que tienen la capacidad
de devolver valores explícitos.

La función es una estructura autónoma. La diferencia radica en que la función se relaciona


especificando su nombre en una expresión, como si fuera una variable ordinaria de tipo simple. Las
funciones se dividen en estándares y definidas por el usuario.

Funciones definidas por el usuario

Son funciones que puede definirlas el programador con el propósito de ejecutar alguna función
específica, y que por lo general se usan cuando se trata de hacer algún cálculo que será requerido
en varias ocasiones en la parte principal del algoritmo.
El nombre de la función puede estar seguido de uno o más parámetros actuales encerrados entre
paréntesis. Por lo general transfieren datos a parámetros tipo valor.

PROCEDIMIENTOS

Son subprogramas que pueden ser invocados desde cualquier parte del programa enviando valores
por medio de parámetros, pero no devuelven valores explícitos, sino tendría que hacerlo por medio
de los mismos parámetros.

Elaboró: L.I. Karina Aidee Romero Alvarado


24
Fundamentos de Programación
Ing. en Sistemas Computacionales

OPERACIÓN DE MODULOS Y SUS PARÁMETROS

PROCEDIMIENTOS

Ejemplo2. Calcular la suma de dos números utilizando un procedimiento para la suma y despliegue
de resultado.

a) Pseudocódigo

Nombre_Procedimiento(Lista de parámetros)

Por ejemplo:

1.- Inicio
2.- N10, N20
3.- Leer “Numero 1:”, N1
4.- Leer “Numero 2:”, N2
5.- Llamar Suma(N1,N2)
6.- Fin

b) Diagrama de Flujo

Nombre_Procedimiento
(Lista de parámetros)

Por ejemplo:

Inicio

N1  0, N2  0

“Numero1:”, N1
“Numero2:”, N2

Suma(N1,N2)

Fin

Elaboró: L.I. Karina Aidee Romero Alvarado


25
Fundamentos de Programación
Ing. en Sistemas Computacionales

Sintaxis para la definición de un procedimiento

a) Pseudocódigo

Procedimiento Nombre_Procedimiento (Lista de parámetros recibidos)

<bloque de instrucciones>

Fin Procedimiento

Por ejemplo:

1.- Procedimiento Suma(Num1←0,Num2←0)


2.- Sum  0
3.- Sum  Num1 + Num2
4.- Imprimir Sum
5.- Fin Procedimiento

b) Diagrama de flujo

Suma(Num1←0,Num2←0)

Sum  0

Sum  Num1+Num2

Sum

Fin Procedimiento

Ejercicios

a) Capturar los datos de un alumno en un subprograma y los imprima en otro. Utilizar pase de
parámetros.
b) Capturar en un procedimiento el nombre del empleado, en otro las horas trabajadas y sueldo por
hora, en un tercero calcular su sueldo, y por último en otro imprima todos los datos incluyendo el
sueldo final.
c) Calcular el total a pagar por un cliente en una mueblería. Existe el precio de fábrica, el 10% de
ganancia para la mueblería, el 15% de IVA, utilizar un procedimiento para la entrada de datos,
otro para los cálculos y uno más para la salida del resultado.

Elaboró: L.I. Karina Aidee Romero Alvarado


26
Fundamentos de Programación
Ing. en Sistemas Computacionales

FUNCIONES

Ejemplo3. Calcular la suma de dos números en el principal y utilizar una función para la suma y
despliegue de resultado en el mismo principal.

Sintaxis para la llamada a una Función

a) Pseudocódigo

<variable que recibirá el valor>  <Nombre_Función> (<Lista de parámetros>)

Por ejemplo:

1.- Inicio
2.- N1 0, N2  0, Res  0
3.- Leer “Numero1: “, N1
4.- Leer “Numero2: “, N2
5.- Res  Suma( N1, N2 )
6.- Imprimir Res
7.- Fin

b) Diagrama de flujo

Nombre_Procedimiento
(Lista de parámetros)

Por Ejemplo:
Inicio

N1  0, N2  0, Res  0

“Numero1: “, N1
“Numero2: “, N2

Res  Suma(N1,N2)

Res

Fin

Elaboró: L.I. Karina Aidee Romero Alvarado


27
Fundamentos de Programación
Ing. en Sistemas Computacionales

Sintaxis para la definición de una Función en pseudocódigo

a) Pseudocódigo

Función <Nombre_Función> (<Lista de parámetros recibidos>)  <Tipo>

<bloque de instrucciones>

Fin Función
Como puedes observar, a la función se le debe definir un tipo, esto es por que regresará un valor en
ella.

Por ejemplo:

Función Suma(Num1←0, Num2←0)  0


Suma  Num1 + Num2
Fin Función

b) Diagrama de flujo

Suma(Num1←0,Num2←0)  0

Suma  Num1 + Num2

Fin Función

Ejemplo4. Calcular la suma de dos números en el principal y utilizar una función para la suma y
despliegue de resultado en el mismo principal, utilizando variables globales.

a) Pseudocódigo

1.- N1 0, N2  0
2.- Inicio
3.- Res  0
4.- Leer “Numero1: “, N1
5.- Leer “Numero2: “, N2
6.- Res  Suma( )
7.- Imprimir Res
8.- Fin

1. Funcion Suma( )  0
2. Suma  N1 + N2
3. Fin Función

Elaboró: L.I. Karina Aidee Romero Alvarado


28
Fundamentos de Programación
Ing. en Sistemas Computacionales

b) Diagrama de flujo

N1  0, N2  0
Suma( )  0

Inicio

Suma  N1 + N2

Res  0
Fin Función

“Numero1: “, N1
“Numero2: “, N2

Res  Suma( )

Res

Fin

Ejercicios

a) Algoritmo que capture base y altura en el principal, posteriormente invoque una función y calcule
el área del triángulo, finalmente imprima el resultado en el mismo principal.
b) El gerente de ventas de una tienda de equipo electrónico desea mostrar a un cliente el total a
pagar por el equipo de cómputo que sea adquirir de acuerdo a las dos opciones de pago que
ofrecen. La primera opción de pago es al contado donde al precio del equipo sólo se le agrega el
16% de IVA. La segunda opción de pago es en abonos donde se agregará el 20% de interés al
precio, posteriormente se agregará el 16% de IVA para finalmente calcular su plan de pagos a 6
meses. Se debe mostrar al cliente el total al contado, el total en abonos y el monto de cada una
de las 6 mensualidades. El IVA deberá ser calculado en una función que deberá ser reutilizada
para calcular el IVA para contado y abonos.
c) Calcular la velocidad en millas a la que puede ir un automóvil que recorre una distancia dada en
kilómetros en un tiempo determinado. Utilizar una función para la conversión de kilómetros a
millas.
d) Sumar los números desde el 1 por medio de una función que se llame a sí misma y deje de
hacerlo hasta que la suma sea mayor a 100. (Recursividad)

Elaboró: L.I. Karina Aidee Romero Alvarado


29

También podría gustarte