Sei sulla pagina 1di 96
1ra. Edición-2018 1
1ra. Edición-2018 1
1ra. Edición-2018 1
1ra. Edición-2018 1
1ra. Edición-2018 1
1ra. Edición-2018 1
1ra. Edición-2018 1
1ra. Edición-2018 1
1ra. Edición-2018 1
1ra. Edición-2018 1
1ra. Edición-2018 1
1ra. Edición-2018 1

1ra. Edición-2018

1ra. Edición-2018 1
Universidad Nacional del Santa Facultad de Ingeniería Escuela Profesional de Ingeniería de Sistemas e Informática

Universidad Nacional del Santa Facultad de Ingeniería Escuela Profesional de Ingeniería de Sistemas e Informática

TABLA DE CONTENIDOS

Semana 01.- Introducción a los algoritmos, análisis de problemas y diseño de algoritmos

3

Semana 02.- Estructuras Secuenciales y Operaciones Básicas

9

Semana 03.- Estructuras Condicionales simples y dobles. Operadores de relación y operadores

lógicos Condicionales simples y dobles

14

Semana 04.- Estructura de selección múltiple y de control: desde

22

Semana 05.- Estructuras de control: mientras, hacer

32

Semana 06.- Funciones, procedimientos y algoritmos recursivos

38

Semana 07.- Aplicaciones que combinan las diversas estructuras de la unidad

45

Semana 08.- Examen de 1era Unidad

48

Semana 09.- Arreglos, Arreglos unidimensionales

49

Semana 10.- Arreglos multidimensionales: Matrices

60

Semana 11.- Algoritmos de ordenamiento y búsqueda

71

Semana 12.- Java: Estructuras de control: mientras, hacer mientras

79

Semana 13.- Java: Implementar Arreglos: Unidimensionales y

83

Semana 14.- Java: Implementar funciones, procedimientos y algoritmos

88

Semana 15.- Examen de 2da Unidad

94

Semana 16.- Tarea de Producción

95

Referencias Bibliográficas

96

Universidad Nacional del Santa Facultad de Ingeniería Escuela Profesional de Ingeniería de Sistemas e Informática

Universidad Nacional del Santa Facultad de Ingeniería Escuela Profesional de Ingeniería de Sistemas e Informática

Semana 01Semana 01.- Introducción a los algoritmos, análisis de problema

Semana 01.- Introducción a los algoritmos, análisis de problemas y diseño de algoritmos

algoritmos, análisis de problemas y diseño de algoritmos ALGORTIMOS ¿Qué es un algoritmo? Es la secuencia

ALGORTIMOS ¿Qué es un algoritmo? Es la secuencia de pasos (método) que nos permite resolver un problema determinado Además, debe cumplir estas condiciones:

Finito:

El algoritmo debe acabar tras un número finito de pasos. Es más, es casi fundamental que sea en un número razonable de pasos.

Definible: el algoritmo debe definirse de forma precisa para cada paso, es decir, hay que evitar toda ambigüedad al definir cada paso. Puesto que el lenguaje humano es impreciso, los algoritmos se expresan mediante un lenguaje formal, ya sea matemático o de programación para un computador. Esto significa que ejecutando 2 veces el mismo algoritmo con los mismos datos de entrada debe darnos el mismo resultado.

Efectivo: se entiende por esto que una persona sea capaz de realizar el algoritmo de modo exacto por que se indica el orden de realización de cada paso También debe contar de las 3 partes siguientes:

Entrada: el algoritmo tendrá cero o más entradas, es decir, cantidades dadas antes de empezar el algoritmo. Estas cantidades pertenecen además a conjuntos especificados de objetos. Por ejemplo, pueden ser cadenas de caracteres, enteros, naturales, fraccionarios, etc. Se trata siempre de cantidades representativas del mundo real expresadas de tal forma que sean aptas para su interpretación por el computador.

Proceso: Donde se describe la transformación de los datos de entrada en un resultado válido.

Salida: el algoritmo tiene una o más salidas, en relación con las entradas.

Algo de historia Uno de los algoritmos más antiguos conocidos es el algoritmo del matemático griego Euclides. El término algoritmo proviene del matemático Mohammed ibn Musa al-Khowarizmi, matemático persa (actual Irán), que vivió aproximadamente entre los años 780 y 850 d.C. (Siglo IX) El describió la realización de operaciones elementales en el sistema de numeración decimal. De al-Khwarizmi se obtuvo la derivación algoritmo.

Los recursos que utiliza un algoritmo en relación a un computador son principalmente:

El tiempo: período transcurrido entre el inicio y la finalización del algoritmo.

La memoria: la cantidad (la medida varía según la máquina) que necesita el algoritmo para su ejecución. Obviamente, la capacidad y el diseño de la máquina pueden afectar al diseño del algoritmo.

Universidad Nacional del Santa Facultad de Ingeniería Escuela Profesional de Ingeniería de Sistemas e Informática

Universidad Nacional del Santa Facultad de Ingeniería Escuela Profesional de Ingeniería de Sistemas e Informática

ANÁLISIS DE PROBLEMAS En nuestra vida cotidiana, cada que realizamos una actividad o tarea tomamos decisiones, que en definitiva es la manera de resolver micro problemas, que en su suma resuelven nuestros quehaceres diarios de manera inadvertida, es más, al comienzo, por ejemplo de muy niños aprendemos a lavarnos los dientes y esta actividad responde a una serie de tareas o actividades, que a medida que lo hemos resuelto una primera vez, el hecho se vuelve repetitivo y cada vez vamos mejorando la manera en como realizamos tal actividad y de igual manera ocurre para cualquier otra actividad que realicemos por primera vez.

De acuerdo con Cairo, para solucionar un problema debemos seguir las 3 siguientes etapas:

a) Análisis profundo del problema

b) Diseño y Construcción del algoritmo

c) Verificación del Algoritmo.

Recordando reunir las siguientes características para los algoritmos:

Preciso: Los pasos a seguir en el algoritmo deben ser indicados claramente. Definido: El algoritmo, si se sigue dos veces con un conjunto de datos idénticos de entrada, siempre debe arrojar los mismos resultados. Finito: El algoritmo, independientemente de la complejidad del mismo, siempre debe ser de longitud definida es decir debe tener un fin.

a) Análisis del problema Para poder identificar y definir bien un problema es conveniente responder a las siguientes preguntas:

1) ¿Qué entradas se requieren? (tipo de datos con los cuales se trabaja y cantidad). 2) ¿Cuál es la salida deseada? (tipo de datos de los resultados y cantidad). 3) ¿Qué método produce la salida deseada? 4) Requisitos o requerimientos adicionales y restricciones a la solución.

En esta etapa se determina que hace el programa

b) Diseño y construcción del algoritmo En esta siguiente etapa se determina como hace el programa la tarea solicitada.

Y por lo general optamos por dividir el problema y resolverlo por partes, luego juntamos esas partes en un todo integrado, bajo la técnica de diseño descendente de arriba hacia abajo (diseño top-down)

Para el diseño y construcción del algoritmo se utilizan herramientas tales como los diagramas de flujo, los diagramas de Nassi-Shneiderman, los pseudocódigos, entre otros.

Universidad Nacional del Santa Facultad de Ingeniería Escuela Profesional de Ingeniería de Sistemas e Informática

Universidad Nacional del Santa Facultad de Ingeniería Escuela Profesional de Ingeniería de Sistemas e Informática

1) Diagramas de Flujo En ingles se le conoce como flowchart, y es una representación
1)
Diagramas de Flujo
En ingles se le conoce como flowchart, y es una representación gráfica del
algoritmo. Los símbolos que emplean han sido normalizados por el ANSI
(American National Standards Institute) y son los siguientes:
2)
Diagramas de Nassi-Shneiderman
Es un diagrama de flujo en base a cajas o bloques contiguos, donde se
omiten las flechas, de igual amanera estos diagramas se leen de arriba
hacia abajo. Los siguientes son los símbolos principales:
se leen de arriba hacia abajo. Los siguientes son los símbolos principales: ALGORITMOS Mg. Hugo Caselli
Universidad Nacional del Santa Facultad de Ingeniería Escuela Profesional de Ingeniería de Sistemas e Informática

Universidad Nacional del Santa Facultad de Ingeniería Escuela Profesional de Ingeniería de Sistemas e Informática

Profesional de Ingeniería de Sistemas e Informática Ejemplo de Diagrama N-S: 3) Pseudocódigo O falso lenguaje,

Ejemplo de Diagrama N-S:

de Sistemas e Informática Ejemplo de Diagrama N-S: 3) Pseudocódigo O falso lenguaje, es una descripción

3)

Pseudocódigo O falso lenguaje, es una descripción de alto nivel compacta e informal del principio operativo de un algoritmo que luego se traducirá en un programa computacional. Normalmente, el pseudocódigo omite detalles que no son esenciales para la comprensión humana del algoritmo. No existe una sintaxis estándar para el pseudocódigo, pero nosotros utilizaremos las siguientes convenciones:

Asignación

x

utilizaremos las siguientes convenciones:  Asignación x y  Estructura secuencial Sentencia 1 Sentencia

y

Estructura secuencial

Sentencia

1

Sentencia

2

(

)

Sentencia

n

Universidad Nacional del Santa Facultad de Ingeniería Escuela Profesional de Ingeniería de Sistemas e Informática

Universidad Nacional del Santa Facultad de Ingeniería Escuela Profesional de Ingeniería de Sistemas e Informática

Selección Simple

Si condición entonces Sentencia(s) Fin_si

Selección doble

Si condición entonces Sentencia(s) 1 Caso contrario Sentencia(s) 2 Fin_si

Selección múltiple

Si condición 1 entonces Sentencia(s) 1 Caso contrario Si condición 2 entonces Sentencia(s) 2

(

)

Caso contrario Si condición n entonces Sentencia(s) n1 Caso contrario Sentencia(s) Fin_si

n2

Selección Múltiple de CASOS

Según expresión hacer Caso valor 1 Sentencia(s) 1 Caso valor 2 Sentencia(s) 2 Caso valor 3 Sentencia(s) 3

(

)

Caso contrario Sentencia(s) n Fin_según

Universidad Nacional del Santa Facultad de Ingeniería Escuela Profesional de Ingeniería de Sistemas e Informática

Universidad Nacional del Santa Facultad de Ingeniería Escuela Profesional de Ingeniería de Sistemas e Informática

Estructura repetitiva (FOR)

o

desde i Sentencia(s) Fin_desde

repetitiva (FOR) o desde i Sentencia(s) Fin_desde 0 hasta n hacer Para i Sentencia(s) Fin_para 0

0 hasta n hacer

Para i Sentencia(s) Fin_para

Fin_desde 0 hasta n hacer Para i Sentencia(s) Fin_para 0 hasta n hacer  Estructura repetitiva

0 hasta n hacer

Estructura repetitiva (WHILE-DO)

Mientras condición hacer Sentencia(s) Fin_mientras

Estructura repetitiva (DO-WHILE)

Hacer Sentencia(s) Mientras condición

c) Verificación del algoritmo Una vez que se ha terminado de escribir un algoritmo es necesario comprobar que realiza las tareas para las que se ha diseñado y produce el resultado correcto y esperado. El modo inicial de comprobar un algoritmo es mediante su ejecución manual, usando datos significativos que abarquen todo el posible rango de valores y anotando en una hoja de papel las modificaciones que se den estos datos y en los del resto del algoritmo, en las diferentes fases hasta la obtención de los resultados. Este proceso se conoce como prueba de escritorio, que nos va a permitir depurar los errores del algoritmo y corregir y/o eliminar dichos errores. Siendo los errores lógicos los que suelen estar en el diseño del algoritmo. Estos errores son los más difíciles de detectar, ya que más adelante el programa puede funcionar y no producir errores de compilación ni de ejecución, y sólo puede advertirse el error por la obtención de resultados incorrectos. En este caso se debe volver a la fase de diseño del algoritmo, modificar el algoritmo, cambiar el programa fuente y compilar y ejecutar una vez más.

Referencias

Cairó Battistutti, O. (2005). Metodología de la Programación. Algoritmos, diagramas de flujo y programas. México: Alfaomega. Joyanes Aguilar, L. (2008). FUNDAMENTOS DE PROGRAMACIÓN. Algoritmos, estructura de datos. Madrid. España: McGRAW-HILL/INTERAMERICANA DE ESPAÑA, S. A. U. López García, J. (2009). Algoritmos y Programación. Guía para docentes. Bogota, Colombia: Fundación Gabriel Piedrahita Uribe.

Universidad Nacional del Santa Facultad de Ingeniería Escuela Profesional de Ingeniería de Sistemas e Informática

Universidad Nacional del Santa Facultad de Ingeniería Escuela Profesional de Ingeniería de Sistemas e Informática

Semana 02

Semana 02.- Estructuras Secuenciales y Operaciones Básicas

Semana 02.- Estructuras Secuenciales y Operaciones Básicas Estructura general de un programa Luego de analizar el

Estructura general de un programa

Luego de analizar el problema y de plantear una solución algorítmica lógica vía cualquiera de las herramientas antes mencionadas (diagramas de flujo, diagramas Nassi-Shneiderman y/o pseudocódigo), debemos trasladar esa solución a código del lenguaje de programación con el cual vamos a trabajar (en nuestro caso el lenguaje de programación seleccionado será JAVA), el diseño de la estructura general de un programa tiene los siguientes componentes que se muestran en la figura siguiente:

Entrada

Entrada
Entrada
Entrada

PROCESO

PROCESO Salida

Salida

Programa (algoritmo de solución)
Programa (algoritmo de solución)

La entrada de datos se puede proporcionar desde teclado y/o disco principalmente, existen otras formas de proporcionar entradas como los scanner y otros periféricos que no son de interés para el curso. Con estas entradas alimentaremos al algoritmo que los procesara, para enseguida obtener datos de salida que se presentaran en dispositivos periféricos de salida como pantalla, disco, impresoras, etc. La salida se puede contextualizar como el acto de escribir de manera genérica.

Antes de abordar la estructura secuencial, es necesario que nos familiaricemos con ciertos conceptos que participaran en la implementación de un algoritmo en un lenguaje de programación.

Conceptos fundamentales

a) Tipos de datos

Empezaremos reconociendo los datos a procesar por un computador que se clasifican en:

• Simples

• Estructurados

La principal característica de los datos simples es que hacen referencia a un único valor a la vez. Dentro de este grupo de datos se encuentran: los números enteros, los números reales, los caracteres, los booleanos, los enumerados

Los datos estructurados se caracterizan por el hecho de que con un nombre (identificador de variable estructurada) se hace referencia a un grupo de casillas de memoria. Es decir, un dato estructurado tiene varios componentes. Cada uno de los componentes puede ser a su vez un dato simple o estructurado.

Universidad Nacional del Santa Facultad de Ingeniería Escuela Profesional de Ingeniería de Sistemas e Informática

Universidad Nacional del Santa Facultad de Ingeniería Escuela Profesional de Ingeniería de Sistemas e Informática

A continuación, trataremos los datos simples: enteros, reales, caracteres y booleanos; y el dato estructurado: cadena de caracteres. Posteriormente estudiaremos los datos estructurados arreglos.

Datos numéricos Dentro de los tipos de datos numéricos encontramos los números enteros y los números reales. Los enteros son números que pueden estar precedidos del signo + o y que no tienen parte decimal. Por ejemplo:

128

256

-2114

18580

Los reales son números que pueden estar precedidos del signo + o y que tienen una parte decimal. Por ejemplo:

9.3

256.0

-71.568

16000.50

Datos alfanuméricos Dentro de este tipo de datos encontramos los de tipo carácter (simple) y cadena de caracteres (estructurado). Son datos cuyo contenido pueden ser letras del

9) o símbolos

… etc.). Es necesario indicar que, si bien este tipo de

, datos pueden contener números, no pueden ser utilizados para realizar operaciones aritméticas.

abecedario (a,b,c,

,z;

A.

B,

C,

,

Z),

dígitos (0,

1,

2

especiales (#, $, * ,* , %, /,

Un dato tipo carácter contiene un solo carácter, y se escribe entre apostrofes.

Por ejemplo:

‘b’ ‘A'

‘$’

‘8'

Un dato tipo cadena de caracteres contiene un conjunto de caracteres, y se

escribe entre comillas. La longitud de una cadena depende de los lenguajes de programación, aunque normalmente se acepta una longitud máxima de 255.

Por ejemplo:

“ABCD” “$5_6” “Charly García”

Datos lógicos Dentro de este tipo de datos encontramos los booleanos. Son datos que sólo pueden tomar dos valores: verdadero (true) o falso (false).

Identificadores

Los datos que se procesan en un lenguaje de programación, sean simples o estructurados, tienen un nombre que permite su identificación, es por ello que se denominan identificadores y se forman de acuerdo a ciertas reglas (las mismas pueden variar dependiendo del lenguaje de programación utilizado):

El primer carácter que forma un identificador debe ser una letra (a, b, c,…, z, A, B, C,… Z), el subrayado (_) o e símbolo dólar ($). Los demás caracteres pueden

ser letras (a, b, c

identificador varía en cada lenguaje de programación.

La longitud del

,z,

A,

B,

C,….Z),

dígitos (0,1,2,

,9).

Por ejemplo:

SUMA

Nota_01

color

Constantes Las constantes son datos que no cambian durante la ejecución de un programa. Para nombrar las constantes utilizamos los identificadores que mencionamos anteriormente.

Universidad Nacional del Santa Facultad de Ingeniería Escuela Profesional de Ingeniería de Sistemas e Informática

Universidad Nacional del Santa Facultad de Ingeniería Escuela Profesional de Ingeniería de Sistemas e Informática

Existen tantos tipos de constantes como tipos de datos, por lo tanto, puede

haber constantes de tipo entero, real, carácter, cadena de caracteres, etc. Es muy importante que los nombres de las constantes sean representativos de la tarea que desempeñan dentro del programa de tal manera que no tenemos que adivinar que significan.

Por ejemplo:

PI = 3.141516

radio = 20

Variables Las variables son objetos que pueden cambiar su valor durante la ejecución de un programa. Para nombrar las variables utilizaremos los identificadores que hemos explicado con anterioridad. Al igual que las constantes, pueden existir

tantos tipos de variables como tipos de datos. De igual manera el nombre de las variables que incorporamos e un programa deben ser representativas de la tarea que desempeñan dentro del programa de tal manera que no tenemos que adivinar que significan.

Por ejemplo:

Suma

radio

nota_01

Operaciones aritméticas Para poder realizar operaciones aritméticas empleamos los operadores aritméticos entre operandos (números, constantes o variables). El resultado de una operación aritmética será un número. Los operadores aritméticos básicos son: potencia (^) 1 , multiplicación (*), división (/), suma (+), resta (-). Las expresiones aritméticas se evalúan de izquierda a derecha teniendo en cuenta la jerarquía de los operadores aritméticos, los operadores de igual nivel también su evaluación es de izquierda a derecha, si deseamos alterar el orden de cálculo utilizamos los paréntesis ejecutándose primero los paréntesis más interiores.

Jerarquía de los operadores aritméticos

Jerarquía

Operador

Operación

Mayor

()

Altera orden de cálculo

^

Potencia

*

/

Multiplicación –

división

menor

+

-

Suma - resta

Por ejemplo:

Sí n1 = 12 y n2 = 14 Promedio = n1 + n2 / 2 Promedio = 19. Que es muy distinto a:

Promedio = (n1 + n2) / 2 Promedio = 13.

1 El circunflejo (^) debe ser reemplazado por la función adecuada en JAVA

Universidad Nacional del Santa Facultad de Ingeniería Escuela Profesional de Ingeniería de Sistemas e Informática

Universidad Nacional del Santa Facultad de Ingeniería Escuela Profesional de Ingeniería de Sistemas e Informática

Estructura Secuencial La estructura de control secuencial conocida también como estructura lineal. Se compone de instrucciones que deben ejecutarse en forma consecutiva, una tras otra, siguiendo una línea de flujo. Aplica para problemas muy sencillos. Esta estructura forma parte de soluciones de problemas complejos en las que se la utiliza mezclada con estructuras iterativas y condicionales.

utiliza mezclada con estructuras iterativas y condicionales. Esta siguientes instrucciones o sentencias: estructura puede

Esta

siguientes instrucciones o sentencias:

estructura

puede

contener

cualquiera

de

las

Declaración de variables

Asignación de valores

Entrada de datos

Procesamiento de datos (operaciones)

Reporte de resultados.

Ejemplo 2.1 Dado el nombre y las notas de examen escrito y de prácticas de la primera unidad de un alumno de la Escuela de Educación Secundaria, elabore un algoritmo que imprima el nombre y el promedio de las calificaciones de Juan quien tuvo 09 en examen escrito y 14 en prácticas, tenga en cuenta que el examen escrito tiene peso 2.

Solución Constantes Nombre = Juan

(tipo: Cadena)

NotaEE = 9

(tipo: entero)

NotaPR = 14

(tipo: entero)

Variable

Promedio

(tipo: real)

Proceso (operación) Obtener el promedio:

(NotaEE*2+NotaPR)/3.0

Salida Nombre y Promedio

el promedio: (NotaEE*2+NotaPR)/3.0 Salida Nombre y Promedio Diagrama de flujo ALGORITMOS Mg. Hugo Caselli Gismondi 12

Diagrama de flujo

Universidad Nacional del Santa Facultad de Ingeniería Escuela Profesional de Ingeniería de Sistemas e Informática

Universidad Nacional del Santa Facultad de Ingeniería Escuela Profesional de Ingeniería de Sistemas e Informática

Diagrama Nassi-Shneiderman

Inicio

Nombre = “Juan”

NotaEE = 9

NotaPR = 14

Promedio = (NotaEE*2+NotaPR)/3

Escribir Nombre, Promedio

Fin

Pseudocódigo

 

Inicio

Nombre

“Juan”Nombre

NotaEE

9NotaEE

NotaPR

14NotaPR

Promedio (NotaEE*2+NotaPR)/3 Escribir Nombre, Promedio

Promedio (NotaEE*2+NotaPR)/3 Escribir Nombre , Promedio

Fin

Ejercicios

2.1 Determine el producto de tres enteros cualquiera.

2.2 Determinar la suma de las N primeros números enteros de acuerdo a la siguiente formula:

primeros números enteros de acuerdo a la siguiente formula: 2.3 Estimar el número de páginas de

2.3 Estimar el número de páginas de un texto que puede almacenar en la memoria de un computador. A un promedio de 300 palabras por página y 10 caracteres por palabra. Asumir que un carácter ocupa un (1) Byte. El tamaño de la memoria del computador debe ingresarse expresado en Kilobytes. Recuerde que un Kilobyte = 1024 bytes.

2.4 Dado la base y la altura de un rectángulo, calcule el área y el perímetro del mismo.

2.5 Determine y muestre el cuadrado y el cubo de un número.

2.6 Suponga que está a cargo de una veterinaria, y se tienen los datos de las mascotas: nombre, peso (en libras) y longitud (en pies). Muestre el nombre de la mascota, su peso expresado en Kilogramos y su longitud expresada en metros. Recuerde: 1 libra = 0.453592 Kilogramo y 1 pie = 0.3047

Referencias

Cairó Battistutti, O. (2005). Metodología de la Programación. Algoritmos, diagramas de flujo y programas. México: Alfaomega. Joyanes Aguilar, L. (2008). FUNDAMENTOS DE PROGRAMACIÓN. Algoritmos, estructura de datos. Madrid. España: McGRAW-HILL/INTERAMERICANA DE ESPAÑA, S. A. U.

Universidad Nacional del Santa Facultad de Ingeniería Escuela Profesional de Ingeniería de Sistemas e Informática

Universidad Nacional del Santa Facultad de Ingeniería Escuela Profesional de Ingeniería de Sistemas e Informática

Semana 03

Semana 03.- Estructuras Condicionales simples y dobles. Operadores de relación y operadores

lógicos Condicionales simples y dobles.
lógicos Condicionales simples y dobles.

A medida que avanzamos, encontramos que la mayoría de los problemas no se logran resolver con estructuras secuenciales, pues siempre hemos de tomar una decisión, hay diversas alternativas por las cuales elegir sobre la base de evaluar una condición determinada. Para poder conseguir solucionar estos problemas utilizaremos las estructuras selectivas o condicionales o de selección y en este primer momento la estructura de selección simple, la cual gráficamente se representa con un rombo.

simple, la cual gráficamente se representa con un rombo. Nassi-Shneiderman Diagrama de flujo Cuando la condición

Nassi-Shneiderman

Diagrama de flujo

Cuando la condición es verdadera, se ejecutan las instrucciones (acciones) que están incluidas en el rectángulo del proceso, caso contrario, no se ejecuta nada y se continúa con el resto del programa.

no se ejecuta nada y se continúa con el resto del programa. Pseudocódigo Si condición entonces

Pseudocódigo

Si condición entonces Sentencia(s) Fin_si

Sentencia Sí Evalúa una condición que es una expresión booleana, que de ser verdadera ejecuta la(s) sentencia(s), de otro modo se continúa con las sentencias que siguen a la instrucción Sí.

Universidad Nacional del Santa Facultad de Ingeniería Escuela Profesional de Ingeniería de Sistemas e Informática

Universidad Nacional del Santa Facultad de Ingeniería Escuela Profesional de Ingeniería de Sistemas e Informática

Para la condición que es una expresión booleana, iniciaremos utilizando los operadores relacionales que se detallan a continuación:

Operador

Nombre

Ejemplo

Significado

<

menor que

a<b

a es menor que b

>

mayor que

a>b

a es mayor que b

==

igual a

a==b

a es igual a b

!=

no igual a

a!=b

a no es igual a b

<=

menor que o igual a

a<=5

a es menor que o igual a b

>=

mayor que o igual a

a>=b

a es menor que o igual a b

En JAVA el operador de igualdad es ==, asignación.

Operadores lógicos Los operadores lógicos son:

no confundir con

el simple

= que

es

&& AND

(el resultado es verdadero si ambas expresiones son verdaderas)

|| OR

(el resultado es verdadero si alguna expresión es verdadera)

! NOT

(el resultado invierte la condición de la expresión)

AND y OR trabajan con dos operandos y retornan un valor lógico basadas en las denominadas tablas de verdad. El operador NOT actúa sobre un operando. Estas tablas de verdad son conocidas y usadas en el contexto de la vida diaria, por ejemplo:

"si llueve Y tengo clases, utilizaré chompa", "si NO llueve, saldré a pasear", "si hay una buena película O tengo compañía, iré al cine". Las tablas de verdad de los operadores AND, OR y NOT se muestran en las tablas siguientes:

Tabla de verdad del operador lógico AND

x

y

resultado

true

true

true

true

false

false

false

true

false

false

false

false

Tabla de verdad del operador lógico OR

x

y

resultado

true

true

true

true

false

true

false

true

true

false

false

false

Tabla de verdad del operador lógico NOT

x resultado true false false true
x resultado
true
false
false
true
Universidad Nacional del Santa Facultad de Ingeniería Escuela Profesional de Ingeniería de Sistemas e Informática

Universidad Nacional del Santa Facultad de Ingeniería Escuela Profesional de Ingeniería de Sistemas e Informática

Ejemplos:

Los operadores AND y OR combinan expresiones relacionales cuyo resultado viene dado por la última columna de sus tablas de verdad. Por ejemplo:

(a<b) && (b<c)

es verdadero (true), si ambas son verdaderas. Si alguna o ambas son falsas el resultado es falso (false).

En cambio, la expresión

(a<b) || (b<c)

es verdadera si una de las dos comparaciones lo es. Si ambas, son falsas, el resultado es falso.

La expresión " NO a es menor que b"

!(a<b)

es falsa si (a<b) es verdadero, y es verdadera si la comparación es falsa. Por tanto, el operador NOT actuando sobre (a<b) es equivalente a

(a>=b)

La expresión "NO a es igual a b"

!(a==b)

es verdadera si a es distinto de b, y es falsa si a es igual a b. Esta expresión es equivalente a

(a!=b)

Ejemplo 3-1 Del ejemplo anterior, que permitía obtener el promedio ponderado de las notas de un alumno, agregar la consideración si acaso tiene un promedio mayor o igual que 11, se debe enviar el mensaje de Aprobado. Solución

Constantes

Proceso (operaciones)

 

Nombre = Juan

(tipo: Cadena)

Obtener el promedio:

 

NotaEE = 09

(tipo: entero)

(NotaEE*2+NotaPR)/3.0

NotaPR = 14

(tipo: entero)

Condición

Variable

Promedio>=11.0

Promedio

(tipo: real)

Salida

Condicion = “”

(tipo: Cadena)

Nombre,

Promedio

y

condición

Diagrama de Flujo
Diagrama de Flujo

Diagrama de Nassi-Shneiderman

Pseudocódigo

Diagrama de Flujo Diagrama de Nassi-Shneiderman Pseudocódigo Inicio Nombre = “Juan” NotaEE = 9 NotaPR =

Inicio Nombre = “Juan” NotaEE = 9 NotaPR = 14 Condición = “” Promedio =(NotaEE*2+NotaPR)/3 Si Promedio >= 11 entonces Condición = “Aprobado” Fin_si Imprimir Nombre, Promedio Imprimir Condición

Fin

Si Promedio >= 11 entonces Condición = “Aprobado” Fin_si Imprimir Nombre, Promedio Imprimir Condición Fin 17

17

Universidad Nacional del Santa Facultad de Ingeniería Escuela Profesional de Ingeniería de Sistemas e Informática

Universidad Nacional del Santa Facultad de Ingeniería Escuela Profesional de Ingeniería de Sistemas e Informática

Ejercicios

1. Elabore el algoritmo que solicite ingresar la edad de una persona y si es mayor o igual a 18 años se debe imprimir el mensaje “Es tu obligación obtener DNI azul”.

2. Diseñar el algoritmo que luego de ingresar el nombre y el sueldo de un trabajador, se evalué si el sueldo es menor al sueldo mínimo en cuyo caso se le aplica una bonificación del 15%. Debe imprimir el nombre, el sueldo y su sueldo incrementado.

3. Construya un algoritmo que solicite ingresar dos números enteros distintos cualquiera, si el primer número ingresado es mayor que el segundo, entonces se debe imprimir la diferencia, la multiplicación y la división entre ellos.

4. Desarrolle la solución que nos muestre como resultado si una persona es adulta, para ello se debe ingresar el nombre y la edad de la persona. Considerar persona adulta a aquellos comprendidos entre los 20 y 40 años.

Referencias Bibliográficas

Cairó Battistutti, O. (2005). Metodología de la Programación. Algoritmos, diagramas de flujo y programas. México: Alfaomega. Joyanes Aguilar, L. (2008). FUNDAMENTOS DE PROGRAMACIÓN. Algoritmos, estructura de datos. Madrid. España: McGRAW-HILL/INTERAMERICANA DE ESPAÑA, S. A. U. Vasco, U. d. (1 de Abr de 2016). Operadores Lógicos y Relacionales. Obtenido de http://www.sc.ehu.es/sbweb/fisica/cursoJava/fundamentos/introduccion/operado

res1.htm

Universidad Nacional del Santa Facultad de Ingeniería Escuela Profesional de Ingeniería de Sistemas e Informática

Universidad Nacional del Santa Facultad de Ingeniería Escuela Profesional de Ingeniería de Sistemas e Informática

Profesional de Ingeniería de Sistemas e Informática Reconociendo que la estructura selectiva simple tiene sus

Reconociendo que la estructura selectiva simple tiene sus limitaciones pues solamente maneja una sola posibilidad, cuando la mayor parte de las veces necesitamos manejar dos alternativas de solución. La estructura selectiva doble permite al programa elegir entre dos opciones, si la condición es verdadera se ejecutará el grupo de instrucciones 1, caso contrario de ser falso se ejecutará el grupo de instrucciones 2. Es necesario precisar que solamente se ejecuta una de las 2 opciones o bien el conjunto de sentencias cuando la condición es Verdadera o bien el conjunto de sentencias cuando la condición es Falsa, pues ambas son mutuamente excluyentes.

Diagrama de flujo

Pseudocódigo

son mutuamente excluyentes. Diagrama de flujo Pseudocódigo Diagrama de Nassi-Shneiderman Ejemplo 3-2 Continuando con
son mutuamente excluyentes. Diagrama de flujo Pseudocódigo Diagrama de Nassi-Shneiderman Ejemplo 3-2 Continuando con

Diagrama de Nassi-Shneiderman

de flujo Pseudocódigo Diagrama de Nassi-Shneiderman Ejemplo 3-2 Continuando con el ejemplo anterior, en el cual

Ejemplo 3-2 Continuando con el ejemplo anterior, en el cual se obtenía el promedio ponderado de las notas de un alumno, que cuando tenía un promedio mayor o igual que 11, se enviaba el mensaje de “Aprobado”, ahora hay que considerar enviar el mensaje “Desaprobado” si el promedio es el caso contrario menor que 11. Solución

Constantes Nombre = Juan

(tipo: Cadena)

Variable Promedio

(tipo: real)

NotaEE = 9

(tipo: entero)

Condición = “”

(tipo: Cadena)

NotaPR = 14

(tipo: entero)

Proceso (operaciones)

Obtener el promedio:

(NotaEE*2+NotaPR)/3.0

Universidad Nacional del Santa Facultad de Ingeniería Escuela Profesional de Ingeniería de Sistemas e Informática

Universidad Nacional del Santa Facultad de Ingeniería Escuela Profesional de Ingeniería de Sistemas e Informática

Condición

Salida

Promedio>=11

Nombre,

Promedio

y

condición

Diagrama de Flujo Solución (Diagrama de Flujo)

condición Diagrama de Flujo Solución (Diagrama de Flujo) Solución Pseudocódigo Inicio Nombre = “Juan” NotaEE =

Solución Pseudocódigo

Inicio Nombre = “Juan” NotaEE = 9 NotaPR = 14 Condición = “” Promedio =(NotaEE*2+NotaPR)/3 Si Promedio >= 11 entonces Condición = “Aprobado” Caso contrario Condicion = “Desaprobado” Fin_si Imprimir Nombre, Promedio Imprimir Condición

Fin

Solución Diagrama de Nassi-Shneiderman

Promedio Imprimir Condición Fin Solución Diagrama de Nassi-Shneiderman ALGORITMOS Mg. Hugo Caselli Gismondi 20
Universidad Nacional del Santa Facultad de Ingeniería Escuela Profesional de Ingeniería de Sistemas e Informática

Universidad Nacional del Santa Facultad de Ingeniería Escuela Profesional de Ingeniería de Sistemas e Informática

Ejercicios

1. Elabore el algoritmo que solicite ingresar la edad de una persona y si es mayor o igual a 18 años se debe imprimir el mensaje “Es tu obligación obtener DNI azul” caso contrario le debe decir cuántos años le falta para ser mayor de Edad

2. Diseñar el algoritmo que luego de ingresar el nombre y el sueldo de un trabajador, se evalué si el sueldo es menor o igual al sueldo mínimo en cuyo caso se le aplica una bonificación del 15% caso contrario solo le debe aplicar una bonificación de 5% Debe imprimir el nombre, el sueldo y el sueldo incrementado.

3. Para verificar que 3 valores dados (lados) forman un triángulo, se debe probar si se cumple la siguiente condición: “La suma de cualquiera de dos lados deberá ser mayor que el tercer lado”. Enviar mensaje sino forman un triángulo.

4. La empresa de turismo “El Holandés Errante”, nos solicita que le facilitemos un pequeño programa para poder orientar mejor a sus clientes con respecto a la oferta que están promocionando, con respecto al precio de los viajes de ida y vuelta de los tours que deben ser calculados según la distancia (2.35 Soles/km) los días de permanencia en el sitio a visitar, con una reducción del 35% si la permanencia supera los 7 días y la distancia los 1000 Km.

5. Elabore el algoritmo que permita determinar las raíces reales de una ecuación de 2do grado (ecuación cuadrática), solo se debe enviar un mensaje si acaso las raíces son imaginarias.

Referencias Bibliográficas

Joyanes Aguilar, L. (2008). FUNDAMENTOS DE PROGRAMACIÓN. Algoritmos, estructura de datos. Madrid. España: McGRAW-HILL/INTERAMERICANA DE ESPAÑA, S. A. U.

de datos. Madrid. España: McGRAW-HILL/INTERAMERICANA DE ESPAÑA, S. A. U. ALGORITMOS Mg. Hugo Caselli Gismondi 21
Universidad Nacional del Santa Facultad de Ingeniería Escuela Profesional de Ingeniería de Sistemas e Informática

Universidad Nacional del Santa Facultad de Ingeniería Escuela Profesional de Ingeniería de Sistemas e Informática

Semana 04

Semana 04.- Estructura de selección múltiple y de control: desde

04.- Estructura de selección múltiple y de control: desde Muchas veces es necesario atender más de

Muchas veces es necesario atender más de una condición para obtener un resultado que está sujeto a múltiples posibilidades, es por ello que podemos anidar en un primer momento las estructuras de selección simple y dobles para encontrar y ofrecer el resultado esperado.

y dobles para encontrar y ofrecer el resultado esperado. Diagrama de flujo Pseudocódigo Si condición 1

Diagrama de flujo

Pseudocódigo

Si condición 1 entonces Sentencia(s) 1 Caso contrario Si condición 2 entonces Sentencia(s) 2

(

)

Caso contrario Si condición n entonces Sentencia(s) n1 Caso contrario Sentencia(s) n2 Fin_si

Universidad Nacional del Santa Facultad de Ingeniería Escuela Profesional de Ingeniería de Sistemas e Informática

Universidad Nacional del Santa Facultad de Ingeniería Escuela Profesional de Ingeniería de Sistemas e Informática

Nassi-Shneiderman

de Ingeniería de Sistemas e Informática Nassi-Shneiderman Ejemplo 4-1 Elabore el algoritmo que determine cuál es

Ejemplo 4-1 Elabore el algoritmo que determine cuál es el mayor de tres números dados.

Solución:

cuál es el mayor de tres números dados. Solución :  Diagrama de flujo ALGORITMOS Mg.

Diagrama de flujo

Universidad Nacional del Santa Facultad de Ingeniería Escuela Profesional de Ingeniería de Sistemas e Informática

Universidad Nacional del Santa Facultad de Ingeniería Escuela Profesional de Ingeniería de Sistemas e Informática

Pseudocódigo

 

Inicio

a =

1, b

= 2,

c =

3

mayor = 0

 

si (a>b y a>c) entonces mayor = a caso contrario si (b>a y b>c) entonces mayor = b Caso contrario si (c>a y c>b) entonces mayor = c fin_si Imprimir “El número mayor es: “ mayor

Fin

Nassi-Shneiderman

 

-----------

Implemente su solución -----------------

Otra solución(2)

su solución  ----------------- Otra solución(2)  Diagrama de flujo ALGORITMOS Mg. Hugo Caselli Gismondi 24

Diagrama de flujo

Universidad Nacional del Santa Facultad de Ingeniería Escuela Profesional de Ingeniería de Sistemas e Informática

Universidad Nacional del Santa Facultad de Ingeniería Escuela Profesional de Ingeniería de Sistemas e Informática

Pseudocódigo

Inicio

a =

mayor = 0

1, b

= 2,

c =

3

si (a>b) entonces si (a>c) entonces mayor = a caso contrario mayor = c fin_si caso contrario si (b>c) entonces mayor = b caso contrario mayor = c fin_si fin_si Imprimir “El número mayor es: “ mayor

Fin

Nassi-Shneiderman

-----------

Implemente su solución -----------------

Otra solución(3)  Diagrama de flujo -----
Otra solución(3)
 Diagrama de flujo
-----

Pseudocódigo y

Nassi-Shneiderman

Implementar solución -----

Universidad Nacional del Santa Facultad de Ingeniería Escuela Profesional de Ingeniería de Sistemas e Informática

Universidad Nacional del Santa Facultad de Ingeniería Escuela Profesional de Ingeniería de Sistemas e Informática

Profesional de Ingeniería de Sistemas e Informática Como se habrá dado cuenta a medida que hay

Como se habrá dado cuenta a medida que hay más valores entre las cuales elegir, el uso de las sentencias si (if) anidadas, le da mayor complejidad a nuestras soluciones, es por ello tenemos en los lenguajes de programación una alternativa para que nuestro código sea más legible a través de la selección múltiple de casos, en la cual se evaluará una expresión que puede tomar valores distintos, de tal manera que si la expresión es 1 se ejecutará el juego de sentencias 1 para ese caso, si toma valor 2 el juego de sentencias 2 para este caso, así sucesivamente, luego de lo cual se proseguirá con las demás sentencias del programa.

Diagrama de flujo

las demás sentencias del programa.  Diagrama de flujo  Pseudocódigo Según expresión hacer Caso valor

Pseudocódigo

Según expresión hacer Caso valor 1 Sentencia(s) 1 Caso valor 2 Sentencia(s) 2 Caso valor 3 Sentencia(s) 3

(

)

Caso contrario Sentencia(s) n Fin_según

Nassi-Shneiderman

contrario Sentencia(s) n Fin_según Nassi-Shneiderman Ejemplo 4-2 Luego de ingresar el nombre de la persona,

Ejemplo 4-2 Luego de ingresar el nombre de la persona, solicitar ingresar un número entre 1 y 7, luego de lo cual en usuario debe recibir el mensaje de que día de la semana se trata.

Solución

Diagrama de Flujo

Universidad Nacional del Santa Facultad de Ingeniería Escuela Profesional de Ingeniería de Sistemas e Informática

Universidad Nacional del Santa Facultad de Ingeniería Escuela Profesional de Ingeniería de Sistemas e Informática

Profesional de Ingeniería de Sistemas e Informática  Diagrama de Nassi-Shneiderman  Pseudocódigo

Diagrama de Nassi-Shneiderman

Sistemas e Informática  Diagrama de Nassi-Shneiderman  Pseudocódigo Inicio Leer nombre, numDia Según

Pseudocódigo Inicio Leer nombre, numDia Según numDia hacer Caso 1: diaSemana=”Lunes” Caso 2: diaSemana=”Martes” Caso 3: diaSemana=”Miércoles” Caso 4: diaSemana=”Jueves” Caso 5: diaSemana=”Viernes” Caso 6: diaSemana=”Sábado”

ALGORITMOS

Mg. Hugo Caselli Gismondi

27

Universidad Nacional del Santa Facultad de Ingeniería Escuela Profesional de Ingeniería de Sistemas e Informática

Universidad Nacional del Santa Facultad de Ingeniería Escuela Profesional de Ingeniería de Sistemas e Informática

Caso 7: diaSemana=”Domingo” Por defecto: diaSemana=”” Fin_según Imprimir nombre, diasemana Fin

Ejercicios

4.1 Desarrolle el algoritmo que solicite ingresar 2 datos en variables de tipo entero,

enseguida evalúe la siguiente función

Valor =

25

* Y

Si X = 1

25

^ Y

Si X = 2

25 /

Y

Si X = 3

1. Para cualquier valor de X

Utilice selección múltiple de casos.

4.2 Construya un algoritmo utilizando selección múltiple de casos, que luego de ingresar la categoría y el sueldo de un trabajador, calcule la bonificación correspondiente por cumplimiento de metas, de acuerdo con el siguiente cuadro:

Categoría

Tasa Bonificación

 

A 20%

 

B 15%

 

C 10%

 

D 5%

Al final debe imprimir la categoría, sueldo, bonificación y sueldo incrementado.

4.3 Para este ejercicio previo, se solicita elaborar un algoritmo de solución utilizando

selección múltiple de casos. Que solicite ingresar nombre y nota del Estudiante,

se evalúe de tal manera que, si tiene entre 20 y 18 se le considere Excelente,

entre 17 y 15 se considera Bueno, entre 14 y 11 se considera Regular, entre 10 y

6 Malo y finalmente entre 5 y 0 Pésimo. Se debe imprimir el nombre del

estudiante y su condición.

4.4 Desarrolle el algoritmo que luego de ingresar 3 números enteros diferentes, los

muestre de manera descendente. (Selección múltiple)

4.5 Construya e algoritmo que solicite ingresar un número entero, se debe determinar

e imprimir este número es positivo, negativo o nulo.

4.6 Elabore el algoritmo que solicite ingresar un numero entero, se debe determinar si

es par o impar.

4.7 El costo de las llamadas telefónicas internacionales depende de la tarifa por la distancia geográfica entre los países de origen y destino, así como de los minutos hablados. Los costos respectivos a los diversos destinos desde Perú a cada continente o región se muestran a continuación:

Universidad Nacional del Santa Facultad de Ingeniería Escuela Profesional de Ingeniería de Sistemas e Informática

Universidad Nacional del Santa Facultad de Ingeniería Escuela Profesional de Ingeniería de Sistemas e Informática

Código

Continente/región

Tarifa (S/.)

15

América

1.25

20

Europa

1.75

25

Asia

2.25

30

África

2.00

35

Oceanía

2.50

Ingrese nombre de usuario, código y minutos hablados, determine el costo.

de usuario, código y minutos hablados, determine el costo. Iniciamos el procesamiento de más de un

Iniciamos el procesamiento de más de un dato, utilizando la estructura repetitiva desde la cual es muy útil cuando se conoce el número de veces que se desea procesar un conjunto de instrucciones, es decir el número de iteraciones es constante o fijo. Esta estructura luego de ejecutar las sentencias que contiene en el número indicado, de manera automática sede el paso a las siguientes instrucciones que continúan en el programa

Diagrama de Flujo

que continúan en el programa  Diagrama de Flujo  Pseudocódigo desde i Sentencia(s) Fin_desde 0

Pseudocódigo

desde i Sentencia(s) Fin_desde

Flujo  Pseudocódigo desde i Sentencia(s) Fin_desde 0 hasta n hacer o Para i Sentencia(s) Fin_para

0 hasta n hacer

o

Para i Sentencia(s) Fin_para

0 hasta n hacer o Para i Sentencia(s) Fin_para 0 hasta n hacer ALGORITMOS Mg. Hugo

0 hasta n hacer

Universidad Nacional del Santa Facultad de Ingeniería Escuela Profesional de Ingeniería de Sistemas e Informática

Universidad Nacional del Santa Facultad de Ingeniería Escuela Profesional de Ingeniería de Sistemas e Informática

Nassi-Shneiderman

de Sistemas e Informática  Nassi-Shneiderman La sentencia desde proporciona una forma compacta para

La sentencia desde proporciona una forma compacta para iterar sobre un rango de valores. Los programadores a menudo se refieren a él como el "bucle" debido a la forma en la que se realiza un bucle varias veces hasta que una condición particular está satisfecha.

Ejemplo 4-3 Obtenga la suma de los 100 primeros números enteros.

Solución

Diagrama de Flujo

primeros números enteros. Solución  Diagrama de Flujo  Pseudocódigo Inicio suma desde x 0 1

Pseudocódigo

Inicio suma desde x

0
0

1 hasta n con paso 1 hacer suma+x

suma Fin_desde Escribir suma

Fin

Universidad Nacional del Santa Facultad de Ingeniería Escuela Profesional de Ingeniería de Sistemas e Informática

Universidad Nacional del Santa Facultad de Ingeniería Escuela Profesional de Ingeniería de Sistemas e Informática

Nassi-Shneiderman

de Sistemas e Informática  Nassi-Shneiderman Ejemplo 4-4 Obtenga la tabla de multiplicar del 5 

Ejemplo 4-4

Obtenga la tabla de multiplicar del 5

Pseudocódigo

Inicio desde x

de multiplicar del 5  Pseudocódigo Inicio desde x 1 hasta 12 con paso 1 hacer

1 hasta 12 con paso 1 hacer

Escribir x, “ * 5 = “, 5*x Fin_desde

Fin

Implementar solución en Diagrama de flujo y Nassi-Shneiderman

Ejercicios

4.8 Modifique el ejemplo 4-4 de tal manera que se pueda ver la tabla de multiplicar

del número que uno indique.

4.9 Amplié el ejercicio anterior de forma que se pueda ver las tablas de multiplicar

del 0 al 12.

4.10 Teniendo en cuenta que un número es perfecto si “la suma de sus divisores

excepto el mismo es igual al propio número”. Elabore el algoritmo que calcule e

imprima los números perfectos menores o iguales a N.

4.11 Elabore el algoritmo que permita ingresar 10 valores enteros positivos cualquiera

utilizando el teclado, luego debe mostrar la suma de los valores ingresados y el

promedio.

4.12 Construya el algoritmo que lea la nota de 10 alumnos, al final nos debe reportar

cuantos alumnos hay aprobados y cuantos desaprobados.

4.13 Desarrolle el algoritmo que lea 10 números enteros, debe reportar cuantos de los

valores ingresados son múltiplo de 3 y 5, debe tener en cuenta que hay ciertos

números que son múltiplos de 5 y de 3 a la vez.

Universidad Nacional del Santa Facultad de Ingeniería Escuela Profesional de Ingeniería de Sistemas e Informática

Universidad Nacional del Santa Facultad de Ingeniería Escuela Profesional de Ingeniería de Sistemas e Informática

Semana 05

Semana 05.- Estructuras de control: mientras, hacer mientras.
Semana 05.- Estructuras de control: mientras, hacer mientras.

Estructuras repetitivas

La ventaja de tener un computador es que puede resolver problemas que conllevan manejar operaciones que son repetitivas para cuando una persona lo realiza, es por ello que los lenguajes de programación nos brindan sentencias que permiten realizar estas tareas de una manera mucho más sencilla, de allí el gran auge que tuvieron las aplicaciones informáticas que automatizaron el trabajo para hacerlo más rápido y eficiente. Estas estructuras se conforman como bucles o rizos (loops), denominándose iteración el conjunto de sentencias que se ejecutan repetidas veces.

el conjunto de sentencias que se ejecutan repetidas veces. La estructura mientras (while) es aquella que

La estructura mientras (while) es aquella que primero evalúa la condición y luego ejecuta el conjunto de sentencias que contiene, si la condición es falsa, no se ejecuta ninguna sentencia dentro del cuerpo de la sentencia while y se prosigue con la siguiente sentencia después del bucle mientras.

Diagrama de flujo

sentencia después del bucle mientras. Diagrama de flujo Nassi-Shneiderman Pseudocódigo Estructura repetitiva

Nassi-Shneiderman

Pseudocódigo

Estructura repetitiva (WHILE-DO)

Mientras condición hacer Sentencia(s) Fin_mientras

repetitiva (WHILE-DO) Mientras condición hacer Sentencia(s) Fin_mientras ALGORITMOS Mg. Hugo Caselli Gismondi 32
repetitiva (WHILE-DO) Mientras condición hacer Sentencia(s) Fin_mientras ALGORITMOS Mg. Hugo Caselli Gismondi 32
Universidad Nacional del Santa Facultad de Ingeniería Escuela Profesional de Ingeniería de Sistemas e Informática

Universidad Nacional del Santa Facultad de Ingeniería Escuela Profesional de Ingeniería de Sistemas e Informática

Contadores

En las estructuras repetitivas se hace necesario contar las acciones que ocurren en cada iteración del bucle, para ello se utilizan los contadores que contendrá las sumas parciales sucesivas de los diferentes valores que pueden ser de incremento o decremento que debe ser constante tanto positivo como negativo. En definitiva, el contador es una variable de tipo entero. Ejemplo:

contador = 0 contador = contador + 1

cont = 0 cont = cont – 1

// se inicializa // se decrementa

En ambos casos el contador incrementa o decrementa en un valor constante igual a 1.

Acumuladores

De igual manera en las estructuras repetitivas será necesario mantener cantidades variables de sumas sucesivas, a esto se denomina acumulador, que se diferencia del contador por que los incrementos o decrementos no son constantes sino variables. Ejemplo:

Total = 0 Total = Total + X

// se inicializa // X es variable no constante

Ejemplo 5-1 Obtenga la suma de los 100 primeros números enteros. Solución

 Diagrama de Flujo  Diagrama de Nassi-Shneiderman  Pseudocódigo Inicio x = 0, suma
 Diagrama de Flujo
 Diagrama de Nassi-Shneiderman
Pseudocódigo
Inicio
x = 0, suma = 0
mientras (x<100) hacer
x
= x +
1
suma = suma + x
fin_si
Imprimir “La suma es: “ suma
Fin

ALGORITMOS

Mg. Hugo Caselli Gismondi

33

Universidad Nacional del Santa Facultad de Ingeniería Escuela Profesional de Ingeniería de Sistemas e Informática

Universidad Nacional del Santa Facultad de Ingeniería Escuela Profesional de Ingeniería de Sistemas e Informática

Ejercicios

5.1 Imprimir los números enteros comprendidos entre -50 y 50

5.2 Imprimir los números del 2 al 200 pero de 2 en 2.

5.3 Imprimir los números del 100 al 0

5.4 Suponga que tenemos que calcular la suma de los gastos que hicimos cuando

fuimos de compras al hipermercado La Perla, tenemos todo un listín anotado por

lo que tendremos la precaución de indicar el termino de los cálculos con un valor

negativo (al final no podemos tener gastos negativos).

5.5 Elabore el algoritmo que permita ingresar un número entero positivo cualquiera

entre 1 y 20, calcule e imprima el cubo de ese número, utilice -1 para indicar que

no quiere calcular más.

5.6 Desarrolle un algoritmo que dado un número entero positivo cualquiera, menor

que 1000, nos muestre la suma de los números pares e impares.

5.7 Construya el algoritmo que obtenga la suma e imprima los términos de la

siguiente serie:

2, 5, 7, 10, 12, 15, 17, ……

, 1800

5.8 Resuelva el siguiente problema que tiene el jefe de personal de una

constructora, tiene que pagar a una lista no conocida de operarios que laboraron

en un día feriado, teniendo en cuenta lo siguiente:

Si el sueldo es menor o igual a S/. 850 se le aumenta 18%

Si el sueldo es mayor a S/. 850 se le aumenta 12%

Al final debe imprimir el sueldo nuevo de cada trabajador y el total de la planilla

de ese día.

5.9 Dado N números enteros obtenga:

Cuantos números ingresados fueron mayores que cero

El promedio de los números positivos

El promedio de todos los números

5.10 Construya el algoritmo que dado N números enteros como dato, calcule el mayor

y el menor de estos números.

Universidad Nacional del Santa Facultad de Ingeniería Escuela Profesional de Ingeniería de Sistemas e Informática

Universidad Nacional del Santa Facultad de Ingeniería Escuela Profesional de Ingeniería de Sistemas e Informática

Profesional de Ingeniería de Sistemas e Informática mientras (do while), que a diferencia del hacer …

mientras (do

while), que a diferencia del hacer … mientras, esta estructura primero evalúa el

conjunto de sentencias o instrucciones contenidos dentro del cuerpo de la sentencia,

Dentro de las estructuras repetitivas, encontramos la estructura hacer

para luego evaluar la condición, que de ser verdadera se prosigue con la ejecución de

las sentencias, de ser falsa la condición, se prosigue con las demás sentencias o

instrucciones del programa.

Diagrama de flujo

sentencias o instrucciones del programa. Diagrama de flujo Nassi-Shneiderman Pseudocódigo Hacer Sentencia(s)

Nassi-Shneiderman

Pseudocódigo

Hacer Sentencia(s) Mientras condición

Pseudocódigo Hacer Sentencia(s) Mientras condición Ejemplo 5-2 Obtenga la suma de los 100 primeros números
Pseudocódigo Hacer Sentencia(s) Mientras condición Ejemplo 5-2 Obtenga la suma de los 100 primeros números

Ejemplo 5-2 Obtenga la suma de los 100 primeros números enteros. Solución

Pseudocódigo

Inicio x = 0, suma = 0 hacer

x =

x +

1

suma = suma + x mientras (x<100) Imprimir “La suma es: “ suma

Fin

Universidad Nacional del Santa Facultad de Ingeniería Escuela Profesional de Ingeniería de Sistemas e Informática

Universidad Nacional del Santa Facultad de Ingeniería Escuela Profesional de Ingeniería de Sistemas e Informática

Diagrama de Nassi-Shneiderman

Sistemas e Informática  Diagrama de Nassi-Shneiderman Ejercicios  Diagrama de Flujo Resuelva los ejercicios de

Ejercicios

Diagrama de Flujo

de Nassi-Shneiderman Ejercicios  Diagrama de Flujo Resuelva los ejercicios de la semana 07 con la

Resuelva los ejercicios de la semana 07 con la estructura do … while, de igual manera los ejercicios siguientes:

5.11

Un vendedor de golosinas ha hecho varias ventas en el día las cuales lleva anotado en una libreta, ayúdele a determinar cuántas ventas fueron menores o iguales a S/.10.00, cuantas fueron mayores a S/.10.00 pero menores a S/.20.00

cuántas fueron iguales o mayores a S/.20.00, haga los ingresos necesarios indicando terminar cuando ingrese un número negativo.

y

5.12

A

continuación, presentamos la conjetura de ULAM (En honor del matemático S.

Ulam) que dice:

 

a) Empezar con cualquier número positivo

b) Si es par divídalo entre 2; si es impar multiplíquelo por 3 y agréguele 1.

c) Obtener enteros sucesivamente repitiendo el proceso.

 

Al

final se debe obtener el número 1, independiente del entero inicial.

5.13

Desarrolle el algoritmo que lea un número entero N y calcule la suma de la

siguiente serie:

1 1 + 2 2 + 3 3 +

+ N n

(N número de términos de la serie)

Universidad Nacional del Santa Facultad de Ingeniería Escuela Profesional de Ingeniería de Sistemas e Informática

Universidad Nacional del Santa Facultad de Ingeniería Escuela Profesional de Ingeniería de Sistemas e Informática

5.14 Construya el algoritmo que calcule el término 150 de la serie de Fibonacci. Recuerde que los 2 primeros términos de la serie son 0 y 1. El resto se calculan como la suma de los 2 números inmediatos que le preceden. Ejemplo: 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, ……….

5.15 En la última elección de congresistas de nuestra región 4 candidatos en una mesa quieren el reconteo de los votos (identificarlos con los números 1, 2, ,3 y 4). Elabore el algoritmo que le permita al Presidente de mesa agilizar el conteo a medida que el secretario le va dictando en el orden que los va sacando del ánfora, para terminar, utilice el valor 0.

5.16 Con un algoritmo ayude a determinar a una empresa de N empleados, el trabajador de mayor sueldo de la empresa, al final debe imprimir el código del empleado, su nombre y sueldo.

5.17 El SENAMHI lleva los registros de los promedios mensuales de las lluvias caídas

en las principales regiones agrícolas del país. Ellos las han divido en 3 regiones:

Norte, Centro y Sur, calcule:

a) El promedio anual de la región Centro

b) El mes y registro con menor lluvia en la región Sur

c) La región con mayor lluvia anual Considere que los registros anuales de las regiones son diferentes)

Universidad Nacional del Santa Facultad de Ingeniería Escuela Profesional de Ingeniería de Sistemas e Informática

Universidad Nacional del Santa Facultad de Ingeniería Escuela Profesional de Ingeniería de Sistemas e Informática

Semana 06

Semana 06.- Funciones, procedimientos y algoritmos recursivos

06.- Funciones, procedimientos y algoritmos recursivos A medida que vamos avanzando, encontramos que los problemas

A medida que vamos avanzando, encontramos que los problemas a resolver son cada vez más complejos, ante ello la manera más fácil de abordar su solución es separarlo en pequeños problemas (divide y vencerás) de tal manera que en conjunto uno puede tener una solución que puede ser depurada de manera más sencilla, es decir los posibles errores se pueden detectar más rápido. En los lenguajes de programación estos pequeños problemas se les reconocen como subprogramas que su vez se identifican como funciones y procedimientos o subrutinas, los cuales pueden ser invocados desde cualquier parte del programa. Esta facilidad nos permite evitar la redundancia de código.

Funciones

Las funciones son una operación o método que recibe uno o más valores los cuales se denominan argumentos, que luego de procesarlos nos retornan un resultado.

Funciones predefinidas

Todos los lenguajes de programación nos proporcionan funciones predefinidas tanto numéricas, cadenas, de fechas.

Funciones matemáticas. - podemos enumerar las siguientes: valor absoluto, exponencial, potencia, raíz cuadrada, redondear, etc. A ellas se suman las funciones trigonométricas: seno, coseno, tangente y sus correspondientes arcos.

Funciones de cadenas. – se tiene: de información básica, de comparación de cadenas, de búsqueda de caracteres, de búsqueda de subcadenas, convertir mayúsculas a minúsculas y viceversa, etc.

Funciones de fecha y hora.- que devuelven la fecha y hora del sistema, que suman y restan fechas, que comparan fechas, etc.

Funciones del usuario

Las funciones predefinidas quedan cortas para solucionar la gran variedad de problemas, es por ello que los lenguajes de programación nos permiten generar nuestras propias funciones.

De manera general cualquier función responde a la siguiente estructura:

tipo_dato nombre_funcion(parámetros) instrucción(es) retorna valor fin_función

Ejemplo 6-1

Elaborar el algoritmo que mediante una función obtenga la suma de 2 números enteros positivos

Universidad Nacional del Santa Facultad de Ingeniería Escuela Profesional de Ingeniería de Sistemas e Informática

Universidad Nacional del Santa Facultad de Ingeniería Escuela Profesional de Ingeniería de Sistemas e Informática

Solución

Pseudocódigo (1)

Inicio //Programa principal Escribir “Ingrese valor 1: “ Leer n1 Escribir “Ingrese valor 2: “ Leer n2 Escribir “La suma de “,n1,“ + “,n2,“ = “,Suma2Num(n1, n2) Fin

Función Suma2Num(x, y)

Suma

retornar Suma

n2) Fin Función Suma2Num(x, y) Suma retornar Suma x + y Fin_función  Pseudocódigo (2) Inicio

x + y

Fin_función

Pseudocódigo (2)

Inicio //Programa principal Escribir “Ingrese valor 1: “ Leer n1 Escribir “Ingrese valor 2: “ Leer n2

S

Escribir “La suma de “,n1,“ + “,n2,“ = “,S

Escribir “La suma de “, n1 ,“ + “, n2 ,“ = “, S Suma2Num(n1, n2)

Suma2Num(n1, n2)

Fin

Función Suma2Num(x, y)

Suma

retornar Suma

n2) Fin Función Suma2Num(x, y) Suma retornar Suma x + y Fin_función Ejemplo 6-2 Elaborar el

x + y

Fin_función

Ejemplo 6-2

Elaborar el algoritmo que mediante una función obtenga la potencia n de un número x. Considere la posibilidad de que los exponentes puedan ser positivos y negativos.

Pseudocódigo

Inicio //Programa principal Escribir “Ingrese la base: “ Leer B Escribir “Ingrese valor de la potencia: “ Leer VP P = potencia(B, VP) Escribir B, “ elevado a la “, VP, “ es = “, P Fin

Universidad Nacional del Santa Facultad de Ingeniería Escuela Profesional de Ingeniería de Sistemas e Informática

Universidad Nacional del Santa Facultad de Ingeniería Escuela Profesional de Ingeniería de Sistemas e Informática

Función Potencia(x, n)

Y 1 Desde i 1 hasta ABS(n) con paso 1 hacer Y Y*x
Y
1
Desde i
1 hasta ABS(n) con paso 1 hacer
Y
Y*x

Fin_desde

Si n<0 entonces

Y

con paso 1 hacer Y Y*x Fin_desde Si n<0 entonces Y 1/Y Fin_si retornar Y Fin_función

1/Y

Fin_si retornar Y Fin_función

Procedimientos

Las funciones son muy útiles, pero tienen limitaciones al devolver un solo resultado, por lo general es necesario que el procesamiento devuelva más de un resultado, y es ahí que utilizaremos los procedimientos o subrutinas, los cuales resolverán un proceso particular, este procedimiento no necesita que algún valor se asocie a él o que lo devuelva como único resultado.

Variables locales y globales

1. Las variables locales son aquellas que se declara y definen dentro del cuerpo de un método y ese es su ámbito de alcance

2. Las variables globales se declaran en el algoritmo principal y están disponibles para todos los subprogramas.

principal y están disponibles para todos los subprogramas. Fuente: (Joyanes Aguilar, 2008) Ejemplo 6-3 Elabore el

Fuente: (Joyanes Aguilar, 2008)

Ejemplo 6-3 Elabore el algoritmo que determine las raíces reales de una Ecuación Cuadrática.

Universidad Nacional del Santa Facultad de Ingeniería Escuela Profesional de Ingeniería de Sistemas e Informática

Universidad Nacional del Santa Facultad de Ingeniería Escuela Profesional de Ingeniería de Sistemas e Informática

Solución_1 // Simple con valores constantes de prueba

Inicio //Programa principal

a

discri

constantes de prueba Inicio //Programa principal a discri 1.0, b -4.0, c b*b-4*a*c 4.0 Si discri>=0

1.0, b

de prueba Inicio //Programa principal a discri 1.0, b -4.0, c b*b-4*a*c 4.0 Si discri>=0 entonces

-4.0, c

b*b-4*a*c

//Programa principal a discri 1.0, b -4.0, c b*b-4*a*c 4.0 Si discri>=0 entonces x1 (-b+RAIZ(discri))/(2*a)

4.0

Si discri>=0 entonces

x1

(-b+RAIZ(discri))/(2*a)1.0, b -4.0, c b*b-4*a*c 4.0 Si discri>=0 entonces x1 x2 (-b-RAIZ(discri))/(2*a) Escribir “Las Raíces Reales

x2 (-b-RAIZ(discri))/(2*a) Escribir “Las Raíces Reales son: “ Escribir “X1 = “, x1 Escribir “X2 = “, x2 caso_contrario Escribir “La ecuación NO tiene raíces reales“ Fin_si Fin

“La ecuación NO tiene raíces reales“ Fin_si Fin Solución_2 // Con métodos y valores constantes de

Solución_2 // Con métodos y valores constantes de prueba

real discriminante

real a

Inicio //Programa principal Escribir “Raíces Ecuación Cuadrática“

1.0, bprincipal Escribir “Raíces Ecuación Cuadrática“ -4.0, c 4.0 Discrimina() RaicesReales() Fin Inicio

Escribir “Raíces Ecuación Cuadrática“ 1.0, b -4.0, c 4.0 Discrimina() RaicesReales() Fin Inicio

-4.0, c

Escribir “Raíces Ecuación Cuadrática“ 1.0, b -4.0, c 4.0 Discrimina() RaicesReales() Fin Inicio Discrimina

4.0

Discrimina()

RaicesReales()

Fin

Inicio Discrimina discriminante

Fin_discrimina

Fin Inicio Discrimina discriminante Fin_discrimina b*b-4*a*c Inicio RaicesReales Si discriminante>=0

b*b-4*a*c

Inicio RaicesReales

Si discriminante>=0 entonces

x1

x1 (-b+RAIZ(discri))/(2*a)

(-b+RAIZ(discri))/(2*a)

x2

x2 (-b-RAIZ(discri))/(2*a)

(-b-RAIZ(discri))/(2*a)

msgRaicesReales()

caso_contrario

msgRaizNOreal()

Fin_si

Fin_RaicesReales

msgRaicesReales() Escribir “Las Raíces Reales son: “ Escribir “X1 = “, x1 Escribir “X2 = “, x2 Fin_msgRaicesReales

Universidad Nacional del Santa Facultad de Ingeniería Escuela Profesional de Ingeniería de Sistemas e Informática

Universidad Nacional del Santa Facultad de Ingeniería Escuela Profesional de Ingeniería de Sistemas e Informática

msgRaizNOreal() Escribir “La ecuación NO tiene raíces reales“ Fin_msgRaizNOreal

RECURSIVIDAD Sabemos que un subprograma puede llamar a otro subprograma, esto es una función puede llamar a otra función y así sucesivamente consiguiéndose el anidamiento de funciones o subprogramas. También ocurre que un subprograma puede llamarse así mismo, entonces cuando una función o procedimiento se llama a si mismo se llama recursión, es decir que estas funciones o procedimientos son recursivos. La recursión se utiliza para evitar las estructuras repetitivas, aun así, debemos tener el cuidado de incluir una condición de termino, para que la ejecución no se vuelva un bucle (loop) infinito. Ejemplo 6-4 Algunas funciones matemáticas se definen de manera recursiva. Tal es el caso del factorial de un número entero, que se define como sigue:

n! = 1 x 2 x 3 x …

x (n-1) x n

n! =

1

si n=0

(n-1)!*n

si n>0

Solución NO Recursiva

INICIO

fact

fact 1

1

o también

tener presente que

0! = 1

Escribir “Ingrese número para calcular factorial: “ Leer n Si n=0 entonces

fact

calcular factorial: “ Leer n Si n=0 entonces fact 1 caso_contrario Desde i fact 1 hasta

1

caso_contrario Desde i fact

n Si n=0 entonces fact 1 caso_contrario Desde i fact 1 hasta n con paso 1
n Si n=0 entonces fact 1 caso_contrario Desde i fact 1 hasta n con paso 1

1 hasta n con paso 1 hacer fact*i

Fin_desde Fin_si Escribir “El factorial de “, n, ” es = “, fact FIN

Solución Recursiva

Universidad Nacional del Santa Facultad de Ingeniería Escuela Profesional de Ingeniería de Sistemas e Informática

Universidad Nacional del Santa Facultad de Ingeniería Escuela Profesional de Ingeniería de Sistemas e Informática

INICIO //Programa principal Escribir “Ingrese número para calcular factorial: “ Leer n F factorial(n) Escribir “El factorial de “, n, ” es = “, F FIN

Escribir “El factorial de “, n , ” es = “, F FIN Función factorial(x) Si

Función factorial(x) Si x=0 entonces retornar 1 caso_contrario retornar x*factorial(x-1) Fin_si Fin_función

Ejercicios

1.1 Elaborar el algoritmo para una aplicación que calcule el área de un circulo, triangulo o cuadrado. Se debe solicitar que figura geométrica se va a evaluar, luego de lo cual debemos ingresar los datos que sean necesarios. Generar una función para cada caso.

Area

círculo =

radio

2

*π

Area triángulo =

base * altura

2

Area

cuadrado =

lado * lado

1.2 Construya el algoritmo para una aplicación que convierta un número en base decimal a binario, para ello utilice una función a la cual se le pasará el número, dicha función devolverá el número convertido a binario en una cadena. Sabemos que, para convertir un número decimal a binario, debemos dividir entre 2 y sucesivamente el resultado también entre 2 hasta que no se pueda dividir más, el residuo de cada división formará el número binario que se almacenará en una cadena.

1.3 Elabore el algoritmo para, una aplicación que cuente el número de cifras de un número entero positivo que debemos ingresar por el teclado. Devolver el número de cifras con una función a la cual se le pasará el número.

Universidad Nacional del Santa Facultad de Ingeniería Escuela Profesional de Ingeniería de Sistemas e Informática

Universidad Nacional del Santa Facultad de Ingeniería Escuela Profesional de Ingeniería de Sistemas e Informática

1.4 Construya el algoritmo que a través de un menú de opciones permita obtener las áreas de un cuadrado, triángulo y círculo cada una de ellas en un procedimiento distinto que será invocado al elegir la opción que le corresponde. Debe dar la posibilidad de poder continuar con el cálculo de otra área.

1.5 Elabore el algoritmo recursivo que permita resolver una división por el método de restas sucesivas.

1.6 Construya un algoritmo recursivo que permita invertir un número. Ejemplo:

Entrada: 123, Salida: 321

1.7 Elabore un algoritmo recursivo que permita sumar los dígitos de un número. Ejemplo: Entrada: 123, Resultado: 6

Universidad Nacional del Santa Facultad de Ingeniería Escuela Profesional de Ingeniería de Sistemas e Informática

Universidad Nacional del Santa Facultad de Ingeniería Escuela Profesional de Ingeniería de Sistemas e Informática

Semana 07

Semana 07.- Aplicaciones que combinan las diversas estructuras de la unidad
Semana 07.- Aplicaciones que combinan las diversas estructuras de la unidad

Alcanzamos una serie de ejemplos que combinan las diversas estructuras de tal manera que podamos controlar el ingreso de ciertos valores válidos

Ejemplos

7.1. Construya el algoritmo que muestre un pequeño menú de 4 opciones con

números, cada que se seleccione uno nos diga que opción se eligió. Se debe

restringir al usuario para que solo pueda digitar esos números.

Solución

restringir al usuario para que solo pueda digitar esos números. Solución ALGORITMOS Mg. Hugo Caselli Gismondi
Universidad Nacional del Santa Facultad de Ingeniería Escuela Profesional de Ingeniería de Sistemas e Informática

Universidad Nacional del Santa Facultad de Ingeniería Escuela Profesional de Ingeniería de Sistemas e Informática

7.2. Modifique el algoritmo anterior, que luego de elegida cualquier opción permita preguntar si se desea continuar, de elegirse la opción desea continuar debe mostrarse el menú de opciones nuevamente, caso contrario darle un mensaje de despedida al usuario.

opciones nuevamente, caso contrario darle un mensaje de despedida al usuario. ALGORITMOS Mg. Hugo Caselli Gismondi
Universidad Nacional del Santa Facultad de Ingeniería Escuela Profesional de Ingeniería de Sistemas e Informática

Universidad Nacional del Santa Facultad de Ingeniería Escuela Profesional de Ingeniería de Sistemas e Informática

7.3. Diagrama de flujo maqueta de Proyecto de Producción de la asignatura.

7.3. Diagrama de flujo maqueta de Proyecto de Producción de la asignatura. ALGORITMOS Mg. Hugo Caselli
Universidad Nacional del Santa Facultad de Ingeniería Escuela Profesional de Ingeniería de Sistemas e Informática

Universidad Nacional del Santa Facultad de Ingeniería Escuela Profesional de Ingeniería de Sistemas e Informática

EJERCICIOS

7.1 Elabore el algoritmo que solo permita leer S o N.

7.2 Construya el algoritmo que cuente e imprima los múltiplos de 3 partiendo de la unidad hasta un valor máximo ingresado.

7.3 Elaborar el algoritmo que cuente e imprima los números que son múltiplo de 2 o de 3 para valores a partir de 1 y un número leído no mayor o igual que 200.

7.4 Generar el algoritmo que imprima el mayor y el menor de 5 números leídos.

7.5 Construya el algoritmo que cuente, sume e imprima los múltiplos de 2 que hay entre dos valores, siendo el segundo valor mayor que el primero.

7.6 Escriba el algoritmo que permita ingresar horas, minutos y segundos y que permita indicar la hora correcta. Ejemplo se ingresa 3 horas, 121 minutos 121 segundos la respuesta debe ser 5 horas 03 minutos 01 Segundo.

7.7 Generar el algoritmo que solicite leer un número menor o igual a 2000 luego del cual se debe escribir su equivalente en números romanos.

7.8 Escriba la línea en pseudocódigo equivalente, a las siguientes fórmulas matemáticas:

(

p

1200

)(1 +

p

1200

)

N

a)

2 2 AB + A B Z = x + y n n ( n
2
2
AB
+
A B
Z =
x
+ y
n
n (
n −
1)
n−
=
a
n +
a
1 b
+

a

b)

n

(

n

m =

1)(

n

L

2)

(1 +

p

1200

a

n3

b

3

)

N

1

c)

Y

n2

b

2

+

1

1.2 1.2.3

7.9 Dado el siguiente algoritmo en pseudocódigo que incluye una función recursiva, diga qué valor se produciría para N=5. Efectué la prueba de escritorio para ello. INICIO //Programa principal Leer N Escribir N, “ sumado a 5 hasta “, N, “ veces es = “, sumaXT(N) FIN SumaXT(entero x) Si x==0 entonces Retornar 5 Caso contrario Retornar sumaXT(x-1)+5 Fin_si Fin_sumaXT

Semana 08.- Examen de 1era Unidad

Universidad Nacional del Santa Facultad de Ingeniería Escuela Profesional de Ingeniería de Sistemas e Informática

Universidad Nacional del Santa Facultad de Ingeniería Escuela Profesional de Ingeniería de Sistemas e Informática

Semana 09

Semana 09.- Arreglos, Arreglos unidimensionales
Semana 09.- Arreglos, Arreglos unidimensionales

El trabajar con variables simples a medida que tenemos que evaluar más datos sería

muy complicado, pues debemos incluir tantas variables para su procesamiento como

datos incluyamos, es por ello que los lenguajes de programación incluyen tipos de

datos estructurados como los arreglos (del inglés arrays) que están asociados a los

conceptos matemáticos de vector y por extensión matriz, que nos van a permitir

manipular juegos de valores del mismo tipo, pero definiendo una sola variable, como

veremos a continuación.

ARREGLOS Un arreglo es una estructura de datos interna por cuanto su manejo se da a nivel de la

memoria RAM del computador, reconociéndose los siguientes tipos: Unidimensionales

(vector), Bidimensionales (matrices) y Multidimensionales (cubos), cualquiera de ellos

es en un conjunto finito de elementos del mismo tipo de datos primitivos, los cuales se

pueden identificar por su posición en el arreglo. Un arreglo puede ser de tipo entero,

todos sus elementos serán valores enteros; o puede ser de tipo cadena y contendrá

solo elementos de cadenas, nunca una combinación de tipos de datos. Esto significa

que pueden ser: Numéricos y Alfanuméricos. Cada elemento puede tener un elemento

simple, los elementos pueden ser primitivos, la longitud del arreglo se fija cuando se

crea. La desventaja de trabajar con arreglos es que al manejarse a nivel de memoria

RAM, cuando uno apague el computador toda la data se perderá.

ARREGLOS UNIDIMENSIONALES

O vectores, también conocidos como listas o arrays son un conjunto de datos

homogéneos de tamaño n, para acceder a cada dato del arreglo hay que referenciarlo

a través de un índice o subíndice.

Para poder utilizar un arreglo debemos separarle espacio en la memoria, de acuerdo

con la necesidad del tratamiento de datos de un problema particular, para ello es

necesario declarar y crear el arreglo de la siguiente manera:

Declaración:

Tipo_dato[] Nombre_Arreglo

Creación:

Nombre_Arreglo

Creación : Nombre_Arreglo nuevo Tipo_dato[tamaño]

nuevo Tipo_dato[tamaño]

Declaración y creación en la misma línea:

Tipo_dato[] Nombre_Arreglo

y creación en la misma línea: Tipo_dato[] Nombre_Arreglo nuevo Tipo_dato[tamaño] ALGORITMOS Mg. Hugo Caselli

nuevo Tipo_dato[tamaño]

Universidad Nacional del Santa Facultad de Ingeniería Escuela Profesional de Ingeniería de Sistemas e Informática

Universidad Nacional del Santa Facultad de Ingeniería Escuela Profesional de Ingeniería de Sistemas e Informática

Un error común es manipular un arreglo no válido, que puede ser un valor negativo o

un número mayor a la longitud del arreglo.

Ejemplos

TamañoTamaño deldel arregloarreglo
TamañoTamaño deldel arregloarreglo

Declaración:

Creación:

entero[] notas

notas

Declaración : Creación: entero[] notas notas nuevo entero[15] Declaración y creación en la misma

nuevo entero[15]

Declaración y creación en la misma línea:

entero[] notas

Declaración y creación en la misma línea: entero[] notas nuevo entero[15] Se puede declarar e inicializar

nuevo entero[15]

Se puede declarar e inicializar el arreglo con valores de la siguiente manera:

entero notas

el arreglo con valores de la siguiente manera: entero notas {11, 15, 18, 12, 10} Luego

{11, 15, 18, 12, 10}

Luego puede ser manipulado dentro del código de solución en su forma simple:

notas[índice]

Operaciones con Arreglos Un arreglo al ser un dato estructurado, es posible darle mantenimiento a través de una

serie de operaciones como el recorrido, búsqueda, modificación, altas y bajas entre las

más básicas y esenciales.

RECORRIDO Por ahora iniciaremos con el recorrido que nos será de utilidad para poder resolver

una serie de casos básicos. El recorrido consiste en visitar cada celda del arreglo de

manera secuencial, utilizando cualquier estructura de control repetitiva, siempre

debemos tener en cuenta de no rebasar los límites del arreglo, los índices no pueden

ser menores que cero (underflow) o superiores al tamaño máximo definido para dicho

arreglo (overflow).

EJEMPLO 9-1 Se tienen las notas de examen escrito de 5 alumnos: 15, 9, 17, 8, 14. Elabore el diagrama de flujo que presente las 5 notas a través de la pantalla.

EJEMPLO 9-2 Sobre la base del ejercicio anterior, determinar la mayor nota y reportarla, elabore el diagrama Nassi-Shneiderman correspondiente.

EJEMPLO 9-3 De los datos de los ejercicios previos determine la mayor nota, la menor nota y el promedio de los 5 estudiantes. Elabore el pseudocódigo de solución.

Universidad Nacional del Santa Facultad de Ingeniería Escuela Profesional de Ingeniería de Sistemas e Informática

Universidad Nacional del Santa Facultad de Ingeniería Escuela Profesional de Ingeniería de Sistemas e Informática

RPTA EJEMPLO 9-1

de Ingeniería de Sistemas e Informática RPTA EJEMPLO 9-1 RPTA EJEMPLO 9-2 ALGORITMOS Mg. Hugo Caselli

RPTA EJEMPLO 9-2

de Ingeniería de Sistemas e Informática RPTA EJEMPLO 9-1 RPTA EJEMPLO 9-2 ALGORITMOS Mg. Hugo Caselli
Universidad Nacional del Santa Facultad de Ingeniería Escuela Profesional de Ingeniería de Sistemas e Informática

Universidad Nacional del Santa Facultad de Ingeniería Escuela Profesional de Ingeniería de Sistemas e Informática

RPTA EJEMPLO 9-3

INICIO entero notaEE[]

e Informática RPTA EJEMPLO 9-3 INICIO entero notaEE[] {14, 11, 7, 18, 9} entero may 0,

{14, 11, 7, 18, 9}

entero may

9-3 INICIO entero notaEE[] {14, 11, 7, 18, 9} entero may 0, men 0.0 999, suma

0, men

0.0

entero notaEE[] {14, 11, 7, 18, 9} entero may 0, men 0.0 999, suma 0 real

999, suma

notaEE[] {14, 11, 7, 18, 9} entero may 0, men 0.0 999, suma 0 real prom

0

real prom

desde i

0 hasta i=longitud(notaEE)-1 con paso 1 hacer

Escribir notaEE[i]

suma

si (notaEE > may) entonces

Escribir notaEE[i] suma si (notaEE > may) entonces suma + notaEE[i] may notaEE[i] fin_si si (notaEE

suma + notaEE[i]

may

notaEE[i]si (notaEE > may) entonces suma + notaEE[i] may fin_si si (notaEE < men) entonces men

fin_si

si (notaEE < men) entonces

men

notaEE[i]may notaEE[i] fin_si si (notaEE < men) entonces men fin_si fin_desde prom suma / longitud (notaEE)

fin_si fin_desde prom suma/longitud(notaEE) Escribir “El mayor valor de la lista es: “, may Escribir “El menor valor de la lista es: “, men Escribir “El promedio de las notas es: “, prom FIN

Escribir “El promedio de las notas es: “, prom FIN EJERCICIOS 9.1 Elabore el algoritmo en

EJERCICIOS

9.1 Elabore el algoritmo en diagrama de flujo, que procese los datos de 5 alumnos:

Juan, Luis, José, Iván y Adán, que tiene las siguientes notas de Examen Escrito:

10, 19, 5, 17, 11 y sus notas de prácticas: 15, 13, 10, 19, 11 respectivamente, se debe obtener su promedio teniendo en cuenta que el examen escrito tiene peso 2. Si su promedio es menor que 11 se debe indicar la condición de Desaprobado, caso contrario debe decir Aprobado, como se muestra a continuación:

Alumno

EE

NP

PROM

CONDICION

Juan

10

15

11.67

APROBADO

Luis

19

13

17.00

APROBADO

José

5

10

6.67

DESAPROBADO

Iván

17

19

17.67

APROBADO

Adán

11

9

10.33

DESAPROBADO

Universidad Nacional del Santa Facultad de Ingeniería Escuela Profesional de Ingeniería de Sistemas e Informática

Universidad Nacional del Santa Facultad de Ingeniería Escuela Profesional de Ingeniería de Sistemas e Informática

9.2 Generar un arreglo de 100 elementos, inicialice los datos de cada elemento del arreglo con la siguiente formula: i*2/3+3, donde i es la posición de cada dato del arreglo. Luego debe imprimir solo los elementos pares del arreglo, teniendo la precaución de numerar consecutivamente los datos impresos partiendo de 1. 9.3 Partiendo de la solución del ejercicio anterior, realizar las modificaciones pertinentes que permitan imprimir los resultados en 5 columnas, de manera muy similar a lo que se muestra a continuación:

01

– 3,00

02 – 4,33

03 – 5,67

04 – 7,00

05 – 8,33

06

-

xxx

07 – yyy

08 – zzz

09 – www

10 – qqq

(…)

(…)

(…)

(…)

(…)

Universidad Nacional del Santa Facultad de Ingeniería Escuela Profesional de Ingeniería de Sistemas e Informática

Universidad Nacional del Santa Facultad de Ingeniería Escuela Profesional de Ingeniería de Sistemas e Informática

JAVA

Java es un lenguaje de programación de propósito general orientado a objetos que fue diseñado por James Gosling de Sun Microsystems (posteriormente adquirida por la compañía Oracle). Su característica principal es permitir que los desarrolladores de aplicaciones escriban el programa una vez y lo ejecuten en cualquier dispositivo ("write once, run anywhere") cuyo acrónimo en inglés es WORA, significa que el código que es ejecutado en una plataforma no tiene que ser recompilado para correr en otra. Java se ha convertido en uno de los lenguajes de programación más populares en uso, con unos 10 millones de usuarios reportados. Oracle tiene dos productos que implementan Java Platform Standard Edition (Java SE) 7: Java SE Development Kit (JDK) 7 y Java SE Runtime Environment (JRE) 7. JDK 7 es un superconjunto de JRE 7, y contiene todo lo que está en JRE 7, además de herramientas tales como los compiladores y depuradores necesarios para el desarrollo de applets y aplicaciones. JRE 7 proporciona las bibliotecas, la Máquina Virtual de Java (JVM), y otros componentes para ejecutar applets y aplicaciones escritas en el lenguaje de programación Java. El siguiente diagrama conceptual ilustra los componentes de los productos de Oracle Java SE:

conceptual ilustra los componentes de los productos de Oracle Java SE: ALGORITMOS Mg. Hugo Caselli Gismondi
Universidad Nacional del Santa Facultad de Ingeniería Escuela Profesional de Ingeniería de Sistemas e Informática

Universidad Nacional del Santa Facultad de Ingeniería Escuela Profesional de Ingeniería de Sistemas e Informática

NETBEANS

NetBeans es un entorno de desarrollo integrado (integrated development environment:

IDE), hecho principalmente para el lenguaje de programación Java, es un producto libre y gratuito sin restricciones de uso.

NetBeans es un proyecto de código abierto fundado por Sun MicroSystems en junio de 2000, actualmente Sun Microsystems es administrado por Oracle Corporation.

Plataforma El marco de trabajo (framework) simplifica el desarrollo de aplicaciones para escritorio en Java Swing. El paquete de NetBeans IDE para Java SE contiene lo necesario para desarrollar plugins y aplicaciones basadas en la plataforma NetBeans; no se requiere un SDK adicional.

Las aplicaciones pueden instalar módulos dinámicamente.

La plataforma ofrece servicios reusables comunes para las aplicaciones de escritorio, permitiendo a los desarrolladores centrarse en la lógica de sus aplicaciones. Algunas de las características de la aplicación son:

Gestión de la interfaz de usuario (menús y barras de herramientas)

Gestión de configuración de usuario

Gestión de almacenamiento (guardar o cargar algún tipo de dato)

Gestión de ventana

Marco Asistente (soporta diálogos para a paso)

Librería visual de Netbeans

Herramientas de desarrollo integrado

Podemos descargarlo desde: https://netbeans.org/downloads/

Teniendo las siguientes posibilidades:

Universidad Nacional del Santa Facultad de Ingeniería Escuela Profesional de Ingeniería de Sistemas e Informática

Universidad Nacional del Santa Facultad de Ingeniería Escuela Profesional de Ingeniería de Sistemas e Informática

Profesional de Ingeniería de Sistemas e Informática NETBEANS • Permite compilación incremental • Es un

NETBEANS

Permite compilación incremental

Es un editor de Composición visual

Es un Ambiente de Desarrollo Integrado (IDE), que incluye:

Depurador

Editor de código fuente

Explorador de Proyectos y Archivos

Explorador de Servidores y procesos en ejecución

Control de Versiones

Repositorio de Drivers JDBC y ejecutor de comandos SQL

Tiene

Herramientas

avanzadas

de

edición

de

código

que

incluyen

formato

automático,

completado automático

e importación

de

paquetes y corrección

sensitiva.

La interface de Netbeans tiene la siguiente apariencia:

Universidad Nacional del Santa Facultad de Ingeniería Escuela Profesional de Ingeniería de Sistemas e Informática

Universidad Nacional del Santa Facultad de Ingeniería Escuela Profesional de Ingeniería de Sistemas e Informática

Profesional de Ingeniería de Sistemas e Informática Para elaborar un programa Java, debemos crear un proyecto,

Para elaborar un programa Java, debemos crear un proyecto, para ello seleccionamos en el menú principal la opción FILE, enseguida New Project …, tal como se ve en el gráfico que sigue:

New Project …, tal como se ve en el gráfico que sigue: En la ventana contextual

En la ventana contextual nos muestra las diferentes categorías de proyecto que se pueden trabajar, seleccionamos simplemente Java, porque es la que utilizaremos para las necesidades del curso y en el lado derecho Projects, seleccionamos Java Application y le damos siguiente (next)

Universidad Nacional del Santa Facultad de Ingeniería Escuela Profesional de Ingeniería de Sistemas e Informática

Universidad Nacional del Santa Facultad de Ingeniería Escuela Profesional de Ingeniería de Sistemas e Informática

Profesional de Ingeniería de Sistemas e Informática Enseguida le damos nombre al proyecto (Project name) en

Enseguida le damos nombre al proyecto (Project name) en nuestro caso Prueba, y nos fijamos que la casilla Create Main Class tenga un check, porque necesitamos que nuestro proyecto tenga una clase principal que es la que ejecutará el programa que resuelva un problema en particular.

que es la que ejecutará el programa que resuelva un problema en particular. ALGORITMOS Mg. Hugo
Universidad Nacional del Santa Facultad de Ingeniería Escuela Profesional de Ingeniería de Sistemas e Informática

Universidad Nacional del Santa Facultad de Ingeniería Escuela Profesional de Ingeniería de Sistemas e Informática

Al hacer click en Finish tenemos acceso al editor de Netbeas que nos permitirá

escribir código JAVA: Menú principal Explorador Navegador Editor de de proyectos entre objetos sentencias
escribir código JAVA:
Menú principal
Explorador
Navegador
Editor de
de proyectos
entre objetos
sentencias
Universidad Nacional del Santa Facultad de Ingeniería Escuela Profesional de Ingeniería de Sistemas e Informática

Universidad Nacional del Santa Facultad de Ingeniería Escuela Profesional de Ingeniería de Sistemas e Informática

Semana 10

Semana 10.- Arreglos multidimensionales: Matrices
Semana 10.- Arreglos multidimensionales: Matrices

Las matrices o tablas son arreglos bidimensionales, estos arrays de igual manera son un conjunto de datos homogéneos de tamaño m x n, esto implica que se deben

referenciar a través de dos índices o subíndices i, j, los cuales deben estar dentro de

los límites: 0 <= i < m y

0 <= j < n.

De igual manera para poder utilizar un arreglo bidimensional debemos separarle espacio en la memoria, de acuerdo con la necesidad del tratamiento de datos de un problema particular, para ello es necesario declarar y crear el arreglo de la siguiente manera:

Declaración:

Creación: Nombre_Matriz

Tipo_dato[][] Nombre_matriz

: Creación : Nombre_Matriz Tipo_dato[][] Nombre_matriz nuevo Tipo_dato[m][n] Declaración y creación en la misma

nuevo Tipo_dato[m][n]

Tipo_dato[][] Nombre_matriz nuevo Tipo_dato[m][n] Declaración y creación en la misma línea: tamaño

Declaración y creación en la misma línea:

tamaño

Tipo_dato[][] Nombre_Matriz

en la misma línea: tamaño Tipo_dato[][] Nombre_Matriz nuevo Tipo_dato[m][n] Ejemplos:   col 0 col 1
en la misma línea: tamaño Tipo_dato[][] Nombre_Matriz nuevo Tipo_dato[m][n] Ejemplos:   col 0 col 1
en la misma línea: tamaño Tipo_dato[][] Nombre_Matriz nuevo Tipo_dato[m][n] Ejemplos:   col 0 col 1

nuevo Tipo_dato[m][n]

Ejemplos:

 

col 0

col 1

col 2

Matriz A =

fila 0

dato 00

dato 01

dato 02

fila 1

dato 10

dato 11

dato 12

Luego puede ser manipulado dentro del código de solución en su forma simple:

A[i][j]

dentro del código de solución en su forma simple: A[i][j] índice de fila índice de columna

índice de fila

de solución en su forma simple: A[i][j] índice de fila índice de columna Se puede declarar

índice de columna

Se puede declarar e inicializar el arreglo con valores de la siguiente manera:

entero[][] A

el arreglo con valores de la siguiente manera: entero[][] A {{1, 2, 3, 4},{5, 6, 7,

{{1, 2, 3, 4},{5, 6, 7, 8}}

Operaciones con Arreglos Bidimensionales De igual manera que los arreglos unidimensionales, es posible darle mantenimiento a través de operaciones como el recorrido, búsqueda, modificación, altas y bajas entre las más básicas y esenciales.

RECORRIDO

Universidad Nacional del Santa Facultad de Ingeniería Escuela Profesional de Ingeniería de Sistemas e Informática

Universidad Nacional del Santa Facultad de Ingeniería Escuela Profesional de Ingeniería de Sistemas e Informática

Partiremos con el recorrido para la solución de casos básicos. Esto implica el visitar cada celda fila por fila completando el número de columnas declaradas o inicializadas.

El resultado de la corrida:
El resultado de la corrida:

EJERCICIOS

10.1 Generar una matriz de 6 x 6, donde sus filas pares sean múltiplos de 2 y las impares sean múltiplos de 5. Se debe imprimir está tabla. Debe hallar la suma de todos sus elementos, imprimir los elementos de su diagonal principal.

10.2 Una empresa tiene 6 obreros distribuidos en 3 categorías, ellos conservan la data de horas extras trabajadas por los 6 obreros cada día durante una semana. Se sabe la categoría de cada obrero y se conoce el precio de las horas extras por categorías. Se debe calcular cuánto cobrará cada obrero por horas extras en la semana y el total pagado por dichas horas. La data se presenta a continuación:

Horas extra trabajadas por cada obrero en la semana:

día 1 día 2 día 3 día 4 día 5 día 6 día 7

día 1

día 2

día 3

día 4

día 5

día 6

día 7

Universidad Nacional del Santa Facultad de Ingeniería Escuela Profesional de Ingeniería de Sistemas e Informática

Universidad Nacional del Santa Facultad de Ingeniería Escuela Profesional de Ingeniería de Sistemas e Informática

obrero 1

3

2

 

1 4

5

3

3

obrero 2

4

5

2 3

 

2

4

1

obrero 3

2

3

2

4

1

4

5

obrero 4

1

4

5

3

3

3

2

obrero 5

3

2

1

3

2

4

1

obrero 6

4

5

2

4

5

3

3

Categoría de cada obrero:

Precio horas extras:

 

Categoría

obrero 1

C

 

Categoría

Precio

obrero 2

A

A

100

obrero 3

B

B

80

obrero 4

B

C

50

obrero 5

C

 

obrero 6

A