0% encontró este documento útil (0 votos)
62 vistas33 páginas

Los Algoritmos

El documento describe los conceptos básicos de los algoritmos y lenguajes de programación. Explica que un algoritmo es un método paso a paso para resolver un problema de forma finita, y que los lenguajes de programación pueden clasificarse como de bajo nivel como el ensamblador o de alto nivel. También define los lenguajes algorítmicos como natural, de diagrama de flujo y de programación.

Cargado por

Julian Loaiza
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
0% encontró este documento útil (0 votos)
62 vistas33 páginas

Los Algoritmos

El documento describe los conceptos básicos de los algoritmos y lenguajes de programación. Explica que un algoritmo es un método paso a paso para resolver un problema de forma finita, y que los lenguajes de programación pueden clasificarse como de bajo nivel como el ensamblador o de alto nivel. También define los lenguajes algorítmicos como natural, de diagrama de flujo y de programación.

Cargado por

Julian Loaiza
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Está en la página 1/ 33

I.T.M.

LOS ALGORITMOS
(http://www.itlp.edu.mx/publica/tutoriales/algoritmos.htm)

Unidad I
"Conceptos Básicos"

1.1 Introducción 1.2 Definición de Lenguaje 1.3 Definición de Algoritmo 1.4


Algoritmos Cotidianos 1.5 Definición de Lenguajes algorítmicos 1.6 Historia y
Aplicación de los Lenguajes Algorítmicos

Unidad I
"Conceptos Básicos"
1.1 Introducción
Los sistemas modernos de computación consisten en una gran conjunción de elementos de
circuitos (hardware) y de programación (software) que han sido diseñados para
proporcionar a la computación un ambiente productivo y hasta cierta medida agradable.
El término Sistema de Cómputo se utiliza para señalar lo que el usuario emplea, en lugar
del término Computadora. En los primeros años de la computación, los usuarios del
sistema debían interactuar más estrechamente con el hardware real que lo que es hoy
necesario, muchas funciones que debían realizar los usuarios mismos se manejan ahora por
software mediante Sistemas Operativos. El sistema operativo crea un ambiente en el cual
los usuarios pueden preparar programas y ejecutarlos sin tener que entrar en los detalles del
hardware del sistema.
Para satisfacer el crecimiento de la demanda de medios de computación, es que se ha
desarrollado la multiprogramación, en la cual varios usuarios emplean el sistema de forma
simultánea, como Windows por ejemplo.
Un término fundamental de esta materia es el Programa, el cual es simplemente una
secuencia de instrucciones que orienta a la Unidad de Control de Procesamiento (CPU) en
el desarrollo de los cálculos, el cual debe expresarse de forma que sea entendido por el
CPU. Un CPU sólo puede entender instrucciones que estén expresadas en términos de su
lenguaje máquina, pero esto se explicará más adelante.

1.2 Definición de Lenguaje de Programación


Un Lenguaje de Programación es aquél que es utilizado para escribir programas de
computadoras que puedan ser entendidos por ellas. Estos lenguajes se clasifican en tres
grandes categorías :
Lenguaje Máquina Lenguaje de Bajo nivel (ensamblador) Lenguaje de Alto
nivel.

1.3 Definición de algoritmo


"Un algoritmo se define como un método que se realiza paso a paso para solucionar un
problema que termina en un número finito de pasos".
Las características fundamentales que debe cumplir todo algoritmo son :
Debe ser preciso. e indicar el orden de realización de cada paso.

Héctor Fabio Rojas 1


I.T.M.

Debe ser definido. Si se sigue un algoritmo dos veces, se debe obtener el mismo
resultado cada vez.
Debe ser finito. Si se sigue un algoritmo, se debe terminar en algún momento ; o sea
debe tener un número finito de pasos.La definición de un algoritmo debe describir tres
partes : Entrada, Proceso y Salida.

1.4 Algoritmos Cotidianos


Se refiere a todos aquéllos algoritmos que nos ayudan a resolver problemas diarios, y que
los hacemos casi sin darnos cuenta de que estamos siguiendo una metodología para
resolverlos.
Algunos ejemplos son :
Diseñar un algoritmo para cambiar una llanta a un coche.
Inicio.
Traer gato.
Levantar el coche con el gato.
Aflojar tornillos de las llantas.
Sacar los tornillos de las llantas.
Quitar la llanta.
Poner la llanta de repuesto.
Poner los tornillos.
Apretar los tornillos.
Bajar el gato.
Fin
Un cliente ejecuta un pedido a una fábrica. La fábrica examina en su banco de datos la ficha
del cliente, si el cliente es solvente entonces la empresa acepta el pedido, en caso contrario
rechazar el pedido.
Pasos del algoritmo :
Inicio
Leer el pedido
Examinar ficha del cliente
Si el cliente es solvente aceptar pedido, en caso contrario rechazar
pedido
Fin
Determinar el mayor de tres números enteros.
Pasos del algoritmo :
1.- Comparar el primero y el segundo entero, deduciendo cuál es el
mayor.
2.- Comparar el mayor anterior con el tercero y deducir cuál es el
mayor. Este será el resultado.
Los pasos anteriores se pueden descomponer en otros pasos más simples en los que se
denomina refinamiento del algoritmo.
1.- Obtener el primer número (entrada), denominado NUM1
2.- Obtener el segundo número (entrada), denominado NUM2
3.- Compara NUM1 con NUM2 y seleccionar el mayor ; si los dos
enteros son iguales, seleccionar NUM1. Llamar a este número
MAYOR.
4.- Obtener el tercer número (entrada), y se denomina NUM3.

Héctor Fabio Rojas 2


I.T.M.

5.- Compara MAYOR con NUM3 y seleccionar el mayor ; si los dos


enteros son iguales, seleccionar el MAYOR. Denominar a este
número MAYOR.
6.- Presentar el valor MAYOR (salida).
7.- Fin

1.5 Definición de Lenguajes Algorítmicos


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 aquél que describe 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 aquél 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 aquéllos 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.
Tiene las siguientes características :

Evita la ambigüedad (algo confuso que se puede interpretar de varias maneras).


Son precisos y bien definidos.
Utilizan términos familiares al sentido común. Elimina instrucciones innecesarias.

Lenguaje de Programación de Algoritmos


Es aquél que se utiliza para introducir en la computadora un algoritmo específico. Se les
conoce también como Lenguaje de Programación.

Lenguaje de Programación :
Es un conjunto de palabras, símbolos y reglas sintácticas mediante los cuales puede
indicarse a la computadora los pasos a seguir para resolver un problema.
Los lenguajes de programación pueden clasificarse por diversos criterios, siendo el más
común su nivel de semejanza con el lenguaje natural, y su capacidad de manejo de niveles
internos de la máquina.

Los principales tipos de lenguajes utilizados son tres :


Lenguaje Máquina. Lenguaje de bajo Nivel (ensamblador). Lenguajes de
Alto Nivel.

Lenguaje Máquina

Héctor Fabio Rojas 3


I.T.M.

Son aquéllos que están escritos en lenguajes directamente inteligibles por la máquina
(computadora), ya que sus instrucciones son cadenas binarias (cadenas o series de
caracteres de dígitos 0 y 1) que especifican una operación y las posiciones (dirección) de
memoria implicadas en la operación se denominan instrucciones de máquina o código
máquina. El código máquina es el conocido código binario.
Las instrucciones en lenguaje máquina dependen del hardware de la computadora y, por
tanto, diferirán de una computadora a otra.
Ventajas del Lenguaje Máquina
Posibilidad de cargar (transferir un programa a la memoria) sin
necesidad de traducción posterior, lo que supone una velocidad de
ejecución superior a cualquier otro lenguaje de programación.
Desventajas del Lenguaje Máquina
Dificultad y lentitud en la codificación. Poca fiabilidad. Gran dificultad para verificar y
poner a punto los programas. Los programas solo son ejecutables en el mismo procesador
(CPU).En la actualidad, las desventajas superan a las ventajas, lo que hace prácticamente
no recomendables a los lenguajes máquinas.

Lenguajes de Bajo Nivel


Son más fáciles de utilizar que los lenguajes máquina, pero al igual que ellos, dependen de
la máquina en particular. El lenguaje de bajo nivel por excelencia es el ensamblador. Las
instrucciones en lenguaje ensamblador son instrucciones conocidas como nemotécnicos.
Por ejemplo, nemotécnicos típicos de operaciones aritméticas son : en inglés : ADD, SUB,
DIV, etc. ; en español : SUM, RES, DIV, etc.
Una instrucción típica de suma sería :
ADD M, N, P
Esta instrucción significa "sumar el contenido en la posición de memoria M al número
almacenado en la posición de memoria N y situar el resultado en la posición de memoria P"
. Evidentemente es más sencillo recordar la instrucción anterior con un nemotécnico que su
equivalente en código máquina.
0110 1001 1010 1011
Un programa escrito en lenguaje ensamblador, requiere de una fase de traducción al
lenguaje máquina para poder ser ejecutado directamente por la computadora.
El programa original escrito en lenguaje ensamblador se denomina programa fuente y el
programa traducido en lenguaje máquina se conoce como programa objeto, el cual ya es
directamente entendible por la computadora.
Ventajas del lenguaje ensamblador frente al lenguaje máquina
Mayor facilidad de codificación y, en general, su velocidad de cálculo.
Desventajas del lenguaje ensamblador
Dependencia total de la máquina lo que impide la transportabilidad de los
programas (posibilidad de ejecutar un programa en diferentes máquinas. El lenguaje
ensamblador del PC es distinto del lenguaje ensamblador del Apple Machintosh.
La formación de los programadores es más compleja que la correspondiente a los
programadores de alto nivel, ya que exige no solo las técnicas de programación, sino
también el conocimiento del interior de la máquina.Los lenguajes ensamblador tienen sus
aplicaciones muy reducidas, se centran básicamente en aplicaciones de tiempo real, control
de procesos y de dispositivos electrónicos.

Héctor Fabio Rojas 4


I.T.M.

Lenguajes de Alto Nivel


Estos lenguajes son los más utilizados por los programadores. Están diseñados para que las
personas escriban y entiendan los programas de un modo mucho más fácil que los lenguajes
máquina y ensambladores. Un programa escrito en lenguaje de alto nivel es independiente
de la máquina (las instrucciones no dependen del diseño del hardware o de una
computadora en particular), por lo que estos programas son portables o transportables. Los
programas escritos en lenguaje de alto nivel pueden ser ejecutados con poca o ninguna
modificación en diferentes tipos de computadoras.
Ventajas de los lenguajes de alto nivel
El tiempo de formación de los programadores es relativamente corto comparado con
otros lenguajes. La escritura de programas se basa en reglas sintácticas similares a los
lenguajes humanos. Nombres de las instrucciones tales como READ, WRITE, PRINT,
OPEN, etc. Las modificaciones y puestas a punto de los programas son más
fáciles. Reducción del coste de los programas. Transportabilidad.
Desventajas de los lenguajes de alto nivel
Incremento del tiempo de puesta a punto al necesitarse diferentes traducciones del
programa fuente para conseguir el programa definitivo. No se aprovechan los recursos
internos de la máquina que se explotan mucho mejor en lenguajes máquina y
ensambladores. Aumento de la ocupación de memoria. El tiempo de ejecución de los
programas es mucho mayor.Para una mejor compresión de este tema se definirá el concepto
de programa, por ser este un término muy utilizado en el diseño estructurado de
algoritmos.

Programa : Es un conjunto de instrucciones escritas en un lenguaje de programación que


indican a la computadora la secuencia de pasos para resolver un problema.

1.6 Historia y Aplicación de los Lenguajes Algorítmicos

Al igual que los idiomas sirven de vehículo de comunicación entre los seres humanos,
existen lenguajes que realizan la comunicación entre los seres humanos y las computadoras.
Estos lenguajes permiten expresar los programas o el conjunto de instrucciones que el
operador humano desea que la computadora ejecute.
Los lenguajes de computadoras toman diferentes formas; los de las primeras computadoras,
como la ENIAC y la EDSAC, se componían en el lenguaje real de las máquinas mismas. La
dificultad de programar las máquinas de esta manera limitaba drásticamente su utilidad y
proporcionaba un fuerte incentivo para que se desarrollaran lenguajes de programación más
orientados hacia la expresión de soluciones con la notación de los problemas mismos.
Los primeros lenguajes de programación se conocieron como Lenguajes Ensambladores,
un ejemplo es: TRANSCODE, desarrollado para la computadora FERUT. En los lenguajes
ensambladores se define un código especial llamado mnemónico para cada una de las
operaciones de la máquina y se introduce una notación especial para especificar el dato con
el cual debe realizarse la operación.

A mediados de los años 60’s aparecieron los primeros lenguajes de propósito general como
FORTRAN, FORTRAN IV, ALGOL, COBOL, BASIC, PL/I, ADA, C,C++, PASCAL, etc.
pero el desarrollo de nuevas tecnologías, tanto en arquitectura de computadoras como en

Héctor Fabio Rojas 5


I.T.M.

lenguajes de programación, continúa a paso acelerado, cada vez con mayor velocidad, el
panorama está cambiando de una etapa de sistemas y lenguajes especialmente desarrollados
para aplicaciones individuales. Los lenguajes de programación actuales son los conocidos
como Lenguajes visuales, como por ejemplo Visual Fox, Visual Basic, Visual C .

Héctor Fabio Rojas 6


I.T.M.

Unidad II
" METODOLOGIA PARA LA SOLUCION DE PROBLEMAS POR MEDIO DE
COMPUTADORAS "
A fin de resolver un problema utilizando sistemas de cómputo, debe seguirse una serie de
pasos que permiten avanzar por etapas bien definidas hacia la solución.
Estas etapas son las siguientes :
Definición del problema. Análisis de los datos. Diseño de la
solución. Codificación. Prueba y depuración. Documentación. Mantenimiento.

2.1 Definición del problema


Está dada en sí por el enunciado del problema, el cual debe ser claro y complejo. Es
importante que conozcamos exactamente "que se desea obtener al final del proceso" ;
mientras esto no se comprenda no puede pasarse a la siguiente etapa.

2.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 detalle ya que esto es un requisito para lograr una solución
eficaz.
Una vez que el problema ha sido definido y comprendido, deben analizarse los siguientes
aspectos :
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.

Ejemplo 2.1
Leer el radio de un círculo y calcular e imprimir su superficie y circunferencia.

Análisis
Las entradas de datos en este problema se concentran en el radio del círculo. Dado que el
radio puede tomar cualquier valor dentro del rango de los números reales, el tipo de datos
radio debe ser real.
Las salidas serán dos variables : superficie y circunferencia que también serán de tio real.
Entradas : Radio del círculo (variable RADIO).
Salidas : Superficie del círculo (variable AREA).
Circunferencia del círculo (variable CIRCUNFERENCIA).
Variables : RADIO, AREA, CIRCUNFERENCIA tipo real.

2.3 Diseño de la solución


Una computadora no tiene capacidad para solucionar problemas más que cuando se le
proporcionan los sucesivos pasos a realizar, esto se refiere a la obtención de un algoritmo
que resuelva adecuadamente el problema. En caso de obtenerse varios algoritmos,
seleccionar uno de ellos utilizando criterios ya conocidos.

Héctor Fabio Rojas 7


I.T.M.

Esta etapa incluye la descripción del algoritmo resultante en un lenguaje natural, de


diagrama de flujo o natural de programación.
Como puede verse, solo se establece la metodología para alcanzar la solución en forma
conceptual, es decir ; sin alcanzar la implementación en el sistema de cómputo.
De acuerdo al ejemplo 2.1 tenemos que la información proporcionada constituye su entrada
y la información producida por el algoritmo constituye su salida. Los problemas complejos
se pueden resolver más eficazmente por la computadora cuando se dividen en
subproblemas que sean más fácil de solucionar.
El problema de cálculo de la longitud y superficie de un círculo se puede descomponer en
subproblemas más simples :
Leer datos de entrada. Calcular superficie y longitud. Escribir resultados (datos de
salida).
2.4 Codificación
Se refiere a la obtención de un programa definitivo que pueda ser comprensible para la
máquina. Incluye una etapa que se reconoce como compilación.
Si la codificación original se realizó en papel, previo a la compilación deberá existir un
paso conocido como transcripción.

Programa Fuente
Esta escrito en un lenguaje de programación. (pascal, C++,Visual Fox, Visual Basic,
etc). Es entendible por el programador.

Programa Ejecutable
Está en lenguaje máquina. Entendible por la máquina.

2.5 Prueba y depuración


Una vez que se ha obtenido el programa ejecutable, este es sometido a prueba a fin de
determinar si resuelve o no 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 como reacciona en
cada ocasión.

Héctor Fabio Rojas 8


I.T.M.

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 detalles para optimizar el desempeño del programa.

2.6 Documentación
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 dió origen a su
diseño.
En vista de que esta utilización no podrá ser supervizada 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 el programa.
2.7 Mantenimiento
Se refiere a las actualizaciones que deban aplicarse al programa cuando las circunstancias
así lo requieran. Este programa deberá ser susceptible de ser modificado para adecuarlo a
nuevas condiciones de operación.
Cualquier actualización o cambio en el programa deberá reflejarse en su documentación.

Héctor Fabio Rojas 9


I.T.M.

Unidad III
"Entidades Primitivas Para el Diseño de Instrucciones"

3.1 Tipos de Datos 3.2 Operadores y Operandos 3.3 Expresiones

3.1 Tipos de Datos


Un dato se define como la expresión general que describe los objetos con los cuales opera
una computadora. Los datos de entrada se transforman por el programa, después de las
etapas intermedias, en datos de salida.
Los datos se clasifican en diversas categorías, según el tipo de máquina o del lenguaje en
uso. Generalmente podemos encontrar las siguientes categorías :
Numéricos Lógicos Cadenas Datos Numéricos
Son aquéllos que representan una cantidad o valor determinado. Su representación se lleva
a cabo en los formatos ya conocidos (enteros, punto y fracciones decimales si estas
existen).
Estos pueden representarse en dos formas distintas :
Tipo Numérico Entero (integer). Tipo Numérico Real (real).

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

Reales
Consiste en un subconjunto de los números reales. Estos números siempre tienen un punto
decimal y pueden ser positivos o negativos. Un número real consiste de un número entero y
una parte decimal. Algunos ejemplos son :
0.52 664.32 6.579 8.0 -9.3 -47.23

Cadenas
Son los datos que representan información textual (palabras, frases, símbolos, etc). No
representan valor alguno para efectos numéricos. Pueden distinguirse porque son
delimitados por apóstrofes o comillas.

Se clasifica en dos categorías :


Datos tipo carácter (char) Datos tipo Cadena (string)
Datos Tipo Carácter
Es un conjunto finito y ordenado de caracteres que la computadora reconoce. Un dato de
este tipo contiene solo un carácter.
Reconoce los siguientes caracteres :
Caracteres Alfabéticos (A,B,C,…Z,a,b,c…z) Caracteres Numéricos
(0,1,2,…9) Caracteres Especiales (+, -, *, /, ^, . , ;, <, >, $, …….)
Datos Tipo Cadena (string)

Héctor Fabio Rojas 10


I.T.M.

Es un sucesión de caracteres que se encuentran delimitados por una comilla (apóstrofe) o


dobles comillas, según el tipo de lenguaje de programación. La longitud de una cadena de
caracteres es el número de ellos comprendidos entre los separadores o delimitadores.
Ejemplos :
‘Hola Mortimer’ ’12 de octubre de 1496’ ‘Enunciado cualquiera’ Nota: Los símbolos
disponibles para la formulación de caracteres y de cadenas son aquéllos que se
encuentran en el cóodigo ASCII.
ASCII (American Standard Code for Information Interchange).

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

Tipos Compuestos
Entre los principales tipos compuestos se encuentran los siguientes:
a.- SUBRANGO : Son aquéllos en los que se especifíca con precisión el intervalo de
valores válidos para un dato.
Ejemplos:
0..100 (son enumerativos de tipo entero)
'A'..'Z' (son enumerativos de tipo cadena)
Los Reales no son válidos para crear enumerativos, ya que su intervalo no está definido.
b.- ENUMERATIVOS : Son aquéllos en los que se definen individualmente los valores
para un dato.
Ejemplos:
(0,25,40,52) Siempre deben ponerse netre paréntesis.
c.- DEFINIDOS POR EL USUARIO : Son aquéllos que el programador crea para
satisfacer las necesidades del programa en diseño.

Constantes y variables
Una Constante es aquélla que no cambia de valor durante la ejecución de un programa (o
comprobación de un algoritmo en este caso). Se representa en la forma descrita para cada
categoría.
Las Variables son aquéllas que pueden modificar su valor durante la ejecución de un
programa (idem).
Su representación se da a traves de letras y símbolos generalmente numéricos a los que se
les asigna un valor.
Ejemplos:
ConstantesVariablesNuméricos36 450.35 0.58A Nom Edad Ciudad EstaturaCadena'A'
'Juan' 'La Paz'LógicosFalso Verdadero

3.2 Operadores y Operandos

Héctor Fabio Rojas 11


I.T.M.

Operadores
Un operador es el símbolo que determina el tipo de operación o relación que habrá de
establecerse entre los operandos para alcanzar un resultado.
Los operadores se clasifican en tres grupos:
Aritméticos. Relacionales. Lógicos.
1.- Operadores Aritméticos
Son aquéllos que permiten la realización de cálculos aritméticos. Utilizan operandos
numéricos y proporcionan resultados numéricos.
OperadorOperación+Suma-Resta*Multiplicación/División realDivDivisión enteraMod
Residuo^ExponenciaciónEjemplos:
7+3 = 10 10 Div 4 = 2
7-3 = 4 20 Mod 3 = 2
7*3 = 21 5 Mod 7 = 5
10/4= 2.5 4 ^ 2 = 16
En la expresión 7+3, los valores 7 y 3 se denominan operandos. El valor de la expresión
7+3 se conoce como resultado de la expresión.
Todos los operadores aritméticos no existen en todos los lenguajes de programación, por
ejemplo, en Fortran no existen Div y mod.
Operadores Div y Mod
El símbolo / se utiliza para la división real, y el operador Div representa la división entera.
ExpresiónResultadoExpresiónResultado10.5/3.03.510 Div 331/40.2518 Div 2
92.0/4.00.530 Div 30130/301.010 Mod 316/80.7510 Mod 20

Operadores Relacionales
Permiten realizar comparaciones de valores de tipo numérico o carácter. Estos operadores
sirven para expresar las condiciones en los algoritmos. Proporcionan resultados lógicos.
OperadorSignificado<Menor que>Mayor que=Igual que<=Menor o igual que>=Mayor o
igual que<>Diferente deEl formato general para las comparaciones es:
expresión1 operador de relación expresión2
El resultado de la operación será Verdadero o Falso. Así por ejemplo, si A=4 y B=3,
entonces:
A>B Es Verdadero
(A-2) < (B-4) Es Falso
Los operadores de relación se pueden aplicar a cualquiera de los cuatro tipos de datos
estándar: enteros, real, lógico y carácter.
‘A’ < ‘K’ = Verdadero
‘A’ > ‘a’ = Falso
‘MARIA’ < ‘JUAN’ = Falso (se considera la primera letra)
‘JAIME’ > ‘JORGE’ = Falso
Nota: La comparación de cadenas se rige por el código ASCII.

Prioridad De Operadores Aritméticos y Relacionales


Determina el orden en que habrán de realizarse las operaciones en una expresión
determinada. Para obtener la prioridad se deben conocer las siguientes reglas:

Héctor Fabio Rojas 12


I.T.M.

Las operaciones que están encerradas entre paréntesis se evalúan primero. Si


existen diferentes paréntesis anidados (interiores unos a otros), las expresiones más
internas se evalúan primero.
Las operaciones aritméticas dentro de una expresión suelen seguir el siguiente orden de
prioridad.
OperadorPrioridad^Alta*, /, Div+, -, ModRelacionalesBajaEn caso de coincidir varios
operadores 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.
Cuando se desea realizar una operación con baja prioridad por adelantado, debe agruparse a
los operandos involucrados.
4 + 12 /2 = 10 (sin agrupar)
(4 + 12) /2 = 8 (con agrupador)
Ejemplo:
Obtener los resultados de las expresiones:
-4 * 7 + 2 ^ 3 / 4 - 5
Solución:
-4 *7 + 2 ^ ¾
Resulta:
-4 * 7+ 8/4 -5
-28 + 8/4 -5
-28 + 2 - 5
-26 - 5
-31
Los paréntesis tienen prioridad sobre el resto de las operaciones.
A * (B+3) La constante 3 se suma primero al valor de B, después este resultado se
multiplica por el valor de A.
(A*B) +3 A y B Se multiplican primero y a continuación se suma 3.
A + (B/C) + D Esta expresión equivale a A+ B/C + D
Operadores Lógicos
Son aquéllos que permiten la combinación de condiciones para formar una sola expresión
lógica. Utilizan operandos lógicos y proporcionan resultados lógicos también.
OperadorRelaciónnotNegación (No)andConjunción (Y)orDisyunción (O)xorDisyunción
Exclusiva (O/SOLO)
Se obtiene Verdadero si:NOTEl operando es falsoANDAmbos operandos son
verdaderosORAl menos un operando es verdaderoXORSolo uno de los operandos son
verdadero
XYNOT(X)NOT(Y)X AND YX OR Y X XOR
YFFVVFFFVFFVFVVFVVFFVVVVFFVVF

Prioridad De Los Operadores Lógicos


Los operadores aritméticos seguían un orden específico o de prioridad cuando existían más
de un operador en las expresiones. De modo similar los operadores lógicos y relacionales
tienen un orden de prioridad.
Ejemplos:
Not 4 > 6 Produce un error, ya que el operador not se aplica a 4.
Not (4 > 14) Produce un valor verdadero.
(1.0<x) And (x<z +7.0) Si x vale 7 y z vale 4, se obtiene un valor falso.

Héctor Fabio Rojas 13


I.T.M.

Asignación
La operación de asignación es el modo de darle valores a una variable. La operación de
asignación se representa por el símbolo u operador . La operación de asignación se
conoce como instrucción o sentencia de asignación cuando se refiere a un lenguaje de
programación.
A fin de manejar datos por medio de variables, estos pueden recibir valores determinados.
El tipo de los valores que pueden recibir dependen de la declaración previa de tales
variables.
En una asignación se resuelve, primeramente la expresión (al lado derecho del símbolo de
asignación) y se asigna el resultado en la variable.
El formato general de asignación es:
Nom_variable Expresión
Donde Expresión puede ser una variable o constante, operación, función.
Ejemplo:
A 9
Significa que la variable A se le ha asignado el valor 9. La acción de asignar es destructiva,
ya que el valor que tuviera la variable antes de la asignación se pierde y se reemlaza por el
nuevo valor. Así en la secuencia de operaciones:
A 30
A 189
A 9
Cuando se ejecutan, el último valor que toma A será 9, ya que los valores anteriores a este
han desaparecido.
Las acciones de asignación se clasifican según sea el tipo de expresiones : Aritméticas,
Lógicas y de Caracteres.
Asignación Aritmética
Las expresiones en las operaciones de asignación son aritméticas:
Suma 5+10+2 Se evalúa la expresión 5+10+2 y se asigna a la variable Suma, es decir,
17 será el valor que toma Suma.
Asignación Lógica
La expresión que se evalúa en la operación de asignación es lógica. Supóngase que M, N, y
P son variables de tipo lógico.
M 8<5
N M o (7 <= 12)
P 7>6
Tras ejecutar las operaciones anteriores, las variables M,N,P toman los valores, falso,
verdadero, verdadero respectivamente.
Asignación de caracteres
La operaciómn que se evalúa es de tipo caracter.
x '3 de Mayo de 1999'
La acción de asignación anterior asigna la cadena de caracteres '3 de Mayo de 1999' a la
variable de tipo carácter x.
Entrada y Salida de Información
Los cálculos que realizan las computadoras requieren para ser útiles la Entrada de los datos
necesarios para ejecutar las operaciones que posteriormente se convertirán en resultados, es
decir, Salida.

Héctor Fabio Rojas 14


I.T.M.

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


variables. Esta entrada se conoce como operación de Lectura (read). Los datos de entrada
se introducen al procesador mediante dispositivos de entrada (teclado, unidades de disco,
etc). La salida puede aparecer en un dispositivo de salida (pantalla, impresora, etc). La
operación de salida se denomina escritura (write).
En la escritura de algoritmos las acciones de lectura y escritura se representan por los
formatos siguientes
leer ( Nom_variable )
escribir (lista de variables de salida)
Ejemplo: Obtener área de un triángulo.
Entrada
• Fórmula (A= B*h/2)
• Datos (Base, altura)
Proceso
• Multiplicar Base y altura.
• Dividir resultado de la multiplicación anterior entre dos.
• Mostrar resultado de división anterior.
Salida
• Area del triángulo.
Algoritmo
Inicio
leer(B)
leer(h)
x B*h
A x/2
escribir(A)
Fin

3.3 Expresiones
Las expresiones son combinaciones de constantes, variables, símbolos de operadores,
paréntesis y nombres de funciones especiales. Las mismas ideas son utilizadas en notación
matemática tradicional ; por ejemplo :
a + b ( b+2) Aquí los paréntesis indican el orden de cálculo.
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 objetos que
manipulan, las expresiones se clasifican en :
Aritméticas Relacionales Lógicas CarácterEl resultado de la expresión numérica es de
tipo numérico ; el resultado de una expresión relacional y de una expresión lógica es de tipo
lógico ; el resultado de una expresión carácter es de tipo carácter.
1.- Expresiones Aritméticas
Las expresiones 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.
+ suma- resta* multiplicación/ división**, ^ exponenciacióndiv división enteramod módulo
(resto)Los cálculos que implican tipos de datos reales y enteros suelen dar normalmente

Héctor Fabio Rojas 15


I.T.M.

resultados del mismo tipo si los operandos lo son también. Por ejemplo, el producto de
operandos reales produce un real.
Ejemplo :
4 x 6 se representa por 4 * 6
39 se representa por 3 ^ 9
18 div 6 se representa por 18/6

2.- Expresiones Lógicas (booleanas)


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

Héctor Fabio Rojas 16


I.T.M.

Unidad IV
"Técnicas de Diseño"

4.1 Top Down 4.2 Bottom Up 4.3 Warnier

4.1 Top Down


Es una técnica para diseñar que consiste en tomar el problema en forma inicial como una
cuestión global y descomponerlo sucesivamente en problemas más pequeños y por lo tanto,
de solución más sencilla.
La descomposición del problema original (y de las etapas subsecuentes), puede detenerse
cuando los problemas resultantes alcanzan un nivel de detalle que el programador o analista
pueden implementar fácilmente.
El problema se descompone en etapas o estructuras jerárquicas, de modo que se puede
considerar cada estructura como dos puntos de vista : lo que hace?, y cómo lo hace ?. Si se
considera un nivel n de refinamiento, las estructuras se consideran de la siguiente forma :
nivel n : Vista desde el exterior.
"lo que hace ?"
Nivel n+1 : Vista desde el interior.
"cómo lo hace ?"
Ejemplo de un diseño descendente (top-down ) de un control de almacén :

4.2 Botton Up

Héctor Fabio Rojas 17


I.T.M.

Esta técnica consiste en partir de los detalles más precisos del algoritmo completando
suscesivamente módulos de mayor complejidad, se recomienda cuando ya se cuenta con
experiencia y ya se sabe lo que se va a hacer.
Conforme se va alcanzando el desarrollo de módulos más grandes se plantea como objetivo
final la resolución global del problema.
Este método es el inverso del anterior y es recomendable cuando se tiene un modelo a
seguir o se cuenta con amplia experiencia en la resolución de problemas semejantes.
La técnica de Botton Up es frecuentemente utilizada para la realización de pruebas a
sistemas ya concluidos.

4.3 Warnier Orr


Es una técnica que utiliza una representación semejante a la de cuadros sinópticos para
mostrar el funcionamiento y organización de los elementos que conforman el algoritmo.
Básicamente, utiliza una notación de llaves para organizar los módulos y se auxilia en la
siguiente simbología para indicar operaciones de control.
SímboloSignificado+OR (uno, otro o varios) XOR (uno u otro, solo uno)(x,y)puede
hacerse tantas veces desde x hasta y
Nota : Los diagramas Warnier Orr se leen de izquierda a derecha y de arriba hacia
abajo.

Héctor Fabio Rojas 18


I.T.M.

Ejemplo de un diagrama de Warnier Orr, de un control de almacén

(0,n) = De cero veces a n veces


(1,n) = De una vez a n veces

Héctor Fabio Rojas 19


I.T.M.

UNIDAD V
"TENICAS PARA LA FORMULACION DE
ALGORITMOS"
Las técnicas analizadas en la unidad anterior permiten un diseño global del algoritmo, pero
ocasionalmente pueden desatender detalles específicos de este.
Las tres técnicas de formulación de algoritmos más populares son :
Diagrama de flujo Pseudocódigo Diagramas estructurados

5.1 Diagramas de Flujo


Se basan en la utilización de diversos símbolos para representar operaciones
específicas. Se les llama diagramas de flujo porque los símbolos utilizados se conectan
por medio de flechas para indicar la secuencia de operación.
La simbología utilizada para la elaboración de diagramas de flujo es variable y debe
ajustarse a un patrón definido previamente.

Héctor Fabio Rojas 20


I.T.M.

SIMBOLOGIA UTILIZADA EN LOS DIAGRAMAS DE FLUJO


Símbolo Función

Ejemplo:
Calcular el salario neto de un trabajador en función del número de horas trabajadas, precio
de la hora de trabajo y considerando unos descuentos fijos al salario bruto en concepto de
impuestos (20 por 100).

Héctor Fabio Rojas 21


I.T.M.

Héctor Fabio Rojas 22


I.T.M.

Ejemplo:
Realizar un diagrama de flujo que permita mostrar en pantalla un mensaje de mayoría o
minoría de edad según sea el caso para un nombre específico.

5.2 Pseudocódigo
Es un lenguaje de especificación de algoritmos. El uso de tal lenguaje hace el paso de
codificación final (esto es, la traducción a un lenguaje de programación) relativamente
fácil.
El pseudocódigo nació como un lenguaje similar al inglés y era un medio representar
básicamente las estructuras de control de programación estructurada. Se considera un
primer borrador, dado que el pseudocódigo tiene que traducirse posteriormente a un

Héctor Fabio Rojas 23


I.T.M.

lenguaje de programación. Cabe señalar que el pseudocódigo no puede ser ejecutado por
una computadora.
La ventaja del pseudocódigo es que en su uso en la planificación de un programa, el
programador se puede concentrar en la lógica y en las estructuras de control y no
preocuparse de las reglas de un lenguaje específico. Es también fácil modificar el
pseudocódigo si se descubren errores o anomalías en la lógica del programa, además de
todo esto es fácil su traducción a lenguajes como pascal, COBOL, C, FORTRAN o BASIC.
El pseudocódigo utiliza para representar las acciones sucesivas palabras reservadas en
inglés (similares a sus homónimos en los lenguajes de programación), tales como
star,begin, end, stop, if-then-else, while, repeat-until….etc
Secuencia
Inicio
acción1
acción2
:
acción n
Fin
Decisión
Simple
si condición entonces
acción1
acción2
:
acción n
Doble
si condición then
acción1
acción2
:
en caso contrario
acción1
acció2
Iteracción
Fija
para var. Entera inicial hasta final hacer
acción1
acción2
:
acción n
Condicional al inicio
mientras condición hacer
acción1
acción2
:
acción n
Condicional al final
Repetir

Héctor Fabio Rojas 24


I.T.M.

acción1
acción2
:
acción n
Hasta que condición
Selección
casos selector de
valor1 : acción1
acción2
valor2 : acción1
acción2
valor n : acción1
acción2
Ejercicio :
Se requiere preguntar dos valores, y a continuación ofrecer un menú con las operaciones
básicas (+, -, *, /). Después de presentar el resultado se ofrecerá la posibilidad de una nueva
operación.
Declaración de variables :
Real : X, Y, RESPUESTA
Entero : OPCION
Carácter : OP
Inicio
Repetir
escribir(‘Primer valor : ’ )
leer(X)
escribir(‘Segundo valor : ‘)
leer(Y)
escribir(‘1) Suma ‘)
escribir(‘2) Resta ‘)
escribir(‘3) Multiplicación ‘)
escribir(‘4) División ‘)
escribir(‘Qué operación deseas realizar ? : ‘)
leer(OPCION)
casos OPCION de
1 : RESULTADO X+Y
2 : RESULTADO X-Y
3 : RESULTADO X*Y
4 : si Y=0 entonces
escribir(‘ Error ‘)
RESULTADO 0
en caso contrario
RESULTADO X/Y
escribir (‘Resultado : ‘,RESULTADO)
escribir(‘Deseas otro cálculo : [S/N] ‘)
leer(OP)
Hasta que RES = ‘N’
Fin

Héctor Fabio Rojas 25


I.T.M.

Ejercicio :
Preguntar un nombre y repetirse en pantalla tantas veces como se desee. (preguntar
cantidad de repeticiones), indicando el número de repetición.
Declaración de variables
Cadena : nom
entero : x, n
Inicio
escribir(‘Nombre : ‘)
leer(nom)
escribir(‘Cuántas veces quieres repetirlo ? : ‘)
leer(n)
para x 1 hasta n hacer
escribir(x’.- ‘, nom)
Fin

5.3 Diagramas Estructurados (nassi-schneiderman)


El diagrama N-S de Nassi-Schneiderman, también conocido como diagrama de Chapin, es
como un diagrama de flujo en el que se omiten las flechas de unión y las cajas son
contiguas. Las acciones sucesivas se escriben en cajas sucesivas, y, como en los diagramas
de flujo, se pueden escribir diferentes acciones en una caja.
Los Diagramas Estructurados, son una técnica que permite formular algoritmos mediante
una representación geométrica y de asignación de espacios de un bloque específico.
Un algoritmo se representa de la manera siguiente

Una estructura condicional en N-S se representa de la siguiente manera :

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

Héctor Fabio Rojas 26


I.T.M.

Unidad VI
"Estructuras Algorítmicas"

6.1 Secuenciales
6.2 Condicionales

6.1 Estructura Secuencial


Es aquélla 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í suscesivamente
hasta el fin del proceso. La estructura secuencial tiene una entrada y una salida. Su
representación gráfica es la siguiente:
ESTRUCTURA SECUENCIAL

DIAGRAMA N-S DE UNA ESTRUCTURA SECUENCIAL

PSEUDOCODIGO DE UNA ESTRUCTURA SECUENCIAL

Héctor Fabio Rojas 27


I.T.M.

Inicio
:
:
acciones
:
:
fin
Ejemplo:
Calcular el salario neto de un trabajador en función del número de horas trabajadas, precio
de la hora de trabajo y considerando unos descuentos fijos al sueldo bruto en concepto de
impuestos (20 por 100).
Pseudocódigo
Inicio
{cálculo salario neto}
leer nombre, horas, precio_hora
salario_bruto horas * precio
impuestos 0.20 * salario_bruto
salario_neto salario_bruto_impuestos
escribir nombre, salario_bruto, salario_neto_bruto, salario_neto
Fin
Diagrama de flujo

Diagrama N-S

Héctor Fabio Rojas 28


I.T.M.

6.2 Condicionales
La especificación formal de algoritmos tiene realmente utilidad cuando el algoritmo
requiere una descripción más complicada que una lista sencilla de instrucciones. Este es el
caso cuando existen un número de posibles alternativas resultantes de la evaluación de una
determinada condición.
Las estructuras selectivas se utilizan para tomar decisiones lógicas; de ahí que se suelan
denominar también estructuras de decisión o alternativas.
En las estructuras selectivas se evalúa una condición y en función del resultado la misma se
realiza una opción u otra. Las condiciones se especifícan usando expresiones lógicas. La
representación de una estructura selectiva se hace con palabras en pseudocódigo (if, then,
else o bien en español si, entonces, sino), con una figura geométrica en forma de romba o
bien con un triángulo en el interior de una caja rectangular.
Las estructuras selectivas o alternativas pueden ser:
• Simples
• Múltiples
Alternativa Simple (si-entonces/if-then)
La estructura alternativa simple si-entonces (en inglés if-then o bien IF-THEN ) ejecuta
una determinada acción cuando se cumple una determinada condición. La selección si-
entonces evalúa la condición y . . .
Si la condición es verdadera, entonces ejecuta la acción S1 (o acciones caso de ser S1 una
acción compuesta y constar de varias acciones).
Si la condición es falsa, entonces no hacer nada.
A continuación se muestra la gráfica de la estructura condicional simple.

Héctor Fabio Rojas 29


I.T.M.

Pseudocódigo en español
Si <condición> Entonces
<acción S1>
Fin_si
Pseudocódigo en inglés
If <condición> then
<acción S1>
end_if
Diagrama N-S

Alternativas Múltiples (según_sea, caso de / case)


Cuando existen más de dos elecciones (alternativas) posibles, es cuando se presenta el caso
de alternativas múltiples. Si el número de alternativas es grande puede plantear serios
problemas de escritura del algoritmo y naturalmente de legibilidad.
La estrucura de decisión múltiple evaluará una expresión que podrá tomar n valores
distintos 1,2,3,4,..n . Según que elija uno de estos valores en la condición, se realizaráa una
de las n acciones, o lo que es igual, el flujo del algoritmo seguirá un determinado camino
entre los n posibles.
La representación gráfica se muestra a continuación:
Diagrama de Flujo

Diagrama N-S
Modelo 1 Modelo 2

Héctor Fabio Rojas 30


I.T.M.

Pseudocódigo
En inglés la estructura de decisión múltiple se representa
Case expresión of
[e1]: acción S1
[e2]: acción S2
:
[en]: acción Sn
else
acción Sx
end_case
Ejemplo:
Se desea diseñar un algoritmo que escriba los nombres de los días de la semana en función
del valor de una variable DIA introducida por teclado.
Los días de la semana son 7; por consiguiente, el rango de valores de DIA será 1..7, y caso
de que DIA tome un valor fuera de este rango se deberá producir un mensaje de error
advirtiendo la situación anómala.
Inicio
Leer DIA
Según_sea DIA hacer
1: escribir('Lunes')
2: escribir('Martes')
3: escribir('Miércoles')
4: escribir('Jueves')
5: escribir('Viernes')
6: escribir('Sabado')
7: escribir('Domingo')
else
escribir('Error')
fin_según
fin
Estructuras Repetitivas
Las estructuras que repiten una secuencia de instrucciones un número determinado de veces
se denominan Bucles y se denomina Iteración al hecho de repetir la ejecución de una
secuencia de acciones. Entre las estructuras repetitivas se encuentran:
Mientras (while) Repetir (repeat) Desde (for)1.- Estructura Mientras (while)
La estructura repetitiva while, es aquélla en que el cuerpo del bucle se repite mientras se
cumple una determinada condición, su representación gráfica es:

Héctor Fabio Rojas 31


I.T.M.

Pseudocódigo en español Pseudocódigo en inglés


Mientras condición hacer while condición do
Acción S1 <Acciones>
Acción S2 :
: End_while
acción Sn
Fin_mientras
Diagrama N-S

Ejemplo:
Contar los números enteros positivos introducidos por teclado. Se consideran dos variables
enteras NUMERO y CONTADOR (contará el número de enteros positivos). Se supone que
se leen números positivos y se detiene el bucle cuando se lee un número negativo o cero.
Pseudocódigo
Inicio
contador 0
Leer (numero)
Mientras numero > 0 hacer
contador contador+1
Leer (numero)
Fin_Mientras
Escribir('El número de enteros positivos es : ', contador)
Fin
Diagrama de Flujo

Héctor Fabio Rojas 32


I.T.M.

Héctor Fabio Rojas 33

También podría gustarte