Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Asignatura:
Profesor:
Unidad I
Fundamentos Teóricos
Universidad Autónoma de Sinaloa
Facultad de Ingeniería Mochis
Licenciatura en Ingeniería de Software
Modalidad Virtual
Contenido
Presentación de la unidad ............................................................................................................. 3
Competencia específica ................................................................................................................ 3
Recursos complementarios ........................................................................................................... 3
Definición de Algoritmo ................................................................................................................ 4
Características de un algoritmo .................................................................................................... 5
Tipos de algoritmos ....................................................................................................................... 6
Lenguajes algorítmicos .................................................................................................................. 6
Metodología para la solución de problemas por medio de la computadora ............................... 7
Definición del Problema ............................................................................................................ 8
Análisis del Problema ................................................................................................................ 8
Diseño de la Solución ................................................................................................................ 9
Codificación ............................................................................................................................... 9
Pruebas y Depuración ............................................................................................................. 10
Documentación ....................................................................................................................... 10
Mantenimiento ....................................................................................................................... 11
Tipos de Datos ............................................................................................................................. 11
Tipos de Datos Simples ........................................................................................................... 12
Arreglos ................................................................................................................................... 12
Identificadores ............................................................................................................................ 13
Constantes................................................................................................................................... 14
Variables ...................................................................................................................................... 14
Clasificación de las Variables ................................................................................................... 15
Operadores y su jerarquía ........................................................................................................... 16
Expresiones ............................................................................................................................. 16
Operadores.............................................................................................................................. 16
Jerarquía de los operadores .................................................................................................... 19
Universidad Autónoma de Sinaloa
Facultad de Ingeniería Mochis
Licenciatura en Ingeniería de Software
Modalidad Virtual
Presentación de la unidad
Esta unidad presenta los conceptos básicos que se requieren conocer y comprender para
poder introducirse al diseño de algoritmos y poder así construir soluciones a problemas
computacionales.
Competencia específica
El alumno identificará los fundamentos teóricos necesarios para el desarrollo de algoritmos
computacionales.
Recursos complementarios
¿Quieres ser Ingeniero de Software?
https://www.youtube.com/watch?v=c1zXL4eiVSk
https://www.youtube.com/watch?v=1bDK1-U1edE
https://www.youtube.com/watch?v=70uNmsgen7U
Universidad Autónoma de Sinaloa
Facultad de Ingeniería Mochis
Licenciatura en Ingeniería de Software
Modalidad Virtual
Definición de Algoritmo
Los problemas que se plantean en la vida diaria suelen ser resueltos mediante el uso de la
capacidad intelectual y la habilidad manual del ser humano. La utilización de la computadora
en la resolución de problemas aporta grandes ventajas, como son la rapidez de ejecución y la
confiabilidad de los resultados obtenidos.
Muchos de los problemas acarrean complicados cálculos, así como la utilización de grandes
cantidades de datos; esto nos causa muchos problemas ya que el riesgo de equivocarse es muy
grande, y también con la utilización de grandes cantidades de datos el trabajo se convierte en
pesado y rutinario. Mediante la computadora se eliminan estos problemas, pues su capacidad
se basa en la rapidez, la precisión y memoria.
Sin embargo la computadora no puede hacer todo por si sola. Es preciso que se le describa con
detalle y en su lenguaje, todos los pasos que tiene que realizar para la resolución del
problema. Esta descripción es lo que se conoce como programa de computadora, este dirigirá
el funcionamiento de la máquina en la resolución del problema.
La primer decisión que hay que tomar cuando se crea un programa, es contestar a las
preguntas: ¿Qué es lo que el programa se supone que va a hacer?, ¿cuál es el problema que se
va a resolver?, ¿Qué tarea va a realizar nuestro programa? Cuanto más se detalle la
descripción, más fácil será lograr resultados.
La computadora no solamente es una máquina que puede realizar procesos para darnos
resultados, sin que tengamos la noción exacta de las operaciones que realiza para llegar a esos
resultados. Con la computadora además de lo anterior también podemos diseñar soluciones a
la medida, de problemas específicos que se nos presenten. Más aún, si estos involucran
operaciones matemáticas complejas y/o repetitivas, o requieren del manejo de un volumen
muy grande de datos.
Un algoritmo se define como una serie de pasos finitos y organizados que describen el proceso
que se debe seguir para dar solución a un problema específico.
1. La etapa de entrada. Indica los datos que son necesarios para la solución del problema
en cuestión.
2. La etapa de proceso o procesamiento. Es donde se realizan las operaciones que tienen
que ver con la solución del problema.
3. La etapa de salida. Es donde se mostrarán los resultados obtenidos en el
procesamiento.
Características de un algoritmo
4. Si se sigue el algoritmo dos o más veces con los mismos datos de entrada, se deben
obtener los mismos datos de salida.
5. Debe ser general, es decir, soportar la mayoría de las variantes que se puedan
presentar en la definición del problema.
6. Debe ser finito en tamaño y tiempo de ejecución. El algoritmo debe terminar en algún
momento y debe usar una cantidad de recursos finita.
Tipos de algoritmos
En base a su naturaleza, existen dos tipos de algoritmos:
1. Cualitativos: Son aquellos en los que se describen los pasos utilizando palabras.
Ejemplos:
2. Cuantitativos: Son aquellos en los que se utilizan cálculos numéricos para definir los
pasos del proceso.
Ejemplos:
Lenguajes algorítmicos
Un Lenguaje algorítmico es una serie de símbolos y reglas que se utilizan para describir de
manera explícita un proceso.
No Gráficos: Representa en forma descriptiva las operaciones que debe realizar un algoritmo
(pseudocodigo).
INICIO
Edad: Entero
ESCRIBA “cual es tu edad?”
Lea Edad
SI Edad >=18 entonces
ESCRIBA “Eres mayor de Edad”
SI Edad >=70
ESCRIBA “Eres un adulto mayor”
FINSI
FINSI
ESCRIBA “fin del algoritmo”
FIN
Actividad 1.1 Investigar los símbolos que se utilizan para elaborar diagramas de flujo (Incluir
figura y una breve descripción de para qué se utiliza). Revisar las especificaciones de la
actividad en la plataforma.
5. Pruebas y Depuración
6. Documentación
7. Mantenimiento
Esta fase está dada por el enunciado del problema, el cual requiere una definición clara y
precisa. Es importante que se conozca lo que se desea que realice la computadora; mientras
esto no se conozca del todo no tiene mucho caso continuar con la siguiente etapa.
Consiste en la obtención sin ambigüedades de una visión general y clara del problema.
Consiste en establecer una serie de preguntas acerca de lo que establece el problema, para
poder determinar si se cuenta con los elementos suficientes para llevar a cabo la solución del
mismo, algunas preguntas son:
¿Con qué cuento? Cuáles son los datos con los que se va a iniciar el proceso, qué tenemos que
proporcionarle a la computadora y si los datos con los que cuento son suficientes para dar
solución al problema.
¿Qué hago con esos datos? Una vez que tenemos todos los datos que necesitamos, debemos
determinar qué hacer con ellos, es decir que fórmula, cálculos, que proceso o transformación
deben seguir los datos para convertirse en resultados.
¿Qué se espera obtener? Que información deseamos obtener con el proceso de datos y de
qué forma presentarla; en caso de la información obtenida no sea la deseada replantear
nuevamente un análisis en los puntos anteriores.
Universidad Autónoma de Sinaloa
Facultad de Ingeniería Mochis
Licenciatura en Ingeniería de Software
Modalidad Virtual
Diseño de la Solución
Una computadora no tiene capacidad para solucionar problemas más que cuando se le
proporcionan los sucesivos pasos a realizar, esto se refiere a la obtención de un algoritmo que
resuelva adecuadamente el problema. En caso de obtenerse varios algoritmos, seleccionar uno
de ellos utilizando criterios ya conocidos.
Esta etapa incluye la descripción del algoritmo resultante en un lenguaje natural, de diagrama
de flujo o natural de programación.
Como puede verse, solo se establece la metodología para alcanzar la solución en forma
conceptual, es decir; sin alcanzar la implementación en el sistema de cómputo.
Codificación
La codificación es la operación de escribir la solución del problema (de acuerdo a la lógica del
diagrama de flujo o pseudocódigo), en una serie de instrucciones detalladas, en un código
reconocible por la computadora, la serie de instrucciones detalladas se le conoce como código
fuente, el cual se escribe en un lenguaje de programación o lenguaje de alto nivel.
Pruebas y Depuración
Una vez que se ha obtenido el programa ejecutable, este es sometido a prueba a fin de
determinar si resuelve o no el problema planteado en forma satisfactoria.
Las pruebas que se le aplican son de diversa índole y generalmente dependen del tipo de
problema que se está resolviendo. Comúnmente se inicia la prueba de un programa
introduciendo datos válidos, inválidos e incongruentes y observando cómo reacciona en cada
ocasión.
1. Tratar de iniciar la prueba con una mentalidad saboteadora, casi disfrutando la tarea
de encontrar un error.
2. Sospechar de todos los resultados que arroje la solución, con lo cual se deberán
verificar todos.
3. Considerar todas las situaciones posibles, normales y aún las anormales.
El proceso de depuración consiste en localizar los errores y corregirlos en caso de que estos
existan. Si no existen errores, puede entenderse la depuración como una etapa de
refinamiento en la que se ajustan detalles para optimizar el desempeño del programa.
Documentación
- Documentación Externa: También conocida como Manual Técnico, está integrada por
los siguientes elementos:
- Manual del Usuario: Describe paso a paso la manera cómo funciona el programa, con
el fin de que el usuario obtenga el resultado deseado. Es la documentación que se le
proporciona al usuario final, es una guía que indica el usuario como navegar en el
Universidad Autónoma de Sinaloa
Facultad de Ingeniería Mochis
Licenciatura en Ingeniería de Software
Modalidad Virtual
Debido a que el programa resultante en esta etapa se encuentra totalmente depurado (sin
errores), se procede a la utilización para resolver problemas del tipo que dio origen a su
diseño.
En vista de que esta utilización no podrá ser supervisada en todas las ocasiones por el
programador, debe crearse un manual o guía de operación que indique los pasos a seguir para
utilizar el programa.
Mantenimiento
Se lleva acabo después de terminado el programa, cuando se detecta que es necesario hacer
algún cambio, ajuste o complementación al programa para que siga trabajando de manera
correcta. Para poder realizar este trabajo se requiere que el programa este correctamente
documentado.
Se refiere a las actualizaciones que deban aplicarse al programa cuando las circunstancias así
lo requieran. Este programa deberá ser susceptible de ser modificado para adecuarlo a nuevas
condiciones de operación.
Actividad 1.2 Elabora un algoritmo cualitativo sobre una receta de cocina aplicando las
características de un algoritmo y la metodología
dsdas fgfdg que se vieron en los temas anteriores. Revisar
las especificaciones de la actividad en la plataforma.
Tipos de Datos
Un dato es Información concreta sobre hechos, elementos, etc., que permite estudiarlos,
analizarlos o conocerlos.
Todos los datos tienen un tipo asociado con ellos. Un dato puede ser un simple caracter, tal
como ‘b’, un valor entero tal como 35.
El tipo de dato determina la naturaleza del conjunto de valores que puede contener dicho
dato.
Universidad Autónoma de Sinaloa
Facultad de Ingeniería Mochis
Licenciatura en Ingeniería de Software
Modalidad Virtual
Datos Numéricos:
Permiten representar valores escalares de forma numérica, esto incluye a los números enteros
y los reales. Este tipo de datos permiten realizar operaciones aritméticas comunes.
EDAD = 17 NUMÉRICO
TELEFONO = ‘(668) 812-12-12’ ALFANUMÉRICO
DIRECCION = “CALLE XYZ NTE. #123 INT. 4” ALFANUMÉRICO
ESTATURA = 1.70 NUMÉRICO
CALIFICACION = 8.5 NUMÉRICO
Datos lógicos:
Son aquellos que solo pueden contener uno de dos valores (falso o verdadero) ya que
representan el resultado de una comparación entre otros datos (numéricos o alfanuméricos).
Arreglos
Los arreglos son una colección de datos del mismo tipo que se referencian utilizando un
nombre común. Un arreglo consta de posiciones de memoria continuas. La dirección más baja
Universidad Autónoma de Sinaloa
Facultad de Ingeniería Mochis
Licenciatura en Ingeniería de Software
Modalidad Virtual
Los arreglos pueden tener una sola dimensión (llamados vectores o unidimensionales) o varias
dimensiones (llamados matrices o multidimensionales).
colores
“Azul” “Rojo” “Verde” “Amarillo” “Café” “Blanco”
El arreglo colores es un vector o unidimensional porque solo es una fila con varias columnas o
casillas. Cada casilla contiene un valor alfanumérico pero el dato es uno (colores). Para acceder
a cada elemento del vector utilizamos corchetes y el índice (el número de casilla).
colores[1] = “Azul”
colores[4] = “Amarillo”
agenda
“ACOSTA” “PEREZ” “CARLOS” “6688121212”
“CASTRO” “SOTO” “LUIS MICGUEL” “6671131415”
“DOMINGUEZ” “LÓPEZ” “ANA MARÍA” “6688151515”
agenda[1,1] = ‘ACOSTA
agenda[1,2] = ‘PEREZ’
agenda[1,3] = ‘CARLOS
agenda[1,4] = ‘6688121212’
agenda[2,3] = “LUIS MIGUEL”
Identificadores
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 permite acceder a su contenido.
3. Letras, dígitos y el carácter guión bajo (_) están permitidos después del primer
carácter.
4. La longitud de identificadores puede ser de varios caracteres. Pero es recomendable
una longitud promedio de 8 caracteres.
5. El nombre del identificador debe dar una idea del valor que contiene.
Actividad 1.3. Haz una lista de quince identificadores válidos y quince no válidos. Revisar las
especificaciones de la actividad en la plataforma.
Constantes
Una constante es un dato numérico o alfanumérico que no cambia durante la ejecución del
programa.
Por ejemplo, si queremos calcular el área de un círculo, el dato pi siempre valdrá 3.1416 a
diferencia del radio que dependiendo del círculo tendrá una medida diferente.
Es importante notar que el valor de una constante se mantiene durante la ejecución del
programa, así que si volvemos a ejecutar el programa ese dato constante podría tener un
nuevo valor que no cambiará durante esa ejecución.
Variables
Una variable es un espacio en la memoria de la computadora que permite almacenar
temporalmente un dato durante la ejecución de un proceso, su contenido puede cambiar
durante la ejecución del programa.
Ejemplo:
area = pi * radio ^ 2
Por su contenido
Ejemplo:
iva = 0.15 pi = 3.1416 costo = 2500
Variables Lógicas: Son aquellas que solo pueden tener dos valores (cierto o falso)
estos representan el resultado de una comparación entre otros datos.
Por su uso
Ejemplo:
Suma = a + b /c
Acumuladores: Forma que toma una variable y que sirve para llevar la suma
acumulativa de una serie de valores que se van leyendo o calculando progresivamente.
Universidad Autónoma de Sinaloa
Facultad de Ingeniería Mochis
Licenciatura en Ingeniería de Software
Modalidad Virtual
Por ejemplo, en un programa para calcular el promedio grupal, una variable de trabajo podría
ser promedio_grupal, una variable contador sería la que nos permita llevar el conteo de
cuántos alumnos hay en el grupo y una variable acumulador sería la que lleve la suma de las
calificaciones de cada alumno.
contador_alumnos = 30
acumulador_calificaciones = 210
promedio_grupal = acumulador_calificaciones / contador_alumnos
promedio_grupal = 210 / 30 = 7.0
Operadores y su jerarquía
Expresiones
Por ejemplo:
a + (b + 3) / c
Cada expresión toma un valor que se determina tomando los valores de las variables y
constantes implicadas y la ejecución de las operaciones indicadas. Una expresión consta de
operadores y operandos. Según sea el tipo de datos que manipulan, se clasifican las
expresiones en:
Aritméticas
Relacionales
Lógicas
Operadores
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.
Operadores Aritméticos
+ Suma
- Resta
* Multiplicación
/ División
MOD ó % Módulo (residuo de la división entera)
^ Exponenciación
Ejemplos:
Expresión Resultado
7/2 3.5
12 MOD 7 5
4+2*5 14
Todas las expresiones entre paréntesis se evalúan primero. Las expresiones con paréntesis
anidados (unos dentro de otros) se evalúan de dentro a fuera, el paréntesis más interno se
evalúa primero.
1. ^ Exponenciación
2. *, /, MOD Multiplicación, división, modulo.
3. +, - Suma y resta.
***Los operadores en una misma expresión con igual nivel de prioridad se evalúan de
izquierda a derecha.
Operadores Relacionales
Se utilizan para establecer una relación entre dos valores. Luego compara estos valores entre
si y esta comparación produce un resultado de certeza o falsedad (verdadero o falso). Los
operadores relacionales comparan valores del mismo tipo (numéricos o cadenas). Estos tienen
el mismo nivel de prioridad en su evaluación.
Ejemplos:
Si a = 10, b = 20, c = 30
a+b>c Falso
a-b<c Verdadero
a - b == c Falso
a * b <> c Verdadero
Operadores Lógicos
Estos operadores se utilizan para establecer relaciones entre valores lógicos. Estos valores
pueden ser resultado de una expresión relacional.
Para trabajar con operadores lógicos debemos conocer las tablas de verdad que nos permiten
saber cómo evaluar una expresión lógica dependiendo del operador.
A NOT A
El operador NOT niega o invierte el valor del
V F operando, si es Verdadero lo convierte en Falso y
viceversa.
F V
A B A AND B
V V V
El operador AND requiere que los dos operandos
V F F sean Verdaderos para que el resultado sea
Verdadero.
F V F
F F F
Universidad Autónoma de Sinaloa
Facultad de Ingeniería Mochis
Licenciatura en Ingeniería de Software
Modalidad Virtual
A B A OR B
V V V
El operador OR requiere que al menos un
V F V operando sea Verdadero para que el resultado sea
Verdadero.
F V V
F F F
1. NOT
2. AND
3. OR
Operadores Jerarquía
() Mayor
*, /, DIV, MOD
+, -
NOT
AND
OR Menor
1. 8 + 3 * 5 =
8 + 15 = 23 La multiplicación tiene prioridad sobre la suma, así que se
resuelve primero.
2. (8 + 3) * 5 =
Universidad Autónoma de Sinaloa
Facultad de Ingeniería Mochis
Licenciatura en Ingeniería de Software
Modalidad Virtual
a = 4, b = 5, c = 8
Actividad 1.4. Resuelve paso a paso los ejercicios de expresiones y jerarquía de operadores.
Revisar las especificaciones de la actividad en la plataforma.