Está en la página 1de 49

ALGORITMOS

Diagramas de Flujo
y
Seudocódigo

Ing. EDGAR NORABUENA MEZA


LIMA -. PERU

2020

Ing. Edgar NORABUENA MEZA 1


CONTENIDO

I. ALGORITMOS

1.1 Diagramas de Flujo


1.2 Pseudocódigo
1.3 Software para crear diagramas de Flujo y Pseudocódigo
1.4 PSeInt

II. CONCEPTOS BASICOS

2.1 Identificador
2.2 tipos de Datos
2.3 Variables
2.4 Operadores
2.5 Prioridad de Operadores
2.6 Tabla de la Verdad para O, Y y NO
2.7 Sentencias de Asignación
2.8 Funciones Internas de PSeInt

III. ESTRUCTURAS BASICAS DE UN ALGORITMO

3.1 Estructura Secuencial


3.2 Estructura Selectiva
3.3 Estructura Repetitiva

IV. ARREGLOS

4.1 Arreglos Unidimensionales


4.2 Ordenamiento de Datos
4.3 Ordenamiento BURBUJA
4.4 Arreglos Bidimensionales

Ing. Edgar NORABUENA MEZA 2


ALGORITMOS
Un algoritmo es un procedimiento simple, preciso y sin ambigüedades para la solución de un problema,
este especifica la secuencia de las operaciones que proporcionan la solución en un numero finito de pasos;
entre dos algoritmos que lleven a un mismo objetivo, siempre será preferible el más corto. Los algoritmos son
independientes de los lenguajes de programación.

Luis Joyanes, programador experto y autor de muchos libros acerca de lógica y programación nos dice
“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 sólo un medio para expresar un
algoritmo y una computadora es sólo un procesador para ejecutarlo”.

Cuadrado Mágico de 4 x 4:

Para que quede claro la definición de algoritmo, usaremos como ejemplo, el cuadrado mágico de 4 x 4
ver la figura 1.1. Un cuadrado mágico de n x n, es una matriz cuadradas de orden n, cuyos elementos son
diferentes, de forma que la suma de los elementos de cualquiera de las filas, de cualquiera de las columnas y
de las dos diagonales principales da siempre el mismo resultado. Al número resultante se le denomina
“constante mágica”. El cuadrado mágico de 4 x 4 puede ser elaborado como sigue:

1. Colocar la secuencia 1, 2, 3, ..16 por filas, a partir de la fila 1 columna 1

1 2 3 4
5 6 7 8
9 10 11 12
13 14 15 16

2. Borrar los numeros que estan en las dos diagonales, es decir 1, 4, 6, 7, 10, 11, 13 y 16

2 3
5 8
9 12
14 15

3. Llenar los casilleros en blanco con los numeros eliminados en forma descendente

16 2 3 13
5 11 10 8
9 7 6 12
4 14 15 1

Figura 1.1. Cuadrado mágico de 4 x 4

Ing. Edgar NORABUENA MEZA 3


Los algoritmos pueden ser expresados de diferentes maneras, entre ellos y los más indicados para
principiantes son:

1. Diagramas de Flujo
2. Pseudocódigo

Diagramas de Flujo
Los diagramas de flujo ilustran con figuras simbólicas la lógica de la solución de un problema, son una
representación gráfica de un algoritmo. Adicionalmente a las palabras, utilizan símbolos geométricos ya
definidos para representar tipos de operaciones.

Principales Símbolos Función

Terminal: usado para indicar el inicio o el final de un algoritmo.

Entrada / Salida: Ingreso de datos en la memoria desde los periféricos,


“entrada”, o salida de información, “salida”.

Proceso: usado para representar cálculos, procesos o cualquier


función no descrita por un símbolo más específico.

Decisión: utilizada donde es posible una bifurcación para trayectorias


alternativas, basado en una decisión.

Proceso predefinido: un grupo de operaciones no detallados sobre el


diagrama de flujo, pero a menudo en otro, ejemplo, un subprograma.

Conector: usado para representar una unión en una línea de flujo,


para conectar trayectorias cortadas en la línea de flujo y para conectar
varias páginas del mismo diagrama de flujo.

Figura 1.2. Símbolos de diagramas de flujo

Un diagrama de flujo es quizá el mejor método disponible para expresar lo que pueda hacer una
computadora o lo que queremos que haga. Ellos son simples, fáciles de crear, fáciles de emplear y no tienen
ambigüedades.

Ing. Edgar NORABUENA MEZA 4


Los programadores emplean un conjunto de símbolos estandarizados por el Instituto Nacional
Americano de Estándares (ANSI). El conjunto completo de símbolos es muy extenso, en el presente, solo
usaremos lo mostrado en la Figura 1.2. Este conjunto de símbolos nos permitirá diseñar diagramas de flujo para
una gran variedad de problemas

Pseudocódigo
El pseudocódigo es un lenguaje informal para representar algoritmos, nació como un lenguaje similar
al inglés común y es un medio de representar básicamente las estructuras de control de programación
estructurada, se considera un primer borrador. Frecuentemente se utiliza palabras imperativas como: lea,
imprima, sume, divida, calcule, finalice, etc.

Un algoritmo representado en Pseudocódigo cuidadosamente preparado puede convertirse fácilmente


en su programa correspondiente en C++, por ejemplo (puedo ser otro lenguaje de programación). En muchos
casos esto se hace mediante un simple reemplazo de las instrucciones en pseudocódigo por su equivalente en
C++

Software para crear Diagramas de Flujo y


Pseudocódigo
En la actualidad existe una gran variedad de software, tanto para la elaboración de diagramas de flujo,
como de pseudocódigo, entre los más conocidos se tiene:

DFD

PSeInt

Los ejercicios que desarrollaremos serán en PSeInt.

PSeInt
PSeInt es software libre, gratuito y multiplataforma y, por sus características, una excelente
herramienta para todo aquel que se inicia en el mundo de la programación.

Permite representar algoritmos utilizando tanto diagramas de flujo como pseudocódigo, incluso pasar
de una forma a otra de manera inmediata. Posibilita la ejecución del algoritmo como si éste ya estuviera
implementado en un lenguaje de programación, con la opción, si se desea, de ir ejecutándolo paso a paso.

El editor ofrece distintos niveles de ayuda, lo que permite familiarizarse con la sintaxis de las
instrucciones de una forma sencilla y rápida. Otra característica muy interesante es la posibilidad de traducir el
algoritmo a distintos lenguajes de programación, lo que constituye una ventaja enorme.

PSeInt puede ser descargado de la siguiente dirección http://pseint.sourceforge.net

Ing. Edgar NORABUENA MEZA 5


CONCEPTOS BÁSICOS

Identificador
Se denomina identificador al nombre que se le asigna a una variable, una función, un tipo de dato, etc.
Para obtener un identificador valido se debe tener en cuenta lo siguiente:

1. Debe iniciar con una letra (no la ñ)


2. Los restantes caracteres puede ser una letra (no la ñ), un digito o el carácter especial de subrayado ( _ )
3. Debe ser distinto de las palabras reservadas de PSeInt. Por ejemplo, no puede ser Algoritmo, definir, real,
leer, como, etc. Una palabra reservada al momento de ser editada toma el color azul.
4. Es lo mismo una letra mayúscula que minúscula (en algunos lenguajes son diferentes)

Para facilitar el entendimiento de un algoritmo, debemos tratar de conseguir identificadores que reflejen o
señalen una característica de este. Por ejemplo, si quiero calcular la edad de una persona, entonces al algoritmo
le podría llamar CalculaEdad, Cal_Edad o EdadP y a una de sus variables respectivas puede ser edad.

Son ejemplo de Identificadores:


Area
Lado1
Perímetro
ApeNom

Son ejemplos de identificadores no validos:


1Lado
Lado$
_Nombre
Area Triangulo

Lo expuesto anteriormente, respecto a un identificador, varía de acuerdo al lenguaje de programación,


por ejemplo, en C++, un identificador valido podría ser _Nombre y ma es diferente de Ma (modo mayúscula
diferente a modo minúscula)

Tipos de Datos
Todos los datos tienen un tipo asociado con ellos. Por ejemplo, 5 es un dato numérico entero, 5.0 es un
dato numérico real y “5” es un caracter.

Tipos de Datos Simples: Existen tres tipos de datos básicos:


1. Numérico
- Entero, ejemplos: -100, 0, 2020, etc
- Real, ejemplos: 1.67, 3.14, -10.1, etc
2. Lógico: solo puede tomar dos valores VERDADERO o FALSO
3. Caracter: caracteres o cadenas de caracteres (encerrados entre comillas o apostrofes). Ejemplos:
4. “hola como estas”, ‘2020’, “universitario”, ‘1’, etc

Arreglos: Los arreglos son estructuras de datos homogéneas (todos sus datos son del mismo tipo) que permiten
almacenar un determinado número de datos bajo un mismo identificador, para luego referirse a los mismos
utilizando subíndices.

Ing. Edgar NORABUENA MEZA 6


Variables

Una variable es un lugar de memoria donde se almacena uno o más datos. El contenido de una variable
puede cambiar durante la ejecución del algoritmo mediante una sentencia de asignación o mediante una
instrucción de lectura.

Algunos ejemplos de declaración de variables:

1. Definir area Como Real


2. Definir edad, NroHijos Como Entero

En el primer ejemplo, la variable area almacenara datos numéricos reales, como 10.45; mientras que
en el segundo ejemplo las variables edad y NroHijos almacenarán datos numéricos enteros, como 55 y 4
respectivamente.

Operadores
Para la construcción de expresiones aritméticas o expresiones lógicas, se pueden usar los operadores
mostrados en la tabla 2.1.

Operador Significado Ejemplo Resultado


Aritméticos
^ Potenciación 1.2^2 1.44
* Multiplicación 10*5.8 58.0
/ División 30/6 5.0
% ó MOD Residuo de una división entera 20 % 6 2
+ Suma 10 + 15 25
- Resta 30 - 7 23
Relacionales
> Mayor que 10 > 20 FALSO
>= Mayor o igual que 15 >= 15 VERDADERO
< Menor que 12 < 15 VERDADERO
<= Menor o igual que 20 <= 15 FALSO
= Igual que 18 = 20 FALSO
<> Distinto que 10 <> 12 VERDADERO
Lógicos
~ ó NO Negación ~(2 < 5) FALSO
& ó Y Conjunción (1<5) & (9=9) VERDADERO
| ó O Disyunción (1<2) | (5=3) VERDADERO

Tabla 2.1. - Operadores usados en PSeInt

Ing. Edgar NORABUENA MEZA 7


Prioridad de Operadores
Una expresión lógica u aritmética libre de paréntesis, se valora de acuerdo a la siguiente prioridad:

1. Funciones
2. Operadores aritméticos
2.1 ^
2.2 *, / , %
2.3 +, -
3. Operadores de relación
<, <=, =, >, >=, <> (todos tienen la misma prioridad)
4. Operadores de relación
4.1 No
4.2 Y
4.3 O

Si una expresión tiene paréntesis, primero se valora lo que esta dentro del paréntesis, con la prioridad
enumerada anteriormente. Si hay empate, esta se rompe de izquierda a derecha.

Tabla de la Verdad para O, Y y No


En la tabla 2.2. se muestra la Tabla de la Verdad de Y (&), O (|) y No (~), que nos permitirán valorar
expresiones lógicas. Se debe tener en cuenta que ExpLog1 y ExpLog2 son expresiones lógicas.

ExpLog1 ExpLog2 ExpLog1 & ExpLog2 ExpLog1 | ExpLog2 ~ExpLog1


V V V V F
F V F V V
V F F V
F F F F

Tabla 2.2 Tabla de la Verdad para Y, O y NO

Sentencia de Asignación
Permite asignar valores a las variables, tiene el siguiente formato:

Id_variable  ExpArit_Log_Car
o
Id_variable = ExpArit_Log_Car

Donde ExpArit_Log_Car es una expresión que al ser evaluado da un resultado, si el resultado es


numérico, entonces Id_variable tiene que ser una variable numérica y si el resultado es VERDADERO o

Ing. Edgar NORABUENA MEZA 8


FALSO, entonces Id_variable tiene que ser una variable lógica. Es decir, ExpArit_Log_Car e Id_variable son
del mismo tipo de datos.
El lado derecho de una sentencia de asignación, es decir ExpArit_Log_Car puede ser una constante,
una variable, el llamado a una función o una expresión propiamente dicha, es decir constantes, variables,
funciones unidos por operadores.

Ejemplos

1. Si x=4, y=12

a. Se tiene la siguiente sentencia de asignación:

Z = 5 - ( 3*x - y/x +15%32 – 2^5) + 3*y

Se evalúa de la siguiente manera:


Z = 5 - ( 3*x - y/x +15%32 – 32) + 3*y
Z = 5 - ( 12 – y/x +15%32 – 32) + 3*y
Z = 5 - ( 12 - 3 +15%32 – 32) + 3*y
Z = 5 - ( 12 - 3 +15 – 32) + 3*y
Z = 5 - ( 9 +15 – 32) + 3*y
Z = 5 - ( 24 – 32) + 3*y
Z = 5 + 8 + 3*y
Z = 5 + 8 + 36
Z = 49
Se guarda 49 en Z, eso significa que Z debe ser una variable real o entera

b. Se tiene la siguiente sentencia de asignación:

K25 = 12 * 4 / 5 + 28 % 3 – 1.5

Se evalúa de la siguiente manera:


K25 = 48 / 5 + 28 % 3 – 1.5 ojo en C++ 48 / 5 es 9
K25 = 9.6 + 1 – 1.5
K25 = 10.6 – 1.5
K25 = 9.1
Se guarda 9.1 en la variable real K25

2. Si x = 5, y = 12, z = 50

Se tiene la siguiente sentencia de asignación

Varlog12 = ((x = 12) | (z >= x)) & (x*y <> z)|(8=10)

Se evalúa de la siguiente manera:


Varlog12 = ( F | V) & (60 <> z)| F
Varlog12 = V & V | F
Varlog12 = V | F
Varlog12 = V
Se asigna VERDADERO en la variable lógica varlog12

Ing. Edgar NORABUENA MEZA 9


Funciones Internas de PSeInt
Las funciones internas que tiene PSeInt se usan en forma similar a cualquier otro Lenguaje de
Programación. Por ejemplo si se desea calcular la raíz cuadrada de 16 se tendría que escribir RAIZ(16)

Algunas de las funciones se muestran en la tabla 2.3

Función Significado
RC(X) o RAIZ (x) Raíz Cuadrada de x
ABS(x) Valor Absoluto de x
LN(x) Logaritmo Natural de x
EXP(x) Función Exponencial de x
SEN(x) Seno de x
COS(x) Coseno de x
TAN(x) Tangente de x
ASEN(x) Arcoseno de x
ACOS(x) Arcocoseno de x
ATAN(x) Arcotangente de x
TRUNC(x) Parte entera de x
REDOND(x) Entero mas cercano a x
AZAR(x) Entero aleatorio [0;1]
ALEATORIO(X,Y) Entero aleatorio en [x;y]
LONGITUD(s) Tamaño de la cadena s
MAYUSCULAS(s) Todo mayúsculas la cadena s
MINUSCULAS(s) Todo minúsculas la cadena s

Tabla 2.3. Funciones de PSeInt

Ing. Edgar NORABUENA MEZA 10


ESTRUCTURAS BÁSICAS
DE UN ALGORITMO
Una vez entendido la existencia de un problema, es decir que datos son necesarios, que resultado o
resultados debo encontrar y si es un problema de ingeniería en muchos de los casos habrá una fórmula de por
medio, se tiene que plasmar la solución mediante un algoritmo, para ello están disponibles: las estructuras
secuenciales para aquellas circunstancias en las que una simple secuencia lineal de acción no permite dar
solución a un determinado problema.
,
De la misma manera, cuando la situación amerita tomar decisiones dentro de los algoritmos es posible
recurrir a las estructuras condicionales, las cuales tienen como principal característica la evaluación de una
condición para realizar o no un determinado conjunto de acciones.

En ocasiones existen actividades y acciones que son repetitivas, por lo que los ciclos (estructuras
repetitivas) presentan características que permiten su implementación en tales situaciones.

Los tres elementos mencionados anteriormente son la base de los algoritmos y a través de ellos se
plantea las soluciones de problemas por computadora.

Estructura Secuencial
Joyanes Aguilar, define a una estructura secuencial como aquella en la que una acción (instrucción)
sigue a otra en serie. Señala que las tareas suceden de tal modo que la salida de una es la entrada de la
siguiente y así sucesivamente hasta el final del proceso. La estructura secuencial tiene una entrada y una salida.
Su representación gráfica se muestra en la figura 3

Fig. 3 Estructura Secuencial

Ing. Edgar NORABUENA MEZA 11


Ejemplos

1. Escribir un algoritmo que calcule la MEDIA ARITMETICA de dos números.

Solución:

Seudocodigo
Algoritmo MediaAritmetica
Definir A,B,MA Como Real
Escribir 'Ingrese el Primer Numero: '
Leer A
Escribir 'Ingrese el Segundo Numero: '
Leer B
MA <- (A+B)/2
Escribir 'MA(',A,',',B,')=',MA
FinAlgoritmo

Diagrama de Flujo

Ing. Edgar NORABUENA MEZA 12


Resultado de la compilación y ejecución

2. Realizar un algoritmo que halle el AREA de un triángulo conociendo sus tres lados

Solución:

Se tiene lo siguiente

AREA = ( S − A)(S − B)(S − C )S


S = (A + B + C)/2

Seudocodigo

Algoritmo AreaTrianguloCon3Lados
Definir A,B,C,S,Area Como Real
Escribir 'Ingrese el Primer Lado: '
Leer A
Escribir 'Ingrese el Segundo Lado: '
Leer B
Escribir 'Ingrese el Tercer Lado: '
Leer C
S <- (A+B+C)/2
Area <- ((S-A)*(S-B)*(S-C)*S)^0.5
Escribir 'El Area es: ',Area
FinAlgoritmo

Ing. Edgar NORABUENA MEZA 13


Diagrama de Flujo

Resultado de la compilación y ejecución

Ing. Edgar NORABUENA MEZA 14


3. Desarrollar un algoritmo que lea dos números diferentes y encuentre el mayor y el menor

Solución:

Seudocodigo
Algoritmo MayorMenor
// Mas Adelante, este mismo problema es resuelto con Instruciones de
//Control Condicional
// Hay palabras reservadas (de color azul)
// que no se pueden usar como IDENTIFICADORES
// ejemplo Mayor, Algoritmo, Como..
Definir N1,N2,May,Men Como Real
Escribir 'Ingrese dos numeros: '
Leer N1,N2 // Ingrese Datos uno por linea
May <- (N1+N2+ABS(N1-N2))/2 // Puedes usar;
Men <- (N1+N2-ABS(N1-N2))/2
Escribir 'El mayor de ',N1,' y ',N2,' es ',May
Escribir 'El menor de ',N1,' y ',N2,' es ',Men
FinAlgoritmo

Diagrama de Flujo

Ing. Edgar NORABUENA MEZA 15


Resultado de la compilación y ejecución

4. Escribir un algoritmo que encuentre el tiempo de permanencia en horas y minutos de un profesor en el aula,
conociendo la hora de entrada y hora de salida.

Solucion:

Seudocodigo
Algoritmo TiempoDePermanencia
//HE y ME: hora y minutos de entrada
//HS y MS: hora y minutos de salida
//HP y MS: hora y minutos de permanencia
Definir HE,ME,HS,MS,HP,MP Como entero
Escribir "Ingrese la Hora de Entrada (HH MM):"
Leer HE,ME
Escribir "Ingrese la Hora de Salida (HH MM):"
Leer HS,MS
MP <- (HS*60+MS)-(HE*60+ME)
// RESIDUO DE UNA DIVISION ENTERA
// LOS OPERANDOS SON ENTEROS
HP <- (MP - (MP % 60)) / 60
MP <- MP % 60
Escribir "TIEMPO DE PERMANENCIA:"
Escribir HP," hora(s) y ", MP, " minutos"
FinAlgoritmo

Ing. Edgar NORABUENA MEZA 16


Diagrama de Flujo

Prueba de escritorio: Un profesor entra al aula a las 8: 10 am, sale a las 9: 50 am


Datos 8
10
9
50
HE ME HS MS MP HP
8 10 9 50 100 1
40

Resultados: 1 40

Ing. Edgar NORABUENA MEZA 17


Resultado de la compilación y ejecución

Ing. Edgar NORABUENA MEZA 18


Estructura Selectiva

También se denominan estructuras de decisión, condicionales o alternativas, se utilizan para tomar


decisiones lógicas. En las estructuras condicionales se evalúa una condición y en función del resultado de la
misma se realiza una opción u otra, señala Joyanes Aguilar. Las condiciones se especifican usando expresiones
lógicas.

Se tiene:
- Simple
- Doble
- Anidada
- Múltiple

1. Selectiva Simple: Si … Entonces

Seudocodigo Diagrama de Flujo

Si ExpLogica Entonces
// Instruccion(es)
Escribir "..."
Leer Var1
IdVar <- Expresion
FinSi

2. Selectiva Doble: Si … Entonces … Sino

Seudocodigo Diagrama de Flujo


Si ExpLogica Entonces
// Instruccion(es)
Escribir "..."
Leer Var1
IdVar <- Expresion
SiNo
// Instruccion(es)
Escribir "..."
Leer Var1
IdVar <- Expresion
FinSi

Si ExpLogica Entonces
Ing. Edgar NORABUENA MEZA 19
//Instruccion(es)
Escribir "..."
Leer Var1
3. Selectiva Anidada: Si … entonces … sinoSi … entonces … sino … Esta opción PSeInt no lo tiene
implementado.

Seudocodigo
Si ExpLog1 Entonces
// Instruccion(es)
Escribir "..."
Leer Var1
IdVar <- Expresion
SiNo Si ExpLog2
Entonces
// Instruccion(es)
Escribir "..."
Leer Var1
IdVar <- Expresion
SiNo Si ExpLog3
Entonces
// Instruccion(es)
Escribir "..."
Leer Var1
IdVar <- Expresion
SiNo
// Instruccion(es)
Escribir "..."
Leer Var1
IdVar <- Expresion
FinSi
FinAlgoritmo
Diagrama de Flujo
Si ExpLogica Entonces
//Instruccion(es)
Escribir "..."
Leer Var1
IdVar <- Expresion
SiNo
//Instrucción(es)
FinSi

Si ExpLogica Entonces
// Instruccion(es)
Escribir "..."
Leer Var1
IdVar <- Expresion
FinSi

Ing. Edgar NORABUENA MEZA 20


4. Selectiva Múltiple: Segun

Seudocodigo Diagrama de Flujo


Segun Op Hacer
V1:
Leer A

Escribir B
V2:
IdV <- Expr1

Leer C
V3:
Escribir D

IdV2 <- Expr2
De Otro Modo:
IdV3 <- Expr3

Escribir E
Fin Segun

Ejemplos

1. Desarrollar un algoritmo que lea dos números diferentes y encuentre el mayor y el menor

Solución:
Anteriormente este ejemplo se resolvió usando solo INSTRUCCIONES SECUENCIALES, ahora con
INSTRUCCIONES SELECTIVAS

Seudocodigo
Algoritmo MayorMenorSi
Definir N1,N2,May,Men Como Real
Escribir 'Ingrese dos numeros: '
Leer N1,N2
Si N1>N2 Entonces
May <- N1
Men <- N2
SiNo
May <- N2
Men <- N1
FinSi
Escribir 'El mayor de ',N1,' y ',N2,' es ',May
Escribir 'El menor de ',N1,' y ',N2,' es ',Men
FinAlgoritmo

Ing. Edgar NORABUENA MEZA 21


Diagrama de Flujo

Resultado de la compilación y ejecución

2. Escribir un algoritmo que encuentre el tiempo de permanencia en horas y minutos de un profesor en el


aula, conociendo la hora de entrada y hora de salida.

Solución:

Anteriormente este ejemplo se resolvió usando solo INSTRUCCIONES SECUENCIALES, ahora con
INSTRUCCIONES SELECTIVAS

Ing. Edgar NORABUENA MEZA 22


Seudocodigo
Algoritmo TiempoDePermanenciaSi
Definir HE,ME,HS,MS,HP,MP Como entero
Escribir "Ingrese la Hora de Entrada (HH MM):"
Leer HE,ME
Escribir "Ingrese la Hora de Salida (HH MM):"
Leer HS,MS
HP <- HS-HE
MP <- MS-ME
Si MP < 0 Entonces
MP <- 60 + MP
HP <- HP - 1
FinSi
Escribir "TIEMPO DE PERMANENCIA:"
Escribir HP," hora(s) y ", MP, " minutos"
FinAlgoritmo

Diagrama de Flujo

Ing. Edgar NORABUENA MEZA 23


Resultado de la compilación y ejecución

3. Mostrar un algoritmo que lea dos puntos del plano y que calcule la ecuación de la recta que pasa por
dichos puntos.

Solución:

Ing. Edgar NORABUENA MEZA 24


Seudocodigo
Algoritmo EcuaRecta
Definir x1,y1,x2,y2,m,b Como Real
Escribir 'Primer Punto (x,y) '
Leer x1,y1 // uno por linea
Escribir 'Segundo Punto (x,y) '
Leer x2,y2
Si x1!=x2 Entonces
m <- (y1-y2)/(x1-x2)
b <- y1-m*x1
Si b<0 Entonces
Escribir 'Ecuacion y = ',m,'x ',b
SiNo
Escribir 'Ecuacion y = ',m,'x + ',b
FinSi
SiNo
Escribir 'Ecuacion x = ',x1
FinSi
FinAlgoritmo

Diagrama de Flujo

Ing. Edgar NORABUENA MEZA 25


Resultado de la compilación y ejecución

4. Elaborar un algoritmo que calcule la edad de una persona teniendo como datos la fecha de nacimiento
(dn/mn/an) y la fecha actual (da/ma/aa).

Solución:

Seudocodigo
Algoritmo CalculaEdad
Definir da,ma,aa,dn,mn,an,Edad Como Entero
Escribir 'Fecha de Nacimiento (dn/mn/an): '
Leer dn,mn,an
Escribir 'Fecha Actual (da/ma/aa): '
Leer da,ma,aa
Edad <- aa-an
Si mn>ma Entonces
Edad <- Edad-1
FinSi
Si mn=ma Y dn>da Entonces
Edad <- Edad-1
FinSi
Escribir 'La persona tiene: ',Edad,' año(s)'
FinAlgoritmo

Ing. Edgar NORABUENA MEZA 26


Diagrama de Flujo

Resultado de la compilación y ejecución

5. Escribir un algoritmo que lea tres números diferentes y calcule el promedio del mayor y menor.

Solución:

Ing. Edgar NORABUENA MEZA 27


Seudocodigo
Algoritmo PromDeMayMenDe3Nros
Definir A,B,C,Ma,Me,Prom Como Real
Escribir "Promedio del mayor y menor de tres numeros"
Escribir "Primer Numero: "
Leer A
Escribir "Segundo Numero: "
Leer B
Escribir "Tercer Numero: "
Leer C
Si A > B Entonces
Ma <- A
Me <- B
SiNo
Ma <- B
Me <- A
FinSi
Si C > Ma Entonces
Ma <- C
FinSi
Si C < Me Entonces
Me <- C
FinSi
Prom <- (Ma+Me)/2
Escribir "El Promedio de ",Ma," y ",Me," es ",Prom
FinAlgoritmo

Diagrama de Flujo

Ing. Edgar NORABUENA MEZA 28


Resultado de la compilación y ejecución

6. Escribir un algoritmo que halle el punto de intersección de las rectas L1 y L2


L1: 𝐴𝑥 + 𝐵𝑦 = 𝐶
L2: 𝐷𝑥 + 𝐸𝑦 = 𝐹

Solución:
Se tiene el siguiente sistema de ecuaciones lineales de 2 x 2
𝐴𝑥 + 𝐵𝑦 = 𝐶
𝐷𝑥 + 𝐸𝑦 = 𝐹

Aplicando la regla de Cramer, puedo calcular x e y, siempre y cuando el denominador sea diferente de cero
(será igual a cero si L1 y L2 son rectas paralelas)
𝐶 𝐵 𝐴 𝐶
| | | |
𝐹 𝐸 𝐷 𝐹
𝑥= 𝐴 𝐵 ; 𝑦= 𝐴 𝐵
| | | |
𝐷 𝐸 𝐷 𝐸

Nota: Ingrese los coeficientes de cada recta una por una

Seudocodigo
Algoritmo IntersecDeRectas
Definir A,B,C,D,E,F,dis,X,YY Como Real
Escribir 'Interseccion de RECTAS'
Escribir 'L1 Ax + By = C'
Escribir 'Ingrese los coeficientes de L1:'
Leer A,B,C
Escribir 'L1 Dx + Ey = F'
Escribir 'Ingrese los coeficientes de L2:'
Leer D,E,F
dis <- A*E-D*B
Si dis!=0 Entonces
X <- (C*E-F*B)/dis
YY <- (A*F-D*C)/dis
Escribir 'Punto de Interseccion'
Escribir '(x,y)=(',X,',',YY,')'
SiNo
Escribir 'No hay Punto de Interseccion'
FinSi
FinAlgoritmo

Ing. Edgar NORABUENA MEZA 29


Diagrama de Flujo

Resultado de la compilación y ejecución

Ing. Edgar NORABUENA MEZA 30


7. Desarrollar un algoritmo que tenga el siguiente menú:
OPERACIONES ARITMETICAS
< 1 > Suma
< 2 > Resta
< 3 > Multiplicación
< 4 > División
< 5 > Residuo
< 6 > Fin
De acuerdo a la opción elegida se piden los datos(enteros) y se muestra el resultado.
Solución:

Seudocodigo
Algoritmo OperaArit
Definir A,B,R,OP Como Entero
Definir Re Como Real
Escribir 'OPERACIONES ARITMETICAS'
Escribir '< 1 > Suma'
Escribir '< 2 > Resta'
Escribir '< 3 > Multiplicacion'
Escribir '< 4 > Division'
Escribir '< 5 > Residuo'
Escribir '< 6 > Fin'
Escribir 'OPCION == >'
Leer OP
Si (OP<6) Y (OP>=1) Entonces
Escribir 'Ingrese dos NUMEROS ENTEROS'
Leer A,B
FinSi
Segun OP Hacer
1:
R <- A+B
Escribir A,' + ',B,' = ',R
2:
R <- A-B
Escribir A,' - ',B,' = ',R
3:
R <- A*B
Escribir A,' * ',B,' = ',R
4:
Si B=0 Entonces
Escribir 'NO SE PUEDE DIVIDIR'
SiNo
Re <- A/B // En C++ es diferente
Escribir A,' / ',B,' = ',Re
FinSi
5:
R <- A MOD B
Escribir A,' mod ',B,' = ',R
6:
Escribir 'GRACIAS!!!!'
De Otro Modo:
Escribir 'NO EXISTE ESA OPCION'
FinSegun
FinAlgoritmo

Ing. Edgar NORABUENA MEZA 31


Diagrama de Flujo

Resultado de la compilación y ejecución

Ing. Edgar NORABUENA MEZA 32


Estructura Repetitiva
Las estructuras que repiten una secuencia de instrucciones, un número determinado de veces, se
nombra bucles, y se denomina iteración al hecho de repetir la ejecución de una secuencia de acciones. Dentro
de los ciclos repetitivos más comunes se encuentra el ciclo mientras, hacer mientras y para.

1. Mientras

Seudocodigo Diagrama de Flujo


Mientras ExpLog Hacer
// Instrucciones
Var1 <- ExpArit
Leer V1
Escribir ' '
FinMientras

2. Hacer … Mientras

Seudocodigo Diagrama de Flujo


Repetir
// Instrucciones
Var1 <- ExpArit
Leer V1
Escribir " "
Mientras Que ExpLog

Ing. Edgar NORABUENA MEZA 33


3. Para … Hasta

Seudocodigo
Para VC <- VI Hasta VF Con Paso INC Hacer
// Instrucciones
Var1 <- ExpArit
Leer V1
Escribir ' '
FinPara

Diagrama de Flujo Diagrama de Flujo

Figura 4

Figura 5

La figura 5 ayuda a entender lo que hace la instrucción Para .. Hasta (figura 4)

Ing. Edgar NORABUENA MEZA 34


Ejemplos

1. Realizar un algoritmo que calcule el promedio de una lista indeterminada de números reales positivos,
hasta que se introduzca un número negativo.
Solución:

Seudocodigo Diagrama de Flujo


Algoritmo PromPositivos
Definir PromP,X Como Real
Definir C,F Como Entero
PromP <- 0
C <- 0
F <- 1
Escribir 'PROMEDIO DE POSITIVOS'
Mientras F=1 Hacer
Escribir 'Ingrese un Numero:'
Leer X
Si X>0 Entonces
PromP <- PromP+X
C <- C+1
FinSi
Si X<0 Entonces
F <- 0
FinSi
FinMientras
Si C!=0 Entonces
PromP <- PromP/C
Escribir 'Promedio = ',PromP
SiNo
Escribir 'No Ing. Dat.POSITIVOS'
FinSi
FinAlgoritmo

Resultado de la compilación y
ejecución

Ing. Edgar NORABUENA MEZA 35


2. Elaborar un algoritmo que lea dos números enteros positivos y calcular el cociente y residuo por defecto
de una división entera. No puede usar mod, ni /

Solución:

Seudocodigo
Algoritmo DivEntera
Definir DD,d,q,rd Como Entero
Escribir 'DIVISION ENTERA POR DEFECTO'
Escribir 'DIVIDENDO(>0)'
Leer DD
Escribir 'DIVISOR(<0)'
Leer d
Escribir DD,' entre ',d
q <- 0
Mientras DD>=d Hacer
DD <- DD-d
q <- q+1
FinMientras
rd <- DD
Escribir 'COCIENTE: ',q
Escribir 'RESIDUO: ',rd
FinAlgoritmo

Diagrama de Flujo

Resultado de la compilación y
ejecución

Ing. Edgar NORABUENA MEZA 36


3. Conjetura de ULAM
Dado un número entero positivo, la secuencia siempre termina en 1
Ejemplo:
19,58,29,88,44,28,11,34,17,52,26,13,40,20,10,5,16,8,4,2,1

Escribir un algoritmo que lea un número entero positivo N y escriba su respectiva secuencia.

Solución:
Seudocodigo
Algoritmo UlamMientras
Definir N Como Entero
Escribir 'Ingrese un Numero Entero Positivo '
Leer N
Escribir 'SECUENCIA DE ULAM: '
Mientras N>1 Hacer
Escribir N
Si N MOD 2=0 Entonces
N <- N/2
SiNo
N <- 3*N+1
FinSi
FinMientras
Escribir N
FinAlgoritmo

Diagrama de Flujo Resultado de la compilación y


ejecución

Ing. Edgar NORABUENA MEZA 37


Otra solución, usando REPETIR.

Seudocodigo
Algoritmo UlamRepetir
Definir N Como Entero
Escribir 'Ingrese un Numero Entero Positivo '
Leer N
Escribir 'SECUENCIA DE ULAM: '
Si N!=1 Entonces
Repetir
Escribir N
Si N MOD 2=0 Entonces
N <- N/2
SiNo
N <- 3*N+1
FinSi
Mientras Que N>1
FinSi
Escribir N
FinAlgoritmo

Diagrama de Flujo Resultado de la compilación y


ejecución

Ing. Edgar NORABUENA MEZA 38


4. Números perfectos
N es un numero perfecto si la Suma de divisores propios de N = N.
Ejemplo: 6 = 1 + 2 + 3

Escribir un algoritmo que halle los 4 primeros números perfectos.

Solución:

Seudocodigo Diagrama de Flujo


Algoritmo NrosPerfectos
Definir PP,C,SD,D Como Entero
PP <- 4
C <- 0
Escribir 'NUMEROS PERFECTOS'
Repetir
SD <- 1
D <- 2
Mientras D<=PP/2 Hacer
Si PP MOD D=0 Entonces
SD <- SD+D
FinSi
D <- D+1
FinMientras
Si PP=SD Entonces
Escribir PP
C <- C+1
FinSi
PP <- PP+1
Mientras Que C<4
FinAlgoritmo

Resultado de la compilación y ejecución

Ing. Edgar NORABUENA MEZA 39


5. Elaborar un algoritmo que lea numero entero N (0<N<13) y calcular la Tabla de Multiplicar de N.

Solución:

Seudocodigo Diagrama de Flujo


Algoritmo TablaDeMultiplicar
// N pertenece a [1, 12]
Definir N,I Como Entero
Escribir 'Ingrese un numero Entero:'
Leer N
Escribir 'TABLA DE MULTIPLICAR DEL ',N
Para I<-1 Hasta 12 Hacer
Escribir N,' * ',I,' = ',I*N
FinPara
FinAlgoritmo

Resultado de la compilación y ejecución

Ing. Edgar NORABUENA MEZA 40


ARREGLOS
Joyanes Aguilar define a un Array, en inglés, (matriz, arreglo o vector) como un conjunto finito y
ordenado de elementos homogéneos. La propiedad “ordenado” significa que el elemento primero, segundo,
tercero, . . . n-ésimo de un array puede ser identificado. Agrega que los elementos de un arreglo son
homogéneos, es decir, del mismo tipo de datos. Un array puede estar compuesto de todos sus elementos de
tipo caracter, otro puede tener todos sus elementos de tipo entero, etc. Los arreglos bidimensionales se conocen
como matrices, en matemáticas.

Según sus dimensiones, los arreglos se clasifican en:

- Arreglos Unidimensionales o vectores, tienen un solo indice


- Arreglos Bidimensionales o matrices, tienen dos indices
- Arreglos Multidimensionales

En algunos lenguajes de programación, los índices inician en 1.

Arreglos Unidimensionales

Un arreglo unidimensional o vector de nombre U de 10 elementos reales se puede representar por la


figura 6.

Nombre del ARREGLO: U

Tipo de Dato: Real


Tamaño: 10

Índice → 0 1 2 3 4 5 6 7 8 9

Datos →
10.4 11.3 8.5 19.5 15.1 13.1 5.2 10.2 9.8 13.7
U[4]

Figura 6. Vector U

Ing. Edgar NORABUENA MEZA 41


Ejemplos

1. Escribir un algoritmo que permita ingresar las notas de la asignatura Introducción a la Computación a un
arreglo de la siguiente forma: en el índice 0, la nota del EP; en el índice 1 el EF; en el índice 2 la PC1; en
el índice 3 la PC2; en el índice 4 la PC3; en el índice 5 la PC4; en el índice 6 asigan el Promedio de
Practicas (calcular). Finalmente, el algoritmo debe mostrar el Promedio Final del curso y el mensaje de
Aprobado o Jalado según corresponda.

𝐸𝑃+2∗𝐸𝐹+𝑃𝑃 𝑃𝐶1+𝑃𝐶2+𝑃𝐶3+𝑃𝐶4−min (𝑃𝐶1,𝑃𝐶2,𝑃𝐶3,𝑃𝐶4)


𝑃𝐹 = ; 𝑃𝑃 =
4 3

Solución:

Seudocodigo Diagrama de Flujo


Algoritmo PromFinal
Definir PF,X Como Real
Definir PC1,PC2,PC3,PC4,me,i Como Entero
Dimension X[7]
Escribir 'Ex Parcial'
Leer X[0]
Escribir 'Ex Final'
Leer X[1]
me <- 20
Para i<-1 Hasta 4 Hacer
Escribir 'P. Calificada ',i
Leer X[i+1]
Si X[i+1]<me Entonces
me <- X[i+1]
FinSi
FinPara
X[6] <- (X[2]+X[3]+X[4]+X[5]-me)/3
Escribir 'P. Practicas ',X[6]
PF <- (X[0]+2*X[1]+X[6])/4
Escribir 'P Final ',PF
Si PF>=10 Entonces
Escribir 'CONDICION: APROBADO'
SiNo
Escribir 'CONDICION: JALADO'
FinSi
FinAlgoritmo

Ing. Edgar NORABUENA MEZA 42


Resultado de la compilación y ejecución

2. Diseñar un solo algoritmo que lea un vector a, de n elementos, luego, debe leer k entero, a continuación,
eleve al cuadrado cada elemento de a que sea menor que k, para finalmente mostrar el vector a.

Solución:

Seudocodigo
Algoritmo ModElVec
Definir a,n,k,i Como Entero
Dimension a[50]
Escribir 'Nro. de Elementos del Vector'
Leer n
Escribir 'Elementos del Vector'
Para i<-0 Hasta n-1 Hacer // Ingreso de datos del VECTOR
Escribir '[',i+1,']='
Leer a[i]
FinPara
Escribir 'Ingrese un Numero Entero'
Leer k
Para i<-0 Hasta n-1 Hacer
Si a[i]<k Entonces
a[i] <- a[i]*a[i] // Modificando los elementos
FinSi
FinPara
Escribir 'Elementos del Vector'
Para i<-0 Hasta n-1 Hacer // Mostrar el VECTOR
Escribir a[i]
FinPara
FinAlgoritmo

Ing. Edgar NORABUENA MEZA 43


Diagrama de Flujo Resultado de la compilación y
ejecución

3. Escribir un algoritmo que lea en el vector X las notas del Examen Final del curso Introducción a la
Computación y calcular la varianza de las notas.

∑𝑛
1 𝑥𝑖
Promedio: 𝑥̅ =
𝑛

∑𝑛
𝑖 (𝑥𝑖 −𝑥̅ )
2
Varianza: 𝑉 (𝑥) =
𝑛

Ing. Edgar NORABUENA MEZA 44


Solución:

Seudocodigo Diagrama de Flujo


Algoritmo Varianza
Definir X,V,Prom Como Real
Definir N,i Como Entero
Dimension X[50]
V <- 0
Prom <- 0
Escribir 'Nro. de Alumnos'
Leer N
Escribir 'Ingrese las Notas'
Para i<-0 Hasta N-1 Hacer
Escribir 'NOTA[',i+1,']='
Leer X[i]
Prom <- Prom + X[i]
FinPara
Prom <- Prom/N
Escribir 'Promedio: ',Prom
Para i<-0 Hasta N-1 Hacer
V <- V+(X[i]-Prom)*(X[i]-Prom)
FinPara
V <- V/N
Escribir 'Varianza: ',V
FinAlgoritmo

Resultado de la compilación y ejecución

Ing. Edgar NORABUENA MEZA 45


Ordenamiento de Datos

Para ordenar datos en forma ascendente o descendente existen muchos métodos, entre ellos tenemos:

- Ordenamiento de BURBUJA
- Ordenamiento por SELECCIÓN
- Ordenamiento por INSERCION
- Ordenamiento SHELL

Ordenamiento de BURBUJA

También llamado buble sort, este algoritmo obtiene su nombre de la forma como suben por la lista los
elementos durante los intercambios como si fueran pequeñas “burbujas”. También es conocido como el método
de intercambio directo, dado que usa comparaciones para el ordenamiento. de datos

En el ejemplo siguiente se ordena en forma ascendente (>) un vector que tiene 5 elementos enteros.

Datos Iniciales:
18 7 10 6 4

Etapa 1 (i=0) j=0,1, 2, 3

Etapa 2(i=1) j=0, 1, 2

Etapa 3 (i=2) j=0,1

Ing. Edgar NORABUENA MEZA 46


Etapa 4(i=3) j=0

Ejemplo:

1. Elaborar un algoritmo que lea las notas del Examen Parcial de n (>5) alumnos. El algoritmo debe
calcular:
- El promedio de los aprobados
- Las 5 peores notas
- La mejor nota
- La cantidad de alumnos que aprobaron con 10.

Solución:
Seudocodigo
Algoritmo OrdVecOtros
Definir PromA Como Real
Definir X,N,i,j,MeNota,CanA10,CanA,Ayu Como Entero
Dimension X[50]
PromA <- 0
CanA <- 0
CanA10 <- 0
Escribir 'Nro. de Alumnos'Leer N
Escribir 'Ingrese las Notas'
Para i<-0 Hasta N-1 Hacer
Escribir 'NOTA[',i+1,']='
Leer X[i]
Si X[i]>=10 Entonces
PromA <- PromA+X[i]
CanA <- CanA+1
FinSi
Si X[i]=10 Entonces
CanA10 <- CanA10+1
FinSi
FinPara
PromA <- PromA/CanA
Escribir 'Promedio de Aprobados ',PromA
Escribir 'Cantidad de Aprobados con 10 es ',CanA10
Para i<-0 Hasta N-2 Hacer // ORDENANDO-METODO BURBUJA
Para j<-0 Hasta N-i-2 Hacer
Si X[j]>X[j+1] Entonces
Ayu <- X[j]
X[j] <- X[j+1]
X[j+1]<-Ayu
FinSi
FinPara
FinPara
Escribir 'Las 5 peores notas: '
Para i<-0 Hasta 4 Con Paso 1 Hacer
Escribir X[i]
FinPara
Escribir 'La mejor Nota: ',X[N-1]
FinAlgoritmo

Ing. Edgar NORABUENA MEZA 47


Diagrama de Flujo Resultado de la
compilación y ejecución

Ing. Edgar NORABUENA MEZA 48


Arreglos Bidimensionales

Ing. Edgar NORABUENA MEZA 49

También podría gustarte