ALGORITMIA

UNIVERSIDAD NACIONAL DE EDUCACION ENRIQUE GUZMAN Y VALLE LA CANTUTA DAET - FATEC ALGORITMICA Y PROGRAMACION 1. INTRODU

Views 83 Downloads 3 File size 1MB

Report DMCA / Copyright

DOWNLOAD FILE

Recommend stories

Citation preview

UNIVERSIDAD NACIONAL DE EDUCACION ENRIQUE GUZMAN Y VALLE LA CANTUTA

DAET - FATEC

ALGORITMICA Y PROGRAMACION 1. INTRODUCCION El objetivo a tener en cuenta para empezar el tratamiento y a obtención de la información en forma mecanizada en el área de informática son:  Resolver problemas creativamente  Ser eficientes en el intento  Al mínimo costo  Si no dispone de nuevos recursos usar los disponibles

1.1 ALGORITMO Un algoritmo es un método para resolver un problema mediante una serie de pasos precisos, definidos y finitos Características:

 Preciso (indicar el orden de realización en cada paso)  Definido (si se sigue dos veces, obtiene el mismo resultado cada vez)  Finito (tiene fin; un numero determinado de pasos) los algoritmos se pueden expresar por formulas, diagrama de flujo o N-S y pseudocodigos.

1.2 PROGRAMA Es la descripción de un algoritmo en un lenguaje de programaci6n, es decir, un lenguaje orientado a optimizar la descripción de los pasos que debe realizar el ordenador para alcanzar el objetivo final del algoritmo. Según el objetivo del programa y el lenguaje en el que se describe, se distinguen diversos tipos de programas: Fuente: es el programa escrito por el programador a partir del algoritmo. En el caso de no emplear un lenguaje de descripción formal de algoritmos, es el primero que introducimos en el ordenador, origen, por tanto, de todo el proceso para conseguir que el ordenador ejecute nuestro algoritmo, razón por la cual se le llama "fuente". El programa fuente se

Ing. Álvaro Enrique Chávez Zubieta

1

UNIVERSIDAD NACIONAL DE EDUCACION ENRIQUE GUZMAN Y VALLE LA CANTUTA

DAET - FATEC

caracteriza por ser relativamente independiente del ordenador en el que se debe ejecutar. Introducimos el programa fuente en el ordenador mediante un programa "editor". Objeto: es el programa obtenido por el ordenador a partir del programa fuente, después de un proceso de “compilación”, realizado a su vez por un programa compilador. En este proceso se traducen las instrucciones (pasos) descritos por el programador en el programa fuente, a operaciones directamente interpretables por el ordenador real en el que se debe ejecutar el programa. Ejecutable o Binario: es el programa obtenido por el ordenador a partir del programa objeto, después de un proceso de "montaje", realizado a su vez por un programa "montador" o "linker". En este proceso se complementa el programa objeto obtenido a partir del fuente, escrito por el programador, can otros programas objeto, escritos por otros programadores. En general, todos los programas objeto deben ser montados con programas suministrados por el fabricante del ordenador o del compilador, y agrupados en la denominada "biblioteca del sistema" (System Library), donde se encuentran recopilados (a modo de biblioteca) todos los programas necesarios para realizar operaciones básicas en el ordenador, como por ejemplo: leer caracteres o números del teclado, escribir en la pantalla, realizar operaciones aritméticas, etc.

1.3 Lenguaje de programación. Es el lenguaje empleado por el programador para dar al ordenador las instrucciones necesarias para la ejecución de un algoritmo determinado, constituyendo un programa fuente. Existen diversos tipos de lenguajes de programaci6n, según la proximidad de su gramática y tipos de instrucciones a las específicas del ordenador en el que deba ejecutarse el programa: De Alto Nivel: son aquellos en los que las instrucciones son descritas en un lenguaje pr6ximo al empleado por los humanos. Permiten la ejecución del programa en ordenadores muy diversos y requieren su traducción a las características de cada ordenador en concreto, mediante el proceso

Ing. Álvaro Enrique Chávez Zubieta

2

UNIVERSIDAD NACIONAL DE EDUCACION ENRIQUE GUZMAN Y VALLE LA CANTUTA

DAET - FATEC

de compilaci6n. Ejemplos de este tipo de lenguajes son: PASCAL, FORTRAN, BASIC, COBOL, ADA, C, MODULA-2, etc.). De Bajo Nivel o Ensambladores: son aquellos en los que las instrucciones se corresponden de forma casi univoca con las ejecutables por el ordenador. Estos programas son difícilmente interpretables por los humanos no iniciados en el lenguaje, y no requieren su traducci6n a un ordenador concreto, sino que tan s6lo hace falta cambiar la sintaxis para obtener el programa objeto, siguiendo un proceso denominado "ensamblado", realizado por un programa llamado ensamblador, que sustituye a la fase de compilación.

2. LA RESOLUCIÓN DE PROBLEMAS CON COMPUTADORA El proceso de resolución de un problema con una computadora conduce a la escritura de un programa y a sus ejecuciones la misma. Aunque el proceso de diseñar programas esencialmente un proceso creativo, se puede considerar una serie de fases o pasos comunes que generalmente deben seguir todos los programadores. las fases de resolución de un problema con computadora son:  Análisis del problema  Diseño del problema  Codificación  Compilación y ejecución  Verificación  Depuración  documentación Las 2 primeras fases conducen a un diseño detallado escrito en forma de algoritmo. Durante la tercera etapa (codificación) se implementa el algoritmo en un código escrito en un lenguaje de programación, reflejando las ideas desarrolladas en las fases de análisis y diseño. La fase de compilación y ejecución traduce y ejecuta el programa. En las fases de verificación y depuración el programador busca errores de las etapas anteriores y los elimina. Comprobara que mientras mas tiempo se gaste en la fase de análisis y diseño,

Ing. Álvaro Enrique Chávez Zubieta

3

UNIVERSIDAD NACIONAL DE EDUCACION ENRIQUE GUZMAN Y VALLE LA CANTUTA

DAET - FATEC

menos se gastara en la depuración del programa. Por ultimo, se debe realizar la documentación del programa.

2.1.- ANÁLISIS DEL PROBLEMA Es preciso realizarse las siguientes preguntas para poder definir bien un problema



¿Qué entradas se requieren (tipo y cantidad)?



¿Cuál es la salida deseada (tipo y cantidad)?



¿Qué método produce la salida deseada?

Ejemplo

Determinar el mayor de tres números enteros. Pasos del algoritmo: INICIO

Obtener el primer número, denominado NUM1 Obtener el segundo número, denominado NUM2

Entrada

Obtener el tercer número , y se denomina NUM3

Compara NUM1 con NUM2 y seleccionar el mayor; si los dos enteros son iguales, seleccionar NUM1. Llamar a este número MAYOR. Compara MAYOR con NUM3 y seleccionar el mayor ;

Proceso

si los dos enteros son iguales, seleccionar el MAYOR. Denominar a este número MAYOR. Presentar el valor MAYOR

Salida

FIN

2.2. - DISEÑO DEL ALGORITMO En esta etapa se determina como hace el programa la tarea solicitada. Los métodos mas eficaces para el proceso de diseño se basan en la división del problema en subproblemas y a continuación dividir estos problemas en otros de nivel mas bajo, este

diseño se conoce como diseño descendente (top down) o

modular.

Ing. Álvaro Enrique Chávez Zubieta

4

UNIVERSIDAD NACIONAL DE EDUCACION ENRIQUE GUZMAN Y VALLE LA CANTUTA

DAET - FATEC

Cada subproblema es resuelto mediante un modulo (subprograma) que tiene un solo punto de entrada y un solo de salida.

Nivel n : desde el exterior ¿Lo que hace?

Nivel n+1: Vista desde el interior “¿como lo hace?”

HERRAMIENTAS DE DISEÑO DE UN ALGORITMO a. Diagrama de flujos Representan gráficamente en un algoritmo

Ejemplo:

Ing. Álvaro Enrique Chávez Zubieta

5

UNIVERSIDAD NACIONAL DE EDUCACION ENRIQUE GUZMAN Y VALLE LA CANTUTA

DAET - FATEC

b. PSEUDOCODIGO Herramienta de programación en la que las instrucciones se escriben en palabras similares al ingles o español, que facilitan tanto la escritura como la lectura de programas Ejemplo:

2.3. - CODIFICACION DE UN PROGRAMA Es la escritura en un lenguaje de programación de la representación del algoritmo desarrollado en las etapas precedentes

2.4. - COMPILACIÓN Y EJECUCIÓN DE UN PROGRAMA La codificación se debe realizar sobre un programa editor, posteriormente el programa fuente se convierte en un archivo de programa que se guarda en disco El programa fuente debe ser traducido a lenguaje maquina este proceso se realiza con el compilador y el sistema operativo que se encarga prácticamente de la compilación. El proceso de compilación determina un programa objeto que todavía no es ejecutable directamente. Suponiendo que no existe errores en el programa fuente, se instruye al S.O. para que realice la fase de enlace (LINK) , carga del programa objeto con las librerías del programa del compilador para producir un programa ejecutable. Turbo C++ compila y ejecuta con una sola orden, mientas que los compiladores clásicos siguen un proceso similar al proceso anterior: compilar, enlazar y ejecutar

Ing. Álvaro Enrique Chávez Zubieta

6

UNIVERSIDAD NACIONAL DE EDUCACION ENRIQUE GUZMAN Y VALLE LA CANTUTA

DAET - FATEC

2.5. - VERIFICACIÓN Y DEPURACIÓN DE UN PROGRAMA La verificación o compilación de un programa es la ejecución del programa con una amplia variedad de datos de entrada, llamada datos de test o prueba, que determina si el programa tiene errores (“bugs”)Para realizar la verificación se debe desarrollar una amplia gama de datos de test : Valores normales de entrada, Valores extremos de entrada que comprueben los limites del programa y valores de entrad que comprueben aspectos especiales del programa. La depuración es el proceso de encontrar los errores del programa y corregir o eliminar dichos errores. Tipos de errores: Errores de compilación: Se producen normalmente por un uso incorrecto de las reglas del lenguaje de programación y suelen ser errores de sintaxis. Si existe un error de sintaxis, la pc no puede comprender la instrucción, no se obtendrá el programa objeto y el compilador imprimirá una lista de todos los errores encontrados durante la compilación. Errores de ejecución: Estos errores se producen por instrucciones que la Pc puede comprender pero no ejecutar. Ejemplos típicos son: division por cero y raíces cuadradas de numero negativos. En estos casos se detiene la ejecución del programa y se imprime un mensaje de error. Errores lógicos: se producen en la lógica del programa y la fuente de error suele ser el diseño del algoritmo. Estos errores son mas difícil de detectar, ya que el programa puede funcionar y no producir errores de compilación ni de ejecución, y solo se puede advertir el error por la obtención de resultados incorrectos. En este

Ing. Álvaro Enrique Chávez Zubieta

7

UNIVERSIDAD NACIONAL DE EDUCACION ENRIQUE GUZMAN Y VALLE LA CANTUTA

DAET - FATEC

caso se debe volver a la fase de diseño del algoritmo, modifica el algoritmo, cambiar el programa fuente y compilar y ejecutar una vez mas.

2.6. - DOCUMENTACIÓN Y MANTENIMIENTO Consta de describir los pasos a dar en la resolución de un problema. La documentación puede ser interna o externa. La documentación interna es la contenida en líneas de comentarios. La documentación externa incluye análisis, diagrama de flujo y/o pseudocodigos , manuales de usuario con instrucciones para ejecutar el programa y para interpretar los resultados.

El siguiente esquema representa un resumen general de la tarea a desarrollar en la elaboración y ejecución de un programa

Ing. Álvaro Enrique Chávez Zubieta

8

UNIVERSIDAD NACIONAL DE EDUCACION ENRIQUE GUZMAN Y VALLE LA CANTUTA

DAET - FATEC

3.- ALGORITMICA Como se definió en el apartado anterior la obtención del algoritmo para el desarrollo de una información mecanizada (la informática) conlleva a utilizar herramientas de diseño de resolución de problemas, la cual nos basaremos en el pseudocodigo. En general definiremos la estructura que debe tener un algoritmo bajo los siguientes conceptos:

3.1.- Acción. Es cada uno de los pasos en los que hemos descrito un algoritmo. Las acciones son operaciones elementales que podemos expresar en un lenguaje algorítmico. Serán más o menos complejas dependiendo del nivel de detalle de descripci6n del algoritmo. Los algoritmos descritos de forma muy general están desglosados en acciones muy complejas, mientras que los descritos de forma detallada están desglosados en acciones muy sencillas, pr6ximas al lenguaje de programación

3.2.- SENTENCIA. Es una instrucción que podemos expresar en un lenguaje de programación. La precisión de las sentencias determina la precisión de la ejecución del programa, y para conseguirla deben ajustarse a una sintaxis muy concreta. Por extensión, se denomina también sentencia a las acciones expresadas en un lenguaje algorítmico.

3.2.1.- TIPOS DE SENTENCIAS En la descripción de un algoritmo o programa debemos expresar, no solo las acciones a realizar, sino también las condiciones en las que estas deben realizarse. Para conseguir controlar la secuencia (orden) en la que deben ejecutarse cada una de las sentencias de un algoritmo, se ha definido un reducido, pero suficiente, numero de tipos de sentencias: Secuénciales: son aquellas que se ejecutan en secuencia, es

Ing. Álvaro Enrique Chávez Zubieta

9

UNIVERSIDAD NACIONAL DE EDUCACION ENRIQUE GUZMAN Y VALLE LA CANTUTA

DAET - FATEC

decir, después de la anterior y antes de la siguiente. Son las acciones elementales que se deben ejecutar para alcanzar el objetivo final del algoritmo. Un caso particular de sentencia secuencial es la de asignación, descrita en la sección siguiente Selectivas: son aquellas que permiten condicionar la ejecución de una o mas sentencias al cumplimiento de una condición. En general, podemos decir que permiten seleccionar una acción a realizar entre varias alternativas Iterativas: son las que permiten conseguir que una determinada acción se ejecute más de una vez.

4. - SENTENCIA DE ASIGNACION Son las sentencias en las que, como su nombre indica, se asigna un valor a una variable.

4.1. - ¿QUÉ ES UNA VARIABLE? Es una entidad con nombre único en un algoritmo y a la que se le puede asignar un valor y luego realizar algún tipo de cálculo o comparación. Las variables pueden asumir valores numéricos, alfanuméricos y lógicos. El nombre de la variable debe cumplir con las siguientes reglas: -

El nombre de una variable esta formada por una colección de caracteres alfabéticos (‘A’..’Z’,’a’..’z’), dígitos (‘0’..’9’) y por el carácter subrayado ( _ ).

-

El nombre de una variable siempre debe comenzar por un carácter alfabético o por el carácter subrayado.

-

El nombre de una variable “NO DEBE” comenzar con un digito.

-

El nombre de una variable no debe contener espacios en blanco o caracteres especiales tales como (“, #, ., :, ;, %, &, @, etc).

-

El nombre de una variable no debe coincidir con una palabra clave de un algoritmo (SI, SINO, MIENTRAS, PARA, REPETIR, etc…)

Ing. Álvaro Enrique Chávez Zubieta

10

UNIVERSIDAD NACIONAL DE EDUCACION ENRIQUE GUZMAN Y VALLE LA CANTUTA

DAET - FATEC

Ejemplos:

DECLARACION

VALIDEZ

abc

VALIDO

a123

VALIDO

1a2b

NO VALIDO

_MiVariable

VALIDO

Mi_Variable

VALIDO

Mi_123456

VALIDO

_1_2_3

VALIDO

Mi@Variable

NO VALIDO

4.2.- EXPRESION. Una expresión es la descripción de una o varias operaciones a realizar sobre una o varias variables, es decir, una sentencia que evalúa una formula matemática. Los operadores que intervienen en las expresiones son:

MATEMATICO OPERADOR

RELACIONAL SIGNIFICADO

OPERADOR

SIGNIFICADO

>

MAYOR

+

SUMAR


=

MAYOR o IGUAL

*

MULTIPLICAR

b) Y (c < d) NO (a > b) O ( c d)

4.5.- CONVERSIÓN ENTRE TIPOS DE DATOS En los lenguajes de programación de bajo como de alto nivel nos permite realizar conversiones entre tipos de datos numéricos (enteros y reales), así como trabajar con caracteres como si fuesen números enteros. como ejemplo tenemos: Entero - Real b ← ENTERO(13.45)

Ing. Álvaro Enrique Chávez Zubieta

se trunca el valor de seria b ← 13

14

UNIVERSIDAD NACIONAL DE EDUCACION ENRIQUE GUZMAN Y VALLE LA CANTUTA

DAET - FATEC

a ← REAL(12)………….el valor de la variable a ←12.0 Entero – Carácter Cada carácter tiene asociado un código ASCII los caracteres pueden interpretarse como números enteros x ← CHAR(48)

X←0

Y ← ENTERO ( ‘a’ )

Y ← 97

C ← CHAR(97)

C ←’ a ’

A ← CHAR ( ‘U’ +3)

A←X

OPERACIÓN CADENAS Para manipular cadenas presenta las siguientes operaciones Comparación: Las comparaciones de cadenas de caracteres se hacen según el orden de los caracteres en el código ASCII y con los operadores de relación. `0´ < `1´

`1´ < `2´

`8´ < `9´

`A´ < `B´

`C´ < `D´

`M´ > `B´

`a´ < `h´

`m´ > `b´

`p´ < `r´

Concatenación: Otra operación básica que se pueda realizar con cadenas es la concatenación. La operación de concatenación. La concatenación es el proceso de combinar dos o más cadenas en una sola cadena. Mediante el operador de concatenación (+) Frase = “Perro que ladra” + “no muerde, “+”mientras esté ladrando” Produciría una sola cadena almacenada en la variable Frase: “Perro que ladra no muerde, mientras esté ladrando”

4.6.- SENTENCIAS DE ENTRADA Y SALIDA Como caso particular de sentencia de asignación, mencionaremos aquí, por su utilidad, las sentencias de entrada y salida de datos: Leer (). Permite asignar a las variables contenidas en la lista los valores

Ing. Álvaro Enrique Chávez Zubieta

15

UNIVERSIDAD NACIONAL DE EDUCACION ENRIQUE GUZMAN Y VALLE LA CANTUTA

DAET - FATEC

tecleados por el usuario en el teclado del ordenador. Junto con la lista de variables, en esta sentencia podemos especificar un texto que se visualizar en la pantalla del ordenador al solicitar los valores de las variables de la lista, para orientar al usuario sobre las variables a las que serán asignados los valores solicitados. Escribir (). Permite presentar en la pantalla del ordenador los valores de las variables contenidas en la lista. Como en el caso anterior, además de las variables podemos especificar un texto explicativo de los valores visualizados.

4.7.- ESTRUCTURA BASICA DE UN ALGORITMO ALGORITMO nombre_algoritmo DECLARACIONES DE VARIABLES Nombre_variable : tipo

.. .

INICIO

.. ..

INSTRUCCIONES Y/ O SENTENCIAS

FIN

Ejemplo 1. Ingrese un número entero, luego súmele 2 unidades y visualícelo

Algoritmo sumar a numero variables entero: n INICIO leer( n ) n←n+2 escribir( n ) FIN

Ing. Álvaro Enrique Chávez Zubieta

16

UNIVERSIDAD NACIONAL DE EDUCACION ENRIQUE GUZMAN Y VALLE LA CANTUTA

DAET - FATEC

Ejemplo 2. Algoritmo mitad de numero variables entero:

n

INICIO leer(n) n ← n DIV 2 escribir( n ) FIN Ejemplo 3. Ingrese el precio y la cantidad comprada de un producto, luego calcule y visualice el total a pagar por la compra realizada. Algoritmo total a pagar Variables entero:

cantidad

real:

precio, total

INICIO leer( cantidad, precio ) total ← cantidad * precio escribir( total ) FIN Ejemplo 4. Una empresa decide otorgar una bonificación del 5% del haber básico por cada hijo a todos sus trabajadores. Calcule el total a pagar a un trabajador. Algoritmo pago con bonificacion variables entero : NroHijos real: constante

Hbasico, bonificacion, total

valorBoni = 0.05 INICIO leer(Hbasico, NroHijos) bonificacion ← (Hbasico * valorBoni) * NroHijos total ← Hbasico + bonificacion escribir( total ) FIN

Ing. Álvaro Enrique Chávez Zubieta

17

UNIVERSIDAD NACIONAL DE EDUCACION ENRIQUE GUZMAN Y VALLE LA CANTUTA

DAET - FATEC

Ejemplo 5. Una tienda otorga un descuento del 2.5% por cada 5 productos adquiridos, calcular el total a pagar por una compra.

Algoritmo Compra en oferta variables entero:

cantidad

real: precio, VCompra, descuento, total, factorCompra INICIO leer( cantidad, precio ) Vcompra ← cantidad * precio factorCompra ← (cantidad DIV 5) * 0.025 descuento ← Vcompra * factorCompra total ← vCompra – descuento escribir( total ) FIN Ejemplo 6 Ingresar un numero comprendido entre 0 y 255 y obtener su codigo ascii equivalente Algorimo ejemplo 6 var Erntero: n Cadena: r INICIO Escribir ("\n Ingrese un valor numérico entero positivo comprendido entre 0 y 256:") leer (n) r ← CHAR(n) Escribir ("Valor original=", n, " Valor equivalente en codigp ASCII es =", r) FIN

Ing. Álvaro Enrique Chávez Zubieta

18

UNIVERSIDAD NACIONAL DE EDUCACION ENRIQUE GUZMAN Y VALLE LA CANTUTA

DAET - FATEC

Ejemplo 7 Un ejemplo donde se observa la concatenación de cadenas

Algoritmo ejemplo 7; Variable CADENA [40]: Cad1,Cad2,Cad3 INICIO Cad1 := `Programa´ Cad2 := ` de computadora´ Cad3 := Cad1+Cad2

//concatenación de cadenas

ESCRIBIR (`La frase completa es = ` Cad3) FIN

PROBLEMAS PROPUESTOS 1. Convertir grados centígrados a farenheit a partir de la siguiente formula: GradosFar =1.8 * GradosCent+32 . 2. La nota final del curso de sistema de procesamiento de datos se obtiene de acuerdo a las siguientes formulas:

PF=(Ep+2Ef+Pp)/4 Ef=(2Pe+Py)/3 Pp=(2Pa+Pc)/3

Donde: PF

Promedio final

Ep Ef Pp Pe Py

Examen Parcial Examen final Promedio de practicas Prueba escrita del examen final proyecto

Pa Pc

promedio de practicas de aula Promedio de notas de concepto del profesor

Ing. Álvaro Enrique Chávez Zubieta

19

UNIVERSIDAD NACIONAL DE EDUCACION ENRIQUE GUZMAN Y VALLE LA CANTUTA

DAET - FATEC

Según reglamento, la nota mínima aprobatoria es 10.5 y los promedios parciales no se redondean 3. calcular el area de un rectangulo ingresando sus lados por teclado 4. convertir una hora expresada en segundos a horas, minutos y segundos 5. Escriba el algoritmo que permita el ingreso de los siguientes datos de una persona : Nombre, Sexo, Estado Civil, Salario básico y porcentaje de bonificación por tiempo de servicio, (porcentaje respecto a su salario básico del 25%). El algoritmo reportará finalmente el monto neto a cobrar por el trabajador. Nota : No considere descuentos de ley.

6. Que muestre el resultado de la siguiente expresión, sabiendo q x es una variable de tipo entera

7. Desarrollar un algoritmo que nos permita mostrar el monto a pagar en soles y dólares si compramos en una farmacia un perfume de US$ 21 y una caja de vitaminas por 85 soles. 8. Que realice las siguientes operaciones matemáticas con dos números: Suma, Resta, Multiplicación, División y la suma de sus respectivas raíces cuadradas. 9. Que muestre el perímetro de un pentágono irregular. 10. Un alumno de tercer ciclo a desarrollado el siguiente programa para otorgar bonificaciones a los trabajadores en función de su salario básico, revise Ud. la solución, ubique Ud. errores y explique el criterio para otorgar dicho beneficio. ALGORITMO BONIFIC VARIABLES Nombre, dirección : Teléfono : Salario, bonific. :

Caracter (30) Caracter (6) Numérico

INICIO LEERr (nombre,dirección,teléfono) LEER (salario) bonific ← salario*0.1 neto ← salario + bonif ESCRIBIR (neto)

Ing. Álvaro Enrique Chávez Zubieta

20

UNIVERSIDAD NACIONAL DE EDUCACION ENRIQUE GUZMAN Y VALLE LA CANTUTA

DAET - FATEC

FIN 11. Que determine el neto a pagar por parte de un cliente sabiendo que el producto lo llevará con dos descuentos sucesivos, el primero del 12% y el segundo del 15%. No considere IGV. 12. Escriba un programa que cuente las vocales de una palabra. 13. Escriba un programa que lea una cadena de caracteres en minúscula y la convierta a mayúscula

5.- SENTENCIAS SELECTIVAS. Las sentencias selectivas, me permiten evaluar una expresión o expresiones y según el resultado de esta evaluación se procesan un grupo de instrucciones y/o sentencias. Estas estructuras se procesan solo 1 vez. Las estructuras selectivas se clasifican en : Condicional Simple (si / fin_si) Condicional Doble (si / si_no / fin_si) Condicional Anidada (Similar a Condicional Doble) Condicional Múltiple (en_caso / fin_en_caso

5.1.- CONDICIONAL SIMPLE Se emplea para evaluar una expresión o expresiones, si el resultado de esta evaluación es un valor lógico verdadero (true), entonces se procesaran un grupo de instrucciones o sentencias.

Sintaxis:

SI ( Expresion ) ENTONCES : INSTRUCCIONES : TRUE Y/O : SENTENCIAS FIN-SI

Ing. Álvaro Enrique Chávez Zubieta

21

UNIVERSIDAD NACIONAL DE EDUCACION ENRIQUE GUZMAN Y VALLE LA CANTUTA

DAET - FATEC

EJEMPLO 1

Ingrese 2 números enteros y visualice el mayor de los 2 números ingresados Algoritmo Numero mayor var entero: a, b, mayor INICIO leer( a, b) mayor ← a si( b > a ) entonces mayor ← b fin_si escribir( mayor ) FIN EJEMPLO 2 Ingrese un número entero y luego visualice un mensaje indicando si el número ingresado es “PAR” o “IMPAR”.

Algoritmo enteros pares e impares variables entero: n, resto INICIO leer( n ) resto ← n MOD 2 si ( resto = 0 ) entonces escribir(“PAR”) fin_si si ( resto 0 ) entonces escribir(“IMPAR”) fin_si FIN

5.2.- DOBLE CONDICIONAL

Se emplea para evaluar una expresión o expresiones, si el resultado de esta evaluación es un valor lógico verdadero (true), entonces se procesaran un grupo de instrucciones o sentencias, caso contrario (false) se procesara otro grupo de instrucciones o sentencias.

Ing. Álvaro Enrique Chávez Zubieta

22

UNIVERSIDAD NACIONAL DE EDUCACION ENRIQUE GUZMAN Y VALLE LA CANTUTA

DAET - FATEC

Sintaxis: SI ( Expresion ) ENTONCES INSTRUCCIONES : : Y/O : SENTENCIAS

TRUE

SINO INSTRUCCIONES Y/O SENTENCIAS

FALSE : : :

FIN-SI EJEMPLO 1 Calcular el mayor valor de 2 números enteros. Algoritmo Entero mayor variables entero: a, b, mayor INICIO leer(a, b) si( a > b ) entonces mayor ← a si_no mayor ← b fin_si escribir(mayor) FIN EJEMPLO 2 Ingrese un número entero, si es 2 cifras visualice la suma de sus cifras, caso contrario visualice su doble. Algoritmo Calculo de cifras Variables: entero: n, a, b INICIO leer( n ) si( n >= 10 ) Y ( n [ 90 – 100 > [ 100 – 120 > [ 120 – 150 > [ 150 a más …

Carrera Contabilidad Administración Derecho Ingeniería Medicina

SI NO LOGRO INGRESO, VISUALIZAR CUANTOS PUNTOS LE FALTO

Algoritmo Puntaje var entero: puntaje INICIO leer( puntaje ) si (puntaje >= 70) Y (puntaje < 90) entonces escribir(“Contabilidad”) si_no si (puntaje >= 90) Y (puntaje < 100) entonces escribir (“Administración”)

Ing. Álvaro Enrique Chávez Zubieta

24

UNIVERSIDAD NACIONAL DE EDUCACION ENRIQUE GUZMAN Y VALLE LA CANTUTA

DAET - FATEC

si_no si (puntaje >= 100) Y (puntaje < 120) entonces escribir (“Derecho”) si_no si (puntaje >= 120) Y (puntaje < 150) entonces escribir (“INGENIERIA”) si_no si (puntaje >= 150) entonces escribir (“MEDICINA”) si_no escribir (“LE FALTO:”, 70-Puntaje) fin_si fin_si fin_si fin_si fin_si FIN

5.4.- CONDICIONAL MULTIPLE Se utiliza para evaluar una variable de tipo numérico entero o carácter, con una lista de valores posibles, para luego procesar un grupo de instrucciones y/o sentencias. Simplifica el uso de condicionales anidadas. Sintaxis: CASO (Variable) HACER Lista_1: Instrucciones_Sentencias Lista_2: Instrucciones_Sentencias :

OPCIONAL

Lista_N: Instrucciones_Sentencias OTRO CASO: Instrucciones_Sentencias FIN_CASO EJEMPLO 1 Ingresar un número entre 1 y 5, y luego visualizar su equivalente en letras. Algoritmo Ejemplo1 var entero:

n

INICIO leer( n ) CASO ( n ) HACER 1: escribir(“UNO”) 2: escribir(“DOS”) 3: escribir(“TRES”)

Ing. Álvaro Enrique Chávez Zubieta

25

UNIVERSIDAD NACIONAL DE EDUCACION ENRIQUE GUZMAN Y VALLE LA CANTUTA

DAET - FATEC

4: escribir(“CUATRO”) 5: escribir(“CINCO”) OTRO_CASO : escribir(“# FUERA DE RANGO”) FIN_CASO FIN

EJEMPLO 2 Ingrese número entre 1 y 99, luego visualice su equivalente en romanos. Algoritmo Ejemplo2 variables entero: n, a, b INICIO leer( n ) si ( n >= 1) Y ( n B ) P I -1

Ing. Álvaro Enrique Chávez Zubieta

68

UNIVERSIDAD NACIONAL DE EDUCACION ENRIQUE GUZMAN Y VALLE LA CANTUTA

DAET - FATEC

PARA I  1 hasta P -1 hacer PARA J  1 hasta P - I hacer si ( U[J] > U[J +1] ) entonces

(intercambiar)

Aux  U[J] U[J]  U[J +1] U[J +1]  Aux fin si fin-para fin-para

h.- BÚSQUEDA: La búsqueda de un dato dentro de un array consiste en determinar si un elemento N pertenece o no al conjunto de datos y posición que el ocupa en el conjunto. Los distintos tipos de búsqueda se pueden clasificar en: Búsqueda secuencial Búsqueda binaria Búsqueda por transformación de claves (hash) En este capitulo solo no se abordara este tema EJEMPLO 5 Escriba un algoritmo que lea un número real del teclado y busque dicho número en un vector de N números reales, donde N es una constante a la que le daremos un valor cualquiera. Si se encuentra el número, se debe escribir por pantalla el índice del elemento que lo contiene. Supongamos que:

a. Que el algoritmo no necesita leer el contenido del vector. b. Ningún elemento del vector se repite. ALGOTIRMO EJEMPLO 3 CONSTANTES n = 100 VARIABLES REAL: a[1...n] ENTERO: i REAL: valor

Ing. Álvaro Enrique Chávez Zubieta

69

UNIVERSIDAD NACIONAL DE EDUCACION ENRIQUE GUZMAN Y VALLE LA CANTUTA

DAET - FATEC

BOOLEAN: encontrado

INICIO LEER ( valor) i←1 encontrado ← FALSO MIENTRAS ((i max ENTONCES max ← a[i]

Ing. Álvaro Enrique Chávez Zubieta

70

UNIVERSIDAD NACIONAL DE EDUCACION ENRIQUE GUZMAN Y VALLE LA CANTUTA

DAET - FATEC

FINSI FIN PARA ESCRBE (“El valor máximo es”, max) FIN

I.- COPIA DE UN ARRAY: Un array puede ser asignado a otro array, si y solo si, ambos tienen el mismo tipo y el mismo tamaño. Ejemplo:

Variable Entero: alfa [1..30] Entero: Gama [1..30] Entero: Beta [1..40] Alfa := Gama; {única expresión válida}. Beta := Alfa; Gama := Beta;. 8.2. - Array bidimensionales (Tablas) Un array bidimensional (tabla o matriz) es un array con dos índices, al igual que los vectores que deben ser ordinales. Para localizar o almacenar un valor en el array se deben especificar dos posiciones (dos subíndices), uno para la fila y otro para la columna. Los elementos se referencian con el formato: T [3,4] elemento de la fila 3 y columna 4

1

2

3

4

5

6

7 A[2,5]←18

1

18

2

A[5,2]←3

3

A[5,7]←14

4

A[7,5]←14

5

3

14

Esta matriz es capaz de conservar 35 datos (5*7)

Ing. Álvaro Enrique Chávez Zubieta

Mal!!!.. Excede el primer índice

71

UNIVERSIDAD NACIONAL DE EDUCACION ENRIQUE GUZMAN Y VALLE LA CANTUTA

DAET - FATEC

Para acceder aun dato lo hacemos mediante las estructuras repetitivas comenzando por cada fila, recorriendo por las columnas donde se desarrolla las mismas operaciones ya mencionadas en un array unidimensional

Pseudocodigo inicio PARA indice1=1 hasta 5 hacer PARA indice2=1 hasta 7 hacer Ingresar dato en A[indice1][indice2] Fin-PARA Fin-PARA Fin Sintaxis de los arrays bidimensionales

REAL: Tabla [ 1..10 , 4..25 ] Nº filas

Nº columnas

Ejemplo 7 Calcular el valor promedio de los elementos de una matriz ALGOTIRMO EJEMPLO 7 (búsqueda del máximo) CONSTANTE: n=50 VARIABLES REAL: a [1… n] REAL: b [1… n] ENTERO: i, j, n REAL: suma , promedio INICIO PARA I ←1 hasta n PARA J ← 1 hasta n

Ing. Álvaro Enrique Chávez Zubieta

72

UNIVERSIDAD NACIONAL DE EDUCACION ENRIQUE GUZMAN Y VALLE LA CANTUTA

DAET - FATEC

leer M(I, J) fin-PARA fin-PARA suma ← 0 PARA I ← 1 HASTA n HACER PARA J ← 1 HASTA n HACER suma ← suma + M(I, J) FIN-PARA FIN-PARA promedio ← suma / (cantfila * cantcolumna) Escribir (promedio) PARA I ← 1 HASTA n HACER PARA J ← 1 HASTA n HACER Escribir M(I, J) FIN-PARA FIN-PARA FIN

CONSTANTES DE TIPO ARRAY (TIPEADAS) En los lenguajes de programación permite que las constantes con tipo (tipeadas) puedan ser de casi cualquier tipo. Las constantes con tipo, no son constantes en el estricto sentido, sino variables inicializadas, es decir, variables que tienen un valor inicial específico en la cabecera del programa. Ejemplos

const ENTERO A [1..5] = (10,20,30,40,50); const ( vectores ) ENTERO Dias_Por_Mes[l..l2] = (31,28,31,30,31,30,31,31,30,31,30,31);

Ing. Álvaro Enrique Chávez Zubieta

73

UNIVERSIDAD NACIONAL DE EDUCACION ENRIQUE GUZMAN Y VALLE LA CANTUTA

DAET - FATEC

PROBLEMAS PROPUESTOS 1. Calcular el promedio y la desviación estándar de un conjunto de N números leídos del teclado. La desviación estándar se calcula con la siguiente fórmula

Donde : X i = dato i-ésimo P = promedio N = número de datos

2. Elaborar un algoritmo que capture en un vector (T) la temperatura

de cada día

de una semana y que realice lo siguiente :

a) Imprimir la temperatura promedio. b) Formar un vector (D) que contenga las diferencias de cada temperatura con respecto al promedio. c) Imprimir la menor temperatura y el número de día en que ocurrió.

3. Elabore un algoritmo que encuentre la mayor diferencia entre 2 números consecutivos y las posiciones de éstos, en un vector de N números enteros.

4. Dado un vector V de N números enteros, cambie cada elemento menor que 10 por 0 y cada elemento mayor que 20 por 1. Encuentre cuántos elementos quedaron sin cambiar

Ing. Álvaro Enrique Chávez Zubieta

74

UNIVERSIDAD NACIONAL DE EDUCACION ENRIQUE GUZMAN Y VALLE LA CANTUTA

DAET - FATEC

5. Elaborar un algoritmo que capture en una matriz las calificaciones obtenidas por un grupo de N estudiantes y que realice lo siguiente :

a) Formar un vector de tamaño N que contenga los promedios de cada estudiante. b) Calcular el promedio del grupo en el examen 3. c) Imprimir el mayor promedio y el número del estudiante que lo obtuvo. d) Imprimir el total de alumnos aprobados y reprobados (la calificación mínima aprobatoria es 70) e) Imprimir el número de alumnos que reprobaron el examen 1 6. Diseñe un algoritmo que lea un vector desordenado A, compuesto de n números enteros e imprímase este vector en la misma secuencia, pero ignorando los valores duplicados que se encuentren en él. También se necesita saber el número de elementos que permanecen (m); por ejemplo, dado el siguiente vector

compuesto por 10 enteros, el vector comprimido que resulta estará dado por Con m =6 7. Desarrollar un algoritmo que lea una matriz cuadrada de tamaño n y determine si se trata de una matriz simétrica o no. Una matriz es simétrica si los valores de cada fila son iguales los de su columna correspondiente; por ejemplo la siguiente matriz es simétrica:

8. Una empresa de ventas a domicilio maneja 10 artículos diferentes y cuenta con 50 vendedores. En un arreglo de 50x10 se tienen almacenadas las cantidades de cada artículo vendidas por cada

Ing. Álvaro Enrique Chávez Zubieta

75

UNIVERSIDAD NACIONAL DE EDUCACION ENRIQUE GUZMAN Y VALLE LA CANTUTA

DAET - FATEC

vendedor. Además, los precios de cada artículo están almacenados en un vector de tamaño 10. Se desea elaborar un algoritmo para imprimir lo siguiente : a) La cantidad de dinero recopilado por cada vendedor. b) El número del vendedor que recopiló la mayor cantidad de dinero. c) El número del artículo más vendido (entre todos los vendedores). d) El total de vendedores que no vendieron ningún artículo número ocho

9. Elabore un algoritmo que lea una matriz cuadrada de tamaño N de números enteros, calcule la suma de los elementos de las diagonales (principal e inversa y guarde estos elementos en dos vectores (DP y DI). Ejemplo para N=4 : Suma DP = 20 Suma DI = 23

10. Elabore un algoritmo que lea los datos de una matriz cuadrada de tamaño N y realice las siguientes operaciones:

a) Imprima la suma de los elementos de la diagonal principal b) Imprima cuántos "0" hay en la matriz c) Imprima una matriz igual pero con las diagonales intercambiadas. d) Imprima el número mayor de la matriz

11. Elabore un algoritmo que lea los datos de una matriz cuadrada de tamaño N, y que intercambie los elementos de la matriz triangular superior con los elementos correspondientes simétricamente de la matriz triangular inferior.

Ing. Álvaro Enrique Chávez Zubieta

76

UNIVERSIDAD NACIONAL DE EDUCACION ENRIQUE GUZMAN Y VALLE LA CANTUTA

DAET - FATEC

12. Dada una matriz cuadrada de tamaño N, encuentre la suma de todos los elementos que no son de la "periferia" de la matriz.

Por ejemplo

13. Se tienen dos vectores A y B de tamaños n y m respectivamente. Cada arreglo contiene nombres de personas ordenados alfabéticamente. Elabore un algoritmo que forme un tercer vector C ordenado alfabéticamente que contenga los nombres de A y B. Ejemplo :

14. Se tienen los costos de producción de tres departamentos (dulces, bebidas y conservas), correspondientes a los 12 meses del año anterior.

Ing. Álvaro Enrique Chávez Zubieta

77

UNIVERSIDAD NACIONAL DE EDUCACION ENRIQUE GUZMAN Y VALLE LA CANTUTA

DAET - FATEC

Elaborar un algoritmo que pueda proporcionar la siguiente información: a) ¿En que mes (número) se registró el mayor costo de producción de dulces? b) Promedio anual de los costos de producción de bebidas. c) ¿En que mes se registró el menor costo de producción de bebidas? d) ¿Cuál fue el departamento que tuvo el menor costo de producción en Agosto?

15. Elaborar un algoritmo para controlar las reservaciones y cancelaciones de boletos para las funciones de una obra de teatro. - El teatro cuenta con 300 asientos, 200 en la planta baja y 100 en la planta alta. - Los asientos están numerados del 1 al 200 en la planta baja y del 1 al 100 en la alta. - Hay 2 funciones, a las 6 y a las 9 de la noche.

Se debe preguntar si se desea planta baja o alta, la función deseada y el número de asiento deseado, y se debe imprimir el precio del boleto. Para las cancelaciones, preguntar el nombre y la función 16. Una línea aérea realiza 3 vuelos diarios a Europa, uno a París, uno a Madrid y uno a Londres. Elabore un algoritmo que controle las reservaciones y cancelaciones de Lugares. NOTAS: 

Cuando hay una reservación, se preguntará el No. de vuelo ( 1 París , 2 Madrid, 3 Londres ), el nombre de la persona, y si desea sección de fumar o de no fumar.



Cuando hay una cancelación, se preguntará el nombre de la persona y el No. de vuelo.

Ing. Álvaro Enrique Chávez Zubieta

78

UNIVERSIDAD NACIONAL DE EDUCACION ENRIQUE GUZMAN Y VALLE LA CANTUTA 

DAET - FATEC

Cada vuelo tiene 100 asientos. Del 1 al 50 es la sección de no fumar, y del 51 al 100 es la sección de fumar.

 Se asignará el primer asiento que se encuentre desocupado en la sección deseada del vuelo correspondiente.

Ing. Álvaro Enrique Chávez Zubieta

79