Академический Документы
Профессиональный Документы
Культура Документы
Apuntes de la materia
ALGORITMOS
1.1 Procesos.
1.1.1 Definición.
Para poder dar una definición de proceso, debemos adentrarnos un poco
en los sistemas.
1.1.2 Componentes.
Un proceso de cómputo se compone de tres partes básicas: entrada,
procesamiento y salida.
1.2 Algoritmos.
1.2.1 Definición.
Con estos pasos tan sencillos es como se construyen los programas más
sofisticados. Los lenguajes algorítmicos nos proporcionan metodologías que
permiten representar cualquier problema (o casi cualquiera) para posteriormente
expresarlo en un lenguaje de computadora. De lo anterior podemos concluir que,
expresando correctamente un problema mediante un algoritmo, podemos
representarlo en cualquier lenguaje de programación, esta es la razón por la que
interesa el estudio de la presente materia.
ENTRADA
PROCESAMIENTO
PASO 2: S =A + B + C + D
PASO 3: P = S/4
SALIDA
PASO 4: P
Se debe observar en la solución que existe una secuenciación, esto es, la
solución se va dando en forma de pasos bien definidos: después del paso 1, sigue
el 2, luego el 3, para finalmente dar el resultado de salida en el paso 4.
Ejercicio: Elabore un algoritmo para ayudar a una persona a cruzar la calle.
ENTRADA
PROCESO
SALIDA
1.3 Datos.
1.3.1 Definición.
La forma más sencilla de definir un dato, es como aquel hecho que nos da
una idea básica de algo, es cualquier carácter que produce una imagen en nuestro
cerebro. Muy bien, aunque esto es una definición poco formal, es muy útil, ya que
un dato es una secuencia de símbolos (letras, números, etcétera) que representan
un valor y que por sí solos no tienen un significado. Como ejemplos de datos,
tenemos los siguientes: perro, 345, 86-1841, tapa, i. Todos estos datos no nos
dicen o no representan algo útil si no son procesados o relacionados de alguna
manera. De la definición de dato, se puede pasar a la definición de información.
Reafirmando, diremos que los datos son hechos, conceptos disponibles para ser
procesados o convertidos en información mediante un sistema de procesamiento.
Muchos autores afirman que los datos son la materia prima de la información. De
aquí que la información es el proceso que se hace de los datos.
Vamos a suponer que tenemos los siguientes datos: pizarrón, gis, borrador,
bancos, escritorio, silla, treinta jóvenes, una persona adulta. Muy bien, ¿ De qué
estamos hablando? Si relacionamos los datos es muy probable que tengamos la
información de que hacemos referencia a un salón de clase, si necesitáramos
alguna otra información (si es un salón con alumnos de preparatoria o secundaria,
por ejemplo) tendríamos que proporcionar más datos (la edad).
Los datos numéricos, cómo su nombre lo indica, serán aquellos que sólo
pueden representar números. De esta manera diremos que existen datos
numéricos enteros y reales (con decimales). Las variables que representen datos
numéricos serán identificadas sólo con su nombre. Ejemplos: A, Edad, X1,
etcétera.
Este tipo permite manipular datos que contengan números y letras. Las
variables alfanuméricas deben representarse con un signo de pesos antes de la
mismas. Por ejemplo: $A, $Nombre, $Y2, etcétera.
Los datos lógicos sólo permiten almacenar dos tipos de valores: cierto y
falso. Por lo general, los datos lógicos son devueltos por expresiones dónde se
realiza alguna condición o pregunta.
1.3.3 Operaciones.
Las operaciones que pueden realizarse entre los datos tendrán que hacerse
por medio de operadores. Como mencionábamos en puntos anteriores, no todos
los operadores pueden aplicarse a todos los tipos de datos. Enseguida lo
veremos.
La tabla 1.2 nos muestra los operadores relacionales. Estos tienen el mismo
orden de precedencia y debe hacerse una diferenciación entre el operador
relacional igual(=) y el operador de asignación igual(=).
OPERADOR OPERACIÓN
= Igual
> Mayor que
< Menor que
>= Mayor o igual que
<= Menor o igual que
Los operadores lógicos, por otra parte, se muestran en la tabla 1.3. En ellos
si existe orden de precedencia.
Tabla 1.2. Operadores lógicos.
A←4+5
A=4+5
A+3
en la cual apreciamos dos operandos (la variable A y la constante 3) y un operador
(el operador que representa una suma “+” entre los operandos).
Las primeras dos expresiones nos indican que el uso de paréntesis puede
alterar el orden de precedencia (siempre se evalúan primero los paréntesis más
internos), de allí que ambas expresiones aunque similares en apariencia difieran
drásticamente en el resultado. En la tercera expresión nos volvemos a encontrar
con la precedencia de los operadores: recordando, primero se evalúan las
potencias, luego las divisiones y finalmente las sumas y restas en el mismo orden.
En la cuarta expresión, se realiza una conjunción que involucra dos operadores
relaciones, uno de igualdad y otro de mayor, la expresión (A+B)=3 es falsa(4+3 no
es igual a 3), también lo es C↑3>1000 (1000 no es mayor que 1000), de tal forma
que la conjunción de estas expresiones lógicas resulta en un valor lógico final
falso.
a).- Que tenga por entrada una variable numérica que represente una
cantidad en grados cenígrados (°C) y la convierta a su equivalente en grados
farenheit (°F). Recuerde °F=1.8°C+32.
b).- Que acepte como entrada una variable numérica que represente la
edad de una persona e indique mediante un mensaje si dicha persona puede o no
votar.
c).- Que en su entrada acepte una cantidad numérica que indique un valor
en dólares y que lo convierta a pesos mexicanos. Considere un dólar=9.5 pesos.
d).- Que tome por entrada tres variables numéricas que representen las
calificaciones de un alumno. El algoritmo debe calcular el promedio de dicho
alumno e indicar mediante un mensaje si su promedio es aprobatorio o no.
DIAGRAMAS DE FLUJO
2.1 Definición
Un diagrama de flujo es la representación gráfica de un algoritmo, por esta
razón, cada parte de un algoritmo tiene un equivalente en un diagrama de flujo.
Esta es una forma más explícita de representar problemas, la cual, se ajusta a las
estructuras lógicas de todos los lenguajes de programación existentes.
Entrada:
Proceso:
Salida:
Inicio
Fin
Cada uno de los bloques funcionales deben ser unidos mediante flechas
que indiquen el flujo de la lógica del problema en cuestión.
Ejemplo: Elaborar un diagrama de flujo que tenga por entrada (lea) dos variables
numéricas y que calcule e imprima su suma.
FIN
Ejemplo: Hacer un diagrama de flujo que lea tres números y que calcule e
imprima su promedio.
ENTRADA:
A, B, C INICIO
PROCESO:
P = (A + B + C)/3 A,B,C
SALIDA:
P P ←(A+B+C)/3
FIN
2.- Las líneas de conexión siempre deben ser rectas, y si es posible que
sean sólo verticales y horizontales (no deben cruzarse ni estar inclinadas). Así
mismo, se deben usar los conectores sólo en casos estrictamente necesarios.
3.- Las líneas que enlazan símbolos entre si deben estar todas conectadas.
4.- Se deben dibujar todos los símbolos de modo que se pueda seguir el
proceso visualmente de arriba abajo (diseño top down) y de izquierda a derecha.
Ejemplo: Hacer un diagrama de flujo que lea una variable A y otra B que
representen los coeficientes de una ecuación de 1er grado, de la forma Bx + A = 0
El diagrama debe imprimir el valor de la raíz ( x = - A / B).
INICIO
A, B
X ← - A/B
FIN
2.6 Pseudocódigo.
Al igual que los diagramas de flujo, el pseudocódigo es otra herramienta
muy útil para implementar programas de computadora y podemos definirlo como
una técnica para expresar en lenguaje natural la lógica de un programa, es decir,
su flujo de control (Joyanes).
A, B Codificación:
Program promedio;
Var s, a, b: integer;
S ← A+B p: real;
P ← S/2 Begin
Write(‘Teclee el primer número:‘);
readln(a);
Write(‘Teclee el segundo número:’);
P readln(b);
S:= A + B;
P:= S/2;
Write(‘El promedio es: ’,p:10:2);
FIN End.
Inicio
Escribir mensaje “Teclea el primer número”
Leer variable A
Escribir mensaje “Teclea el segundo número”
Leer variable B
Procesar : hacer la variable S igual a la suma de A+B
Procesar : hacer la variable P igual a S/2
Escribir el mensaje “El promedio es “ y el valor de P
Fin
D D, A
P ← D*9.5 P ← D*A
P P
FIN FIN
b).- Hacer un diagrama de flujo que lea una cantidad que represente una
temperatura en grados Celsius ( ° C) y que los convierta en grados Farenheit (°F).
INICIO
F ←1.8*C+32
FIN
c).- Hacer diagrama de flujo que lea una cantidad en pesos y que la convierta en
dólares (suponiendo que el dólar = $ 10).
INICIO
D ← P/10
FIN
d).- Hacer diagrama de flujo que lea una cantidad en ° C y que la convierta en ° K.
INICIO
K ← C+273
FIN
e).- Hacer diagrama de flujo que lea una cantidad en ° C y que imprima su
equivalente en grados ° F y en ° K.
INICIO
K ← C+273
F ← 1.8*C+32
K, F
FIN
f).- Hacer diagrama de lujo que lea los lados de A, B de un triángulo y que calcule
e imprima la hipotenusa.
INICIO
A,B
C ← (A↑2 + B↑2)↑(1/2)
FIN
g).- Hacer diagrama de flujo que lea e imprima el promedio de 3 calificaciones de
un alumno.
INICIO
A,B,C
P ←(A+B+C)/3
FIN
h).- Hacer diagrama de flujo capaz de resolver una ecuación de segundo grado.
INICIO
A, B, C
DIS ← (B↑-4*A*C)↑(1/2)
X2 ← (B + DIS)/2*A
X1 , X2
FIN
Ejercicios propuestos para el capítulo.
1.- Elabore un diagrama de flujo que lea una variable numérica que represente el
radio de un círculo y que calcule e imprima su área.
2.- Haga un diagrama de flujo que lea una variable numérica X y que calcule e
imprima el valor de Z, suponiendo que
Z =√(X + 7)2 + 4
3.- Construya un diagrama de flujo que lea una variable numérica que represente
la masa de un objeto. El diagrama debe calcular e imprimir la posible energía que
puede liberar ese objeto según la teoría general de la relatividad.
4.- Elabore un diagrama de flujo que lea dos variables numéricas que representen
respectivamente la velocidad y el tiempo que dura el recorrido de un móvil. El
diagrama debe calcular e imprimir la distancia que recorre dicho móvil.
W = XY+3YX-[3/4Z-(Y2+Z3)]
6.- Hacer diagrama de flujo que lea dos cantidades numéricas que representen las
dimensiones de los lados de un rectángulo. Estas dimensiones deben ser dadas
en centímetros y el diagrama debe imprimir el área de dicho rectángulo en metros
cuadrados.
7.- Hacer un diagrama de flujo que lea una cantidad numérica que indique cierto
número de años. El diagrama debe imprimir la cantidad equivalente en minutos.
CAPÍTULO III
CONCEPTOS DE
DIAGRAMAS DE FLUJO
3.1 Contador.
Existen algunas formas de asignación que gozan de mucha utilidad en
programación. Obviamente, estas formas de asignación manipulan variables, las
cuales reciben nombres técnicos, una de esas formas es el contador.
C ← C+1
N ← N+1
3.2 Sumador.
Este tipo de variable almacena cantidad variables resultantes sumas
sucesivas (Joyanes, 1987). En este tipo de variables, el incremento es siempre
una variable, veamos ahora unos ejemplos de sumadores:
C ← C+T
S ← S+N
3.3 Multiplicador.
Una variable tipo multiplicador, como su nombre lo indica, es aquella que
multiplica valores, sea constantes o variables. Ejemplos:
C ← C*2
N ← N*X
INICIO INICIO
INICIO
C← 1 X← 1
X← 1
C← C+1 S← 1
X← X*1
C S← S+X
X
S
FIN
FIN
FIN
FALSO CIERTO
CONDICIÓN
Dependiendo cuál es la respuesta resultante a la condición, el flujo del
problema irá, a la izquierda, si es falsa o a la derecha si es verdadera.
Ejemplo: Hacer un diagrama de flujo que lea una variable que represente la edad
de una persona y que escriba un mensaje que indique si la persona puede o no
votar en las elecciones.
INICIO
NO SI
"LO SIENTO" E>=18 "FELICIDADES"
FIN
Ejemplo: Hacer diagrama de flujo que lea un número que represente una
temperatura en ° C y que la convierta a ° F. El diagrama debe determinar si la
temperatura convertida es mayor a 300 ° F.
INICIO
F ← 1.8 * C + 32
NO SI
"Es menor a 300 ° C" F>=300 "Es mayor a 300° C"
FIN
Ejemplo: Hacer diagrama de flujo que lea un número y que compare si ese
número es mayor a mil, en cuyo caso debe imprimir el cuadrado del número y en
caso contrario debe imprimir la raíz cúbica del mismo.
INICIO
NO SI
A ← X↑(1/3) X>=1000 A ← X↑2
FIN
Ejemplo: Hacer diagrama de flujo que lea un número y que determine si es
múltiplo de tres, en este cado debe calcular e imprimir respectivamente su
cuadrado y raíz cuadrada. En caso contrario que calcule e imprima su valor
cubicado.
INICIO
M ← N MOD 3
NO SI
X1 ← SQR (N)
X1 ← N * N * N M= 0
X2 ← SQRT (N)
X1 X1, X2
FIN
Ejemplo: Hacer diagrama de flujo que lea dos variables numéricas y que evalúe
la propiedad de tricotomía en dichos números.
INICIO
X, Y
SI
X=Y "Son Iguales"
NO
NO SI
"Y es mayor que X" X>Y "X es mayor que Y"
FIN
Ejemplo: Hacer diagrama de flujo que lea dos variables (X, Y) y que determine si
se satisface la siguiente ecuación.
3X+5Y≥4
INICIO
X, Y
NO SI
"No satisface la ecuación" 3 X + 5 Y >=4 "Si satisface la ecuación"
FIN
Ejemplo: Hacer diagrama de flujo que lea cuatro variables: X1,X2,Y1,Y2. El
diagrama debe calcular la media aritmética de las variables (X, Y) e indicar sus
respectivas medias son iguales o cual de ellas es la mayor.
INICIO
SX = X1 + X2
PX = SX / 2
SY = Y1 + Y2
PY = SY / 2
SI
PX = PY "Las m edias son iguales"
NO
SI
"La media de Y's es mayor NO "La media de X's es mayor
que la media de X's" PX < PY que la media Y's"
FIN
CAPÍTULO IV
ESTRUCTURAS ITERATIVAS
4.1 Introducción.
Las estructuras iterativas (también llamadas “bucles”), son procesos que
ejecutan una serie de instrucciones en un número determinado de veces. Las
operaciones, o instrucciones, serán siempre las mismas, pero con datos y
resultados diferentes. En el caso de un programa de computadora, el “bucle” o
“lazo” es un conjunto de instrucciones que deben ser ejecutadas un cierto
números de veces(cada repetición también se conoce como iteración), en una
entrada y una salida; la entrada se producirá con una o varias instrucciones y la
salida del bucle – fin del proceso repetitivo-, se producirá cuando se cumple o no
una condición.
Un bucle que no controle su fin, recibe el nombre de bucle infinito o sin fin,
tiene la forma mostrada en la Figura 4.1.
Figura 4.1. Estructura general de un bucle infinito.
Acción 1
Acción 2
• Preparación y arranque.
• Cuerpo.
• Modificación.
• Comprobación de la condición.
Falso
¿Condición?
Cierto
Proceso(s)
Proceso(s)
Falso
¿Condición?
Cierto
var=inicio,fin, incremento
Proceso(s)
Ejemplo: Hacer un diagrama de flujo que genere números pares desde 2 hasta
infinito.
INICIO
C← 0
C← C+2
C
Ejemplo: Hacer diagrama de flujo que genere números impares desde 1 hasta
infinito.
INICIO
C ← -1
C← C+2
Ejemplo: Hacer diagrama de flujo que genere números enteros sucesivos desde
1 hasta infinito.
INICIO
C← 0
C← C+1
C
Ejemplo: Hacer diagrama de flujo que genere números de tres en tres hasta
infinito.
INICIO
C← 0
C← C+3
C
Ejemplo: Hacer diagrama de flujo que lea 1000 números y que lea e imprima su
promedio.
INICIO
C← 0
S← 0
C← C+1
S← S+N
NO
C = 1000
SI
P ← S / 1000
FIN
I
Ejemplo: Hacer diagrama de flujo que genere números pares de 2 hasta 200.
INICIO
C← 0
C← C+2
NO
C = 200
SI
FIN
Ejemplo: Hacer diagrama de flujo que genere números enteros sucesivos de uno
en uno hasta N.
INICIO
C← 0
C← C+1
NO
C=N
SI
FIN
Ejemplo: Hacer diagrama de flujo que calcule la media aritmética de N números.
INICIO
C← 0
S← 0
P← 0
C← C+1
S← S+M
NO
C=N
SI
P← S/N
FIN
Ejemplo: Hacer diagrama de flujo que lea un número y que determine si es par o
impar, si el número es par, el diagrama debe generar números pares de 2 – 20 y si
no, impares de 1-19.
INICIO
NO SI
"Número impar" C MOD 2 = 0 "Número par"
C ← -1 C← 0
SI SI
C = 19 C = 20
NO NO
C← C+2
C ← C +2
C C
FIN
Ejemplo: Hacer diagrama de flujo que lea n números y que determine cual de
ellos es el mayor.
INICIO
MAY ← -32000
C← 0
C← C+1
NO
X > MAY
SI
MAY ← X
NO
C=N
SI
MAY
FIN
Ejemplo: Hacer diagrama de flujo que imprima la sucesión de Fibonacci:
0,1,1,2,3,5,8,13,21,…
INICIO
A← 0
B← 1
A,B
C ← A+ B
A← B
B← C
Ejemplo: Hacer diagrama de flujo que imprima números múltiplos de cinco desde
cinco hasta quinientos.
INICIO
C← 0
C← C+5
NO
C = 500
SI
FIN
Ejemplo: Hacer diagrama de flujo que imprima números de uno en uno hasta 50
y que imprima el cuadrado de cada uno.
INICIO
C← 0
C← C+1
N← C*C
NO
C = 50
SI
FIN
Ejercicios propuestos para el capítulo.
1.- Hacer un diagrama de flujo que lea un número N y que genera la siguiente
secuencia:
1 .. 1
2 .. 3
3 .. 9
4 .. 16
. .
. .
N .. N2
3.- Hacer un diagrama de flujo que lea un número N y que genere una secuencia
de números primos menores o iguales que N.
4.- Hacer un diagrama de flujo que lea un número N y que genere la sucesión de
Fibonacci para números menores o iguales que N.
5.- Elabore un diagrama de flujo que lea N números y que indique cuántos de ellos
son pares y cuántos múltiplos de 3.
6.- Hacer un diagrama de flujo que lea un número N y que genere una secuencia
de números impares menores o iguales que N.
CAPÍTULO V
ESTRUCTURAS DE
DATOS BÁSICAS
5.1 Vectores.
Un vector es un conjunto de elementos relacionados. En la mayoría de los
lenguajes de computadora, todos los elementos de un vector(o arreglo
unidimensional) son del mismo tipo.
X= 457 324 3 55
[1] [2] [3] [4]
La Figura No. 5.1 muestra un arreglo de enteros llamado X que tiene una
dimensión de 4. Si queremos hacer referencia al segundo elemento del arreglo X
(el número 324) tendríamos que especificar X[2](se lee como X de 2), es decir,
X[2]=324. Cada uno de estos elementos individuales puede ser tratado como
cualquier variable.
INICIO
K ← 1, N
X[K]
X[K]
FIN
Ejemplo: Hacer diagrama de flujo que lea un arreglo de N elementos y que
imprima su media aritmética.
INICIO
S← 0
K ← 1, N
X[K]
S ← X[K] + S
P← S/N
FIN
Ejemplo: Hacer diagrama de flujo que lea un vector numérico de N elementos y
que indique cuántos de ellos son negativos.
INICIO
P← 0
K ← 1, N
X[K]
K ← 1, N
NO
X[K] < 0
SI
P← P+1
FIN
Ejemplo: Hacer un diagrama de flujo que lea un vector de N elementos que
calcule la siguiente norma:
(X1-M)+ (X1-M)+...+ (XN-M)
Norma = -----------------------------------------
N
Donde M es la media aritmética del vector X.
INICIO
S← 0
K ← 1, N
X[K]
S ← S + X[K]
M← S / N
S2 ← 0
K ← 1, N
S2 ← S2 + (X[K] - M)
DM ← S2 / N
DM
FIN
Ejemplo: Hacer diagrama de flujo que lea dos vectores de dimensión N y que
calcule e imprima la suma de ambos.
INICIO
K ← 1, N
X[K]
Y[K]
K ← 1, N
Z[K]
FIN
5.2 Matrices.
Un matriz es un arreglo bidimensional, es decir, para hacer referencia a
cualquiera de sus elementos son necesarios dos índices.
Ejemplo: Hacer diagrama de flujo que lea una matriz de tres por dos (3 X 2).
INICIO
I ← 1, 3
J ← 1, 2
X[I,J]
FIN
Ejemplo: Hacer diagrama de flujo que lea e imprima una matriz de N X M
elementos.
INICIO
N,M
I ← 1, N
J ← 1, M
X[I,J]
I ← 1, N
J ← 1, M
X[I,J]
FIN
Ejemplo: Hacer diagrama de flujo que lea matriz de dimensión NxM y un escalar
. El diagrama debe calcular e imprimir el producto escalar de ambos.
INICIO INICIO
N , M, K N , M, K
I ← 1, N I ← 1, N
J ← 1, M J ← 1, M
X[I,J] X[I,J]
I ← 1, N I ← 1, N
equivale a ....
J ← 1, M J ← 1, M
Y[I,J]
I ← 1, N
FIN
J ← 1, M
Y[I,J]
FIN
Ejemplo: Hacer diagrama de flujo que lea una matriz de dimensión NxM y
imprima su diagonal principal.
Ejercicios propuestos para el capítulo.
1.- Hacer diagrama de flujo que lea un vector de N elementos y que indique
cuantos de ellos son pares.
2.- Hacer diagrama de flujo que lea una matriz de N X 3. El diagrama debe
calcular el promedio por fila e cual de tales promedios es el mayor.
3.- Hacer diagrama de flujo que lea un vector de N elementos y que indique
cuantos de ellos múltiplos de tres y cuántos múltiplos de 5.
4.- Hacer un diagrama de flujo que lea un vector de dimensión N y que calcule la
siguiente norma:
(X1-M)2+ (X1-M) 2+...+ (XN-M) 2
Norma = -----------------------------------------
N2
Donde M es la media aritmética del vector X.
5.- Hacer un diagrama de flujo que lea dos matrices y que calcule su producto.
6.- Hacer un diagrama de flujo que lea dos matrices y que calcule su suma.
7.- Hacer un diagrama de flujo que lea una matriz entera de dimensión NxM y que
calcule su matriz transpuesta.
8.- Hacer un diagrama de flujo que lea una matriz entera de dimensión NxM y que
calcule el promedio de sus elementos.
9.- Hacer una diagrama de flujo que lea una matriz de caracteres de dimensión
NxM y que indique cuántos de los caracteres de tal matriz son letras “a”.
10.- Que lea dos vectores numéricos de dimensión N y que indique cuál de ellos
tiene la mayor media aritmética de sus elementos.
CAPÍTULO VI
SUBRUTINAS
6.1 Definición.
La programación estructurada consiste en descomponer sucesivamente un
problema en módulos que tratarán y programarán independientes unos de otros. A
estos módulos también se les llama subprogramas.
Subprogram a A Subprogram a B
?
Operación 1 Operación 1
Operación 2 Operación 2
. .
. .
Subprogram a
Subprogram a B
A
Fin Fin
Ejemplo: Elaborar un diagrama de flujo que genere un menú con tres opciones:
1.- Suma de dos números
2.- Promedio de N números
3.- Terminar el algoritmo
Inicio
Subprogram a A Subprogram a B
Menu
N
1.- Sum a de dos núm eros a,b
2.- P rom edio de N núm eros
3.- T erm inar algorit m o
s=0
c=a+b
Opc
i=1, N
c
X[i]
Según Opc
1 2 s=s+x[i]
Fin
Ot ro
P =s/N
Subprogram a
Subprogram a B
A
Falso
Opc=3 Fin
Ciert o
Fin