Documente Academic
Documente Profesional
Documente Cultură
Antes de iniciar el tema, es conveniente, sobre todo para aquellos que comienzan su instrucción
informática, hacer un breve repaso de conceptos fundamentales que se han de tomar en cuenta
cuando se desarrollan programas que se utilizarán en las computadoras.
Los datos de entrada y los datos de salida pueden ser, realmente, cualquier cosa, texto, dibujos, o
sonidos.
¿Qué es programar?
Especificar la estructura y el comportamiento de un programa, así como probar que el programa
realiza su tarea adecuadamente y con un rendimiento aceptable
Después de esta pequeña introducción, entraremos a conocer que son los algoritmos.
Concepto de algoritmo
Los seres humanos realizamos una serie de pasos, procedimientos o acciones que nos permiten
alcanzar un resultado o resolver un problema, esto se repite innumerables veces durante el día. En
realidad estamos aplicando un algoritmo para resolver un problema.
Ejemplo:
Otros Ejemplos pueden ser Cambiar un foco, cocinar, comer, ir al trabajo, realizar un cálculo, etc.
Definición de Algoritmo.- secuencia ordenada y cronológica de pasos que llevan a la solución de un
problema o a la ejecución de una tarea (o actividad).
• Características:
Definido (si se sigue varias veces el mismo algoritmo el resultado debe ser el
mismo)
Análisis
• Entrada.
• Proceso.
• Salida
Ejemplo:
1. Narrada
Paso 1. Inicio
Paso 2. Identificar las medidas de la base y altura
Paso 3. Multiplicar base por altura
Paso 4. Dividir el resultado del paso 3 entre 2
Paso 5. Generar el resultado del paso 4
Paso 6. Fin
2. Diagrama de Flujo
3. Pseudocodigo
Elementos fundamentales
Datos.
Instrucciones.
Estructuras de control.
Concepto de Dato
un número
un código
un hecho
una edad
Con estas piezas se puede armar una colección ‘bien definida’ de elementos llamadas conjunto.
Las vocales
Los dígitos
Tipos de datos
Todo conjunto a procesar por una computadora debe tener un nombre y se pueden clasificarse
en:
• Simples
• Estructurados
Los datos simples se caracterizan porque ocupan sólo una casilla de memoria, por lo tanto una
variable simple hace referencia a un único valor a la vez. Dentro de este grupo de datos
encontramos:
Z y entero: Son números que no contienen componentes fraccionarias y, por lo
tanto, no incluyen el punto decimal, pueden estar precedidos del signo + o --. Por
ejemplo: 465 -387 9 99 -1578 125550
R y real: Son números que contienen una parte fraccionaria y, por lo tanto,
incluyen el punto decimal, pueden esta precedidos del signo + o --. Por ejemplo:
125.87 -124.0 158000.75 -38.5879
Booleano: Toma los valores de verdadero (true) o falso (false), no puede ser leído
o escrito, sólo asignado, es útil para plantear cierto tipo de condiciones en el
manejo de las estructuras lógicas de control.
Los datos estructurados se caracterizan por el hecho de que con un nombre se hace referencia a
un grupo de casillas de memoria.
Es decir, un dato estructurado tiene varios componentes. Cada uno de sus componentes puede ser
a su vez un dato simple. Dentro de este grupo de datos se encuentran:
• Arreglos
• Cadena de caracteres
• Registros
Constantes y Variables
Constantes
<Variable>: <literal>
Ejemplos
PI = 3.1416
TAMANO_MAXIMO = 1000
Variables
• Se utiliza para representar un dato tipo entero, real (flotante), o una constante de
carácter. Por ejemplo:
Operaciones aritméticas
Estos operadores nos permiten realizar operaciones aritméticas entre operandos: números,
constantes o variables. El resultado de una operación aritmética es un número.
A continuación presentamos en una tabla los operadores aritméticos, la operación que puede
realizar y, un ejemplo de su uso y su resultado:
Al evaluar expresiones que contienen operadores aritméticos debemos respetar la jerarquía en el
orden de aplicación. Es decir, si tenemos en una expresión más de un operador, debemos aplicar
primero el operador de mayor jerarquía, resolver esa operación y así sucesivamente.
Si una expresión contiene sub expresiones entre paréntesis, éstas se evalúan primero, respetando
claro la jerarquía de los operadores aritméticos en esta sub expresión.
Si las sub expresiones se encuentran anidadas por paréntesis, primero se evalúan las sub
expresiones que se encuentran en el último nivel de anidamiento.
Por ejemplo:
Dados los siguientes casos, resolver cada caso aplicando las reglas correspondientes:
Expresiones lógicas
Las expresiones lógicas o booleanas, están constituidas por números, constantes o variables y
operadores lógicos o relacionales. El valor que pueden tomar estas expresiones es de verdadero o
falso.
Operadores relacionales
Son operadores que permiten comparar dos operandos, los operandos pueden ser números,
caracteres, constantes o variables.
Las constantes o variables, a su vez, pueden ser de tipo entero, real (flotante), carácter o cadena
de caracteres.
Son operadores que permiten formular condiciones complejas a partir de condiciones simples.
Conjunción (y).- relaciona dos operandos booleanos. Proporciona un valor verdadero (V), si los
dos son verdaderos; en caso contrario da un resultado falso (F).
Disyunción (o).- relaciona dos operandos booleanos. Proporciona un valor verdadero (V), si uno de
los dos es verdadero; en caso contrario da un resultado falso (F).
Negación (No).- este operador relaciona sólo un operando booleano y da como resultado un valor
opuesto al que tenga el operando.
Estructura y diseño de un algoritmo
A continuación en la figura podemos observar las etapas que debemos seguir para la solución de
un problema
La secuenciación es una estructura de control que permite a la computadora ejecutar una acción,
después otra, luego la que sigue y así sucesivamente hasta la última.
Es conveniente etiquetar cada acción con números desde el uno en forma ascendente de uno en
uno, para denotar el orden secuencial.
Por lo tanto los elementos básicos que integran la estructura de un algoritmo son:
1. Encabezado.- todo algoritmo debe tener un encabezado como identificación, el cual debe
empezar con la palabra Algoritmo seguida por una descripción del problema a resolver.
2. Inicio.- todo algoritmo debe empezar con la etiqueta 1, que marca el inicio del mismo.
4. Leer, calcular e imprimir.- los siguientes pasos pueden consistir en acciones tales como:
leer datos, calcular algunas expresiones aritméticas e imprimir datos tantas veces como
se requiera y en el orden apropiado para resolver el problema en cuestión.
5. Fin del algoritmo.- el último paso del algoritmo consiste en incluir la indicación fin.
Calcular e imprimir el sueldo de un empleado, se pedirá la clave del empleado, las horas
trabajadas y el pago por hora trabajada.
1. Inicio
2. Declaración de variables:
4. sueldo = ht * pht
6. Fin
Ejemplo No 2.- desarrollar un algoritmo que permita leer un número en radianes e imprima su
equivalencia en grados; así mismo, leer un número en grados e imprima su equivalencia en
radianes.
1. Inicio
2. Declaración de variables:
7. Fin
Ejemplo No 3.- desarrollar un algoritmo para calcular el promedio de un estudiante, se pedirá la
matricula del estudiante y cuatro calificaciones de los exámenes. Se imprimirá la matricula del
estudiante y el promedio.
1. Inicio
2. Declaración de variables
matest: entero
6. Fin
• Debemos recordar que un diagrama de flujo debe ilustrar gráficamente los pasos o
procesos a seguir para alcanzar la solución de un problema.
• Los símbolos colocados adecuadamente, permiten crear una estructura gráfica flexible
que ilustra los pasos a seguir para alcanzar un resultado específico.
• El diagrama de flujo facilitará más tarde la escritura del programa en algún lenguaje de
programación.
Reglas
2. Las líneas utilizadas para indicar la dirección del flujo del diagrama deben ser rectas,
verticales y horizontales.
3. Todas las líneas utilizadas para indicar la dirección del flujo del diagrama deben estar
conectadas. La conexión puede ser a un símbolo que exprese lectura, proceso, decisión,
impresión, conexión o fin de diagrama.
4. El diagrama de flujo debe ser construido de arriba hacia abajo (top-down) y de izquierda a
derecha (right to left).
6. Es conveniente cuando realizamos una tarea compleja poner comentarios que expresen o
ayuden a entender lo que hicimos.
7. Si el diagrama de flujo requiere más de una hoja para su construcción, debemos utilizar los
conectores adecuados y enumerar las páginas convenientemente.
Selección si-entonces
• La estructura selectiva lógica “si entonces” permite que el flujo siga por un camino
específico si se cumple una condición o un conjunto de condiciones.
• Se utiliza cuando alguna operación está condicionada para que se lleve a cabo, pero no
tiene una opción alterna.
Formato:
si condición entonces
operación (es)
Donde:
Funcionamiento:
Al llegar al si se evalúa la condición (es):
a). Si se cumple, se ejecuta (n) la (s) operación (es) del entonces y luego salta hasta el
siguiente paso después del fin del condicional.
b). Si no se cumple, salta hasta después del fin del condicional, es decir no hace nada.
Diagrama de flujo:
Ejemplo 1: Dado como dato una calificación de un alumno en un examen, desarrollar un algoritmo
y diagrama de flujo, que imprima el mensaje de aprobado en caso de que la calificación sea mayor
o igual a 70.
1. Inicio
2. Declaración de variables
cal: flotante
3. Leer cal
imprimir “Aprobado”
6. Fin
Ejemplo 2: Dado como dato el sueldo de un trabajador, desarrollar un algoritmo y diagrama de
flujo, que aplique un aumento del 15% si su sueldo es inferior a $1000. se imprimirá el nuevo
sueldo del trabajador.
1. Inicio
2. Declaración de variables:
3. Leer sue
imprimir nsue
6. Fin
Selección si entonces/sino
• La estructura selectiva si entonces/sino permite que el flujo se bifurque por dos ramas
diferentes en el punto de la toma de decisión (es).
• En ambos casos, luego de ejecutarse la (s) operación (es) indicada (s), se continúa con la
secuencia normal del proceso.
• Por la naturaleza de éstas, se debe ejecutar una o la otra, pero no ambas a la vez, es decir,
son mutuamente excluyentes.
Formato:
si condición
entonces
hacer operación 1
sino
hacer operación 2
Donde:
Funcionamiento:
si se cumple, se ejecuta (n) la (s) operación (es) del entonces y luego salta hasta el
siguiente paso después del fin del condicional.
De lo contrario, salta hacia el sino, ejecuta la (s) operación (es), y después salta hasta el
siguiente paso después del fin del condicional.
Ejemplo 1: Dado como dato una calificación de un alumno en un examen, desarrollar un algoritmo
y diagrama de flujo, que imprima el mensaje de aprobado en caso de que la calificación sea mayor
o igual a 70 o reprobado en caso contrario.
Algoritmo
1. Inicio 5. Fin
2. Declaración de variables
cal: flotante
3. Leer cal
4. si cal >=70
entonces
imprimir “Aprobado”
sino
imprimir “Reprobado”
Algoritmo
3. Leer sue
entonces
sino
El proceso puede repetirse numerosas veces. En este caso, para resolver el problema, estamos
aplicando estructuras selectivas en cascada o anidadas.
n si condición1 entonces
n1 si condición2
entonces
hacer operación21
sino
hacer operación22
n si condición1
entonces
n1 si condición2
entonces
hacer operación 21
sino
hacer operación 22
sino
n3 si condición3 entonces
hacer operación 31
n si condición1
entonces
n1 si condición2 entonces
hacer operación 21
sino
n3 si condición3
entonces
hacer operación 31
sino
hacer operación 32
1 inicio
2 Declaración de variables:
num: entero
3 Leer num
4. si num ==0
entonces
imprimir “cero”
sino
entonces
imprimir “positivo”
sino
imprimir “negativo”
Formato:
si selector igual
hacer acción n + 1
Donde:
Selector.- variable o expresión a evaluarse, según la cual se tomará una de las múltiples
decisiones o alternativas.
Acción n + 1.- expresa la operación que se va a realizar cuando se continúe con el flujo
normal del proceso.
• La estructura selectiva si múltiple es muy flexible, lo que permite aplicarse de diferentes
formas. Por ejemplo observemos el siguiente formato:
si selector igual
hacer acción x
Por ejemplo: Desarrollar un algoritmo y diagrama de flujo tal que dado como datos la categoría y
el sueldo de un trabajador, calcule el aumento correspondiente teniendo en cuenta la siguiente
tabla. Se imprimirá la categoría del trabajador y su nuevo sueldo.
Algoritmo:
2. Declaración de variables:
cate: entero
4. si cate igual
7. Fin
ESTRUCTURAS REPETITIVAS
• Este tipo de estructura está presente en todos los lenguajes de programación, ya sean
estructurados u orientados a objetos. Por ejemplo cuando necesitamos calcular la nómina
total de la empresa, tenemos que sumar los sueldos de los n empleados de la misma.
• Dicho de otra forma el ciclo, es controlado por un contador que tiene que definirse con un
valor inicial, un valor final y un incremento, esto significa que debe conocerse de
antemano el número de veces que se debe repetir el ciclo.
• Donde:
• Funcionamiento:
V (contador del ciclo, generalmente representado por las variables i, j, k) toma un valor
inicial y se compara con VF (valor final). El ciclo se ejecuta mientras V es menor, menor o igual,
mayor, mayor o igual al valor de VF, el valor de V se incrementa o decrementa en cada iteración.
Cuando V supera el valor de VF entonces el ciclo se detiene
Ejemplo 1: desarrollar un algoritmo y diagrama de flujo tal que dado como datos 10 números
enteros, obtenga la suma de los 10 números enteros. Se mostrará la suma de los 10 números
enteros.
3. i = 1
leer num
i=i+1
6. imprimir suma
7. fin
Ejemplo 2: desarrollar un algoritmo y diagrama de flujo tal que dado como datos n números
enteros, obtenga la suma de los n números enteros. Se mostrará la suma de los n números
enteros.
2. declaración de variables:
3. leer n
4. i = 1
leer num
suma = suma + num
i=i+1
7. imprimir suma
8. fin
• Esta estructura permite que se repita una acción o un conjunto de acciones, en tanto
cierta condición se mantenga verdadera.
Formato:
•
•
proceso
Hacer PI = modificación de PI
Donde:
Ejemplo1: Desarrollar un algoritmo y diagrama de flujo que lea n números positivos, determine y
muestre el promedio de los n números positivos.
i, n: enteros 8. fin
2. leer n
3. i = 1
4. mientras i <= n
leer num
Ejemplo2: Desarrollar un algoritmo y diagrama de flujo para obtener la suma de los gastos que
hicimos en nuestro último viaje, pero no sabemos exactamente cuántos fueron, deberá mostrar la
suma total de los gastos.
1. inicio
2. declaración de variables:
3. leer gasto
leer gasto
6. imprimir sumgas
7. fin
Estructura repetitiva hacer mientras (do/while)
Formato:
Hacer
proceso
Hacer PI = modificación de PI
3. leer n
4. i = 1
5. hacer
leer num
i = i + 1 mientras (i < = n)
Ejemplo 2: Desarrollar un algoritmo y diagrama de flujo el cual, para n números enteros positivos
mostrar los pares.
1. inicio
2. declaración de variables:
i, n: entero
3. leer n
4. i = 2
5. hacer
imprimir i
i=i+2
mientras (i < = n)
7. fin
DATOS ARREGLOS Y MATRICES
Arreglos
En las unidades anteriores trabajamos con tipos de datos enteros, flotantes, cadenas, etc., los
cuales son considerados como datos de tipo simple, puesto que una variable que se define con
alguno de estos tipos sólo puede almacenar un valor a la vez, es decir, existe una relación de uno a
uno entre la variable y el número de elementos (valores) que es capaz de almacenar.
En cambio un dato de tipo estructurado como el arreglo, puede almacenar a más de un elemento
(valor) a la vez, con la condición de que todos los elementos deben ser del mismo tipo de dato, es
decir, que se puede tener un arreglo de datos enteros, flotantes, etc.
Los arreglos se clasifican de acuerdo con el número de dimensiones que tienen. Así, se tienen los
arreglos unidimensionales (una dimensión), los bidimensionales (dos dimensiones) y los
multidimensionales (de más de dos dimensiones), etc.
Definición de arreglo
Finita.- todo arreglo tiene un límite, es decir se sabe determinar cuál será el número máximo de
elementos que podrán formar parte del arreglo.
El cual define un arreglo llamado producción con 30 casillas o lugares para almacenar los datos de
30 días.
Tipo.- Tipo de dato que tendrá el conjunto de elementos del arreglo que se
está definiendo, puede ser entero, real, carácter, etc.
• • •
El subíndice puede ser una constante numérica entera como 1, 2, 3,…, 30, una variable de tipo
entero, como: Producción [ i ], o bien, una expresión algebraica que de un resultado de tipo entero
como:
Producción [ i + 3 ]
Producción [ (i * 4) – j ]
Como toda variable, una de tipo arreglo puede usarse para leer datos, asignarle valores mediante
expresiones aritméticas, imprimir su contenido, formar parte de expresiones lógicas, etc.
Lectura
El proceso de lectura de un arreglo consiste en leer y asignar un valor a cada uno de sus
elementos. Consideremos de nuevo nuestro ejemplo
Leer Producción[1],
Leer Produccion[2],
• • •
Leer Producción[30]
De esta forma no resultaría práctico, por lo tanto se usará un ciclo para leer todos los elementos
del arreglo:
i=1
leer Producción[i]
i=i+1
Escritura
El caso de escritura es similar al de lectura. Se debe escribir el valor de cada uno de los
componentes, por ejemplo, considerando nuestro ejemplo:
i=1
imprimir Producción[i]
i=i+1
Ejemplo1: Desarrollar un algoritmo y diagrama de flujo que reciba como entrada un arreglo
unidimensional de n valores de tipo entero y muestre el arreglo unidimensional:
1. inicio 7. i = 1
4. i = 1 10. fin
leer arr[i]
i = i +1
Ejemplo 2: Desarrollar un algoritmo y diagrama de flujo que reciba como entrada un arreglo
unidimensional que corresponde a los sueldos de un grupo de 70 empleados de una empresa y
necesitamos saber cuántos de estos empleados tienen un sueldo superior al promedio del grupo.
Mostrar el total de empleados que tiene un sueldo superior al promedio del grupo.
Algoritmo
1. inicio
2. declaración de variables:
i, conta = 0: entero
3. i = 1
4. repetir con i desde 1 hasta 70 10. imprimir conta
i=i+1
6. prom = acsue / 70
7. i = 1
conta = conta + 1
i=i+1
Ejemplo 3: Desarrolla un algoritmo y diagrama de flujo que reciba como entrada dos arreglos
unidimensionales cada uno con 20 números enteros, calcular la suma uno a uno de los elementos
de los dos arreglos y almacenar el resultado en un tercer arreglo. Mostrar al final los tres arreglos.
Algoritmo
1. inicio
2. declaración de variables:
a, b, c: Arreglo[20] entero
i: entero
3. i = 1
leer a[i]
leer b[i]
i=i+1
6. i = 1
i = i +1
9. fin
Arreglos multidimensionales
En este tema analizaremos los arreglos bidimensionales (caso especial de los multidimensionales)
por ser los más utilizados.
Arreglos bidimensionales
Un arreglo de este tipo, también conocido como matriz, es del orden M x N, donde M es el
número de renglones y N el número de columnas, es decir, en forma de tabla.
1<=j<=N
Al declarar un arreglo es necesario hacerlo como una variable, por la cual en la parte de
declaraciones de variables se utiliza el siguiente formato:
Donde:
Por ejemplo, si aplicamos los conceptos del formato para definir la matriz de orden 4 x 5 de
números enteros, tenemos:
Para relacionar cada elemento individual de una matriz se usan dos subíndices; el primero indica el
renglón y el segundo la columna, como sigue:
Matriz[Renglón, Columna]
donde:
Como toda variable, una de tipo matriz puede usarse para leer datos, asignarle valores mediante
expresiones aritméticas, imprimir su contenido, formar parte de expresiones lógicas, etc. Por
ejemplo:
Matriz[1, 1] = 20
Leer Matriz[R, C]
Leer Matriz[3, 4]
Imprimir Matriz[1, 2]
Lectura
Para realizar la lectura de una matriz los elementos deben referenciarse por medio de dos índices,
normalmente se usan dos ciclos (anidados) para lograr la lectura de elementos consecutivos. Por
ejemplo leer los elementos de una matriz de orden 5 x 3, los pasos a seguir son los siguientes:
i=1
j=1
leer matriz[i, j]
j=j+1
i=i+1
Al variar los índices de i y j se lee un elemento de matriz, según la posición indicada por los índices
iyj
• • • •
Escritura
i=1
j=1
Imprimir Matriz[i, j]
j = j +1
i=i+1
fin del ciclo externo
Ejemplo1 1: Desarrollar un algoritmo y diagrama de flujo el cual, reciba como entrada un arreglo
bidimensional de orden m x n con valores de tipo entero y muestre el arreglo bidimensional:
Algoritmo
1. inicio
2. declaración de variables:
i, j, m, n: entero
3. leer m, n
4. i = 1
j=1
leer mat[i, j]
j=j+1
i=i+1
7. i = 1
j=1
imprimir mat[i, j]
j=j+1
i=i+1
10. fin
Ejemplo 2: Desarrollar un algoritmo y diagrama de flujo el cual reciba como entrada un arreglo
bidimensional de orden m x n con valores de tipo entero, para calcular la suma de los elementos
de la diagonal principal. Mostrará el arreglo bidimensional y la suma de los elementos de la
diagonal principal.
Algoritmo
1. inicio
2. Declaración de variables
i, j, m, n, sumdiag=o: entero
3. Leer m, n
4. i = 1
leer mat[i, j]
5.1.1 si i == j entonces
j=j+1
i=i+1
7. i = 1
j=1
imprimir mat[i, j]
j=j+1
i=i+1
11. fin