Algoritmia para La Inteligencia Artificial: Introducción A La Asignatura y A Las Estructuras Lógicas
Algoritmia para La Inteligencia Artificial: Introducción A La Asignatura y A Las Estructuras Lógicas
Algoritmia para La Inteligencia Artificial: Introducción A La Asignatura y A Las Estructuras Lógicas
CUARTO SEMESTRE
Semestre: 202310
2023
INDICE
PRIMERA UNIDAD TEMATICA
ESTRUCTURAS ALGORÍTMICAS BÁSICAS
PRIMERA SEMANA
MARCO TEORICO
LA ALGORITMIA
¿Qué es un algoritmo?..………………………………………………………………… 2
Importancia de la Elaboración de un buen algoritmo………….………………..…… 2
Metodología para la construir un algoritmo…………………………..…………..…... 3
¿Qué son las estructuras de datos y como se relacionan con los algoritmos?...
………………………………………………...…………………..….…… 5
MARCO PRÁCTICO
Actividades…………………………………………………….…………………………
SEGUNDA SEMANA
MARCO TEORICO
ESTRUCTURAS ALGORITMICAS
Estructura Condicional IF…....………………………………..….………………….…17
Estructura Condicional SWITCH……………………………..….………………….…17
MARCO PRÁCTICO
Actividades………………………………………………………………………………
TERCERA SEMANA
MARCO TEORICO
PROGRAMACIÓN MODULAR
Estructura repetitiva while…...……………………………………………………… 47
Estructura repetitiva for...…………….…………………….…….………………… 28
Contador y Acumulador…………………………………………………………….
MARCO PRÁCTICO
Actividades…………………………..…………………………………………………
CUARTA SEMANA
MARCO TEORICO
Clasificación de las estructuras de datos….……………………………….……… 47
Cargar y visualizar un array utilizando la POO EN Java Swing.………….……… 47
MARCO PRÁCTICO
Actividades………………………………………………………………………………
SENATI Pág. 4
SENATI Pág. 5
Logro
El alumno afianzará sus conocimientos de algoritmia aplicando las
estructuras lógicas.
Resumen
Un algoritmo es una serie de pasos organizados que describe el proceso que
se debe seguir, para dar solución a un problema específico.. Para desarrollar
un algoritmo tenemos que seguir los siguientes pasos: 1) Definir el problema
2) Analizar el caso. 3) Diseñar el algoritmo 4) Codificar el programa 5)
Prueba y ejecución.
Introducción a la Asignatura
¿QUÉ ES UN ALGORITMO?
La palabra algoritmo se deriva de la traducción al latín de la palabra árabe
alkhowarizmi, nombre de un matemático y astrónomo árabe que escribió un
tratado sobre manipulación de números y ecuaciones en el siglo IX.
Tipos De Algoritmos
Cualitativos: Son aquellos en los que se describen los pasos utilizando
palabras.
Cuantitativos: Son aquellos en los que se utilizan cálculos numéricos para
definir los pasos del proceso.
Lenguajes Algorítmicos
Alude a series de símbolos y reglas que se utilizan para describir de manera
explícita un proceso. Pueden ser:
Características de un Algoritmo
Un algoritmo debe ser preciso e indicar el orden de realización de cada
paso.
Un algoritmo debe estar definido. Si se sigue un algoritmo dos veces, se
debe obtener el mismo resultado cada vez.
Un algoritmo debe ser finito. Si se sigue un algoritmo, se debe terminar en
algún momento, o sea, debe tener un número finito de pasos.
La definición de un algoritmo debe describir tres partes: Entrada, Proceso y
Salida.
Ejemplo:
Crear una aplicación Java que calcule el área de un rectángulo. En función a
la siguiente fórmula:
a=(b*h)
SENATI Pág. 7
Ejemplo:
Objetivo del Problema: Hallar el Área de un Rectángulo
Entrada de Datos Proceso Salida de Información
- Altura (h) a=b*h - area (a)
- Base (b)
Pseudocódigo:
Es un lenguaje de especificación (descripción) de algoritmos. Generalmente se
escribe en el idioma natural del usuario, es muy semejante al código fuente de
un programa.
Se considera un primer borrador, dado que el pseudocódigo tiene que traducirse
posteriormente a un lenguaje de programación. El pseudocódigo no puede ser
ejecutado por el computador.
INICIO
Leer b,h
a=b*h
Escribir
a
FIN
//PROCESO DE DATOS
a=b*h;
SENATI Pág. 10
//SALIDA DE INFORMACION
System.out.println("El área es: " + a);
}
}
Todos estos tipos de errores deben examinarse antes de dar por concluido el
proceso de desarrollo del programa. De presentarse un error de lógica se
debe realizar un Feedback (Retroalimentación) y debemos volver al PASO
Nro. 1
TRABAJO PRÁCTICO 1
Nota:
Esfuérzate por hacer tu mismo este trabajo, es importante que lo
compruebes en Java. No olvidar que se entrega el informe de este trabajo
en un folder y también el disquete o CD. (Leer forma de presentación
según aparece en la Diapositiva de la Semana 1).
Si alguno de sus compañeros no tiene esta guía de práctica, reenvíenlo a
su correo.
Logro
El alumno aprenderá los fundamentos de programación a partir la
estructura algoritmica del SLE.
Resumen
Un algoritmo es una serie de pasos organizados que describe el
proceso que se debe seguir, para dar solución a un problema
específico.. Para desarrollar un algoritmo tenemos que seguir los
siguientes pasos: 1) Definir el problema 2) Analizar el caso. 3)
Diseñar el algoritmo 4) Codificar el programa 5) Prueba y ejecución.
ESTRUCTURA CONDICIONAL SI
DEFINCION: Es una estructura que evalúa una expresión lógica y dependiendo
del resultado escoge entre realizar uno u otro bloque de código.
Ejemplo:
- Deseo ir al cine.
Las estructuras selectivas se utilizan para tomar decisiones lógicas, de ahí que
se suelan denominar también estructuras de decisión o alternativas
SENATI Pág. 15
2. SU REPRESENTACIÓN EN EL PSEUDOCÓDIGO:
Si <condición> entonces
<acción 1>
<acción 2>
<acción n>
fin si
3. SU REPRESENTACIÓN EN LA CODIFICACION:
If monto>=300
{ d=monto*0.30; }
else
{ d=0; }
SENATI Pág. 16
2. SU REPRESENTACIÓN EN PSEUDOCÓDIGO:
Si <condición> entonces
<acción a>
<acción b>
sino
<acción x>
<acción y>
fin si
3. SU REPRESENTACIÓN EN LA CODIFICACION:
if <condición>
{ <acción a>;
<acción b>; }
else { <acción x>;
SENATI Pág. 17
<acción y>;
}
ESTRUCTURA SELECTIVA ANIDADA
Este tipo de estructura está formada por una serie de estructuras selectivas que
se encuentran inmersas unas dentro de otras.
Se utiliza para establecer una serie de condiciones jerárquicas desde lo más
genérico a lo más específico, sino se cumplen las primeras condiciones, no se
evalúan las siguientes.
2. SU REPRESENTACIÓN EN EL PSEUDOCÓDIGO:
Si <cond1> entonces
<acción a> Si Cond1 es verdadero se realiza la acción
a y la acción b y luego el flujo del
<acción b>
programa sale de la estructura selectiva.
Sino Sino se cumple la Cond1, el flujo del
Si <cond2> entonces programa se dirigirá a evaluar la Cond2, si
<acción c> esta se cumple solo se realizará la acción c
<acción d> y la acción d y luego el flujo del programa
saldrá de la estructura selectiva.
sino
Sino Cond1 y la Cond2 no se cumple, el
Si <cond3> entonces flujo del programa se dirigirá a evaluar la
<acción e> Cond3, si esta se cumple solo se realizará
la acción e y acción f y luego el flujo del
programa saldrá de la estructura selectiva.
En el caso de no cumplirse Cond1, Cond2
y Cond3, solo en ese caso se realizará la
acción g y la acción h.
SENATI Pág. 18
<acción f>
sino
<acción g>
<acción h>
fin si
fin si
Fin si
3. SU REPRESENTACIÓN EN LA CODIFICACION:
If monto>=1000
{ d=monto*0.30; }
else
{ If (monto<1000 && monto>=500)
{ d=monto*0.20; }
else
{ If (monto<500 && monto>=200)
{ d=monto*0.10; }
else
{ d=0; }
}
}
{ d=monto*0.30; }
else if (monto<1000 && monto>=500) //Segunda condición sino se cumple el anterior
{ d=monto*0.20; }
else If (monto<500 && monto>=200) //Tercera condición sino se cumplen las anteriores
{ d=monto*0.10; }
else //En el caso de cumplirse ninguna de las anteriores
{ d=0; }
SENATI Pág. 19
//PROCESO DE DATOS
if (a>b && a>c)
{ mayor=a; }
//SALIDA DE INFORMACION
System.out.println("El número mayor es: " + mayor);
System.out.println("El número menor es: " + menor);
}
}
1
Condició
n
2
4 n
3
2. SU REPRESENTACIÓN EN EL PSEUDOCÓDIGO:
3. SU PRESENTACIÓN EN LA CODIFICACION
switch(variable)
{case(valor1) : {
//bloque de instrucciones cuando el valor de variable es 1
} break;
case(valor2) : {
//bloque de instrucciones cuando el valor de variable es 2
} break;
default :
{
//bloque de instrucciones cuando el valor de variable
//no es ninguna de los valores anteriores
} break;
}
SENATI Pág. 22
Ejemplo:
En el siguiente caso se evalúa el valor de la variable día y de acuerdo a dicho
valor, la variable D toma un valor que corresponde al mismo día pero en letras.
switch(dia)
{ case 1 :
{ D=”Lunes”;
} break;
case 2 :
{ D=”Martes”;
} break;
case 3 :
{ D=”Miercoles”;
} break;
case 4 :
{ D=”Jueves”;
} break;
case 5 :
{ D=”Viernes”;
} break;
case 6 :
{ D=”Sabado”;
} break;
case 7 :
{ D=”Domingo”;
} break;
default :
{ D=”Error : No existe este día”;
} break;
}
{ case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
{ D=”Estos meses tienen 31 días”; } break;
}
//PROCESO DE DATOS
d=(int)n/10;
u=n%10;
switch(d)
{ case 0 : { ld=””; } break;
case 1 : {
switch(u)
{ case 0 : { ld=”Diez”; } break;
case 1 : { ld=”once”; } break;
case 2 : { ld=”doce”; } break;
case 3 : { ld=”trece”; } break;
case 4 : { ld=”catorce”; } break;
case 5 : { ld=”quince”; } break;
case 6 : { ld=”dieciseis”; } break;
case 7 : { ld=”diecisiete”; } break;
case 8 : { ld=”dieciocho”; } break;
case 9 : { ld=”diecinueve”; } break;
}
} break;
case 2 : { ld=”Veinte”; } break;
SENATI Pág. 25
switch(u)
{ case 0 : { lu=””; } break;
case 1 : { lu=”uno”; } break;
case 2 : { lu=”dos”; } break;
case 3 : { lu=”tres”; } break;
case 4 : { lu=”cuatro”; } break;
case 5 : { lu=”cinco”; } break;
case 6 : { ld=”seis”; } break;
case 7 : { ld=”siete”; } break;
case 8 : { ld=”ocho”; } break;
case 9 : { ld=”nueve”; } break;
}
if(d==0 || d==1)
{ letra=lu; }
else
{ if(u==0)
{ letra=ld; }
else
{ letra=ld+“ y “+lu; }
}
//SALIDA DE INFORMACION
System.out.println("El número en letras es: " + letra);
}
}
SENATI Pág. 26
TRABAJO PRÁCTICO 2
Objetivo del Trabajo:
Que el alumno se ejercite en la construcción de sus propios algoritmos
computacionales, utilizando estructuras condicionales.
Nota:
Esfuérzate por hacer tu mismo este trabajo, es importante que lo
COMPRUEBES en Java. No olvidar que se entrega el informe de este
trabajo en un folder y también el disquete o CD. (Leer forma de
presentación según aparece en la Diapositiva de la Semana 1).
Si alguno de sus compañeros no tiene esta guía de práctica, reenvíenlo a
su correo.
Logro
Que el alumno aplique las estructuras de datos estáticas (Arreglos
unidimensionales o multidimensionales) al elaborar sus programas.
Resumen
Un arreglo es una estructura de datos que almacena bajo el mismo
nombre (variable) a una colección de datos del mismo tipo y se
clasifican en arreglos unidimensionales (vectores) o arreglos
multidimensionales (matrices). Los datos almacenados en un arreglo
es de carácter temporal.
INTRODUCCION:
Las computadoras están especialmente diseñadas para todas aquellas
aplicaciones en las cuales una operación o conjunto de ellas deben repetirse
muchas veces. Un tipo muy importante de estructura, es el algoritmo necesario
para repetir una o varias acciones un número determinado de veces. Las
estructuras que repiten una secuencia de instrucciones un número determinado
de veces se denominan bucles, y se llama iteración al hecho de repetir la
ejecución de una secuencia de acciones.
No
Condici
ón
SInstrucción A Instrucción X
i
Instrucción Y
Instrucción B
Instrucción N
2. SU REPRESENTACION EN EL PSEUDOCÓDIGO
Mientras <Condición>
Instrucción A
Instrucción B
.
.
.
Instrucción N
Fin Mientras
Instrucción X
Instrucción Y
1. SU REPRESENTACION EN LA CODIFICACION
while (condición)
{ instrucción A;
instrucción B;
instrucción N;
SENATI Pág. 31
}
Instrucción X;
Instrucción Y;
DO WHILE – Ejemplo 1
//INGRESO DE DATOS
String nn=JOptionPane.showInputDialog("Ingrese un número: ");
//CONVERSION DE DATOS
n=Integer.parseInt(nn);
while(i<=n)
{
f=f*i;
i=i+1;
}
System.out.println("El factorial es :"+f);
}
}
SENATI Pág. 32
CONTADOR
Los procesos repetitivos son la base del uso de las computadoras. En estos
procesos se necesitan normalmente contar los sucesos o acciones internas del
bucle, como pueden ser los elementos de una lista. Una manera de controlar un
bucle es mediante un contador.
INICIO
La variable contador
se inicializa
CONT=1
NO
CONT<= Muestra el valor de
5
CONT
SI
Mostrar
Cuerpo del Bucle CONT
CONT=CONT+1
FIN
La variable contador se
incrementa en 1 por cada
vuelta.
ACUMULADOR
SENATI Pág. 33
INICIO
CONT=1
SUMA=0
NO
CONT<=
5
SI
Leer Valor
FIN
CONT=CONT+1
SUMA=SUMA+Valor
//CONVERSION DE DATOS
SENATI Pág. 34
a=Integer.parseInt(aa);
b=Integer.parseInt(bb);
c=2;
mcm=1;
while(a>1 || b>1)
{ if (a%c==0 && b%c==0)
{ a=a/c;
b=b/c;
mcm=mcm*c; }
else
{ if (a%c==0)
{ a=a/c;
mcm=mcm*c; }
else
{ if b%c==0
{ b=b/c;
mcm=mcm*c; }
else
{ c=c+1; }
}
}
}
System.out.println(“El mcm de los números ingresados es: “ + mcm);
} }
OTRO EJEMPLO USANDO LA ESTRUCTURA WHILE
//*******************************************************************************************
//* Genere los primeros 50 números de la serie Fibonnacci
//*******************************************************************************************
import javax.swing.*;
public class Fibonnacci {
public static void main(String[] args) {
//DECLRACION DE VARIABLES
int a,b,c,n;
while(n<48)
{ c=a+b;
a=b;
b=c;
System.out.print(c);
n=n+1;
SENATI Pág. 35
}
}
}
//INGRESO DE DATOS
String nn=JOptionPane.showInputDialog("Ingrese un número: ");
//CONVERSION DE DATOS
n=Interger.parseInt(nn);
//PROCESO DE DATOS
a=0;
c=1;
d=0;
while(c<=n)
{ if(n%c==0)
{ a=c+a;
d=d+1;
}
c=c+1;
}
System.out.println("La cantidad total de divisores que tiene este número es:" + d);
System.out.println("La suma total de los divisores de este número es: "+ a);
}
}
SENATI Pág. 36
Instrucción B
La variable I va decrementado sus
valores automáticamente, siendo
Instrucción N estos: N,….,,3,2,1
SENATI Pág. 37
Instrucción A
Instrucción B
B
u
c
e
l
La variable I va decrementado
sus valores automáticamente,
Instrucción N siendo estos: 2,4,6,8,…N
2. SU REPRESENTACION EN PSEUDOCODIGO
3. SU REPRESENTACION EN LA CODIFICACION
{ cuenta=cuenta+1; }
}
System.out.print(“La estructura FOR dio la siguiente cantidad de vueltas”);
System.out.println(cuenta);
if((i>=10)&&(i<=99))
{ if(d==u)
{ System.out.println(i); }
}
else
{ if((i>=100)&&(i<=999))
SENATI Pág. 40
{ if(c==u)
{ System.out.println(i); }
}
}
} //Fin del for
} // Fin del main
} // fin de la clase
SENATI Pág. 41
TRABAJO PRÁCTICO 1
a) La cantidad de desaprobados.
b) La cantidad de aprobados.
c) El promedio de las notas.
d) El promedio de notas aprobadas y desaprobadas.
4. Construya un algoritmo que reciba como entrada un valor n y calcule una aproximación del valor
de e, como la suma de la siguiente serie:
Nota:
Esfuérzate por hacer tu mismo este trabajo, es importante que lo COMPRUEBES
en Java. No olvidar que se entrega el informe de este trabajo en un folder y
también el disquete o CD. (Leer forma de presentación según aparece en la
Diapositiva de la Semana 1).
Si alguno de sus compañeros no tiene esta guía de práctica, reenvíenlo a su correo.
Logro
Que el alumno aplique el uso de funciones de usuario para
establecer modulos que contengan una librería de funciones que
puedan ser invocadas por el resto del sistema.
Resumen
Función de Usuario: Es un procedimiento anexo a nuestro programa
encargado de realizar una proceso especifico, al cual podemos
invocar tantas veces sea necesario.
Dentro del trabajo del procesamiento de datos, se hace necesario trabajar con
conjunto de datos, por ejemplo:
¿Qué es un Arreglo?
Un Arreglo es una estructura de datos que almacena bajo el mismo nombre
(variable) a una colección de datos del mismo tipo.
Arreglo Unidimensional
• Un arreglo unidimensional es un tipo de dato estructurado que está
formado de una colección finita y ordenada de datos del mismo tipo.
• El tipo de acceso a los arreglos unidimensionales es el acceso directo, es
decir, podemos acceder a cualquier elemento del arreglo sin tener que
consultar a elementos anteriores o posteriores, esto mediante el uso de un
índice para cada elemento del arreglo que nos da su posición relativa.
EDAD 12 18 22 25 23
Índice 0 1 2 3 4
Llenado de un Vector
LÓGICA DE NEGOCIOS
public class Arreglos {
//Propiedades
public double[] ventas;
//Método
public void cargardatos(double dato,int pos){
ventas[pos]=dato;
}
//Método
public double mostrarUnDato(int pos){
return ventas[pos];
}
//Método
SENATI Pág. 45
//Método constructor
public Arreglos(){
//Se ejecuta cuando ocurre una instancia
ventas=new double[100];
}
}
CODIFICACIÓN EN EL FORMULARIO
Previamente debe declararse los siguientes objetos:
Nota: Las líneas que están en letras distintas, son aquellas deben agregarse en
la parte inicial de la codificación del formulario.
for(i=0;i<=n-1;i++){
dato=Double.parseDouble(JOptionPane.showInputDialog("Introduzca dato para ventas["+i+"]"));
obj.cargardatos(dato, i);
}
}
SENATI Pág. 46
BIBLIOGRAFIA
d. 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 seudocó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.
e. Prueba y Depuración
Los errores humanos dentro de la programación de computadoras son muchos
y aumentan considerablemente con la complejidad del problema. El proceso de
identificar y eliminar errores, para dar paso a una solución sin errores se le
llama depuración.
4. ¿Qué es el SLE?
Es un software diseñado para construir y analizar algoritmos en un lenguaje
cercano al natural. Es un programa “antiguo” para sistemas operativos DOS
pero que corre sin problemas en ambientes Windows y está en castellano.
Datos Lógicos: Son aquellos que solo pueden tener dos valores (cierto o
falso) ya que representan el resultado de una comparación entre otros datos
(numéricos o alfanuméricos).
Aritméticos
Tipos de Operadores Relaciónales
Lógicos
8. ¿Cuáles son los operadores relacionales?
Se utilizan para establecer una relación entre dos valores.
Compara estos valores entre si y esta comparación produce un resultado de
certeza o falsedad (verdadero o falso).
Los operadores relaciónales comparan valores del mismo tipo (numéricos o
cadenas)
Tienen el mismo nivel de prioridad en su evaluación.
Los operadores relaciónales tiene menor prioridad que los aritméticos.
Son: Y And
O Or
No Not
De Trabajo
Por su Uso Contadores
Acumuladores
Variables Lógicas: Son aquellas que solo pueden tener dos valores (TRUE o
FALSE O SUS EQUIVALES SI - NO) estos representan el resultado de una
comparación entre otros datos.
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 (a=a+3 en un ciclo desde por ejemplo que es donde más se
usan)
- Asignación
Secuenciales - Entrada
- Salida
- Simples
Estructuras Condicionales
Algorítmicas - Múltiples
- Hacer desde
Cíclicas - Hacer mientras
- Repetir hasta
Unidimensionales (Vectores)
Tipo de
Arreglos
Bidimensionales (Matrices)