Algoritmia para La Inteligencia Artificial: Introducción A La Asignatura y A Las Estructuras Lógicas

Descargar como doc, pdf o txt
Descargar como doc, pdf o txt
Está en la página 1de 55

Separata preparada para el desarrollo del curso de:

Algoritmia para la Inteligencia Artificial

Introducción a la Asignatura y a las Estructuras Lógicas

Prof. Wilfredo Gonzales

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

PRIMERA SEMANA – Marco Teórico

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.

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.

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:

Gráficos: Es la representación gráfica de las operaciones que realiza un


algoritmo (diagrama de flujo).
No Gráficos: Representa en forma descriptiva las operaciones que debe realizar
un algoritmo (seudocódigo).
SENATI Pág. 6

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.

IMPORTANCIA DE LA ELABORACIÓN DE UN BUEN ALGORITMO


 Un buen algoritmo permitirá dar una solución acertada al problema.
 Establece la estrategia a seguir para dar solución a un problema.
 Proporciona una visión clara de la forma como se va a dar solución a un
problema.

METODOLOGÍA PARA CONSTRUIR UN ALGORITMO


Como hemos aprendido en la primera sección, programar consiste en instruir o
especificar a un computador sobre cómo debe desarrollar una determinada labor
o tarea. Para que la labor de programación sea una tarea fácil debemos seguir
una metodología la cual comprende los siguientes pasos:

A. Definición del problema (Enunciado)


B. Definición de la solución (Análisis del problema)
C. Diseño del algoritmo
D. Desarrollo del problema (Codificación)
E. Depuración y pruebas (Ejecución – Evaluación de Resultados)
F. Documentación

DESARROLLO DE UN CASO PRACTICO


1er. Paso: DEFINICION DEL PROBLEMA
En este paso se debe establecer claramente el enunciado del problema que
se está planteando.

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

2do. Paso: DEFINICION DE LA SOLUCIÓN


Luego de que se entiende exactamente en qué consiste el problema,
debemos identificar claramente lo siguiente:

a. Datos que deben ser ingresados para dar solución al problema


b. Establecer exactamente cuáles son los procesos que deben llevarse a
cabo a fin de dar con la solución del problema
c. Determinar con exactitud qué valores son los que se deben visualizar
como resultado o solución del problemas (estos resultados deben
satisfacer los objetivos del problema).

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)

3er. Paso: DISEÑO DEL ALGORITMO


Ahora que conocemos exactamente los procesos que tendremos que
programar y conocemos los datos que estarán siendo entregados y la
información que debemos generar como resultado del proceso, estamos en
condiciones de diseñar nuestra solución.

Para diseñar la solución de nuestro problema debemos construir un algoritmo.


Para construir algoritmos se utilizan metodologías como: El Diagrama de Flujo
y Pseudocódigos.

Diagrama De Flujo : Metodología grafica que permite construir visualmente el


recorrido del flujo de un programa y estructurar el algoritmo para una solución
determinada.

Simbología usada en un Diagrama de Flujo:


Símbolo Lo que significa
Inicio o Fin de un Diagrama de Flujo

Entrada o Salida: Representa una


operación de entrada de datos o
salida de información
SENATI Pág. 8

Proceso: Representa una operación


de procesamiento de datos.

Decisión: Bifurca el flujo del


algoritmo, dependiendo del resultado
de la expresión lógica.

Conector: Este símbolo se usa para


conectar entre si dos o más puntos
relacionados del diagrama de flujo.

Dirección: Las flechas indican la


dirección del flujo de control en la
secuencia del algoritmo.

Ejemplo de un Diagrama de flujo:


El siguiente diagrama de flujo constituye el algoritmo que da solución al caso
propuesto.
SENATI Pág. 9

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.

Ejemplo de un Pseudocódigo: (Para el desarrollo del caso propuesto)

INICIO
Leer b,h
a=b*h
Escribir
a
FIN

4to. Paso: DESARROLLO DEL PROBLEMA (Codificación)


Consiste en la codificación del programa partiendo del algoritmo desarrollado
en el paso anterior, para este fin se deberá utilizar un Lenguaje de
Programación.

Codificación en Java del algoritmo anterior


import javax.swing.*;
public class Calculadora {
public static void main(String args[])
{
//DECLARACION DE VARIABLES
int b,h,a;

//INGRESO DE DATOS-Estos datos son capturados como String


String bb=JOptionPane.showInputDialog("Ingresa base : ");
String hh=JOptionPane.showInputDialog("Ingresa altura : ");

//LOS DATOS RECEPCIONADOS DEBERAN SER CONVERTIDOS Al TIPO QUE


CORRESPONDEN
b=Integer.parseInt(bb);
h=Integer.parseInt(hh);

//PROCESO DE DATOS
a=b*h;
SENATI Pág. 10

//SALIDA DE INFORMACION
System.out.println("El área es: " + a);
}
}

Nota: String no es un tipo de dato primitivo, sino corresponde a una clase de


java desde la cual instancia (es decir se crear) todos los tipos de cadenas de
texto. Por otra parte Java si hace diferencia entre las mayúsculas y
minúsculas, por lo que debemos ser cuidados al escribir el código fuente, por
lo general los nombres de las clases siempre empiezan con mayúsculas.

5to. Paso: DEPURACION Y PRUEBA


Consiste en la ejecución, depuración y solución de errores.

Al ejecutar el programa anterior ud. encontrará el siguiente resultado:

Luego el resultado se visualizará del siguiente modo:


SENATI Pág. 11

Los errores que podrían presentarse pueden ser:

Errores de Sintaxis: Son errores de escritura de código, el compilador no los


puede interpretar y por lo tanto cuando ejecutamos el programa los señala
como un error indicándose la línea y elemento desconocido, mientras no
arreglemos todos estos errores el programa no podrá ejecutarse.

Error de Ejecución: El programa puede ejecutarse, pero por un mal manejo


del programa o un ingreso indebido, el programa colapsa o cierra
repentinamente, estos tipos de errores deben evitarse y debe ser el programa
quien pueda controlarlos.

Error de Lógica o procedimiento: Este tipo de error es percibido cuando nos


damos cuenta que los resultados de los procesos no son los correctos.

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

6to. Paso: DOCUMENTACION


 En esta etapa debe recopilarse toda la documentación generada en las
etapas anteriores, la cual va a servir como base para la elaboración del
manual técnico.

¿QUÉ SON LAS ESTRUCTURAS DE DATOS Y COMO SE


RELACIONAN CON LOS ALGORITMO?
Es un almacén de una colección datos que pueden ser caracterizados por su
organización y las operaciones que se definen en ella.
Ejemplo de Estructura de datos:
Arreglos, Archivos, Cadenas y Listas.

ALGORITMICA Y ESTRUCTURA DE DATOS


Esta asignatura tiene como objetivo ejercitar al alumno en la construcción de
algoritmos aplicados en las estructuras de datos.
SENATI Pág. 12

PRIMERA SEMANA – Marco Práctico

TRABAJO PRÁCTICO 1

Objetivo del Trabajo:


Que el alumno se ejercite en la construcción de sus propios algoritmos
computacionales, utilizando estructuras simples.

Utilizando la metodología aprendida en clase, construya los algoritmos


computacionales para resolver los siguientes requerimientos:

1. Diseñar un algoritmo para el Departamento de Personal de una empresa. El


cálculo del pago mensual de un empleado de una empresa se efectúa de la
siguiente manera: el sueldo básico se calcula en base al número total de horas
trabajadas basado en una tarifa horaria, al sueldo básico se le aplica una
bonificación del 20% obteniéndose el sueldo bruto, al sueldo bruto se le aplica un
descuento del 10% obteniéndose el sueldo neto. Escriba un programa que
calcule e imprima el sueldo básico, el sueldo bruto y el sueldo neto de un
trabajador.
2. Juan, Raquel y Daniel aportan cantidades de dinero para formar un capital. Juan
y Raquel aportan en dólares y Daniel en soles. Diseñe un programa que
determine el capital total en dólares y que porcentaje de dicho capital aporta
cada uno. Considere que: 1 dólar = 3.20 soles.
3. Diseñe un algoritmo que lea la capacidad de un disco duro en gigabytes y lo
convierta a megabytes, kilobytes y bytes.
4. Una persona ha recorrido tres tramos de una carretera. La longitud del primer
tramo está dada en kilómetros, del segundo tramo en pies y del tercer tramo en
millas. Diseñe un algoritmo que determine la longitud total recorrida en metros y
yardas. Considere los siguientes factores de conversión:
a. 1 metro = 2.2808 pies
b. 1 yarda = 3 pies
c. 1 kilómetro = 1000 metros
d. 1 milla = 1609 metros
SENATI Pág. 13

5. Diseñar el algoritmo correspondiente a un programa que obtiene la última cifra de


un número introducido.
6. Diseñar el algoritmo correspondiente a un programa que exprese en horas,
minutos y segundos un tiempo expresado en segundos.
7. Diseñar un algoritmo que sirva para calcular la bonificación de un trabajador por
productividad, según política de la empresa se otorga un plus de 0.2% del sueldo
mensual por cada producto producido.

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.

Fecha de Entrega: Segunda clase de la semana 2


SENATI Pág. 14

SEGUNDA SEMANA – Marco Teórico

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.

Repasemos las Estructuras Lógicas

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.

En nuestra vida cotidiana a diario tomamos una serie de decisiones y todas


tienen que ver con: Evaluar una premisa y de acuerdo a su resultado podemos
tomar una u otra decisión.

Ejemplo:
- Deseo ir al cine.

Si van mis amigos entonces


Iré al cine
Sino
Me quedo en casa

De igual forma cuando el programador desea especificar dos o más caminos


alternativos en un algoritmo o programa, se deben utilizar estructuras de
decisión o selección.

Una instrucción de decisión o selección evalúa una condición y en función del


resultado de esa condición se bifurcará a un determinado punto.

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

Clasificación de las Estructuras Selectivas:


 Estructura Selectiva Simple
 Estructura Selectiva Doble
 Estructura Selectiva Anidada
 Estructura Selectiva Múltiple

ESTRUCTURA SELECTIVA SI SIMPLE

Este tipo de estructura evalúa una condición (expresión lógica) y de ser


verdadera ejecuta un bloque de instrucciones en caso contrario no hace
absolutamente nada.

1. SU REPRESENTACIÓN EN EL DIAGRAMA DE FLUJO:

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

ESTRUCTURA SELECTIVA DOBLE

Este tipo de estructura presenta de igual forma una condición o (expresión


lógica), de ser verdadera esta condición, se ejecuta un bloque de instrucciones y
en caso contrario se ejecuta otro bloque distinto.
Se utiliza en la solución de problemas donde las alternativas se bifurcan en dos
posibilidades dependiendo de la condición evaluada.

1. SU REPRESENTACIÓN EN EL DIAGRAMA DE FLUJO:

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.

1. SU REPRESENTACIÓN EN EL DIAGRAMA DE FLUJO:

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; }
}
}

El mismo caso anterior se puede representar de un modo más simplificado


usando el else if:

If monto>=1000 //Condicion inicial

{ 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

EJERCICIOS PRACTICOS: Codificar y Ejecutar Programas

PROGRAMA DE EJEMPLO QUE USA LA ESTRUCTURA IF


//Ingrese 3 valores y determinar cuál de ellos es el mayor y menor
// Uso de if
//
*****************************************************************************************
import javax.swing.*;

public class Compara {


public static void main(String args[])
{
//DECLARACION DE VARIABLES
int a,b,c,mayor;

//INGRESO DE DATOS-Estos datos son capturados como String


String aa=JOptionPane.showInputDialog("Ingresa primer número : ");
String bb=JOptionPane.showInputDialog("Ingresa segundo número : ");
String cc=JOptionPane.showInputDialog("Ingresa tercer número : ");

//LOS DATOS RECEPCIONADOS DEBERAN SER CONVERTIDOS Al TIPO QUE CORRESPONDEN


a=Integer.parseInt(aa);
b=Integer.parseInt(bb);
c=Integer.parseInt(cc);

//PROCESO DE DATOS
if (a>b && a>c)
{ mayor=a; }

if(b>a && b>c)


{ mayor=b; }

if(c>a && c>b)


{ mayor=c; }

if (a<b && a<c)


{ menor=a; }
if (b<a && b<c)
{ menor=b; }

if (c<a && c<b)


{ menor=c; }
SENATI Pág. 20

//SALIDA DE INFORMACION
System.out.println("El número mayor es: " + mayor);
System.out.println("El número menor es: " + menor);
}
}

ESTRUCTURA SELECTIVA MULTIPLES switch

DEFINCION: Es una estructura que evalúa una expresión numérica y a partir de


este valor escoge un bloque de instrucciones y los ejecuta.

¿Porque utilizar la estructura switch?


 En mucho de los casos, será necesario establecer una estructura selectiva
con más de dos alternativas posibles ¿Qué hacer en esos casos?
 Podríamos utilizar Estructuras Selectivas Anidadas o en Cascada; sin
embargo, en este método, si el número de alternativas es grande, puede
plantear serios problemas de escritura del algoritmo y naturalmente de
legibilidad
 Para estos casos es más aconsejable utilizar las Estructuras de Selección
Múltiple.
¿Cómo trabaja esta estructura?
 Esta estructura evalúa una expresión que podrá tomar n valores distintos,
1,2,3,4,…,n. Según que elija uno de estos valores en la condición, se
realizará una de las n acciones, el flujo del algoritmo seguirá un
determinado camino entre los n posibles.

1. SU REPRESENTACIÓN EN EL DIAGRAMA DE FLUJO

1
Condició
n
2

4 n
3

Acción Acción Acción Acción Acción


S1 S2 S3 S3 Sn
SENATI Pág. 21

2. SU REPRESENTACIÓN EN EL PSEUDOCÓDIGO:

caso_de E hacer • Al ingresar a esta estructura se


E1: acción S11 evaluara el valor de E, si E vale E1,
acción S12 entonces se realizará las acciones S11
y S12 y luego el flujo saldrá de la
E2: acción S21 estructura.
• Si E vale E2, entonces se realizará las
acción S22 acciones S21 y S22 y luego el flujo
saldrá de la estructura.
E3: acción S31 • Si E vale E2, entonces se realizará las
acción S32 acciones S21 y S22 y luego el flujo
saldrá de la estructura.
• Sino se cumplieron las alternativas
sino anteriores, entonces se realizará las
acción S41 acciones S41 y S42
acción S42
fin_hacer

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

4. EJEMPLOS PRACTICOS: CODIFICAR Y EJECUTAR PROGRAMAS

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;
}

En el siguiente caso se evalúa el valor de la variable m y si el valor de dicha


variable es 1,3,5,7,8,10,12, la variable D toma el valor de “Estos meses tienen 31
días”
switch(m)
SENATI Pág. 23

{ case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
{ D=”Estos meses tienen 31 días”; } break;
}

Nota: El uso de break después de cada alternativa es indispensable para el que


flujo del programa se interrumpa, de lo contrario se seguirán realizando las
siguientes instrucciones, una vez terminada la ejecución de la estructura switch
se procederá a realizar la siguiente instrucción.
SENATI Pág. 24

DESARROLLO DE CASO PRACTICO

PROGRAMA DE EJEMPLO QUE USA LA ESTRUCTURA SWITCH


//Ingrese un numero hasta de dos cifras y conseguir su equivalente
//en letras
//
*****************************************************************************************
import javax.swing.*;

public class Letras {


public static void main(String args[])
{
//DECLARACION DE VARIABLES
int n:
String ld,lu, letra;

//INGRESO DE DATOS-Estos datos son capturados como String


String nn=JOptionPane.showInputDialog("Ingresa un numero entre 1 a 99 : ");

//LOS DATOS RECEPCIONADOS DEBERAN SER CONVERTIDOS Al TIPO QUE CORRESPONDEN


n=Integer.parseInt(nn);

//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

case 3 : { ld=”Treinta”; } break;


case 4 : { ld=”Cuarenta”; } break;
case 5 : { ld=”Cincuenta”; } break;
case 6 : { ld=”Sesenta”; } break;
case 7 : { ld=”Setenta”; } break;
case 8 : { ld=”Ochenta”; } break;
case 9 : { ld=”Noventa”; } break;
}

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

SEGUNDA SEMANA – Marco Práctico

TRABAJO PRÁCTICO 2
Objetivo del Trabajo:
Que el alumno se ejercite en la construcción de sus propios algoritmos
computacionales, utilizando estructuras condicionales.

Utilizando la metodología aprendida en clase, construya los algoritmos


computacionales para resolver los siguientes requerimientos:

1. Diseñe un programa que lea 3 números enteros y determine el número


intermedio.
2. Diseñe un programa que lea un número entero en el intervalo de 1 a 4,
correspondiente al estado civil de una persona, y determine el nombre del
estado civil: 1 para soltero, 2 para casado, 3 para viudo y 4 para
divorciado. Si el número no está en el intervalo de 1 a 4, imprima un
mensaje de error. (Use estructura condicional si).
3. A un trabajador le descuentan de su sueldo el 10%, si su sueldo es menor
o igual a 1000, si es por encima de 1000 y hasta 2000 el 5% del adicional
(es decir del monto que sobrepasa de 1000), y por encima de 2000 el 3%
del adicional (es decir del moto que sobrepasa de 2000). Calcular el
descuento y sueldo neto que recibe el trabajador dado su sueldo.
4. Diseñe un algoritmo que reciba dos números enteros A y B e incremente
el número A en el valor de B, si es que B es mayor que 100 pero menor
que 200, en caso contrario no alterar el valor de A. Imprima luego el
número A.
5. Una empresa desea adquirir cierta cantidad de unidades de un producto
para lo cual cuenta con la oferta de dos proveedores A y B, tal como se
explica a continuación:
Proveedor A: Costo unitario igual a S/. 25 y 15% de descuento
para más de 50 unidades adquiridas.
Proveedor B: Costo unitario igual a S/. 27.5 y 10% de descuento
para más de 35 unidades adquiridas.
SENATI Pág. 27

6. Hacer un programa que muestre el mensaje de acuerdo la edad


ingresada: Si la edad es de 0 a 10 años “niño”, si la edad es de 11 a 14
años “púber”, si la edad es de 15 a 18 años “adolescente”, si la edad es de
19 a 25 años “joven”, si la edad es de 26 a 65 años “adulto”, si la edad es
mayor de 65 “anciano”.
7. Dadas 3 longitudes, es decir mediante un mensaje si forman un triangulo:
equilátero, isósceles o escaleno, o no forman triangulo (cada lado tiene
que ser menos que la suma de los otros dos)
8. Diseñe un programa que recepcione el mes en número (1 a 12) y
devuelve a cambio el nombre del mes y la cantidad de días que contiene
dicho mes. (Utilice estructura switch).
9. En una elección democrática a la presidencia de un club participan Jaime,
Daniel y Gladys. Para ganar la elección se requiere obtener la mitad de los
votos emitidos más uno. En caso de no haber un ganador pasan a una
segunda vuelta los candidatos que alcanzaron los dos primeros puestos o
se anula la elección si hay empate entre los tres o si hay empate por el
segundo puesto. Dados los votos obtenidos por cada candidato, se le pide
diseñar un programa que determine el nombre del candidato ganador o los
nombres de los candidatos que pasan a la segunda vuelta o un mensaje
indicando la anulación de la elección.
10. Una compañía cobra a sus clientes el primer día de cada mes:
a. Si el cliente paga dentro de los primeros diez días del mes, obtiene
un descuento de $5 o del 2% de la deuda dependiendo de cuál sea
el mayor.
b. Si el cliente paga en los siguientes diez días no tiene derecho a
ningún descuento, deberá pagar exactamente la suma adeudada.
c. Si el cliente paga dentro de los restantes días del mes, tendrá un
recargo de $10 o del 3% de la deuda dependiendo de cuál sea el
mayor.
Diseñe un programa que determine cuanto debe pagar un cliente en un
mes dado.
SENATI Pág. 28

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.

Fecha de Entrega: Segunda clase de la semana 3


SENATI Pág. 29

TERCERA SEMANA – Marco Teórico

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.

ESTRUCTURA REPETITIVA while

La estructura repetitiva mientras (en inglés while o do while: hacer mientras) es


aquella en que el cuerpo del bucle se repite mientras se cumple una determinada
condición.

Cuando se ejecuta la instrucción Mientras la primera cosa que sucede es que se


evalúa la condición (una expresión lógica). Si se evalúa falsa, ninguna acción se
toma y el programa prosigue con las instrucciones que se encuentran fuera del
bucle. Si la expresión es verdadera, entonces se ejecuta el cuerpo del bucle,
después de lo cual se evalúa de nuevo la expresión lógica. Este proceso se
repite una y otra vez mientras la expresión lógica (condición) sea verdadera.

Este tipo de estructura es utilizada cuando se necesita la estructura repetitiva,


mas no se conoce con exactitud la cantidad de iteraciones del bucle, pues la
cantidad de repeticiones dependerá de si se sigue cumpliendo la condición
principal del bucle.
SENATI Pág. 30

1. REPRESENTACIÓN EN EL DIAGRAMA DE FLUJO

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

// PROGRAMA QUE CALCULA EL FACTORIAL DE UN NUMERO


//*****************************************************************************************
import javax.swing.*;
public class Factorial {

public static void main(String[] args) {


//DECLRACION DE VARIABLES
int n,f,i;

//INGRESO DE DATOS
String nn=JOptionPane.showInputDialog("Ingrese un número: ");

//CONVERSION DE DATOS
n=Integer.parseInt(nn);

f=1; //Inicializamos el acumulador de productos


i=1; //Inicializamos el contador en 1

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.

Un contador es una variable cuyo valor se incrementa o decrementa en una


cantidad constante en cada iteración.

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

Un acumulador o totalizador es una variable cuya misión es almacenar


cantidades variables resultantes de sumas sucesivas. Realiza la misma función
que un contador, con la diferencia de que el incremento o decremento de cada
suma es variable en lugar de constante, como en el caso del contador.
Se representa por la instrucción S=S+N, donde N es una variable y no una
constante.

EJERCICIOS PRACTICOS: Codificar y ejecutar programas


//*******************************************************************************************
//* Realizar un programa que solicite un número
//* y devuelva su mcm
//*******************************************************************************************
import javax.swing.*;
public class mcm {
public static void main(String[] args) {
//DECLRACION DE VARIABLES
int a,b,c,mcm;
//INGRESO DE DATOS
String aa=JOptionPane.showInputDialog("Ingrese 1er. número: ");
String bb=JOptionPane.showInputDialog("Ingrese 2do. número: ");

//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

}
}
}

OTRO EJEMPLO UTILIZANDO LA ESTRUCTURA WHILE


//*******************************************************************************************
//* Hacer un programa que solicite un número natural diferente
//* a cero y mostrar: La cantidad de divisores y la suma de los
//* mismos.
//*******************************************************************************************
import javax.swing.*;
public class Divisores {
public static void main(String[] args) {
//DECLRACION DE VARIABLES
int n,a,c,d;

//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

ESTRUCTURA REPETITIVA: FOR

En muchas ocasiones se conoce de antemano el número de veces que se


desean ejecutar las acciones de un bucle. En estos casos en los que el número
de iteraciones es fijo, se debe usar la estructura desde o para (for en inglés).
La estructura para ejecuta las acciones del cuerpo del bucle un número
especificado de veces y de modo automático controla el número de iteraciones o
pasos a través del cuerpo del bucle.
Esta estructura realiza una serie de ciclos repetitivos de acuerdo al valor del
índice de vueltas, en cada vuelta el valor del índice puede incrementarse o
decrementarse ya sea de uno en uno o de acuerdo a otro intervalo que se
especifique.

1. REPRESENTACIÓN DE LA ESTRUCTURA PARA EN EL DIAGRAMA DE FLUJO

PARA I de 1 a N Esta estructura permite


repetir el bucle de
instrucciones, de 1 a N
Instrucción A veces, luego de cumplirse
las n vueltas, se procederán
a ejecutarse las instrucciones
que se encuentran después
Instrucción B

La variable I va incrementando sus


valores automáticamente, siendo
Instrucción N estos: 1,2,3,… N

Esta estructura permite repetir el


PARA I de N a 1 bucle de instrucciones, de N a 1
veces, luego de cumplirse las n
vueltas, se procederán a ejecutarse las
instrucciones que se encuentran
Instrucción A después del bucle.

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

Esta estructura permite repetir el


PARA I de 2 a bucle de instrucciones, de 2 a N
N paso 2 veces, donde en cada vuelta el
valor de I se irá incrementando de
2 en 2.

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

Para I de 1 a N veces Para I de N a 1 veces


Instrucción A Instrucción A
Instrucción B
Instrucción B
:
: Instrucción N
Instrucción N Fin Para
Fin Para Instrucción X
Instrucción X Instrucción Y
Instrucción Y

3. SU REPRESENTACION EN LA CODIFICACION

Ejemplo 1 – for – con índice de incremento


int cuenta=0;int i=0;
for(i=1;i<=6;i++)
{ If (i%2==0)
SENATI Pág. 38

{ cuenta=cuenta+1; }
}
System.out.print(“La estructura FOR dio la siguiente cantidad de vueltas”);
System.out.println(cuenta);

Ejemplo 2 – for – con el índice en decremento


int cuenta=0;int i=0;
for(i=6;i>=1;i--)
{ If (i%2==0)
{ cuenta=cuenta+1; }
}
System.out.print(“La estructura FOR dio la siguiente cantidad de vueltas”);
System.out.println(cuenta);

Ejemplo 3 – for – Con el índice en incremento de 2


int cuenta=0; int i=0;
for(i=2;i<=30;i+=2)
{ If (i%10==0)
{ cuenta=cuenta+1; }
}
System.out.print(“La estructura FOR dio la siguiente cantidad de vueltas”);
System.out.println(cuenta);

4. EJERCICIOS PRÁCTICOS: CODIFICAR Y EJECUTAR PROGRAMAS

// El siguiente programa: evalúa en los primeros 100 números naturales y


// muestra solo aquellos que son múltiplos de 5, los suma y promedia
public class Caso1 {
public static void main(String arg[])
{ int i; double acu=0; double cta=0;
for(i=1;i<=100;i++)
{ if (i%5==0) // Si no es múltiplo de 5
{ System.out.println(i);
cta++; // Es igual que cta=cta+1 - Es un contador
acu+=i; // Es igual que acu=acu+i - Es un acumulador
}
}
double prom=acu/cta;
System.out.println("El valor acumulado es: "+ acu);
SENATI Pág. 39

System.out.println("El promedio acumulado es: "+ prom);


}
}

// El siguiente programa: evalúa en los primeros 100 números naturales y


// muestra solo aquellos que son múltiplos de 3 ó 5, pero no de ambos
public class Caso2 {
public static void main(String[] args) {
int i=0;int cta=0;
for(i=1;i<=100;i++)
{
if(((i%3==0)||(i%5==0)) && !((i%3==0)&&(i%5==0)))
{
System.out.println(i);
cta++;
}
}
System.out.println(cta +" Números cumplen con esta condición entre el rango de 1 a 100");
}
}

// El siguiente programa: evalúa en los primeros 100 números naturales y


// muestra solo aquellos números capicúas
public class Capicua {
public static void main(String[] args) {
int i;int n;
for(i=1;i<=999;i++)
{
int c=(int)i/100; // Se descompone la Centena
int r1=i%100;
int d=(int)r1/10; // Se descompone la Decena
int u=r1%10; // Se descompone la Unidad

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

TERCERA SEMANA – Marco Práctico

TRABAJO PRÁCTICO 1

Objetivo del Trabajo:


Que el alumno se ejercite en la construcción de sus propios algoritmos computacionales,
utilizando estructuras repetitivas.

Utilizando la metodología aprendida en clase, construya los algoritmos computacionales


para resolver los siguientes requerimientos:

1. Calcular mediante un algoritmo repetitivo la suma de los N primeros números


naturales.

2. Realizar un programa que permita el ingreso de N notas de un estudiante (utilice


JOptionPane), luego calcular:

a) La cantidad de desaprobados.
b) La cantidad de aprobados.
c) El promedio de las notas.
d) El promedio de notas aprobadas y desaprobadas.

3. Realizar un programa que permita el ingreso de un número y devuelva la cantidad


de cifras que contiene dicho número. (No utilice ningún método String).

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:

1 + 1/2 + 1/3 + 1/4 + 1/5 + … + 1/n

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.

Fecha de Entrega: Segunda clase de la semana 4


SENATI Pág. 42

CUARTA SEMANA – Marco Teórico

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.

Introducción a las Estructuras de Datos

IMPORTANCIA DE LAS ESTRUCTURAS DE DATOS:

Dentro del trabajo del procesamiento de datos, se hace necesario trabajar con
conjunto de datos, por ejemplo:

• Calcular el promedio de las edades de los alumnos del 3er. Ciclo de la


Carrera de Ingeniería de Sistemas.
• Buscar el máximo promedio alcanzado por los alumnos de la asignatura
de Algoritmos y Estructura de Datos I.
• Sumar las ventas obtenidas durante el día de hoy.

CLASIFICACIÓN DE LAS ESTRUCTURAS DE DATOS

1) Estructura de datos Estáticas


a) Arreglos Unidimensionales
b) Arreglos Multidimensionales

2) Estructura de datos Dinámicas


a) Listas Enlazadas
b) Pilas
c) Colas
d) Arboles
e) Conjuntos
f) Grafos
g) Tablas Hash
SENATI Pág. 43

Durante este semestre nos ocuparemos de las estructuras de datos estáticas,


veamos en qué consiste este tipo de estructuras:

DATOS ESTRUCTURADOS ESTÁTICOS


Las estructuras de datos de tipo estático son aquellas que presentan estructuras
fijas y predeterminadas.

A este tipo de estructuras de datos se les conocen como arreglos y se clasifican


de la siguiente forma:
• Arreglo Unidimensional (Vectores)
• Arreglo Multidimensional (Matrices)

¿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.

Los arreglos se caracterizan por:


 Almacenan los elementos en posiciones contiguas de memoria
 Tienen un mismo nombre de variable que representa a todos los
elementos. Para hacer referencia a esos elementos es necesario utilizar un
índice que especifica el lugar que ocupa cada elemento dentro del archivo.

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

Aquí podemos observar un arreglo unidimensional con las siguientes características:


- Longitud: 5 Elementos
- Primera posición: 0
- Última posición: Longitud-1
Nombre del Arreglo: EDAD
Asignar datos a las posiciones de un arreglo: Obtener datos del arreglo:
EDAD[1] = 18 x=EDAD[2]
EDAD[2] = 22 y=EDAD[3]
EDAD[3] = 25 z=EDAD[4]
SENATI Pág. 44

Llenado de un Vector

CARGAR Y VISUALIZAR UN ARREGLO UTILIZANDO POO EN JAVA SWING

Caso Práctico: Realizar una aplicación que cargue datos a un arreglo


unidimensional y que luego los muestre.

LOGICA DE PRESENTACIÓN: Interface de Usuario


frmArreglos

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

public String mostrarTodoslosDatos(int n){


int i;
String acu="";
for(i=0;i<=n-1;i++)
{ acu=acu+ventas[i]+"\n"; }
return acu;
}

//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:

public class frmArreglos extends javax.swing.JFrame {


Arreglos obj; //Objeto que servirá para la instancia
public int n; //Variable Global que controla la longitud
/** Creates new form frmArreglos */
public frmArreglos() {
obj=new Arreglos(); //Instancia de la clase
initComponents();
}

Nota: Las líneas que están en letras distintas, son aquellas deben agregarse en
la parte inicial de la codificación del formulario.

BOTON CARGAR DATOS


private void btnCargarActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
double dato;
int i;
n=Integer.parseInt(JOptionPane.showInputDialog("¿Cuántos datos desea ingresar?"));

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

BOTON MOSTRAR DATOS


private void btnMostrarActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
txtlista.setText(obj.mostrarTodoslosDatos(n));
}

CUARTA SEMANA – Marco Práctico

Durante esta semana, no se han programado trabajos domiciliarios, a fin de que


los alumnos puedan dedicarse exclusivamente para prepararse para la 1ra.
Practica Calificada de la próxima semana.

BIBLIOGRAFIA

Autor Titulo Edición Año


Luis Fundamentos de
Joyanes Programación. Algoritmos y Cuarta Edición 2006
Aguilar Estructura de Datos
Osvaldo
Estructuras de Datos Segunda Edición 2006
Cairó
Robert Fundamentos de
Pantigoso Programación: Algoritmos y Segunda Edición 2007
Silva Diagramas de Flujo

IV. AUTOEVALUACION PARA LA UNIDAD

1. Defina que es un algoritmo


2. ¿Cual es la metodología para la solución de problemas por medio los
algoritmos computacionales?
3. ¿Defina que es un Pseudocódigo?
4. ¿Qué es el SLE?
5. ¿Cómo se clasifican los datos simples?
6. ¿Qué es una expresión?
7. ¿Qué es un operador y cuáles son sus tipos?
8. ¿Cuáles son los operadores relacionales?
9. ¿Cuáles son los operadores lógicos?
10. ¿Qué es una constante?
11. ¿Qué es una variable?
12. ¿Cómo se clasifican las variables?
13. ¿Cómo se clasifican las variables por su contenido?
14. ¿Cómo se clasifican las variables por su uso?
15. ¿Cómo se clasifican las estructuras algorítmicas?
16. ¿En qué consiste la operación de asignación?
SENATI Pág. 47

17. ¿En que consiste las estructuras de condición múltiple?


18. ¿En que consiste las estructuras de condición doble?
19. ¿En que consiste las estructuras repetitivas o ciclicas?
20. ¿Qué es un arreglo?
21. ¿Qué es una matriz?
22. ¿Qué es una variable de tipo registro?
23. ¿Qué es una función?
24. ¿Cómo se invoca a una función?
25. ¿Cómo se define una función

Nota: En su estudio para la primera practica calificada incluya las actividades de


cada unidad. Los temas propuestos en este temario son de tipo referencial, las
preguntas para el examen serán tomados de cualquiera de estos puntos.

V. RESOLUCION DEL CUESTIONARIO

1. Defina que 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.
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.

2. ¿Cual es la metodología para la solución de problemas por medio los


algoritmos computacionales?

a. Definición del Problema


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.
El planteamiento debe ser tan claro como para que cualquiera entienda
exactamente lo que se desea hacer. No es lo mismo decir:
- Sumar dos números que,
- Ingresar dos números enteros, sumar ambos números y mostrar el
resultado de la suma.

b. Análisis del Problema


Una vez que se ha comprendido lo que se desea de la computadora, es
necesario definir:
SENATI Pág. 48

 Los datos de entrada. (Número1 y Número2)


 Cual es la información que se desea producir (Resultado)
 Los métodos y fórmulas que se necesitan para procesar los datos.
(Resultado = Número1 + Número2)
Una recomendación muy practica es el que nos pongamos en el lugar de la
computadora y analicemos que es lo que necesitamos que nos ordenen y en
que secuencia para producir los resultados esperados.

c. Diseño del Algoritmo


Las características de un buen algoritmo son:
 Debe tener un punto particular de inicio.
 Debe ser definido, no debe permitir dobles interpretaciones.
 Debe ser general, es decir, soportar la mayoría de las variantes que se
puedan presentar en la definición del problema.
 Debe ser finito en tamaño y tiempo de ejecución.

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.

Solución del problema ejemplo (En formato de seudocódigo)


var
Numero1, Numero2, Resultado : numerico
inicio
Leer(Numero1,Numero2);
Resultado=Numero1+Numero2;
Imprimir(Resultado);
fin

Como verá el seudocódigo es fácil de implementar a través de los verbos de la


acción. NO USAR ACENTOS. Es probable que en algunos textos aparezca Lee
por Leer o Ingresa por Leer; Asigna(Resultado=Numero1+Numero1); Muestra
por Imprimir o Salida por Imprimir. También es probable que no aparezca las
palabras inicio y fin o en lugar de var diga variables. Es posible incluso que
primera vaya el tipo de dato (numerico) y luego las variables, o que sea más
específica la definición del tipo de dato (real, entero, flotante, etc.). El
SENATI Pág. 49

seudocódigo se ajusta a dichas variantes pero siempre debe tratar que no se


pierda la legibilidad. Obviamente usaremos el lenguaje de seudocódigo del SL.

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.

La depuración o prueba resulta una tarea tan creativa como el mismo


desarrollo de la solución, por ello se debe considerar con el mismo interés y
entusiasmo.

No seremos tan detallistas; básicamente, lo que pretendemos cubrir es lo


concerniente a:
 Planteamiento de los problemas
 Declaración del seudocódigo

3. ¿Defina que es un Pseudocódigo?


El lenguaje natural no es apropiado para la descripción de algoritmos ya que es
inconcreto y disperso.

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.

5. ¿Cómo se clasifican los datos simples?


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.

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).

Datos Alfanuméricos (String): Es una secuencia de caracteres alfanuméricos


que permiten representar valores identificables de forma descriptiva, esto
incluye nombres de personas, direcciones, etc. Es posible representar números
SENATI Pág. 50

como alfanuméricos, pero estos pierden su propiedad matemática, es decir no


es posible hacer operaciones con ellos. Este tipo de datos se representan
encerrados entre comillas.

6. ¿Qué es una expresión?


Las expresiones son combinaciones de constantes, variables, símbolos de
operación, paréntesis y nombres de funciones especiales.

7. ¿Qué es un operador y cuáles son sus tipos?


Operadores: Son elementos que relacionan de forma diferente, los valores de
una o mas variables y/o constantes. Es decir, los operadores nos permiten
manipular valores.

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.

9. ¿Cuáles son los operadores lógicos?


- Estos operadores se utilizan para establecer relaciones entre valores lógicos.
- Estos valores pueden ser resultado de una expresión relacional.

Son: Y And
O Or
No Not

10. ¿Qué es una constante?


Una constante es un dato numérico o alfanumérico que no cambia durante la
ejecución del programa.

11. ¿Qué es una variable?


SENATI Pág. 51

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
cambia durante la ejecución del programa. Para poder reconocer una variable
en la memoria de la computadora, es necesario darle un nombre con el cual
podamos identificarla dentro de un algoritmo.

12. ¿Cómo se clasifican las variables?


Numéricas
Por su Contenido Lógicas
Alfanuméricas (String)
Variables

De Trabajo
Por su Uso Contadores

Acumuladores

13. ¿Cómo se clasifican las variables por su contenido?


Variable Numéricas: Son aquellas en las cuales se almacenan valores
numéricos, positivos o negativos, es decir almacenan números del 0 al 9,
signos (+ y -) y el punto decimal.
Ejemplo:
iva=0.15 pi=3.1416 costo=2500

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.

Variables Alfanuméricas: Esta formada por caracteres alfanuméricos (letras,


números y caracteres especiales). Ejemplo:
letra=’a’ apellido=’lopez’ direccion=’Av. Libertad #190’

14. ¿Cómo se clasifican las variables por su uso?


Variables de Trabajo: Variables que reciben el resultado de una operación
matemática completa y que se usan normalmente dentro de un programa.
Ejemplo:
suma=a+b/c
SENATI Pág. 52

Contadores: Se utilizan para llevar el control del numero de ocasiones en que


se realiza una operación o se cumple una condición. Con los incrementos
generalmente de uno en uno. (Su uso más común es dentro de bucles)

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)

15. ¿Cómo se clasifican las estructuras algorítmicas?


Las estructuras de operación de programas son un grupo de formas de trabajo,
que permiten, mediante la manipulación de variables, realizar ciertos procesos
específicos que nos lleven a la solución de problemas. Estas estructuras se
clasifican de acuerdo con su complejidad en:
SENATI Pág. 53

- Asignación
Secuenciales - Entrada
- Salida

- Simples
Estructuras Condicionales
Algorítmicas - Múltiples

- Hacer desde
Cíclicas - Hacer mientras
- Repetir hasta

16. ¿En qué consiste la operación de asignación?


La asignación consiste, en el paso de valores o resultados a una zona de la
memoria. Dicha zona será reconocida con el nombre de la variable que recibe
el valor.

17. ¿En que consiste las estructuras de condición múltiple?


Las estructuras de comparación múltiples, son tomas de decisión
especializadas que permiten comparar una variable contra distintos posibles
resultados, ejecutando para cada caso una serie de instrucciones especificas.

18. ¿En que consiste las estructuras de condición doble?


Las estructuras condicionales dobles permiten elegir entre dos opciones o
alternativas posibles en función del cumplimiento o no de una determinada
condición.

19. ¿En que consiste las estructuras repetitivas o cíclicas?


Se llaman problemas repetitivos o cíclicos a aquellos en cuya solución es
necesario utilizar un mismo conjunto de acciones que se puedan ejecutar una
cantidad especifica de veces. Esta cantidad puede ser fija (previamente
determinada por el programador) o puede ser variable (estar en función de
algún dato dentro del programa).

20. ¿Qué es un arreglo?


SENATI Pág. 54

Un Arreglo es una estructura de datos que almacena bajo el mismo nombre


(variable) a una colección de datos del mismo tipo.

Los arreglos se caracterizan por:


 Almacenan los elementos en posiciones contiguas de memoria
 Tienen un mismo nombre de variable que representa a todos los
elementos. Para hacer referencia a esos elementos es necesario utilizar un
índice que especifica el lugar que ocupa cada elemento dentro del archivo.

Unidimensionales (Vectores)
Tipo de
Arreglos
Bidimensionales (Matrices)

21. ¿Qué es una matriz?


Es un arreglo de M * N elementos organizados en dos dimensiones donde “M”
es el numero de filas o reglones y “N” el numero de columnas.

22. ¿Qué es una variable de tipo registro?


Se llama “registro” (algunos usan el término “estructura”) a una variable que
está compuesta a su vez de otras variables. La ventaja de agrupar variables
para formar una estructura más compleja es que de esa forma se mantiene la
unidad conceptual del dato. Por ejemplo, una fecha es un solo “dato”, a pesar
de que se compone de día, mes y año. En muchos casos es deseable tratarla
como una sola entidad y en otros deseamos operar sobre sus componentes.

23. ¿Qué es una función?


Una función en matemáticas, es una operación que toma un o mas valores
(argumentos) y devuelve un resultado (valor de la función para los argumentos
dados).

24. ¿Cómo se invoca a una función?


Llamado a una función
Cuando definimos una función solo le indicamos al algoritmo que esta función
existe, pero una definición de función no implica la realización de las
instrucciones que la constituyen. Para hacer uso de una función, el algoritmo
principal la debe llamar. Por ejemplo:
inicio
SENATI Pág. 55

imprimir(“\nEste es el algoritmo principal”)


Leer(N)
R = F(N) llamado de la función
Imprimir “El resultado de la función es:”,R
fin

25. ¿Cómo se define una función

Definición de funciones: Una definición de función se presenta de la siguiente


manera:
Sub nombre_funcion (p1, p2, …, pn : tipos) : tipo
inicio
Bloque de instrucciones
fin
Donde:
sub…………… Es la palabra clave que nos indica una definición de función.
Nombre_funcion ….. Es el identificador con el cual se reconoce a la función
en el cuerpo del
algoritmo principal.
P1,p2,…,pn ……... Es el grupo de parámetros que define a la función.
Tipo ……………… Tipo de dato del parámetro o tipo de dato retornado

También podría gustarte