0% encontró este documento útil (0 votos)
4 vistas

Semana 5 Algoritmos

El documento presenta una introducción a los algoritmos en el contexto de la computación, definiendo conceptos clave como algoritmo, programa y software. Se discuten las propiedades de los algoritmos, su diseño, y la metodología de programación, así como la importancia de la depuración y el uso de funciones y bibliotecas. Además, se aborda el diseño de algoritmos mediante métodos heurísticos y la programación estructurada, incluyendo el uso de pseudocódigo y diagramas de flujo.

Cargado por

David Auccacusi
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PPTX, PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
4 vistas

Semana 5 Algoritmos

El documento presenta una introducción a los algoritmos en el contexto de la computación, definiendo conceptos clave como algoritmo, programa y software. Se discuten las propiedades de los algoritmos, su diseño, y la metodología de programación, así como la importancia de la depuración y el uso de funciones y bibliotecas. Además, se aborda el diseño de algoritmos mediante métodos heurísticos y la programación estructurada, incluyendo el uso de pseudocódigo y diagramas de flujo.

Cargado por

David Auccacusi
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PPTX, PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 47

UNIVERSIDAD NACIONAL DE INGENIERÍA

FACULTAD DE INGENIERÍA INDUSTRIAL Y DE SISTEMAS


DEPARTAMENTO DE SISTEMAS Y TELEMÁTICA

INTRODUCCION A LA
COMPUTACION
Docente:
ANIVAL TORRE CAMONES

Semestre: 2025-1
Semana 5

ALGORITMOS
2
Contenido

1 Definición de algoritmo y problema

Análisis
2 del enunciado de un problema

3 Datos de entrada y datos de salida

4 Propiedades y dominio de un algoritmo

5 Diseño de un algoritmo

6 Registro de instrucciones
Introducción

COMPUTACION

HARD SOFT SEGU-


REDES L. P. D.B.F. I.A
WARE WARE RIDAD

SOFTWARE DE SOFTWARE DE
ALGORITMO
SISTEMA APLICACION Progra
ma
Sistema Procesador de texto Es un conjunto preciso y Matemática,
operativo Hoja electrónica ordenado de instrucciones informática,
Compiladores Gestor de base de datos o reglas definidas para ingeniería,
Aplicaciones Web realizar una tarea o resolver ciencia de
Sistemas de Información un problema específico. datos
Sistemas estadísticos …
Definición de algoritmo

Problema  Algoritmo  Programa


• Secuencia de pasos no ambigua para
Algoritmo: encontrar una solución a un problema a
partir de unos datos.

• Es la codificación de un algoritmo en un

Programa:
lenguaje de programación concreto.
• Características: completo, no ambiguo,
finito (tiempo)

Para programar hay que analizar el problema y diseñar una estrategia de resolución.
Hay que considerar todas las alternativas lógicas posibles (no dejar cabos sueltos).
5
Algoritmo y problema

Describir los pasos Describa los pasos


para cruzar la calle. para cambiar un
bombillo quemado.

Describa los pasos Describa los pasos


para llevar a una para cambiar la
amiga a cine. llanta pinchada.
Datos de entrada y de salida

• Máquina electrónica capaz de


COMPUTADORA: ejecutar operaciones repetitivas a
muy alta velocidad.

Componentes de un sistema de procesamiento de información

Entrada = Datos PROCESADOR Salida = Información


Representación de un hecho, concepto Datos procesados y
o entidad real (palabras escritas o organizados.
habladas, números y dibujos).
HARDWARE: Conjunto de SOFTWARE: Conjunto de programas
componentes físicos de la que controlan el funcionamiento de
computadora (equipo físico) una computadora (equipo lógico).
Dispositivos Almacenamiento
de Memoria secundario
entrada/salida (memoria
central auxiliar)
(Periféricos)

Unidad central
de
procesamiento
Metodología de programación

Resolución de problemas mediante programas.

Diseño del Programa de


Problema
algoritmo computador

Tarea que se Descripción ordenada de Expresar el algoritmo


desea resolver. la secuencia de pasos como un programa en
sin ambigüedades que un lenguaje de El algoritmo debe
conducen a la solución programación. describir tres partes:
del problema dado
(Análisis del problema y Ejecución y validación Entrada, proceso
desarrollo del algoritmo). del programa y salida.
Metodología de programación

Mantener y modificar
el programa
Probar y depurar el prog.
Ejecutar el programa

Compilar
CONCLUSIONES

Algoritmo: Programa: Software:


Es una secuencia finita de Es una implementación Es la parte intangible de
instrucciones bien de un algoritmo un sistema informático,
definidas y no ambiguas utilizando un L.P. compuesto por
que conducen a la solución Es un conjunto de programas,
de un problema. Son la instrucciones codificadas procedimientos y datos
base de cualquier proceso para realizar una tarea diseñados para que la
computacional. Son particular ejecutado por computadora y otros
independientes de una computadora. Por dispositivos funcionen de
cualquier L.P. Por ejemplo: ejemplo: Programa para manera eficiente. Por
el algoritmo de hallar la matriz inversa. ejemplo: MS Word, Adobe
ordenamiento de burbuja. Photoshop, Google.
¿Qué es una Instrucción?

• Es una línea de código que le indica a la


INTERPRETE INSTRUCCION computadora qué acción debe realizar.
• Se escriben en un LP y se combinan para
formar un programa.
COMPILA- FUNCION
DOR SOFTWAR Comunicar al exterior [lectura o escritura]
E Modificar el contenido de los datos [asignación]
Controlar el orden Secuenciación
DEPURACION BIBLIOTECA Tipos de ejecución Condicional
Iteración
Agrupar sucesiones de instrucciones en
print(“Esto es una suma”)
numero_uno = 2
bloques independientes [acciones y funciones]
numero_dos = 4 12

resultado = numero_uno + numero_dos


print(resultado)
¿Qué es una función?

#include <iostream>
using namespace std;
// Definición de la función suma Es un bloque de código que realiza
int suma(int a, int b) {
return a + b; una tarea específica y puede ser
} reutilizado en diferentes partes del
int main() { programa.
int num1, num2;
// Solicitar al usuario que ingrese dos números Las funciones se utilizan para
cout << "Ingrese el primer número: "; modularizar el código y hacerlo más
cin >> num1; fácil de mantener y entender.
cout << "Ingrese el segundo número: ";
cin >> num2;
// Llamar a la función suma y mostrar el resultado
cout << "La suma es: " << suma(num1, num2) << endl;
return 0;
}
¿Qué es una biblioteca?

Para entrada y
Para manejar Son funciones predefinidas
salida de datos
iostream vector vectores que se pueden utilizar en
(cin, cout).
dinámicos un programa.
Para Pueden ser estándar como
manipular
string
Biblio map
Para mapas la biblioteca de funciones
cadenas de clave-valor de C++ o específicas para
texto
teca un lenguaje o plataforma
en particular.
Para usar Funciones
funciones como
algorithm cmath matemáticas
sort, find, count, como sqrt, pow,
etc. sin, cos, etc.
¿Qué es una depuración?

Es el proceso de identificar y corregir errores en un


programa. Es esencial en el desarrollo de programas
y puede involucrar el uso de herramientas como
depuradores y registros de errores.
Propiedades de un algoritmo

Debe tener una instrucción inicial única


Secuencialidad y un sucesor único en cada secuencia.
Las instrucciones se realizan de arriba
hacia abajo a menos que las mismas
indiquen lo contrario.
Limitaciones Generalidad Las entradas son datos presentadas al
algoritmo.

Las salidas son datos procesados que


Ausencia de son el resultado de la ejecución de un
Ambigüedades programa basado en el algoritmo.
Propiedades de un algoritmo

Un algoritmo se puede realizar para


Secuencialidad varios problemas que se relacionan
entre sí.

Un algoritmo se aplica a un problema


o clase de problemas específicos; el
Limitaciones Generalidad rango de las entradas o dominios se
tiene que definir previamente, ya que
está determinado el alcance o la
generalidad del algoritmo.

Ausencia de
Ambigüedades
Propiedades de un algoritmo

El algoritmo debe ser definido, claro,


Secuencialidad preciso y no ambiguo. Cada paso de un
algoritmo debe dar lugar a una sola
interpretación posible.
La ejecución del algoritmo con los mismos
datos de entrada, darán los mismos
Limitaciones Generalidad resultados.
Las instrucciones ordena que solo se
lleve a cabo tareas que sea capaz de
hacer. Una computadora no puede
Ausencia de efectuar una instrucción si tiene
Ambigüedades información insuficiente o si el comando
no está definido.
Propiedades de un algoritmo

Secuencialidad Un algoritmo es finito en tamaño y


tiempo.

La ejecución de un algoritmo
programado debe finalizar después de
Limitaciones Generalidad que se haya llevado a cabo una
cantidad finita de operaciones.

Ausencia de
Ambigüedades
Dominio

Dominio es el conjunto de datos y


Secuencialidad condiciones para las cuales un
algoritmo trabaja.
Es necesario definir el dominio del
algoritmo y después verificar que
trabaja para todos los casos que se
Limitaciones Dominio Generalidad encuentran dentro del dominio.
Es necesario incluir en el dominio
todas las situaciones similares, pero
Ausencia de los casos remotos o poco probables
Ambigüedades se deben omitir.
Errores en del dominio.

Secuencialidad
Se presentan cuando no han
especificado todas las situaciones que se
pueden presentar en la práctica o se han
descuidado de su
Si se presenta, se importancia.
tiene tres opciones:
Limitaciones Dominio Generalidad (1) Ignorarlo porque es improbable y
quizás nunca ocurra.
(2) Restringir el dominio del algoritmo
para excluirlo.
Ausencia de (3) Corregir el algoritmo.
Ambigüedades
Errores de lógica:

Se detectan, CAUSAS: Etapas incorrectas o


después que se secuencia incorrecta de etapas
ha definido en El criterio de elección de un algoritmo
forma adecuada debe hacerse en base a criterios como:
el dominio de un i. Que el algoritmo sea simple, es
decir, fácil de entender y de
algoritmo, en la escribir.
etapa de prueba ii.Que el algoritmo sea eficiente.
o verificación.
Método heurístico

Es un enfoque práctico que se utiliza La palabra "heurístico" proviene del


para encontrar soluciones a griego "heuriskein", que significa
problemas de manera rápida y "encontrar" o "descubrir". Son
eficiente, aunque no garantiza la utilizados en inteligencia artificial, la
obtención de la solución óptima. optimización, la toma de decisiones y
la resolución de problemas en general
Son útiles en problemas complejos, La heurística proporciona un esquema
ya que permiten simplificar el o plan para abordar los problemas
proceso de búsqueda y tomar poco conocidos, mejora la capacidad
decisiones basadas en reglas de crear soluciones y asegura que el
prácticas o intuiciones, en lugar de método que se va a usar sea eficiente.
seguir un conjunto estricto de reglas.
Diseño de un algoritmo

El método heurístico para


¿ Cómo se diseñar algoritmos, es una
resuelven los técnica TOP-DOWN.
problemas para
los que no hay Este método segmenta, de un
problema largo y complejo en
un método problemas independientes más
establecido? pequeños y fáciles de resolver.
RESOLUCIÓN DE CADA
SUBPROBLEMA

P1
P1.1 P1.2 P1.3
Composición de las
soluciones de los sub-
problemas para lograr la
solución final
El diseño del algoritmo, realizado con esta técnica recibe el nombre
de DISEÑO DESCENDENTE y resulta un algoritmo muy legibles,
claros, fáciles de entender, seguir y corregir.

El diseño de un algoritmo no se hace de una sola vez, sino que se va


resolviendo en una secuencia de pasos llamados PASOS DE
REFINAMIENTO.

En cada paso el problema es refinado agregando detalles


significativos, por lo que el método se conoce como: MÉTODO DE
LOS REFINAMIENTOS SUCESIVOS.
Construcción de un edificio

Descomposición del problema


de partida en subproblemas
independientes y
determinación de las CONSTRUCCIÓN
interrelaciones DEL
EDIFICIO

CONFECCICÓN CONTRATACIÓN DIRECCIÓN


COMPRA DE
DE LOS DEL DE LA
MATERIALES
PLANOS PERSONAL OBRA
Un sub- problema

Si un sub-problema es
grande, por descomposición
y continuando hasta que
resulten de la
descomposición sub - CONFECCIÓN
problemas fácilmente
DE LOS
resolubles.
PLANOS

APROBACIÓN ELABORACIÓN APROBACIÓN


DISEÑO DEL
DEL DE LOS DE LOS
ANTEPROYECTO
ANTEPROYECTO PLANOS PLANOS
Otro sub- problema

CONTRATACIÓN
DEL
PERSONAL

ANÁLISIS
PEDIDO DE REDACCIÓN
DE LOS ENTREVISTAS
CURRICULUM DE LOS
CURRÍCULUM PERSONALES
VITAE CONTRATOS
VITAE
Otro sub- problema

COMPRA
DE
MATERIALES

CÁLCULO PEDIDO SELECCIÓN


DE DE DE
MATERIALES PRECIOS PROVEEDORES
Al utilizar el refinamiento, el diseñador debe saber donde detenerse, es
decir, cuando un paso específico del algoritmo es lo suficientemente claro
para no necesitar más refinamiento.

Se necesita conocer las capacidades de un procesador no sólo para terminar


los refinamientos, sino para dirigir la forma en que el refinamiento avanza.

Una computadora interpreta cualquier cosa expresada de manera adecuada


en un lenguaje de programación. Así el diseñador puede orientar los pasos y
la terminación del refinamiento hacia el tipo de lenguaje.
Programación
estructurada

Los principios metodológicos básicos de la


programación estructurada son los de
subdividir el problema inicial o de partida en
partes manejables para su análisis y hacer de
esta manera que se agilice el proceso de
entender el problema y la solución.
1.Los módulos deben estas jerarquizados.
2.Deben ser pequeños y sencillos.
Estas
3.Se deberán utilizar tantos módulos de menor
subdivisiones jerarquía como sea necesario para cumplir con
deseadas la restricción de ser pequeños y sencillos.
(llamadas 4.Se deberán usar las estructuras de control y
módulos) deben datos adecuadas para cumplir con el requisito
satisfacer los de pequeños y sencillos.
siguientes 5.Los módulos deben ser legibles para cualquier
requisitos: persona aunque tenga solamente
conocimientos elementales de programación.
LENGUAJE DE DISEÑO DE
PROGRAMAS

Como la meta es escribir algoritmos que


sean procesados en una computadora, se va
a producir un LENGUAJE DE DISEÑO.

Se llamará LENGUAJE DE DESCRIPCIÓN DE


PROGRAMAS a la herramienta que permitirá
diseñar programas de codificación.
SEUDO-CODIGO
1.Permite expresar de manera informal las estructuras.
2.Permite expresar las ideas en frases del lenguaje
natural.
3.Es similar al lenguaje de programación pero no está
Características:

ligado a ninguna regla formal de sintaxis.


4.No es un lenguaje compilable.
5.Por convención se hace un sangrado en el texto que
ayuda a la percepción visual de la lógica del diseño.
6.Permite expresar diseños de fácil comprensión que
podrá convertirse sin dificultad a código en el lenguaje
de implementación.
7.El pseudo- código generado es más fácil de cambiar y
corregir que el código del programa.
Diagrama de flujo

INICIO Es una técnica de diseño de algoritmos.


Consiste en una serie de símbolos que
a,n: int denotan acciones, decisiones, flechas y
r:float conectores.
a, n
Esta una representación nos ayudará a
conocer la información que tenemos, donde
r=a**(1/n)
la tenemos, que debemos hacer con ella y
como presentarla.
r
Debe tener las cualidades de sencillez,
FIN claridad y normalización en su diseño.
Símbolos

1 2
flujo Inicio o termino Conector en la Conector en la
misma pag. pag. diferente

Operación/ declaración de variable

Ingreso de datos

Salida de información

Decisión
Programa1
PROBLEMA 01
Dado dos números enteros, hallar la b) Diagrama
c) Seudocódigo
suma. Se pide: de flujo
a) Declaración de variables (2 puntos)
b) Diagrama de flujo (2 puntos) Inicio Inicio
c) Seudocódigo (2 puntos) n1, n2, //Variables
suma: n1, n2, suma: Entero
d) Programa en C++ (4 puntos)
Entero
SOLUCIÓN //Entrada
n1, n2 n1, n2
a) Declaración de variables suma = n1+n2 //Proceso
ENTRADA SALIDA suma=n1+n2
suma //Salida
Variable Símbolo Variable Símbolo suma
Número1 n1 Suma suma Fin
Número2 n2 Fin
Programa1
Dev C++
1. Incluye la biblioteca estándar <stdio.h> para
#include <stdio.h>
int main() { poder utilizar funciones de entrada/salida
int n1, n2, suma; estándar.
printf("Teclee dos números enteros: "); 2. Define la función main(), que es el punto de
scanf("%d %d", &n1, &n2); entrada de todos los programas en C.
suma = n1 + n2; 3. Declara tres variables enteras n1, n2 y suma.
printf("La suma es %d\n", suma); 4. Imprime un mensaje pidiendo al usuario que
return 0; ingrese dos números enteros.
} 5. Lee los dos números enteros ingresados por
el usuario utilizando scanf().
6. Calcula la suma de los dos números y la
guarda en la variable suma.
7. Imprime el resultado de la suma en la pantalla
Programa2
PROBLEMA 01
Hallar la potencia de an, donde a y n pertenecen
a los enteros positivos. b) Diagrama c) Seudocódigo
Se pide: de flujo
a) Declaración de variables (dos puntos) Inicio
b) Diagrama de flujo (dos puntos) INICIO
//Variables
c) Seudocódigo (dos puntos)
a, n, p: a, n, p: Entero
d) Programa en C++ (cuatro puntos)
SOLUCIÓN Entero //Entrada
a, n
a) Declaración de variables a, n
//Proceso
ENTRADA SALIDA
p = a**n p=a**n
Variable Símbolo Variable Símbolo //Salida
base a Potencia p p
p
exponente n FIN Fin
Programa2
C++
1. Incluye las bibliotecas estándar <stdio.h> y <math.h>, que
# include <stdio.h> contienen las funciones necesarias para entrada/salida y
# include <math.h> operaciones matemáticas, respectivamente.
int main() { 2. Define la función main(), que es el punto de entrada del
programa.
int a, n, p; 3. Declara tres variables enteras a, n y p para almacenar la base,
printf("Teclee la base y el exponente: "); el exponente y el resultado de la potencia, respectivamente.
scanf("%d %d" ,&a, &n); 4. Imprime un mensaje en la consola solicitando al usuario que
p=pow(a, n); ingrese la base y el exponente.
5. Utiliza la función scanf() para leer dos números enteros
printf("la potencia es %d\n ", p); ingresados por el usuario y los almacena en las variables a y n.
return 0; 6. Calcula la potencia utilizando la función pow(a, n) de la
} biblioteca math.h, que eleva a a la potencia n, y almacena el
resultado en la variable p.
7. Imprime el resultado de la potencia en la consola utilizando
printf().
8. Devuelve 0 para indicar que el programa se ha ejecutado
correctamente y termina la función main()
Programa3
Hallar la Longitud de la circunferencia y b) Diagrama de c) Seudocódigo
el área del círculo, conociendo el valor
del radio.
flujo Inicio
Se pide: //Variables
INICIO
a) Declaración de variables (2 puntos) r, l, a: real
b) Diagrama de flujo (2 puntos) //Entrada
r, l, a: real
c) Seudocódigo (2 puntos)
d) Programa en C++ (4 puntos)
radio
a) Declaración de variables
r //Proceso
ENTRADA SALIDA l = 2πr l=2πr
a= πr2
Variable Símbolo Variable Símbolo a = πr2
//Salida
radio r Longitud l l, a l, a
Área a
FIN Fin
Programa3
C++
# include <stdio.h>
main()
{
float r, l, a;
printf("\nTeclee el radio: ");
scanf("%f" ,&r);
l=2*3.1416*r;
a=3.1416*r*r;
printf("La longitud es %f : ",l);
printf("El área es %f : ",a);
return 0;
}
Programa4
Hallar la radicación , donde a y n Diagrama de flujo Seudocódigo
pertenecen a los enteros positivos. INICIO Inicio
Se pide: //Variables
a) Declaración de variables (2 puntos) a, n: int a, n: Entero
r: Real
b) Diagrama de flujo (2 puntos) r: float
//Entrada
c) Seudocódigo (2 puntos) Leer a, n
a, n
d) Código en C++ (4 puntos) //Proceso
SOLUCIÓN r=a**(1/n) r=a**(1/n)
a) Declaración de variables //Salida
Escribir r
ENTRADA SALIDA r
Fin
Variable Símbolo Variable Símbolo FIN
base a Radicación r
radical n
Código Programa4
C++
# include <stdio.h> 1. Incluye las bibliotecas estándar <stdio.h> y <math.h>, que
# include <math.h> contienen las funciones input/output y operaciones matemáticas.
# include <stdlib.h> 2. Define la función main(), que es el punto de entrada del programa.
int main() { 3. Declara tres variables enteras a, n y r para almacenar la base, el
float a, n; exponente y el resultado de la potencia, respectivamente.
double r; 4. Imprime un mensaje en la consola solicitando al usuario que
printf("Teclee la base y el índice: "); ingrese la base y el indice.
scanf("%f %f", &a, &n); 5. Utiliza la función scanf() para leer dos números enteros
r = pow(a, 1/n); ingresados por el usuario y los almacena en las variables a y n.
printf("La radicación es %lf\n", r); 6. Calcula la potencia utilizando pow(a, 1/n) de la biblioteca math.h,
system("pause"); que eleva a a la potencia n, y almacena el resultado en r.
return 0; 7. Imprime el resultado de la potencia en la consola utilizando
} printf().
Ingrese la base: 8 8. Devuelve 0 para indicar que el programa se ha ejecutado
Ingrese índice de la raiz: 3 correctamente y termina la función main()
La raiz es: 2.0
Hallar la suma, resta, multiplicación y Diagrama de flujo Seudocódigo
división de dos números reales. INICIO
Inicio
Se pide: //Variables
a) Declaración de variables (2 puntos) n1,n2,s,r,m,d:
n1,n2,s,r,m,d:
real
b) Diagrama de flujo (2 puntos) real
c) Seudocódigo (2 puntos) //Entrada
n1,n2
d) Código en C++ (4 puntos) n1,n2
//Proceso
SOLUCIÓN s=n1+n2
s=n1+n2
a) Declaración de variables r=n1-n2
r=n1-n2
ENTRADA SALIDA m=n1*n2
Variable Símbolo Variable Símbolo m=n1*n2 d=n1/n2
Numero1 n1 suma s //Salida
d=n1/n2 s,r,m,d
Numero2 n2 resta r Fin
s,r,m,d
Mulplicación m
división d FIN
Seamos dueños de nuestro
propio destino

Donde quiera que usted vea un negocio exitoso,


alguien ha tomado una decisión valiente.

Gracias

47

También podría gustarte