Tema 2. Algoritmos

Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 16

Materia: Programación I. Lic. Carla Aguirre Montalvo – Lic.

Miriam Lopez Surco

TEMA 2.
DISEÑO DE ALGORITMO

2.1. CONCEPTO DE ALGORITMO


2.1.1. Diseño del Algoritmo
“¿ CÓMO SE HARÁ ?”

En la etapa de Análisis se determina QUE hará el programa, mientras que en la etapa de Diseño se determina
COMO hará el programa la tarea solicitada.

Una computadora NO tiene capacidad para solucionar problemas más que cuando se le proporcionan los
pasos sucesivos a realizar. Estos pasos sucesivos que indican las instrucciones a ejecutar por la máquina
constituyen un ALGORITMO.

La información proporcionada al algoritmo constituye su ENTRADA y la información producida por el


algoritmo constituye su SALIDA.

2.1.2. Algoritmo

La palabra "algoritmo" es de origen árabe. Viene de "al-Khwārizmī", sobrenombre del célebre matemático
Mohamed ben Musa. Khwārizmī quiere decir "de Khwārizm", el estado donde nació Ben Musa. Al-Khwārizmī
vivió en entre los años 780-840, y es quien recibe el crédito de haber implementado reglas para realizar
sumas, restas, multiplicaciones y divisiones de número decimales paso a paso.

Un ALGORITMO es una secuencia de pasos sucesivos que lleva a la solución de un problema.

2.1.3. Tipos de Algoritmos

 Cualitativos: Son aquellos en los que se describen los pasos utilizando palabras.

 Cuantitativos: Son aquellos en los que se utilizan cálculos numéricos para definir los pasos del
proceso.

2.2. CARACTERÍSTICAS DE LOS ALGORITMOS.

 Preciso, es decir que debe indicar claramente el orden de realización de cada paso.

 Definido, es decir que si se sigue un algoritmo varias veces se debe obtener el mismo resultado
cada vez.

 Finito, es decir que debe tener un número finito de pasos, que debe terminar en algún momento.

2.2.2. Partes de un algoritmo

Consta de tres partes:

 Entrada, es la información proporcionada al algoritmo.

 Proceso, son los cálculos necesarios para encontrar la solución del problema.

I.N.C.O.S. 13
Materia: Programación I. Lic. Carla Aguirre Montalvo – Lic. Miriam Lopez Surco

 Salida, son las respuestas proporcionadas por el algoritmo o resultados finales del proceso.

Ejemplo

1) Algoritmo para cocinar un huevo duro.

Inicio
P1. Llenar la olla con agua
P2. Encender el fuego de la cocina
P3. Poner la olla al fuego
P4. Esperar hasta que hierva el agua
P5. Introducir el huevo en la olla
P6. Esperar 10 minutos
P7. Apagar el fuego
P8. Vaciar el agua
P9. Sacar el huevo de la olla
Fin

2) Algoritmo para preparar tortilla de papas

Inicio
P1. Pelar las papas
P2. Echar las papas en una olla con agua
P3. Echar sal a gusto
P4. Repetir
Esperar
Hasta que las papas estén cocidas
P5. Vaciar el agua de la olla
P6. Sacar las papas a una cacerola
P7. Cortar las papas
P8. Sacar el huevo de la nevera
P9. Romper el huevo y botar las cáscaras
P10. Batir el huevo en un plato hondo
P11. Encender el fuego
P12. Poner la sartén
P13. Repetir
Esperar
Hasta que el aceite esté hirviendo
P14. Meter las papas en la sartén
P15. Esperar a que las papas estén doradas
P16. Verter los huevos en la sartén
P17. Echar un poco de sal
P18. Repetir
Batir huevos y papas por ambos lados
Hasta que la tortilla esté dorada
P19. Retirar la sartén
P20. Colocar la tortilla en un plato.
Fin

I.N.C.O.S. 14
Materia: Programación I. Lic. Carla Aguirre Montalvo – Lic. Miriam Lopez Surco

2.3. DATOS, TIPOS DE DATOS Y OPERACIONES BÁSICAS

Los algoritmos y los programas de computadoras, independientemente del lenguaje en que están escritos,
están diseñados para manipular información o datos. Estos datos pueden ser las notas de los alumnos de la
universidad, los sueldos de los empleados de una empresa, etc.

2.3.1. DEFINICIÓN DE DATOS

Los datos son los objetos sobre los que opera una computadora.

2.3.2. TIPOS DE DATOS

Los datos se clasifican en:

 Simples
 Estructurados

Los datos estructurados se clasifican en:

Vectores
 Estáticos Matrices
Registros
Archivos

Pilas
Colas
 Dinámicos Listas
Árboles
Grafos
2.3.2.1. DATOS SIMPLES

Los datos simples se clasifican en:

Enteros
 Numéricos
Reales

1 sólo carácter (char)


 Carácter
Varios caracteres (strings - cadenas)

 Lógicos

2.3.2.1.2. Datos Numéricos


 Los enteros son números que no tienen parte decimal y pueden ser positivos o negativos.
Ejemplos:

I.N.C.O.S. 15
Materia: Programación I. Lic. Carla Aguirre Montalvo – Lic. Miriam Lopez Surco

a) 984
b) 86
c) -75
d) 132

 Los reales son números con parte entera y parte decimal y pueden ser positivos o negativos.
Ejemplos:

a) 0.98
b) 938.83
c) 123.6555
d) 6.87

2.3.2.1.3. Datos Tipo Carácter Y Tipo Cadena


Los datos de tipo carácter son los caracteres que puede interpretar la computadora, pueden ser:
 Alfabéticos (A, B, .., Z, a, b, .. , z)
 Dígitos (0, 1, .., 9)
 Especiales (+, -, /, ^, <, >, $, etc.)

Y se caracterizan por estar formados por un sólo carácter.


Ejemplos:

a) ‘A’
b) ‘b’
c) ‘S’
d) ‘N’
e) ‘F’
f) ‘M’

Un dato de tipo cadena es una sucesión de caracteres que se encuentran encerrados entre comillas
simples (apóstrofos) o comillas dobles.

El número de caracteres comprendidos entre las comillas se denomina longitud de la cadena.

Ejemplos:

a) “Juan Pérez”
b) “ c. Comercio # 345”
c) “26 de Enero de 1981”
d) “2453567”

2.3.2.1.4. Datos Lógicos

Los datos lógicos o booleanos son aquellos que sólo pueden tomar uno de dos posibles valores: verdadero o
falso.

2.3.2.1. IDENTIFICADORES Y PALABRAS RESERVADAS

I.N.C.O.S. 16
Materia: Programación I. Lic. Carla Aguirre Montalvo – Lic. Miriam Lopez Surco

Los identificadores representan los datos de un programa (constantes, variables, tipos de datos). Un
identificador es una secuencia de caracteres que sirve para identificar una posición en la memoria de la
computadora, que nos permite accesar a su contenido.

Un identificador es un nombre simbólico que se refiere a un dato o programa determinado. Es muy fácil elegir
identificadores cuyo nombre guarde estrecha relación con el sentido físico, matemático o real del dato que
representan. Así por ejemplo, es lógico utilizar un identificador llamado salario_bruto o salarioBruto para
representar el coste anual de un empleado. El usuario no tiene nunca que preocuparse de direcciones físicas
de memoria: el sistema se preocupa por él por medio de una tabla, en la que se relaciona cada identificador
con el tipo de dato que representa y la posición de memoria en la que está almacenado.

Ejemplo: Nombre
Num_hrs
Calif2

Reglas para formar un Identificador


 Otros Lenguajes  Lenguaje Java
 Debe comenzar con una letra (A a Z, mayúsculas o  Debe comenzar con una letra (A a Z, mayúsculas o
minúsculas). minúsculas).
 No todos los lenguajes son sensitivos a mayúsculas y  Java es case-sensitive, diferencia las mayúsculas de
minúsculas. las minúsculas.
 no deben contener espacios en blanco, ni puntos, ni  no deben contener espacios en blanco, ni puntos, ni
caracteres especiales caracteres especiales
 Puede tener una longitud hasta 255 caracteres  Los identificadores no tienen longitud máxima. pero
es aconsejable usar solamente una longitud óptima
de 4 a 15 caracteres.
 Los caracteres pueden ser letras, dígitos, el  Los caracteres pueden ser letras, dígitos, el
carácter de subrayado (_) y los caracteres de carácter de subrayado (_) y los caracteres de
declaración del tipo de la variable (%, &, #, !, @, y declaración del tipo de la variable ($)
$ ).
 El nombre de una variable no puede ser una  Las palabras reservadas no se pueden usar como
palabra reservada del lenguaje (For, If, Loop, un identificador. Por ejemplo, es una declaración
Next, Val, Hide, Caption, And, ...). Para saber inválida ya que es una palabra reservada. Hay 53
cuáles son las palabras reservadas en un lenguaje palabras reservadas en Java.
puede utilizarse el Help del lenguaje de
programación, buscando la referencia Reserved
Words

Ejemplos:

VÁLIDOS INVÁLIDOS OBSERVACIONES


Nombre My Variable Contiene un espacio en blanco
Direccion 91Java Comienza con un dígito
Sueldo A+b El signo (+) no es un carácter alfanumérico
Sueldo_empleado Sueldo- empleado El guión(-) no es un carácter alfanumérico
Los identificadores no pueden tener ciertos
anio_nac año_nac
caracteres como ñ o acentos

I.N.C.O.S. 17
Materia: Programación I. Lic. Carla Aguirre Montalvo – Lic. Miriam Lopez Surco

Suma Super Palabra reservada del lenguaje

Las palabras reservadas (KeyWords), son palabras clave y propias de cada lenguaje de programación.

Ejemplos:

main, final, user, const, int, static, end,


Java double, String, while, if, do, boolean, else,
pow, Math, etc.

2.3.3. CONSTANTES Y VARIABLES

Las constantes son datos cuyo valor no cambia durante la ejecución del programa.

Ejemplos:

a) 3.1416
b) 2.71828
c) ‘Error’

Las variables son datos cuyo valor puede cambiar durante la ejecución del programa.
Ejemplos:

a) Edad: representa la edad de una persona


b) Sueldo_mensual: representa el sueldo que gana un empleado cada mes
c) Nota_final: representa la nota final obtenida por un alumno.

2.3.4. OPERADORES ARITMÉTICOS, RELACIONALES Y LÓGICOS

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.

Aritméticos
Tipos de Operadores Relaciónales
Lógicos

2.3.5 EXPRESIONES

Las expresiones son combinaciones de constantes, variables, símbolos de operación, paréntesis y nombres
de funciones especiales.
Ejemplos:
a) Pi * radio

 Pi: constante equivalente a 3.1416


 Radio: variable que representa el radio de una circunferencia

I.N.C.O.S. 18
Materia: Programación I. Lic. Carla Aguirre Montalvo – Lic. Miriam Lopez Surco

Según sea el tipo de objetos que manipulan las expresiones pueden ser:

 Aritméticas
 Lógicas
 Carácter

2.3.5.1 EXPRESIONES ARITMÉTICAS

Las expresiones aritméticas son análogas a las fórmulas matemáticas. Las variables y constantes son de tipo
numérico y las operaciones son las aritméticas.

2.3.6 Operadores aritméticos

Símbolo Operación Tipo de operandos Tipo de resultado


^ Exponenciación Entero o real Entero o real
* Multiplicación Entero o real Entero o real
/ División Entero o real Real
+ Suma Entero o real Entero o real
- Resta Entero o real Entero o real
DIV División entera Entero Entero (cociente)
MOD % Módulo Entero Entero (residuo)
Ejemplos:
a)
operador

12 + 5 = 17 resultado

operandos

b) 25.3 + 4.58 = 29.88

c) 15 - 8 = 7

d) 3 * 8 = 24

e) 6 ^ 3 = 216

f) 15/3 = 5.0

g) 15 div 3 = 5 18 div 4 = 4

h) 15 mod 3 = 0 18 mod 4 = 2
OA) 15 3
(0) 5 cociente

I.N.C.O.S. 19
Materia: Programación I. Lic. Carla Aguirre Montalvo – Lic. Miriam Lopez Surco

residuo
** OA significa operaciones auxiliares
i) 27 div 4 = 6

j) 27 mod 4 = 3

OA) 27 4
(3) 6 cociente

residuo

k) 156 div 10 = 15

l) 156 mod 10 = 6

OA) 156 10
(6) 15
cociente

residuo
2.3.5.2 EXPRESIONES LÓGICAS
Son aquellas que pueden tomar uno de dos posibles valores: verdadero o falso. Se forman combinando
constantes y variables con operadores lógicos y relacionales.

2.3.5.3 Operadores relacionales


Operador Significado
= Igual que
<> Distinto que
> Mayor que
< Menor que
>= Mayor o igual que
<= Menor o igual que
Ejemplos:
a) si A = 6 y B = 5

A > B es falso
6 > 5 es V
(A + 5) >= (B + 2) es verdad

b) ‘A’ < ‘B’ es verdad

c) si A = 12

A mod 2 = 1 es falso

I.N.C.O.S. 20
Materia: Programación I. Lic. Carla Aguirre Montalvo – Lic. Miriam Lopez Surco

d) si MAX = 345

MAX mod 3 = 0 es verdad

2.3.5.4 Operadores lógicos


Operador Expresión lógica Significado
Not not p (no p)
And p and q (p Λ q) Conjunción de p y q
Or p or q (p v q) Disyunción de p y q

p q p and q p or q
V V V V
V F F V
F V F V
F F F F

p not p
V F
F V
Ejemplos:
a) (21 > 10) and (4 = 4) es verdad

b) not (34 < 56) es falso

c) (3 > 2) and (2 > 5 ) es falso

d) (45 >= 13) or (3 > 16) es verdad

2.3.5. Jerarquía de operaciones

Las expresiones tienden a tener una regla de prioridad, ya que puede haber confusión por cual operación
el computador debe comenzar es por eso que a continuación se describen éstas reglas:

a) 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.
b) Las operaciones aritméticas dentro de una expresión pueden seguir el siguiente orden de
prioridad.

 Operador exponencial
 Operador de *, /
 Operadores +, -
 Operadores div, mod

En caso de coincidir varios operadores de igual prioridad en una expresión o subexpresión encerrada entre
paréntesis, el orden de prioridad en éste caso es de izquierda a derecha.
Ej. 7 * 10 - 15 mod 3 * 4 + 9

I.N.C.O.S. 21
Materia: Programación I. Lic. Carla Aguirre Montalvo – Lic. Miriam Lopez Surco

70 - 15 mod 12 + 9
35 mod 21

13
Ej. (7*(10 – 5) mod 3) * 4 + 9
(7 * 5 mod 3) * 4 + 9
(35 mod 3) * 4 + 9
2*4 +9
8 + 9
17

a) 43+54*4 b) 4+4*5-4/4 c) 1+(1+2)/4+6*(4+5)

2.3.5.1. Expresiones relacionales

El formato general para las comparaciones es:

Expresión 1 Operador de relación expresión 2

Y el resultado de la operación será verdadero o falso. Así, por ejemplo, si A=4 y B=3, entonces A>B es
verdadero. Mientras que (A-2) < (B-4) es falso.

Los operadores de relación se pueden aplicar a cualquiera de los cuatro tipos de datos estándar

2.3.5.2. Expresiones Lógicas

Las expresiones lógicas se forman combinando constantes lógicas, variables lógicas y otras expresiones
lógicas, utilizando los operadores lógicos NOT, AND Y OR. Y los operadores relacionales. (de relación o
comparación) =, <, >, <=, >=, <>.
Ej.

(1<5) y (5<10) = Verdadero

(2>4) y (4>3) = falso

(3=3) o (4>1) = Verdadero

(x<6.5) y (x=3) Si x =3, el resultado es verdadero


(A<=B) o (3>5) Si A=5 y B=8 , el resultado es verdadero.
Ejemplos:
a = 10 b = 12 c = 13 d =10

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


F T F F
T F
F

I.N.C.O.S. 22
Materia: Programación I. Lic. Carla Aguirre Montalvo – Lic. Miriam Lopez Surco

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


F F T T
F T
F

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


F T
T
T
Ejemplos:

a) sqrt (25) =5

b) sqr (6) = 36

c) trunc (6.58) = 6

d) ent (6.58) = 6.0

e) abs (-45) = 45

f) round (3.6) = 4

g) round (3.23) = 3

h) Si A = 5; B = 4; C = 3

Calcular el valor de: X = sqr(A) + sqrt (B) + C

Solución

X = sqr( 5 ) + sqrt( 4 ) + 3
X = 25 + 2 + 3
X = 30

Herramientas de Programación

Una vez que se ha obtenido el algoritmo que resolverá el problema, es preciso representarlo mediante una
determinada HERRAMIENTA DE PROGRAMACION:

 Diagrama de flujo
 Pseudocódigo
 Diagramas Nassi-Shneiderman (diagramas N-S)

Diagramas de Flujo

I.N.C.O.S. 23
Materia: Programación I. Lic. Carla Aguirre Montalvo – Lic. Miriam Lopez Surco

Un diagrama de flujo (flowchart) es un diagrama que utiliza símbolos estándar y en el que cada paso del
algoritmo se visualiza dentro del símbolo adecuado y el orden en que estos pasos se ejecutan se indica
conectándolos con flechas llamadas líneas de flujo porque indican el flujo lógico del algoritmo.

En esencia el diagrama de flujo es un medio de presentación visual y gráfica del flujo de datos a través del
algoritmo, las operaciones ejecutadas y el orden en que se ejecutan.

Los símbolos utilizados en los diagramas de flujo han sido normalizados por las organizaciones ANSI
(American National Institute) y por ISO (International Standard Organization), los más utilizados son:

Representa el INICIO “C” y el FINAL “fin” del de un programa

Ejemplo

C Inicio del programa

fin Fin del programa

Representa la ENTRADA/SALIDA de datos desde o hacia


cualquier periférico de entrada o salida

Ejemplos

A
Lee un valor desde un periférico de entrada y lo almacena en la
variable A

A, B
Lee dos valores desde un periférico de entrada y los almacena
en las variables A y B respectivamente

Representa PROCESO, se utiliza para realizar cualquier tipo de


operación que pueda originar cambios de valores en las
variables, pueden ser operaciones aritméticas, de
transferencia, etc.

I.N.C.O.S. 24
Materia: Programación I. Lic. Carla Aguirre Montalvo – Lic. Miriam Lopez Surco

Ejemplos

A  0 Inicializa la variable A en cero (almacena el cero en la variable


A)

AA+2 Suma dos al valor previo de la variable A y almacena este


resultado en la misma variable.

BA Transfiere el valor de la variable A a la variable B

Representa DECISION, se utiliza para indicar operaciones


no si lógicas o de comparación entre datos, dependiendo del
resultado cual de los caminos alternativos a seguir.

Ejemplos

no si Compara el valor de la variable A con el valor de la variable B.


A>B

no si Compara el valor de la variable A con cero


A=0

CONECTOR, se utiliza para enlazar dos partes cualesquiera de


un diagrama de flujo en la misma página

CONECTOR, se utiliza para enlazar dos partes cualesquiera de


un diagrama de flujo en diferentes páginas.

I.N.C.O.S. 25
Materia: Programación I. Lic. Carla Aguirre Montalvo – Lic. Miriam Lopez Surco

LINEAS DE FLUJO, indican el sentido de ejecución de las


operaciones. (flujo de la información)

LINEA CONECTORA, se utiliza para unir dos símbolos

Se utiliza para realizar llamadas a subprogramas

IMPRESORA, se utiliza para enviar datos a la impresora

PANTALLA, se utiliza para mostrar los resultados por pantalla

I.N.C.O.S. 26
Materia: Programación I. Lic. Carla Aguirre Montalvo – Lic. Miriam Lopez Surco

Ejemplos

Muestra el valor almacenado en la variable A

TECLADO, se utiliza para representar el ingreso de datos por


teclado.

COMENTARIOS, se utiliza para añadir comentarios al diagrama


de flujo. Se los puede usar en cualquier parte del diagrama de
flujo.

Recomendaciones para el diseño de Diagramas de Flujo

 Se deben se usar solamente líneas de flujo 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 son 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.

Pseudocódigo

I.N.C.O.S. 27
Materia: Programación I. Lic. Carla Aguirre Montalvo – Lic. Miriam Lopez Surco

Hasta ahora los algoritmos se han expresado en lenguaje común. Sin embargo, los programas deben ser
escritos en un lenguaje que pueda entender la computadora. Es natural, por lo tanto, describir los algoritmos
en un lenguaje que se parezca más al lenguaje utilizado para escribir programas de computadora, es decir en
un lenguaje de pseudoprogramación, una imitación del código de las computadoras o como se le conoce
PSEUDOCODIGO.

El pseudocódigo fue creado para superar las dos principales desventajas del diagrama de flujo: el diagrama
de flujo es lento de crear y difícil de modificar sin tener que dibujarlo de nuevo. Es una mezcla de lenguaje
natural y símbolos, términos y otras características comúnmente utilizadas en los lenguajes de alto nivel.

Ventajas de utilizar Pseudocódigo frente a Diagramas 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.

I.N.C.O.S. 28

También podría gustarte