You are on page 1of 147

MANUAL ASIGNATURA ELEMENTOS DE PROGRAMACIN

Direccin de rea Infor mtica


w ww .inform a tica.ina ca p.cl

Pgina 1 de 147

Derechos Reservados Titular del derecho: INACAP N de inscripcin en el Registro de Propiedad Intelectual #............... de fecha .............. INACAP 2002. Pgina 2 de 147

i.

Introduccin

El objetivo de la asignatura Elementos de Programacin es introducir en forma progresiva y sistemtica una correcta metodologa para que los alumnos de la Carrera Ingeniera en Gestin Informtica dominen las tcnicas de la programacin de computadores. Este manual esta confeccionado con el propsito de servir de gua para el desarrollo de la asignatura. Las materias aqu tratadas corresponden a lo indicado en el Programa Oficial de Inacap por lo que debern ser tratadas en clases en su totalidad y siguiendo los lineamientos que aqu se indican. Se debe tener en cuenta que la Asignatura Elementos de Programacin est orientada esencialmente a la metodologa, por lo tanto, se persigue que el alumno adquiera los conocimientos necesarios para desarrollar programas utilizando mtodos precisos, claros y eficientes. La orientacin de las tcnicas de solucin de problemas no debe estar orientada hacia ningn lenguaje de programacin en especial. ii. Estructura del manual

El manual est dividido en unidades. Al final de cada una de ellas se dejan algunos Ejercicios propuestos para entregrselos a los alumnos o desarrollarlos en clases. Todos los ejercicios estn solucionados al final del manual iii. Nomenclatura

Con el objeto de estandarizar la nomenclatura utilizada en la resolucin de problemas mediante un pseudolenguaje nico a nivel nacional, se han adoptado las siguientes normas:

Todas las palabras claves de los algoritmos son en ingles. Ejemplo : While , If, End, Read, Print, Open, Close, Select, etc Todas las variables deben ser declaradas. Se utilizan solamente dos tipos de variables: numricas y alfanumricas.

El prefijo para declarar las variables numricas es num y para las variables alfanumricas, char. Se debe anteponer al nombre de la variable Ejemplos:

num x char frase

La asignacin de variable utiliza el smbolo El signo igual = slo se debe utilizar como operador relacional de igualdad El ndice menor de un arreglo es 1 Los comentarios se identifican anteponiendo el smbolo #

Pgina 3 de 147

iv. Ejemplos y ejercicios Se ha incorporado una gran cantidad de ejemplos de algoritmos. Al final de cada unidad se han propuesto una serie de ejercicios cuya solucin se ha desarrollado al final del manual. Dado que el proceso de revisin de esos ejercicios no alcanz a ser optimizado, se hace indispensable que los docentes revisen la sintaxis y la lgica de los algoritmos antes de utilizarlos como material didctico. Los errores descubiertos deberan comunicarse a la DAI para la modificacin del manual.

Pgina 4 de 147

INDICE DE CONTENIDOS UNIDAD 1: ANLISIS DE PROBLEMAS Y PROCESAMIENTO DE DATOS


OBJETIVO 1.1.: RESOLVER METODOLOGA DE POLYA PROBLEMAS GENERALES APLICANDO LA

1.1.1. Las Estrategias de Resolucin de problemas..........................................................Pg.6 1.1.2. Metodologa de Resolucin de Problemas Segn Polya.....................................Pg.7 1.1.3. Algunas Sugerencias hechas por quienes tienen xito en resolver problemas..........Pg.11 OBJETIVO 1.2.: ANALIZAR UN PROCESO COMPUTACIONAL EN TERMINOS DE ENTRADA OPERACIN INTERNA SALIDA 1.2.1. Concepto de Dato e Informacin..................................................................................Pg.12

UNIDAD 2: ALGORITMOS Y ESTRUCTURAS DE CONTROL


OBJETIVO 2.1.: DESCRIBIR EL PROCESO DE CREACIN DE UN PROGRAMA PARA PROBLEMAS SIMPLES 2.1.1. Procesos de Creacin de Programas..............................................................................Pg.14 OBJETIVO 2.2.: EXPLICAR LOS PRINCIPIOS QUE RIGEN EL ALMACENAMIENTO DE DATOS 2.2.1. Unidades Funcionales de un Computador.....................................................................Pg.16 2.2.2 Principios de Almacenamiento ......................................................................................Pg.16 OBJETIVO 2.3.: DESCRIBIR A TRAVES DE DEFINICIONES Y EJEMPLOS CADA UNO DE LOS ELEMENTOS QUE COMPONEN UN ALGORITMO 2.3.1. Concepto de Algoritmo.................................................................................................Pg.20 2.3.2. Estructura de un Algoritmo...........................................................................................Pg.20 OBJETIVO 2.4.: REPRESENTAR GRFICAMENTE LA CIRCULACIN DE DATOS E INFORMACIN Y LA SECUENCIA DE OPERACIONES INVOLUCRADAS EN UN ALGORITMO DADO 2.4.1. Definicin de Diagrama de Flujo..............................................................................Pg.22 2.4.2. Simbologa de Diagrama de Flujo............................................................................Pg.22 OBJETIVO 2.5.: DESCRIBIR CADA UNO DE LOS ELEMENTOS QUE COMPONEN UN ALGORITMO EN PPSEUDOLENGUAJE 2.5.1. Definicin de Pseudolenguaje.......................................................................................Pg.33 Pgina 5 de 147

2.5.2. Tipos de Datos...............................................................................................................Pg.33 2.5.3. Variables................................................................................................................Pg.33 2.5.4. Constantes.............................................................................................................Pg.34 2.5.5. Operadores............................................................................................................Pg.35 2.5.6. Tipo de Expresiones..............................................................................................Pg.40 OBJETIVO 2.6.: DESARROLLAR ALGORITMOS QUE INCLUYEN MANEJO DE VARIABLES, ENTRADA, SALIDA Y ESTRUCTURAS DE CONTROL 2.6.1. 2.6.2.
2.6.3 2.6.4 2.6.5 2.6.6 2.6.7

Concepto de Instrucciones........................................................................................Pg.44 Clasificacin de las Instrucciones.............................................................................Pg.44 Estructura de los algoritmos en pseudolenguaje.......................................................Pg.44 Nomenclatura de instrucciones que se utilizarn en pseudolenguaje.......................Pg.45 Estructuras de Seleccin...........................................................................................Pg.46 Instrucciones de Control de Repeticin....................................................................Pg.54 Formas Comunes de Estructuras de repeticin.........................................................Pg.55

UNIDAD 3: REPRESENTAR ESTRUCTURAS DE DATOS


OBJETIVO 3.1.: REPRESENTAR ESTRUCTURAS DE DATOS ELEMENTALES 3.1.1. Estructura de Datos.......................................................................................................Pg.67 OBJETIVO 3.2.: REPRESENTAR ESTRUCTURAS DE ARREGLOS 3.2.1.: Concepto de Arreglo................................................................................................Pg.67 3.2.2.: Arreglos Unidimensionales o Vectores........................................................................Pg.68 OBJETIVO 3.3.: REPRESENTAR MEDIANTE ALGORITMOS PROCESOS TIPICOS CON ARREGLOS 3.3.1. Variable Auxiliar...........................................................................................................Pg.77 3.3.2. Nmeros Aleatorios......................................................................................................Pg.77 3.3.3. Ordenamiento................................................................................................................Pg.78 3.3.4. Bsqueda.......................................................................................................................Pg.79 3.3.5. Arreglos Bidimensionales.............................................................................................Pg.82

UNIDAD 4: ARCHIVOS
OBJETIVO 4.1.: CONCEPTOS 4.1.1. Conceptos de: Archivo, Registro, CampoPg.90 OBJETIVO 4.2.: OPERACIONES BASICAS SOBRE ARCHIVOS OBJETIVO 4.3.: CONCEPTO DE ARCHIVOS SECUENCIALES 4.3.1. Archivos con organizacin secuencial..........................................................................Pg.91 4.3.2. Instrucciones para archivos secuenciales......................................................................Pg.91

ANEXO 1
Pgina 6 de 147

GLOSARIO.........................................................................................................................Pg.101 SOLUCION A EJERCICIOS PROPUESTOS................................................................Pg.105 UNIDAD 1: ANALISIS DE PROBLEMAS Y PROCESAMIENTO DE DATOS OBJETIVO 1.1: RESOLVER METODOLOGIA DE POLYA PROBLEMAS GENERALES APLICANDO LA

Uno de los aspectos ms importantes a considerar en el proceso de resolucin de problemas es conseguir una representacin mental del problema. Esto implica tener una visin general del problema que hace mucho ms fcil entender sus caractersticas y singularidades. Los datos importantes son identificados y relacionados entre si. Al modelado del problema se le llama tambin espacio del problema. A continuacin se presenta un ejemplo para ilustrar cmo normalmente se representa un problema en nuestra mente: Un autobs parte del terminal en la maana. Se detiene en la primera parada y recoge 5 personas. Sigue hasta la prxima parada y all suben 6 personas. Contina hasta la siguiente parada y suben 4 personas. En la prxima parada, suben 5 personas y se bajan 3. En la siguiente parada, suben 5 personas y se bajan 4. En la parada siguiente, suben 6 personas y se baja 1. La prxima vez, suben 3 personas y se bajan 2. La vez siguiente, se bajan 2 personas y no sube nadie. En la siguiente parada nadie espera por el autobs, de manera tal que este no se detiene. Finalmente, el autobs llega al terminal.
Cuntas paradas hay en la ruta del autobs?

La tendencia ms comn es calcular cuntas personas llegan a la parada final, cuntas subieron o cuntas bajaron, pero muy pocos estn en condiciones de indicar cuntas paradas hay en la ruta del autobs debido a que seleccionaron la informacin numrica como dato importante y la representaron internamente en la forma de operaciones aritmticas. En trminos de los procesos involucrados en resolucin de problemas, esto sucede porque la meta del problema no est bien definida a pesar de que hay datos numricos explcitos precisos. El nfasis sobre el nmero de personas que suben y bajan del autobs hace posible que los estudiantes piensen que tienen que hacer algo con esos datos y, en tal sentido, construyen una meta la cual se representa como el logro de una cantidad total. Esta decisin conduce a los estudiantes a seleccionar cierta informacin como relevante (nmero de personas que suben y bajan del autobs) e ignorar otra (nmero de paradas del autobs). 1.1.1 Las estrategias de resolucin de problemas Las estrategias para resolver problemas se refieren a las operaciones mentales utilizadas para pensar sobre la representacin de las metas y los datos, con el fin de transformarlos para obtener una solucin. Las estrategias para la resolucin de problemas incluyen los mtodos heursticos, los algoritmos y los procesos de pensamiento divergente. 1.1.1.a Los mtodos heursticos Pgina 7 de 147

Son estrategias generales de resolucin y reglas de decisin utilizadas por los solucionadores de problemas, basadas en la experiencia previa con problemas similares. Estas estrategias indican las vas o posibles enfoques a seguir para alcanzar una solucin pero, no garantiza la solucin del problema. 1.1.1.b Los algoritmos Los algoritmos son procedimientos especficos que sealan paso a paso la solucin de un problema y que garantizan el logro de una solucin. Un procedimiento algortmico es una sucesin de acciones que hay que realizar, completamente prefijada. Su correcta ejecucin lleva a una solucin segura del problema como por ejemplo, realizar una raz cuadrada, pegar un botn, preparar una taza de caf, hacer sopaipillas, etc. El algoritmo garantiza la obtencin de lo que nos proponemos. De esta manera, el algoritmo se diferencia del heurstico en que este ltimo constituye slo una buena apuesta, ya que ofrece una probabilidad razonable de acercarnos a una solucin. Por lo tanto, es aceptable que se utilicen los procedimientos heursticos en vez de los algortmicos cuando no conocemos la solucin de un problema. 1.1.1.c Los procesos de pensamiento divergente Los procesos de pensamiento divergente permiten la generacin de enfoques alternativos a la solucin de un problema y estn relacionados principalmente con la inspiracin y la creatividad. La adquisicin de habilidades para resolver problemas ha sido considerada como el aprendizaje de sistemas de produccin que involucran tanto el conocimiento declarativo como el procedimental. Existen diversos procedimientos que pueden facilitar o inhibir la adquisicin de habilidades para resolver problemas, entre los cuales se pueden mencionar: Ofrecer representaciones metafricas. Permitir la verbalizacin durante la solucin del problema. Hacer preguntas. Ofrecer ejemplos. Ofrecer descripciones verbales. Trabajar en grupo. Utilizar auto-explicaciones.

1.1.2 METODOLOGIA DE RESOLUCIN DE PROBLEMAS SEGN POLYA.

Existen mtodos bien definidos y desarrollados para lograr una resolucin efectiva de problemas. Uno de estos mtodos es el desarrollado por George Polya destacado Doctor en Matemtica, nacido en Hungra en 1887, el que fue publicado inicialmente en la Universidad de Princeton en 1945 y finalmente en su libro "How to Solve It" en 1957. Las sugerencias de Polya para responder a la pregunta Cmo plantear y resolver problemas?, son las siguientes: Entender el problema. (reconociendo qu se pregunta.) Idear un plan. (respondiendo a lo que se pide.) Realizar el plan. (desarrollando el resultado de la respuesta.) Mirar hacia atrs. (controlando qu hace y dice el resultado) Pgina 8 de 147

Entender el problema. Consiste en identificar qu se pide de modo completamente independiente de las diversas condiciones que pueden ser impuestas y limitaciones constatables en el problema. Se deben considerar aspectos como:
1.1.2.a

Entiende todo lo que dice? Puede replantear el problema en sus propias palabras? Distingue cules son los datos? Sabe a qu quiere llegar? Hay suficiente informacin? Hay informacin extraa? Es este problema similar a algn otro que haya resuelto antes?

1.1.2.b

Idear un plan. Consiste de responder tan directamente como sea posible lo qu se pide. Esto requiere generalmente uso de una ley, de una definicin o de un principio que sea la respuesta a la pregunta hecha. Encontrar la conexin entre los datos y lo que se quiere. Puede verse obligado a considerar problemas auxiliares si una conexin inmediata no puede ser encontrada. Se deben considerar aspectos como:
1.1.2.c

Ha visto el mismo problema en una forma levemente diferente? Conoce algn problema relacionado? Si est frente a algo completamente desconocido, intente pensar en un problema conocido que tenga alguna parte igual o similar. S es un problema relacionado con otro solucionado antes. Podra utilizarlo? Podra utilizar su resultado, su mtodo? Podra exponer el problema en forma modificada? Se usaron todos los datos?

Realizar el plan. Consiste en el responder a las peticiones hechas por el resultado del paso anterior. Esto puede requerir revisar nuevamente los pasos anteriores. Se deben considerar aspectos como: Implementar la o las estrategias que se escogieron hasta solucionar completamente el problema o hasta que la misma accin sugiera tomar un nuevo curso. Tomar un tiempo razonable para resolver el problema. Si no tiene xito solicitar sugerencias o hacer el problema a un lado por un momento No tener miedo de volver a empezar. Suele suceder que un comienzo fresco o una nueva estrategia conducen al xito. El mirar hacia atrs. Consiste en revisar usando el sentido comn, el resultado de usar los pasos anteriores. Se deben considerar aspectos como:
1.1.2.d

Est bien el resultado? Es la solucin correcta? La respuesta satisface lo establecido en el problema? Se advierte una solucin ms sencilla? Puede ver cmo extender la solucin a un caso general?

Pgina 9 de 147

EJEMPLO N1: A un empleado de una empresa se le cancela como Sueldo Base la cantidad de $520.000. Cul es el sueldo lquido del empleado si adems, se le cancelar un bono equivalente al 20% de su Sueldo Base? a) Entender el problema. Leer cuidadosamente el problema. Se desea obtener el sueldo lquido a pago de un empleado para lo cual se necesita conocer su sueldo base, el porcentaje del bono y alguna frmula relacionada con el problema Identificacin de datos importantes. Sueldo Base Porcentaje del Bono Sueldo Lquido b) Idear un plan. Determinar claramente lo que hay que hacer. Es un problema conocido Se utilizar la frmula Sueldo Lquido = Sueldo Base + Sueldo Base * 20% Otra formula podra ser Sueldo Lquido = Sueldo Base * 1,2 Una vez calculado, escribir el resultado. Realizar el Plan El 20% del Valor del Bono = 20/100 Monto del Bono = Sueldo Base * 20/100 Sueldo Lquido = Sueldo Base + Monto del Bono Mirar hacia atrs Verifique: Revisar la respuesta. Sueldo base = 520.000 Monto del Bono = 520.000 * 20/100 = 104.000 Sueldo Lquido = 520.000 + 104.000 = 624.000 El sueldo lquido del empleado es de $624.000

c)

d)

Respuesta:

Pgina 10 de 147

EJEMPLO N2: En una clase de 35 alumnos aprobaron el 40%. Determinar el nmero de alumnos reprobados. a) Entender el problema. Trazar un diagrama.

Identificacin de datos importantes. Total de alumnos: 35. Representan el 100%. Total alumnos aprobados = 40% del Total de alumnos b) Idear un plan. Determinar claramente lo que hay que hacer. Es un problema conocido Al examinar el problema, lo podemos descomponer. El enunciado expresa que hay que determinar el nmero de alumnos reprobados, pero como sabemos que los aprobados y los reprobados representan la totalidad del curso, podemos resolver el problema de dos formas. Forma 1. Transformar el 40% de aprobados en nmero de alumnos utilizando una operacin sencilla y restrselo al total de alumnos. Forma 2. Transformar el 60% de reprobados en nmero de alumnos. Llevado a notacin algebraica: Para la Forma 1: 35-------100% X---------40% Total de alumnos x = Total de reprobados Para la Forma 2: 35-------100% X---------60% x = Total de reprobados Pgina 11 de 147

c)

Realizar el Plan Para la Forma 1:

X = (35 x 40) / 100 = 1.400 / 100 = 14

14 alumnos representan el 40% de los alumnos aprobados. Por lo tanto, 35 - 14 = 21 alumnos reprobados Para la Forma 2: X = (35 x 60) / 100 = 2.100 / 100 = 21 d) Mirar hacia atrs Sumando los alumnos aprobados y reprobados debemos obtener el total de alumnos del curso. En efecto: 21 alumnos reprobados + 14 alumnos aprobados = 35 alumnos en el curso.

1.1.3 Algunas sugerencias hechas por quienes tienen xito en resolver problemas:

Adems del Mtodo de Cuatro Pasos de Polya nos parece oportuno presentar en este apartado una lista de sugerencias hechas por personas exitosas en la solucin de problemas: 1. 2. 3. 4. 5. 6. Acepta el reto de resolver el problema. Rescribe el problema en tus propias palabras. Tmate tiempo para explorar, reflexionar, pensar... Habla contigo mismo. Hazte cuantas preguntas creas necesarias. Si es apropiado, trata el problema con nmeros simples. Muchos problemas requieren de un perodo de incubacin. Si te sientes frustrado, no dudes en tomarte un descanso -el subconsciente se har cargo-. Despus intntalo de nuevo. Analiza el problema desde varios ngulos. Revisa tu lista de estrategias para ver si una o ms te pueden ayudar a empezar Muchos problemas se pueden resolver de distintas formas: slo se necesita encontrar una para tener xito. No tengas miedo de hacer cambios en las estrategias. La experiencia en la solucin de problemas es valiossima. Trabaja con todos tus conocimientos, tu confianza crecer. Si no ests progresando mucho, no vaciles en volver al principio y asegurarte de que realmente entendiste el problema. Este proceso de revisin es a veces necesario hacerlo dos o tres veces, ya que la comprensin del problema aumenta a medida que se avanza en el trabajo de solucin. Siempre, siempre mira hacia atrs: Trata de establecer con precisin cul fue el paso clave en tu solucin. Ten cuidado en dejar tu solucin escrita con suficiente claridad de tal modo que puedas entenderla si la lees 10 aos despus. Ayudar a que otros desarrollen habilidades en la solucin de problemas es una gran ayuda para uno mismo: No les des soluciones; en su lugar provelos con sugerencias importantes. Disfrtalo! Resolver un problema es una experiencia fantstica.

7. 8. 9. 10. 11. 12.

13. 14. 15.

16.

Pgina 12 de 147

OBJETIVO 1.2: ANALIZAR UN PROCESO COMPUTACIONAL EN TERMINOS DE ENTRADA OPERACIN INTERNA SALIDA 1.2.1 CONCEPTO DE DATO E INFORMACIN Datos: Es todo aquella representacin de una entidad y que es susceptible de tratamiento ya sea en un programa o proceso informtico. Por ejemplo nombre, apellido y edad son datos de una persona (entidad). En otras palabras un dato es la representacin de una realidad. Informacin: Mensaje valido para un receptor o resultado del procesamiento de datos. Computador: Mquina capaz de aceptar datos de entrada, procesarlos y entregar resultados de salida (informacin). Esquema general de un computador
DISPOSITIVO DE ENTRADA PROCESAMIENTO DISPOSITIVO DE SALIDA

Programa (software): Conjunto de rdenes o instrucciones capaces de manipular un conjunto de datos. Estas rdenes pueden ser divididas en tres grandes bloques claramente diferenciales, estos son: Entrada de datos: En este bloque se engloban todas aquellas instrucciones que toman datos de un dispositivo o perifrico externo, depositndolos en la memoria principal del computador para ser procesados. Proceso: Engloban todas aque llas instrucciones encargadas de modificar los datos que previamente haban sido depositados en a memoria principal. Todos los resultados obtenidos en el tratamiento de dichos datos son depositados nuevamente en la memoria principal quedando de esta manera disponible. Salida de resultados: Es el conjunto de instrucciones que toman los resultados finales desde la memoria principal y lo envan a dispositivos externos.

Ejercicios propuestos

1. Crear grupos de trabajos de 5 integrantes. Los alumnos debern determinar sin existen datos de entrada y cuales son, que procesos se realizan sobre ellos y cuales son los datos de salida. a) b) c) d) Determinar el promedio de edad entre los integrantes del grupo. Determinar la cantidad de mujeres y la cantidad de hombres dentro del grupo. Contar los alumnos que son mayores de edad (18 aos o ms) y menor de edad (inferior a 18 aos), en el grupo. Determinar la cantidad de integrantes que salieron de cuarto medio con un promedio igual o inferior a 5.0. Pgina 13 de 147

Solucin esperada 1a. Datos de entrada = Cantidad de personas. Edades de las personas Procesamiento = Sumar las edades y dividirla por la cantidad de personas. Datos de salida = Promedio de edad de todas las personas del grupo. Datos de entrada = Personas del grupo. Procesamiento = Contar las mujeres. Contar los hombres. Datos de salida = Cantidad de mujeres y hombres. Datos de entrada = Edades de los alumnos del grupo. Procesamiento = Cada edad comparar con 18. Contar los menores a 18 aos. Contar los que tienen 18 o ms aos en forma separada. Datos de salida = Cantidad de mayores de edad. Cantidad de menores de edad. Datos de entrada = Notas de egreso de 4 Medio Procesamiento = Cada nota comparar con 5.0. Contar las menores o iguales a 5.0. Datos de salida = Cantidad de personas que salieron de 4 Medio con nota promedio igual o menor a 5.0 Para las siguientes situaciones identificar: datos, proceso y resultado (informacin). El promedio de las edades de los 30 alumnos de un curso es de 22 aos. Datos: ______________________________________________ Proceso: ______________________________________________ Informacin: ______________________________________________ b. En una agroindustria a un productor por 2 toneladas de harina se le cancelaron 4 millones de pesos. Datos: ______________________________________________ Proceso: ______________________________________________ Informacin: ______________________________________________ c. Para cercar un jardn de 3 metros de largo por 5 metros de ancho se necesitaron 16 metros de alambre. Datos: ______________________________________________ Proceso: ______________________________________________ Informacin: ______________________________________________

1b.

1c.

1d.

2. a.

Pgina 14 de 147

UNIDAD 2: ALGORITMOS Y ESTRUCTURAS DE CONTROL OBJETIVO 2.1: DESCRIBIR EL PROCESO DE CREACIN DE UN PROGRAMA PARA PROBLEMAS SIMPLES
2.1.1 PROCESOS DE CREACIN DE PROGRAMAS.

Programa: Conjunto de instrucciones escritas de algn lenguaje de programacin y que ejecutadas secuencialmente resuelven un problema especifico. Todo programa debe pasar por fases de elaboracin hasta llegar al producto final. Resolvemos problemas a diario, pero normalmente ignoramos el proceso que estamos siguiendo. La mayora de nuestra experiencia es simplemente seguir algoritmos, recetas. Por ejemplo: practicamos un juego, preparamos caf, caminamos, etc. Etapas en el proceso de resolucin de problemas Para aprender a programar hay que desarrollar en forma consciente alguna estrategia de resolucin de problemas. Algunas de las etapas que se deben seguir en este proceso son: 1. Diseo del proceso: Esta etapa consiste en el anlisis del problema, esto es: entender el problema, determinar estrategias de solucin. En ambos casos se indicar claramente los procesos a seguir (lo que se va a hacer) para llegar a la solucin correcta. En esta etapa adems, se desarrolla un modelo que no es ms que una representacin apropiada al problema planteado. En otras palabras, se debe visualizar como se realizar la transformacin de los datos de entrada para que a travs de un proceso apropiado se obtenga la salida correcta. Construccin: Esta etapa consiste en desarrollar un algoritmo que pueda representar la estructura del programa la cual puede ser en forma narrativa, diagramas de flujo o Ppseudolenguaje. Codificacin: Consiste en la traduccin del algoritmo a algn lenguaje de programacin, el cual crea instrucciones entendibles y ejecutables por el computador; algunos de estos lenguajes pueden ser: C, C++, Visual Basic, Java, Cobol, Pascal, etc. Verificacin: Se prueba el algoritmo en forma analtica para demostrar su efectividad; vale decir, se prueba el algoritmo y/o programa con datos conocidos que producirn una salida conocida. Con esto se pretende detectar y corregir los errores para mejorar el algoritmo. Documentacin: En esta etapa se debe documentar el o los programas realizados en la etapa de construccin. Se debe confeccionar un manua l de uso que contenga, al menos los siguientes puntos: Descripcin del mtodo de solucin utilizado Requerimientos lgicos (Sistema Operativo, Software, etc.). Requerimientos fsicos (Servidores, computadores, perifricos, etc.) Pgina 15 de 147

2.

3.

4.

5.

Caractersticas de un programa

Para asegurar la calidad de los programas y sistemas, es de vital importancia, considerando que para un problemas existen muchas soluciones, elegir la alternativa mas eficaz y eficiente en funcin del problema dado. Todo programa debe cumplir al meno s con las siguientes caractersticas: a) b) Legibilidad: Claro y sencillo para una fcil lectura y comprensin. Modificabilidad: El programa para su vigencia y actualizacin debe ser de fcil mantenimiento. Fiabilidad: Debe ser robusto, fcil de recuperarse frente a errores o malos usos Eficiencia: Eficiente, aprovechando al mximo los recursos. Portabilidad: El programa debe ser de fcil codificacin para distintos lenguajes.

c) d) e)

Ejercicios propuestos

Para las siguientes situaciones ident ifique la etapa o fase del proceso en la resolucin de un programa. a. El algoritmo creado se traducir en lenguaje C++. Etapa _______________________________________________________ b. Algoritmo requiere de una formula que calcule el volumen de un prisma. Etapa _______________________________________________________ c. La resolucin de un problema ha sido escrita en forma narrativa. Etapa _______________________________________________________ d. Un algoritmo ha sido recorrido con datos conocidos. Etapa _______________________________________________________
Solucin esperada

a. b. c. d.

Etapa de Codificacin Diseo Construccin Verificacin

Pgina 16 de 147

OBJETIVO 2.2: EXPLICAR LOS PRINCIPIOS QUE RIGEN EL ALMACENAMIENTO DE DATOS 2.2.1 UNIDADES FUNCIONALES DE UN COMPUTADOR

Organizacin fsica de un computador


CPU

Dispositivo de Entrada

Unidad de Control

Unidad Arit.-Log

Dispositivo de Salida

Memoria

Dispositivos de Entrada: Como su nombre lo indica, sirven para introducir datos al computador para su proceso. Los datos se leen de los dispositivos de entrada y se almacenan en la memoria central o interna. Ejemplos: teclado, scanner, mouse, joystick, lpiz ptico, etc. La Unidad Central de Procesamiento (CPU) se divide en dos: Unidad de Control: Coordina las actividades del computador y determina que operaciones se deben realizar y en que orden; as mismo controla todo el proceso del computador. Unidad Aritmtico - Lgica: Realiza operaciones aritmticas y lgicas, tales como suma, resta, multiplicacin, divisin y comparaciones.

Dispositivos de Salida: Envan los datos procesados a dispositivos para que sirvan de informacin al usuario. Ejemplo: monitor, impresora, telfono, etc. 2.2.2 PRINCIPIOS DE ALMACENAMIENTO
La memoria del computador se divide en dos:

Memoria Central o Interna Memoria Auxiliar o Externa Memoria Central o interna: La CPU utiliza la memoria del computador para guardar informacin mientras trabaja. Mientras esta informacin permanece en memoria, el computador puede tener acceso a ella en forma directa. La memoria interna consta de dos reas de memoria: La memoria RAM (Random Access Memory): Recibe tambin el nombre de memoria principal o memoria de usuario, en ella se almacena informacin slo mientras el computador este encendido. Cuando el computador se apaga o arranca nuevamente la informacin se pierde, por lo que se dice que la memoria RAM es una memoria voltil. Pgina 17 de 147

La memoria ROM (Read Only Memory): Es una memoria esttica que no puede cambiar, el computador puede leer los datos almacenados en la memoria ROM, pero no se pueden introducir datos en ella, o cambiar los datos que ah se encuentran; por lo que se dice que esta memoria es de slo lectura (Read Only). Los datos de la memoria ROM estn grabados en forma permanente y son introducidos por el fabricante del computador.

Memoria Auxiliar (Externa): Es donde se almacenan todos los programas o datos que el usuario desee. Los dispositivos de almacenamiento o memorias auxiliares (externas o secundarias) ms comnmente utilizados son: cintas magnticas, discos magnticos discos pticos, disquetes.
Direccin y contenido de Memoria:

La direccin de memoria es un nmero que identifica un lugar dentro de la memoria. El contenido es lo que se encuentra dentro de una direccin. Como analoga podemos pensar que direccin de memoria se asemeja al nmero que identifica a las casillas de correos y el contenido es lo que tienen adentro cada una de esas casillas.
Ejercicios:

1.

La siguiente ilustracin es una representacin conceptual de una memoria, cuyas direcciones estn representadas por variables (X,R,Y,etc) y los contenidos son los que se muestran (3,12,4,-9,etc) X 3 T 100 R 12 G 6 Y 4 A 20 S -9 J 5 L 100 W 80 P 8 Z 5

a)

Determinar los valores finales de los contenidos si se ejecutan secuencialmente las siguientes operaciones aritmticas. XG+5 WA*X TS+P-J JT+L ZP*R+Y YY+Z YY+1

Pgina 18 de 147

b)

Escriba los valores finales de las variables

2.

La siguiente ilustracin es una representacin conceptual de una memoria, cuyas direcciones estn representadas por variables (X, R, Y, etc.) y los contenidos son los que se muestran. X 14 T 16 R 8 G -56 Y 0 A -4 S -9 J 5 L 130 W -8 P 0 Z 0

a)

Determinar los valores finales de los contenidos si se ejecutan secuencialmente las siguientes operaciones matemticas. XX+A-W SX-J*Z RR+1 YR-X+2 LY+L TG+J-Z*3 WW+5 JJ+Z/X+2

b)

Escriba en la siguiente ilustracin los valores finales de las variables X R Y S L P

Pgina 19 de 147

3.

Para las siguientes situaciones identifique la etapa o fase del proceso en la resolucin de un programa. Para un problema dado, que haremos para llegar a una solucin correcta? Etapa _______________________________________________________

a)

b)

Al recorrer el algoritmo, algunos datos el resultado no son los esperados: Etapa _______________________________________________________

c)

Un algoritmo ser traducido a un lenguaje de programacin: Etapa _______________________________________________________

d)

Un algoritmo calcula el rea de un cuadrado para un valor cualq uiera de un lado: Etapa _______________________________________________________

e)

Al parecer el modelo matemtico escogido soluciona el problema slo para un tipo de datos: Etapa _______________________________________________________

Pgina 20 de 147

OBJETIVOS 2.3: DESCRIBIR A TRAVS DE DEFINICIONES Y EJEMPLOS CADA UNO DE LOS ELEMENTOS QUE COMPONEN UN ALGORITMO 2.3.1 CONCEPTO DE ALGORITMO La palabra algoritmo se deriva de la traduccin al latn de la palabra rabe alkhowarizmi, nombre de un matemtico y astrnomo rabe que escribi un tratado sobre manipulacin de nmeros y ecuaciones en el siglo IX. Un algoritmo es una serie de pasos organizados que describe el proceso que se debe seguir para dar solucin a un problema especfico.
Tipos de Algoritmos

Cualitativos: Son aquellos en los que se describen los pasos utilizando palabras. Cuantitativos: Son aquellos en los que se utilizan clculos numricos para definir los pasos del proceso. Lenguajes Algortmicos. Es una serie de smbolos y reglas que se utilizan para describir de manera explcita un proceso. Hay dos tipos: Grficos: Es la representacin grfica de las operaciones que realiza un algoritmo. Ejemplo: Diagrama De Flujo, DFD. No Grficos: Representa en forma descriptiva las operaciones que debe realizar un algoritmo. Ejemplo: Pseudocdigo.

2.3.2

ESTRUCTURA DE UN ALGORITMO.

Las caractersticas de un buen algoritmo son:

Debe tener un punto nico de inicio. Debe ser definido, no debe permitir dobles interpretaciones. Debe ser general, es decir, soportar la mayora de las variantes que se puedan presentar en la definicin del problema. Debe ser finito en tamao y tiempo de ejecucin. Es decir, debe tener un fin. Ejercicios: Presentar y discutir el siguiente ejercicio: Se desea construir un algoritmo que cambie la rueda de un automvil. La siguiente lista de paso le ayudar a en la construccin del algoritmo pero, para ello debe ordenarlas en una secuencia lgica.

Pgina 21 de 147

a) Sacar las tuercas c) Bajar el auto e) Sacar herramientas y repuesto. g) Colocar tuercas i) Abrir maletera k) Posicionar gata y levantar el auto m) Retirar rueda mala

b) d) F) h) j) l) n)

Inicio Colocar rueda de repuesto Cerrar maletera Fin Apretar tuercas Guardar herramientas y rueda Soltar tuercas

Solucin: b, i, e f, k, n, a, m, d, g, j, c, i, l, f, h
Presentar y discutir el siguiente ejercicio:

Solicitar que un alumno del curso haga la representacin de un robot. Otro alumno le dar instrucciones para caminar desde su puesto hacia la puerta de salida de la sala. Algunos supuestos: El alumno robot escucha y entiende instrucciones El proceso mover el pie implica todos los subprocesos involucrados como, levantar la pierna, flectar las rodillas, mover dedos, etc. Las instrucciones debern ser del tipo: Mover pie derecho hacia delante Mover pie izquierdo hacia delante Detenerse Girar izquierda x grados Girar derecha x grados

Dejar como tarea o resolver en clases algunos de los siguientes problemas cotidianos. a. Cambiar las cuatro ruedas de un vehculo. b. Preparar una taza de caf c. Tomar la micro desde la casa hasta la sede.

Pgina 22 de 147

OBJETIVO 2.4: REPRESENTAR GRAFICAMENTE LA CIRCULACION DE DATOS E INFORMACIN Y LA SECUENCIA DE OPERACIONES INVOLUCRADAS EN UN ALGORITMO DADO. 2.4.1 DEFINICION DE DIAGRAMA DE FLUJO

Para el diseo de algoritmos se utilizan tcnicas de representacin. Una de estas tcnicas son los Diagramas de Flujo (DDF), que se definen como la representacin grfica que mediante el uso de smbolos estndar unidos mediante lneas de flujo, muestran la secuencia lgica de las operaciones o acciones que debe realizar un computador, as como la corriente o flujo de datos en la resolucin de problema. 2.4.2 SIMBOLOGIA DE DIAGRAMA DE FLUJO

Algunos smbolos que se utilizan para desarrollar algoritmos en DDF son: Smbolo Funcin
Terminal. Marca el inicio y/o el final en la ejecucin de un DDF

Operacin de E/S en general. Se utiliza para la introduccin de datos desde un perifrico a la memoria del computador y para la salida de resultados desde la memoria del computador a un perifrico.

Proceso en general. Utilizado para mostrar cualquier tipo de operacin durante el proceso de elaboracin de los datos depositados en la memoria. Decisin de dos salidas, indica operaciones lgicas o comparativas seleccionando la ruta en funcin del resultado (si, no).
No No Si

Si

Indicadores de la direccin del flujo de datos

Conector. Este smbolo es reagrupamiento de lneas de flujo.

utilizado

para

el

Pgina 23 de 147

OPERACIONES BASICAS PARA ALGORITMOS Asignacin: Permite depositar valores o Asignacin: resultados de expresiones en una variable. Variable Expresin o valor Variable Expresin o valor Leer Variable: Toma uno o varios datos Leer Variable: desde un dispositivo de entrada para almacenarlos en variables Read Variable Read Variable

Escribir Expresin: Imprime datos en Escribir Expresin : los dispositivos externos, como impresora o pantalla
Print Expresin o variable

Print Expresin o variable

Procesos : Instrucciones que modifican Procesos : las variables a partir de un estado inicial hasta un estado final. p1; p2; p3; ; pn p1; p2; p3; ; pn

Algunas recomendaciones para el diseo de Diagramas de Flujo

1. 2. 3. 4. 5. 6.

No deben quedar lneas de flujo sin conectar. Se deben trazar los smbolos de manera que se puedan leer de arriba hacia abajo y de izquierda a derecha. Todo texto escrito dentro de un smbolo deber ser escrito claramente, evitando el uso de muchas palabras. Se deben usar solamente lneas de flujo horizontales y/o verticales. Se debe evitar el cruce de lneas utilizando los conectores. Se deben usar conectores slo cuando sea necesario.

Pgina 24 de 147

Ejemplos de desarrollo de algoritmos utilizando Diagramas de Flujo Ejemplo N1

Algoritmo que permite calcular el rea de un triangulo. Recordemos que la formula es: rea = (Base * Altura) / 2. Solucin Start Para verificar el diagrama de flujo utilizamos datos de prueba. Consideremos Base = 5 y Altura = 8. El resultado es la impresin del valor de la variable rea que es 20

Read Base Read Altura

Area(Base*Altura)/2

Print Area

End
Ejemplo N2

Algoritmo que captura tres notas y saca el promedio. Si el promedio es menor a 4.0 imprimir Reprobado caso contrario imprimir Aprobado Solucin
Start

Read X,Y,Z

P(x+y+z)/3

Para verificar que DDF est lgicamente bien construido utilizamos datos de prueba. Consideremos X=4,5; Y= 5,0 ; Z=5,5. La suma es 15, por lo tanto en P queda un 5,0. Se imprimir la palabra o string Aprobado
No

Si

P<4.0

Print Reprobado

Print Aprobado

End

Pgina 25 de 147

Ejemplo N3

Algoritmo que calcula la edad de una persona conociendo el ao de nacimiento y el ao actual. Solucin

Start

Read Ao_Actual Read Ao_Nac

EdadAo_actual Ao_Nac

Print Edad End

Pgina 26 de 147

Ejemplo N4

Hacer un DDF que verifique si un nmero es positivo, negativo o cero. Solucin

Start

Read Nu

Nu = 0

si

Print Nmero ingresado es cero

No Print Nmero ingresado es positivo

si

Nu > 0

No

Print Nmero ingresado es negativo

End
Ejemplo N5

Hacer un DDF para determinar el porcentaje de personas, de un grupo, que son mayores de edad (edad mayor o igual a 18 aos).

Pgina 27 de 147

Solucin Start
Read NumPer

Read Edad

No Edad >= 18

si
Cont18 Cont18 + 1

ContPer ContPer + 1

No

ContPer = NumPer

si

Porce (Cont18 / NumPer)*100

Print Porce

End

Ejemplo N6

Hacer un DDF para determinar la cantidad de nmeros pares en los primeros 50.000 nmeros naturales. (Incluidos el 1 y el 50.000). Ntese que aqu se incorpora el concepto de declaracin de variable e inicializacin Pgina 28 de 147

Solucin Start

Num nume 1 Num Cont1

Nume>50000

si

no

Print Cont

End
no

Nume es divisible por 2 ?

si Cont Cont+1

Numenume+1

Ejemplo N7

Hacer un DDF que permita calcular la edad actual de una persona teniendo como referencia la edad de la persona en otro ao. Por ejemplo, saber que edad actual tiene una persona sabiendo que para el 2010 tendr 9 aos. Se debe ingresar tambin el ao actual

Pgina 29 de 147

Solucin Start
Num aoX Num Edad Num aoHoy Num EdadHoyl

Read aoX Read Edad Read aoHoy

aoHoy = aoX

si

EdadHoyEdad

no

si aoHoy > aoX

EdadHoyEdad+(aoHoy-aoX)

no

EdadHoyEdad-(aoHoy-aoX)

Print EdadHoy

End

Ejemplo N8

Hacer un DDF que permita determinar la cantidad de nmeros impares entre dos nmeros naturales dados. No debe incluir los nmeros dados Pgina 30 de 147

Start Num inicio Num final Read inicio Read final Inicioinicio+1

no

Inicio<final Cuentacuenta+1 si
Print cuenta

End

no

Inicio es divisible por 2?

si

Pgina 31 de 147

Ejercicios propuestos (OBJETIVO 2.4)

1.-

Crear un algoritmo DDF que al leer un nmero entero positivo (asuma que el nme ro cumple las condiciones), imprima la palabra PAR si el nmero es par e IMPAR si es impar. Supongamos que la variacin del IPC de los meses de Febrero y Marzo fueron 0.3% y 0.6% respectivamente. Crear un algoritmo en DDF que muestre el valor de un producto actualizado al 31 de marzo y la diferencia de precio entre el mes de Febrero y Marzo. Precio de referencia al 1 de febrero. Confeccione un algoritmo en diagrama de flujo que al leer el neto de una factura, calcule el IVA y de cmo salida el total de la factura. Crear un algoritmo en diagrama de flujo que al ingresar dos nmeros imprima el mayor de ellos o IGUALES si son iguales. Confeccionar un algoritmo en diagrama de flujo que imprima el salario reajustado de un trabajador segn las siguientes tabla:

2.-

3.4.5.-

Categora Cat1 Cat2 Cat3 Cat4

Porcentaje Reajuste 20% 15% 10% 8%

Pgina 32 de 147

6.

Recorrer el siguiente DDF e indicar que es lo que hace Start


Num e Char X

Read e

e<15

si XInfantil No si No

e<21

XAdolescente

XAdulto

Print x

End

Haga el ruteo con los siguientes valores. e 28 15 21 14 Salida

Pgina 33 de 147

OBJETIVO 2.5: DESCRIBIR CADA UNO DE LOS ELEMENTOS QUE COMPONEN UN ALGORITMO EN PPSEUDOLENGUAJE 2.5.1: DEFINICION DE PPSEUDOLENGUAJE Los DDF presentan algunos inconvenientes: Cualquier modificacin obliga a reorganizar el diagrama de nuevo. Utiliza tcnica lineal, es desuso hoy da. El proceso de recorrer un algoritmo desde el inicio hasta el final puede ser complejo. Para dar solucin a los problemas que presentan los DDF se utiliza el pseudocdigo o ppseudolenguaje: Un Pseudocdigo describe un algoritmo utilizando una mezcla de frases en lenguaje comn, instrucciones de lenguaje de programacin y palabras claves. Antes de usar la tcnica de ppseudolenguaje para la resolucin de problemas, es necesario conocer una serie de conceptos. 2.5.2: TIPOS DE DATOS Recordemos que dato es un tipo especial de informacin no elaborada. En general valores sin caractersticas asociadas. Puesto que los datos los utiliza el computador para su procesamiento, segn sea lo que se desee guardar como dato, tenemos: Numricos: con ellos se puede realizar operaciones aritmticas. Pueden ser: a) enteros: son todos los positivos y negativos Ejemplo: -23 4 0 -23 33 b) reales incluye a los nmeros decimales Ejemplo: -0,234 -1,1 3,14 345,8 Alfanumricos: Corresponden a las letras maysculas y minsculas, caracteres especiales como guiones, parntesis, signos de puntuacin, etc.; cuando se definen nmeros de esta forma no se pueden efectuar operaciones aritmticas. Tambin se pueden utilizar mezclas de letras, caracteres y nmeros. Ejemplo: alpha-56 rwy-45_3-s

Para los efectos de desarrollar algoritmos en pseudolenguaje, se utilizar solamente variables del tipo numrica o alfanumrica 2.5.3: VARIABLES Se considera variable a una zona de memoria referenciada por un nombre donde se puede almacenar el valor de un dato, que puede cambiarse cuando se desee. El nombre de la variable es elegido por el usuario pero debe seguir ciertas reglas.

Pgina 34 de 147

Se debe tener muy claro que una variable no es un dato, sino un rea de memoria que contendr un dato. A cada variable, el computador le asigna una direccin de memoria. Cuando se haga referencia a esa variable el comp utador ir siempre a esa direccin. Para que una variable quede correctamente definida se debe especificar: Tipo Nombre Valor Tipo. El tipo de variable depende del tipo de datos que va a contener. Por lo tanto habr tantos tipos de variables como tipos de datos. Por ejemplo: reales, enteras, simple precisin, doble precisin, alfanumrico, booleano, etc. En este curso utilizaremos solamente variables del tipo numrica y alfanumrica. Variables del tipo numricas: Sintaxis: num nombre_variable nmero El prefijo num indica que es una variable del tipo numrica El smbolo indica asignacin Ejemplo: num a1 num cdigo 567 num contador -12 Variables del tipo Alfanumricas: Sintaxis: char nombre- variable comentario El prefijo char indica que es una variable del tipo alfanumrica Ejemplo: char b hola char apellido hoffman char resp y char blancos Las cremillas no se almacenan, slo su contenido. Nombre . El nombre de las variables es muy dependiente del lenguaje utilizado puesto que entre otros, existen palabras reservadas que no pueden ser utilizadas como nombres de variables. Valor. Indica cual es el valor que va tomar la variable en un principio. Tambin se conoce como inicializacin. Puede omitirse. 2.5.4: CONSTANTES Es una posicin de memoria, referenciada por un nombre, donde se almacena un valor que no puede cambiar y permanece invariable a lo largo del proceso. Tiene las mismas caractersticas de las variables en cuanto a nombre, tipo y valor.

Pgina 35 de 147

Ejemplos de constantes: num circulo 360 num an_recto 90 num pi 3.1416 char pas chile char fono 2296566 2.5.5: OPERADORES Todos los smbolos que enlazan argumentos en una operacin se llaman operadores y se utilizan para construir expresiones. Ejemplo: a+b=c aqu: el signo + y el signo = son operadores.

Los operadores pueden ser: Aritmticos. Para tratar con nmeros se utilizan los operadores aritmticos, de acuerdo a: SIGNO + * ^ /
DIV MOD

SIGNIFICADO Suma Resta Multiplicacin Potenciacin Divisin real Divisin entera


Resto de la divisin

Operadores aritmticos

Los operadores aritmticos permiten la realizacin de operaciones matemticas con valores, variables y constantes. Los operadores aritmticos pueden ser utilizados con tipos de datos enteros o reales. Si ambos son enteros, el resultado es entero; si alguno de ellos es real, el resultado es real. Ejercicios: 1. Operacin 12*12 12^2 123 DIV 4 22 MOD 5 2.

Resultado 144 144 30 2

Indicar el valor de x en cada uno de los siguientes casos: a) x (2+3)*6 d) x(2+3)MOD4 g) x2^2+3-2*(5MOD2) b) x(12+6)/2*3 e) x(2+3)DIV4 c) x(2+3)/4 f) x(3*4+2)*(15DIV2)

h) x3*6*2/8-3*(19DIV6) Pgina 36 de 147

3.

Expresar en formato computacional utilizando los operadores aritmticos las siguientes expresiones:
m+n n

a)

b)

m+n/ p pr/s

c)

m+ 4 pq

d)

crt 100

Alfanumrico Se utilizan para unir datos alfanumricos. Se llama tambin: concatenar. SMBOLO + SIGNIFICADO Concatenacin

Operador alfanumrico

Concatenacin: unir expresiones alfanumricas como eslabones de una cadena. Ejemplo N1 Expresin pseudo + cdigo 3 + . + 1416 Ejemplo N2 char A,b,c Ahola, bcomo te a+b+c --> hola, como te va cva Resultado pseudocdigo 3.1416

Relacionales Se usan para formar expresiones booleanas, es decir expresiones que al ser evaluadas producen un valor booleano: verdadero o falso. Se utilizan para establecer una relacin entre dos valores. SMBOLO < <= > >= <> = SIGNIFICADO Menor que Menor o igual que Mayor que Mayor o igual que Distinto que Igual que

Operadores relacionales Ejemplos: Comparacin 12 => 21 8 <>8 8 > -8 56 >=56 Resultado falso falso verdadero verdadero

Pgina 37 de 147

Cuando la comparcin se hace con datos alfanumricos, opera de acuerdo a las siguientes reglas: Se compara uno a uno de izquierda a derecha. Si son de diferente longitud pero exactamente iguales hasta el ltimo carcter del ms corto, entonce el ms corto es el menor. Slo son iguales dos datos alphanumricos si son iguales su contenido y su longitud. Las letras minsculas tienen mayor valor que las mayusculas. (tabla ascii)
Ejemplo: Comparacin a<b aaaa >aaa b>aaa ab>aaaa c<c 2<12 Resultado verdadero verdadero verdadero verdadero falso falso

Lgicos o Booleanos Combinan sus operandos de acuerdo al lgebra de Boole para producir un nuevo valor que se convierte en el valor de la expresin.

SMBOLO OR AND NOT

SIGNIFICADO Suma Lgica Producto Lgico Negacin

Operadores lgicos

OR u O: es un operador binario, afecta a dos operadores. La expresin que forma es verdadera cuando al menos uno de sus operandos es verdadero. Es un operador de disyuncin. Ejemplo: estudiamos o vamos al estadio AND o Y tambien es un operador binario. La expresin formada es cierta cuando ambos : operadores son ciertos al mismo tiempo. Es el operador lgico de conjuncin Ejemplo: si es verano y hace calor vamos a la playa NOT o NO: es un operador unario, afecta a un solo operando. Cambia el estado lgico de la expresin; si es verdad la transforma en falso y al revs. Ejemplo: no es verano El orden de prioridad de estos operadores es: NOT, AND y OR. Operadores Lgicos y las proposiciones: Los operadores lgicos, permiten entre otras cosas resolver proposiciones, donde llamaremos proposiciones a toda expresin que tenga un sentido y de la cual se puede decir que es verdadera o falsa. Esta es llamada lgica proposicional.

Pgina 38 de 147

Ejemplo:

a) b) c)

La quinta regin se caracteriza por ser zona minera (Esta proposicin es falsa). Cmo se resuelve este ejercicio? (Esta no es una proposicin) El caballo blanco de Napolen es blanco (Esta proposicin es verdadera).

Las proposiciones pueden ser nominadas con algunas letras tales como p,q,r, etc. Las cuales pueden ser unidas por conectivos lgicos, dando origen a una expresin lgica. Los operadores lgicos ms utilizado en la programacin es la negacin NOT, los conectivos AND, OR. Su tablas de verdad son: P 1 (V) 0 (F) NOT P 0 (F) 1 (V)
OPERADOR NOT

P 1 (V) 1(V) 0 (F) 0 (F)

Q 1 (V) 0 (F) 1 (V) 0 (F)

P AND Q 1 (V) 0 (F) 0 (F) 0 (F)


OPERADOR AND

P 1 (V) 1 (V) 0 (F) 0 (F) Ejemplo N1: Si a=10, b=20,

Q 1 (V) 0 (F) 1 (V) 0 (F)

P OR Q 1 (V) 1 (V) 1 (V) 0 (F)


OPERADOR OR

c=30 entonces el valor de verdad de la siguiente expresin es: (a < b) AND (b > c) (10<20) AND (20>30) V AND F F Pgina 39 de 147

Ejemplo N2: 1. Si a = 10, a) b = 12, c = 13, d =10

((a > b) OR (a < c)) AND ((a = c) OR (a > = b)) ( F OR V ) AND ( F OR F ) V AND F F ((a > = b) OR (a < d)) AND (( a > = d) AND (c > d)) ( F OR F ) AND ( V AND F ) F AND F F

b)

c)

NOT (a = c) AND (c > b) NOT( F ) AND ( V ) V AND V V

Ejemplo N3 Supongamos que a Ud. le solicitan evaluar si un nmero cualquiera se encuentra en el intervalo [2, 5[. Su respuesta debe ser en trmino de verdadero o falso. Previo El intervalo matemtico [2,5[, se interpreta de la siguiente forma, son todos los nmero que se encuentran entre 2 y 5 considerando el 2 y excluyendo al 5. Cuando el corchete encierra al nmero [2 ndica que se considera al nmero por tal motivo utilizamos el signo = en la expresin siguiente. Cuando el parntesis en corchete se utiliza hacia fuera del nmero o no lo encierra como el caso de 5[, ndica que no se considera su extremo por tal razn no se utiliza el smbolo =. Solucin: Luego, el intervalo en forma lgica es: (x >= 2) and (x < 5) Supongamos que el valor de x es 3, la respuesta debe ser: verdadero. Hagamos la evaluacin. (3 >= 2) and (3 < 5) V V Si x toma el valor 13 que se encuentra fuera del intervalo, la respuesta debe ser: falso. V

Pgina 40 de 147

Hagamos la evaluacin. (13>=2) and (13<5) V and F Observe los siguientes ejemplos: a) b) c) ]12,56[ ] -,56] and [150, +[ [25,89] or ]800, +[ = (x>12) and (x< 56) = (x<=56) and (x >= 150) = (x>=25) and (x<=89) or (x>800) F

Generaliades de los operadores 1. 2. La explesin x>=y es igual a la expresion (x>y) or (x=y)

Parntesis. Se utilizan para anidar expresiones.

Ejemplo: Expresin (9>3) or (5=3) (9>4) and (5<>4) (16=(4*4)) and 7<>7 ((2+3) * ( 4 - 9)) / 5 3. Resultado verdadero verdadero falso -5

El orden de prioridad de los operadores es: parntesis, comenzando por el ms interno potencias productos y divisiones sumas y restas concatenacin relacionales lgicos

4.

Los operadores en una misma expresin con igual nivel de prioridad se evalan de izquierda a derecha.

2.5.6 Tipo de Expresiones Las exp resiones son la representacin de un clculo necesario para la obtencin de un resultado. En informtica existen tres tipos de expresiones: 1. Numricas: Generan un resultado numrico y se construyen mediante operadores aritmticos: Ejemplo: (X+Y) *Z*4.15+X Pgina 41 de 147

2.

Alfanumricas : Resultados alfanumricos, se construyen mediante operadores alfanumricos: Ejemplo: NJuan Don + N = Don Juan

3.

Booleanos: Resultados verdaderos o falso, se construyen mediante operadores relacionales y lgicos: Ejemplo: A>3 y B<5.

Pgina 42 de 147

Ejercicios propuestos (OBJETIVO 2.5) 1. a) b) c) d) e) f) g) h) i) j) 2. a) b) c) d) e) f) g) h) 3. Indicar si son ciertas o falsas las expresiones: 12 + 12 = 24 12 + 12 = 1212 hola = hola hola = hola 12 + 12 = 24 verdadero and verdadero not falso (verdadero and verdadero) or falso (falso or falso) and falso not (verdadero and falso) Realice el siguiente clculo respetando las prioridades 4+2*5 23 * 2 / 5 46 / 5 3 + 5 * (10 - (2 + 4)) 3 + 5 * (10 - 6) 3.5 + 5.09 - 140 / 40 3.5 + 5.09 - 3.5 2.1* (1.5 + 3.0 * 4.1) Transforme las siguientes expresiones algebraicas en expresiones algortmicas utilizando los operadores informticos: M+ N PQ

a) b)

M +4 N

c)

M +N PQ
N P R Q 5 P+

d)

e)

3 x y 2 xy 2 x + + z z 1 y

Pgina 43 de 147

f)

a b d c e f g

h+i j+k

4. a) b) c) d) 5. a) b) c) d) 6. a) b) c) d) e) f) g) 7. a) b) c) d) e) f) 8. a) b) c) d) 9. a)

Resuelva las siguientes concatenaciones: 12 + 12 El resultado + es Mtodo+lgico 123+.24- +A Si a = 10, b = 20, c = 30, entonces

(a + b) > c (a b) < c (a b) = c (a * b) <> c Calcular el valor de las siguientes expresiones aritmticas: 21 mod 7 9/2+15 mod 2 (3+6)/2+1.5 32/3^2 2*3+5*6/2*3 (25-7*3)^3/4*5 10+38/(14-(10-12/(2*3))) Calcular el resultado de las siguientes expresiones lgicas: not (5>6) and 7<=4 7>4 and 5<=5 or 4=5 not (7=7) and (7>=8 or 8=6) (5+2)<=5 and 3*2=5 or 7<=2*2 or 2*2<=(2+2) (not (14/2>8) or 5>5) and (5<=27/3 or 5+3<=3/2) (3+5*2)=12/3 and ((5+3)=18/9 or 10/2<=9) or not (9>=2) Expresar el resultado de las siguientes expresiones: "PEDRO " + "GOMEZ " "GARCIA " + " - GONZALEZ " "CALLE- " + "-MAYOR " 12.465+.450+-k Escriba los siguientes intervalos numricos en sus correspondientes intervalos lgicos: [5,15] b) ]120,200] c) [0,50[ d) ]15,30[ e) ]-,15] and [30, +[ Pgina 44 de 147

OBJETIVO 2.6: DESARROLLAR ALGORITMOS QUE INCLUYEN MANEJO DE VARIABLES, ENTRADA, SALIDA Y ESTRUCTURAS DE CONTROL 2.6.1 CONCEPTO DE INSTRUCCIONES Instrucciones. Son las rdenes que conforman un algoritmo. 2.6.2 CLASIFICACIN DE LAS INSTRUCCIONES
2.6.2.1 Instrucciones de entrada

Son instrucciones que se utilizan para tomar datos desde la entrada al sistema, por ejemplo, el teclado y que se guardaran en variables. Asignacin: Permite ingresar un valor a una variable para realizar procesos.
2.6.2.2 Instrucciones de salida

Sirven para presentar en pantalla o en impresora comentarios, constantes, contenidos de las variables y resultados de expresiones.
2.6.2.3 Instrucciones de control de decisin

Las instrucciones condicionales o tomas de decisin permiten realizar acciones alternativas. Significa que la ejecucin de una lnea o grupos de lneas del programa depende de s se cumple o no alguna condicin. Para mostrar este tipo de instruccin vamos a incorporar otra forma de solucionar problemas: Seudocdigo o pseudolenguaje : describe un algoritmo utilizando una mezcla de frases en lenguaje comn, instrucciones de lenguaje de programacin y palabras claves. 2.6.3 Estructura de los algoritmos en ppseudolenguaje Normalmente se dividen en tres partes:
1.

inicial, en ella: se declaran e inicializan las variables que se usaran. se abren archivos se introducen los valores de aquellas variables que va n fuera de los ciclos otros, como mensajes.

2.

cuerpo o proceso. Corresponde a la parte ms importante del algoritmo. Normalmente estas instrucciones se deben cumplir un nmero determinado de veces o hasta que se cumpla cierta condicin. final: impresin de resultados finales cierre de archivos otros Pgina 45 de 147

3.

2.6.4 Nomenclatura de instrucciones que se utilizarn en ppseudolenguaje Instrucciones de entrada Se utilizan para tomar datos de entrada que se guardaran en las variables. Sintaxis: Ejemplos: Read mensaje, nombre_variable

Read Ingrese dato, a Read Nombre : , nom Instrucciones de salida Sirven para presentar en pantalla o en impresora comentarios, constantes, contenidos de las variables o resultados de expresiones. Sintaxis: Ejemplos: Print variable o comentarios.

Print Liquido a pago:, a Print Nombre : , nom Nota: El nombre de las variables se indican sin cremillas para que imprima su contenido. Por ejemplo: Print chao (las cremillas no se imprimen) Print a (Se imprime el contenido de la variable a) Print nom (Se imprime el contenido de la variable nom) Otro ejemplo nu 56 Print nu, (mostrar el 56) Print 4/2+4 (mostrar 6) Print 8+2*3 (mostrar 14) Si a=hola b=y c=chao Print a+b+c (Se imprimir hola y chao). Comentarios entre lneas Cuando se desarrollan algoritmos, es muy conveniente documentar ciertas lneas de cdigo indicando que es lo que hacen. Para ello se utiliza el carcter #. Veremos su uso en los prximos ejercicios

Pgina 46 de 147

2.6.5 ESTRUCTURAS DE SELECCIN 2.6.5.1 Instruccin de alternativa simple Equivalente en DDF

Alternativa Simple: Controla la ejecucin de un conjunto de instrucciones por el cumplimiento o no de una condicin de tal forma que, si esta es verdadera se ejecutan, si es falsa no se ejecutan. Sintaxis If ( Condicin) Then I1; I2; I3l; ; In End If

Por ejemplo, en la expresin si llueve, lleva paraguas, la accin de llevar paraguas est supeditada a que se cumpla la condicin, si llueve. Ejemplo: Realizar un algoritmo en DDF y pseudolenguaje que permita obtener los clculos de una venta de computadores. Debe considerar que: S el monto de la venta sin IVA es mayor que $ 300.000 se aplica un descuento del 10% a la venta. Debe calcular el impuesto IVA que es un 18% sobre toda venta. Entender el problema Por cada venta hay que ingresar el monto de la venta. Analizar si corresponde descuento. Calcular el IVA e imprimir el total de la venta. Determinar lo que se intenta hacer Se quiere el valor total de la venta. Identificar datos importantes Valor unitario del computador. Construir un plan Ingresar valor unitario del computador en una variable entera. Preguntar si la venta es menor que 300.000. SI es mayor realizar descuento y guardar el resultado Calcular el IVA y guardar el resultado en una variable numrica Obtener venta bruta: Sumar venta ms IVA y guardar en una variable numrica. Imprimir venta bruta con un mensaje adecuado.

Pgina 47 de 147

Solucin en DDF Start

num Valor, Impu, Desc

Read Valor

Valor<30000 si Impuvalor*0,18

no

Desc Valor*0,10

Valor Valor - Desc

Valor valor + impu

Print Total: ,valor

End Solucin en ppseudolenguaje #Se declaran 3 variables Num Valor, Desc, Impu Read Valor If (Valor > 300000) Then Desc Valor * 0,10 Valor Valor Desc End If Impu Valor * 0,18 Valor Valor + Impu Print Total: , Valor End Verificacin del algoritmo Dados dos valores para computadores: $350.000 y 290.000, recorra el algoritmo para verificar su funcionamiento.

Pgina 48 de 147

2.6.5.2

Instruccin de alternativa doble Equivalente en DDF

Alternativa Doble: Controla la ejecucin de Dos Conjuntos De Instrucciones por el cumplimiento o no de una condicin, de tal forma que, si la condicin es verdadera, se ejecutan las instrucciones del primer bloque (I1...In), de lo contrario si la condicin es falsa, se ejecutan las instrucciones del segundo bloque (J1...Jn). If ( CONDICION ) Then I1; I2; I3l; ; In Else J1; J2; J3; ; Jn End If

A partir de este punto, todos los algoritmos se harn solamente en ppseudolenguaje.

Ejemplo: Realizar un algoritmo en ppseudolenguaje que permita obtener los clculos de una venta de computadores. Debe considerar que: S el monto de la venta sin IVA es mayor que $ 300.000 se aplica un descuento del 10% a la venta. Caso contrario se aplicar un descuento del 5%. Debe calcular el impuesto IVA que es un 18% sobre la venta. Debe imprimir el monto del descuento. Solucin Num valor,desc,impu Print Ingrese precio: Read valor # Uso de la instruccin de alternativa doble If (valor > 300000) Then desc valor * 0,10 Else desc valor * 0,05 End If Print Descuento: , desc Valor valor desc Impu valor * 0,18 Valor valor + impu Print Total: , valor End Pgina 49 de 147

2.6.5.3

Instruccin de alterna tiva mltiple o anidada Equivalente en DDF

Alternativa Mltiple: Controla la ejecucin de varios conjuntos de instrucciones por el valor final de una expresin, de tal forma que cada conjunto de instrucciones est ligado a un posible resultado de la expresin, existiendo adems un bloque al final que corresponde a otros posibles valores no definidos.
Case Expresin in valor1: Instrucciones break valor2: Instrucciones break valor3: Instrucciones break valorN: Instrucciones break valorOtro: Instrucciones

End Case La seleccin de una opcin se puede hacer mediante la instruccin If. Sin embargo, cuando existe un nido de If es complicado seguir el cdigo. La instruccin Case es ms rpida y ms sencilla de manejar. La expresin se evala solamente una vez. Ejemplos de uso de la sentencia condicional.
1. Algoritmo que permita introducir un nmero por teclado y que enve un mensaje indicando si es negativo o positivo.

Anlisis: Un nmero es positivo o negativo, pero nunca ambos. Al cero se le considera positivo. Solucin: #se declara una variable numrica num j #uso de la instruccin Read con mensaje incorporado Read Introducir un nmero:, j # uso de la Instruccin de alternativa doble If (j > = 0) Then Print es positivo Else Print es negativo End If End

Pgina 50 de 147

2.

Desarrollar un algoritmo que permita introducir un nmero por teclado y que indique si es par o impar. Anlisis : para saber si un nmero es par o impar hacemos:(nmero mod 2). Si el resto es 0 entonces es par, caso contrario, impar. Solucin: num j Read Introducir un nmero:, j # uso de la Instruccin de alternativa doble If (j mod 2 = 0) Then Print El numero , j, es par Else Print El numero , j, es impar End If End

3.

Desarrollar algoritmo que muestre un men con 4 operaciones aritmticas de la siguiente forma: (no hay validacin) Men Principal 1.suma 2.resta 3.multiplicacin 4.divisin Solucin #se declaran e inicializan 4 variables num a0, b0, op0 Print men principal Print 1.- suma Print 2.- resta Print 3.- multiplicacin Print 4.- divisin Read Elija opcin : , op Read Ingrese nmero , a Read Ingrese otro nmero , b # Instruccin de alternativa mltiple o anidada Case op in 1:Print La suma es , a+b break 2:Print La resta es , a-b break 3:Print La multiplicacin es , a * b break 4:Print La divisin es , a / b End case End Pgina 51 de 147

4.

Introducir dos nmeros cualquiera. Sumarlos si ambos son mayores que cero. Multiplicarlos si son menores a cero. Sacar la diferencia si uno es positivo y el otro negativo. Indicar con un mensaje si ambos nmeros son iguales a cero. Solucin: num a,b, c 0 Read Ingrese N ,a Read Ingrese otro N , b #Utilizaremos nido de if If (a>0 and b>0) Then Print El resultado es :, a+b Else If (a<0 and b<0) Then Print el resultado es :, a*b Else If (a=0 and b=0) Then Print el resultado es cero Else Imprimirel resultado es :, a-b End if End if End If End

5.

Introducir dos nmeros cualquiera. Sumarlos si ambos son mayores que cero. Multiplicarlos si son menores a cero. Sacar la diferencia si uno es positivo y el otro negativo. Indicar con un mensaje si es igual a cero.
Solucin:

# Esta solucin considera Ifs No anidados num a, b, c 0 Read Ingrese n , a Read ingrese otro n , b If (a>0 and b>0) Then Print el resultado es :, a+b EndIf If (a<0 and b<0) Then Print el resultado es :, a*b EndIf If (a=0 and b=0) Then Print el resultado es cero EndIf If ( a >0 and b<0 OR a<0 and b>0) Then Print el resultado es :, a-b End If End Pgina 52 de 147

EJERCICIOS PROPUESTOS (OBJETIVO 2.6.5)


1.

Suponga que un individuo desea invertir su capital en un banco y desea saber cuanto dinero ganar despus de un mes si el banco paga a razn de 2% mensual. Ingresar dos nmeros y determinar cual es el mayor o si son iguales. Leer tres nmeros diferentes e imprimir el nmero mayor de los tres. Ingresar tres nmeros y mostrarlos en forma decreciente Leer 2 nmeros; si son iguales que los multiplique, si el primero es mayor que el segundo que los reste y si no que los sume. Un vendedor recibe un sueldo base ms un 10% extra por comisin de sus ventas, el vendedor desea saber cuanto dinero obtendr por concepto de comisiones por las tres ventas que realiza en el mes y el total que recibir en el mes tomando en cuenta su sueldo base y comisiones. Una tienda ofrece un descuento del 15% sobre el total de la compra y un cliente desea saber cuanto deber pagar finalmente por su compra. Un alumno desea saber cual ser su calificacin final en la materia de Algoritmos. Dicha calificacin se compone de los siguientes porcentajes: 55% del promedio de sus tres calificaciones parciales. 30% de la calificacin del examen final. 15% de la calificacin de un trabajo final. Un maestro desea saber que porcentaje de hombres y que porcentaje de mujeres hay en un grupo de estudiantes. Un hombre desea saber cuanto dinero se genera por concepto de intereses sobre la cantidad que tiene en inversin en el banco. El decidir reinvertir los intereses siempre y cuando estos excedan a $7000, y en ese caso desea saber cuanto dinero tendr finalmente en su cuenta. Determinar si un alumno aprueba o reprueba un curso, sabiendo que aprobar si su promedio de tres calificaciones es mayor o igual a 4,5; reprueba en caso contrario. En un almacn se hace un 20% de descuento a los clientes cuya compra supere los $1000. Cul ser la cantidad que pagara una persona por su compra? Un obrero necesita calcular su salario semanal, el cual se obtiene de la siguiente manera: Si trabaja 40 horas o menos se le paga $16 por hora Si trabaja ms de 40 horas se le paga $16 por cada una de las primeras 40 horas y $20 por cada hora extra.

2. 3. 4. 5.

6.

7.

8.

9.

10.

11.

12.

13.

Pgina 53 de 147

14.

Para el intervalo cerrado [347, 2342], desarrollar un algoritmo que imprima, cuente y sume el cuadrado de los mltiplos de 7 y que adems, cuente los mltiplos de 3 que se encuentren en dicho intervalo. En una empresa de n trabajadores se ha decidido reajustar el sueldo a todo el personal en forma escalonada. Hacer un algoritmo que permita ingresar la edad y el sueldo actual de un trabajador para que entregue el clculo del nuevo sueldo de acuerdo a la siguiente tabla:
Si es menor de 26 aos: aumento del 10% Entre 26 y 35 aos: aumento del 20% Entre 36 y 50 aos: aumento del 50% Sobre 50 aos: aumento del 70%

15.

Pgina 54 de 147

2.6.6: INSTRUCCIONES DE CONTROL DE REPETICIN Concepto de Bucle o ciclo En informtica, la mayora de las veces las tareas que realiza el computador son repetitivas, lo nico que vara son los valores de los datos con los que se est operando. Se llama bucle o ciclo a todo proceso que se repite un nmero de veces dentro de un programa. Contador: Un contador es una variable cuyo valor se incrementa o decrementa en una cantidad constante cada vez que se produce un determinado suceso o accin. Los contadores normalmente se utilizan en las estructuras de repeticin con la finalidad de contar sucesos o acciones internas de bucle o ciclo. Se debe realizar una operacin de inicializacin que consiste en asignar al contador un valor inicial. Se situar antes y fuera del ciclo. Sintaxis: Nombre_del_contadorvalor_inicial Los incrementos o decrementos del contador se realizan de la siguiente forma: Sintaxis: Nombre_del_contador Nombre_del_contador + valor_constante Nombre_del_contador Nombre_del_contador - valor_constante
Primero se evala la expresin de la derecha del signo , realiza la suma o la resta y su resultado se lo asigna a lo que hay a la izquierda del signo Ejemplos: cont cont + 1 a a 3 aa+2 con con + 5 m7 mm+7 Print m (mostrar 14)

Acumulador: Son variables cuyo valor se incrementa o decrementa en una cantidad variable. Al igual que los contadores tambin necesitan inicializarse fuera del ciclo. Sintaxis: Nombre_del_acumuladorvalor_inicial Su operacin dentro del bucle queda definida en la siguiente expresin: Sintaxis: Nombre_del_acumuladorr Nombre_del_acumulador + nombre_variable Ejemplo: saldo saldo + deposito saldo saldo retiro

Pgina 55 de 147

Concepto de Interruptor: Un interruptor o bandera (switch) es una variable que puede tomar los valores 1(verdadero) 0 (falso) a lo largo de la ejecucin de un programa, dando as informacin de una parte a otra del mismo. Puede ser utilizado para control de ciclo. 2.6.7: FORMAS COMUNES DE ESTRUCTURAS DE REPETICIN
2.6.7.1 Instruccin While End While

While : Repite la ejecucin de un conjunto de instrucciones, de tal forma que estas se ejecutan mientras la condicin sea verdadera, la condicin, ser evaluada siempre antes de cada repeticin.
Sintaxis:

Equivalente en DDF

While (condicin) Instrucciones End While

Por ejemplo: num a 0 While (a < 20) Print a aa+1 End While
Lo primero que hace el algoritmo es examinar la condicin: Si se cumple: realiza todas las instrucciones que se encuentran dentro del ciclo y lo har hasta que se deje de cumplir la condicin, entonces sale del ciclo. Si no se cumple: no entrar al ciclo por lo tanto, no ejecuta ninguna instruccin que se encuentre dentro del ciclo, es decir, se lo saltar. La condicin del bucle no tiene por que ser nica. Puede haber ms de una y estar unidas por operadores lgicos Por ejemplo: While (a < 20 and resp = s) .. instrucciones .. End While

Pgina 56 de 147

Ejemplos de uso de la sentencia de ciclos.


1.

Hacer un algoritmo que imprima los nmeros naturales del 1 al 100 en orden ascendente.

Anlisis : Se requiere una variable que vaya tomando los valores desde 1 hasta 100, de uno en uno. Como debemos partir de 1 debemos inicializar la variable en 1. Se debe utilizar un ciclo para que imprima el valor de la variable y al mismo tiempo vaya incrementndola 1 hasta llegar al 100. Variable numrica cont se utilizar como contador.
Solucin num cont 1 While (cont < = 100) Print cont cont cont + 1 End While End 2.

Hacer un algoritmo que imprima los nmeros naturales del 100 al 15 en orden decreciente.

Anlisis : Se requiere una variable que vaya tomando los valores desde 100 hasta 15, de uno en uno. Como debemos partir de 100 debemos inicializar la variable en 100.
Se debe utilizar un ciclo para que imprima el valor de la variable y al mismo tiempo vaya decrementndola en 1 hasta llegar a 15. Variable numrica cont se utilizar como contador. Solucin num cont 100 While (cont > = 15) Print cont cont cont - 1 End While End 3.

Hacer un algoritmo que imprima la suma de los 100 primeros nmeros naturales.

Anlisis : Aqu el trabajo es doble; por un lado se debe generar los nmeros y por otro, a medida que se generan, se suman. Para la primera operacin se necesita un contador que aumente de 1 en 1 y para la segunda, un acumulador que acumule la suma de los nmeros generados. La impresin de los nmeros se realiza fuera del bucle pues solamente se debe imprimir el resultado final. Variables: c = contador para generar los nmeros. acu = acumulador donde se va realizando la suma de los nmeros.

Pgina 57 de 147

Solucin #El acumulador se debe inicializar en cero num c 1, acu 0 While (c < = 100) acu acu + c cc+1 # verificar que sucede si el acumulador # se pone despus del contador End While Print La suma es , acu End

4.

Hacer un algoritmo que imprima todos los nmeros naturales que hay desde 1 hasta un nmero que se introduce por teclado.

Anlisis : Hay que introducir un nmero por teclado, para ello necesitamos una variable. Se deben imprimir los nmeros desde 1 hasta dicho nmero. El proceso de introduccin del nmero por teclado debe ser antes del ciclo para saber hasta que nmero debemos imprimir. Variables: c = contador para generar los nmeros. nn = Para recibir el nmero que se ingresa por teclado.
Solucin num nn , c1 Read Ingrese un nmero, nn While (c < =nn) Print c cc+1 End While End

5.

Escriba un algoritmo que permita obtener la nota final de 15 alumnos y el promedio general del curso. Para la nota final debe considerar lo siguiente: El promedio de las notas parciales equivale al 60% de la nota final. El examen equivale al 40 % de la nota final.

Anlisis : Debe ingresar 15 veces el promedio de las notas parciales del semestre y 15 veces la nota del examen. Cada vez que se obtenga el promedio final de un alumno, se acumula para obtener el promedio general del curso. Variables: Contador que permita controlar que el proceso se repita 15 veces. Variable numrica para ingresar el promedio del semestre Variable numrica para ingresar la nota del examen. Variable numrica para acumular el promedio general del curso. Pgina 58 de 147

Solucin

Num cont, prom, acuProm, exaNot, finalAlu cont 1 acuProm0 While ( cont <= 15 ) Print Ingrese Promedio del Alumno: , cont Read prom Read Ingrese Nota Examen: , exaNot finalAlu (prom * 0.6) + (exaNot * 0.4) acuPromacuProm + finalAlu Print La nota final del alumno , cont, es ,finalAlu cont cont + 1 End While Print El promedio general del curso es, acuProm/15 End

Obs: Esta solucin utiliza un ciclo While determinado, es decir, se conoce a priori el nmero de iteraciones, en este caso 15. Si en nmero de alumnos fuera indeterminado, se pueden controlar las iteraciones interactivamente con el usuario, por ejemplo, a trves de una variable de tipo carcter, la cual debe ser leida y dependiendo de su valor de verdad ( S o N ), se realizara o no una nueva iteracin. Para esta solucin el ciclo estara controlado por esta variable. Adems realizaremos la validacin de la variable de tal forma que solamente pueda tomar los valores S o N. # Solucin que utiliza el ciclo While indeterminado Num cont, prom, acuProm, exaNot, finalAlu # Se declara e inicializa la variable Resp Char Resp S cont 0 acuProm0 While ( Resp = S ) cont cont + 1 Read Ingrese promedio : , prom Read Ingrese Nota Examen: , exaNot finalAlu (prom * 0.6) + (exaNot * 0.4) acuPromacuProm + finalAlu Print La nota final del alumno es: ,finalAlu cont cont + 1 Print Desea otro ingreso S/N : Read Resp While ( Resp <> N or Resp <> S ) Read Resp` End While End While Print El promedio general del curso es, acuProm / cont End Pgina 59 de 147

6.

Hacer algoritmo que permita imprimir 10 veces en forma alternadamente: hola y chao. Utilizar el concepto de interruptor.

Solucin #la variable sw se usar como switch num sw 0, I 1 While (i<=10) If (sw = 0) Then Print hola #imprime y cambia el valor de switch sw1 Else Print chao #imprime y cambia el valor de switch sw 0 End If ii+1 End While End

7.

Hacer un algoritmo que cuente en forma independiente los pares e impares mediante switch del intervalo [1,1000].

Solucin #la variable sw se usar como switch num sw 0, I1, sump0, sumip0 While (i<=1000) If (sw = 0) Then sumip sumip + 1 #imprime y cambia el valor de switch sw1 Else sump sump + 1 # cambia el valor de switch sw 0 End If ii+1 End While Print La cantidad de nmero pares es: , sump Print La cantidad de nmero impares es: , sumip End

8.

Introducir dos nmeros por teclado. Imprimir los nmeros naturales que hay entre ambos nmeros empezando por el ms pequeo. Contar cuantos hay. Contar cuantos son pares. Calcular la suma de los impares.

Pgina 60 de 147

Solucin

num nuA, nuB , cont 0, par 0, sumimp 0 Read Ingrese primer nmero: , nuA Read Ingrese segundo nmero: , nuB #para verificar quien es el ms pequeo, nos #aseguramos que ser nuA If (nuA > nuB) Then aux nuA nuA nuB nuB aux End If While (nuA < = nuB) Print nuA cont cont + 1 If (nuA MOD 2 = 0) Then par par + 1 Else sumimp sumimp + nuA End If nuA nuA + 1 End While Print Cantidad de nmeros entre ambos :, cont Print Cantidad de pares :, par Print La suma de los impares , sumimp End

2.6.7.2 Instruccin For Cuando se conoce de antemano los lmites en que vara una variable, es posible utilizar otra estructura de ciclo. Instruccin For For: Repite un grupo de instrucciones un nmero especfico de veces. Sintaxis: For (Valor_inicial, condicin, incremento) sentencias End For

Descripcin de la instruccin

Pgina 61 de 147

Valor_inicial, es una sentencia de asignacin que sirve como variable de control del bucle o ciclo. Condicin, es una expresin que indica la condicin que se debe cumplir para que contine el bucle o ciclo. Incremento, define como va cambiando el valor de la variable de control cada vez que se repite el ciclo. Sentencias, conjunto de instrucciones que se van a repetir tantas veces como dure el ciclo. Ejemplo N1: Algoritmo que muestra los nmeros enteros entre 1 y 100. num i For (i1, i<=100, ii+1) Print i End For End 2.6.7.3 Instruccin Do..While (Condicin) DoWhile (Condicin): Repite un grupo de instrucciones de tal forma que estas se ejecutan mientras la condicin sea Verdadera. La condicin ser evaluada siempre despus de cada repeticin. El conjunto de instrucciones se ejecuta al menos una vez. Do Instrucciones While (Condicin)

Ejemplo Construya un algoritmo en ppseudolenguaje que permita a un usuario imprimir boletos de avin desde Santiago hacia el Norte del pas. Por cada boleto se ingresar: Nombre del pasajero. Destino del vuelo (1=Primera Regin ..... 5=Quinta Regin). Clase (E:ejecutiva, T:turista). Los siguientes son los valores de los vuelos para la clase turista, segn regin de destino la clase ejecutiva lleva un recargo de $20.000 en todos los destinos. Regin 01 02 03 04 05 Turista $100.000 $80.000 $60.000 $50.000 $30.000 Pgina 62 de 147

Se requiere que el programa imprima un boleto con el nombre del pasajero, la regin a la que viaja y el precio a pagar por el vuelo. Utilizaremos la instruccin Do..While para validar algunos datos. Solucin num Coddes, Precio char NomCli, Regin, clase Print Ingrese Nombre Cliente Read NomCli Do Print Ingrese Cdigo De Destino Read Coddes While (Coddes <1 or Coddes>5) Do Print Ingrese Clase E:ejecutiva, T:turista) Read Clase While (Clase<>E and Clase<>T) Case Coddes in 1:ReginPrimera Regin Precio100000 Break 2:ReginSegunda Regin Precio80000 Break 3:ReginTercera Regin Precio60000 Break 4:ReginCuarta Regin Precio40000 Break 5:ReginQuinta Regin Precio30000 End Case If (Clase=E) Then PrecioPrecio + 20000 End If Print Nombre, NomCli Print Regin Destino, Regin Print Valor Pasaje, Precio End

Pgina 63 de 147

EJERCICIOS PROPUESTOS DE CICLOS (OBJETIVO 2.6.6) 1. Calcular el promedio de un alumno que tiene 7 notas en la asignatura Programacin II. Leer 10 nmeros e imprimir solamente los nmeros positivos Leer 20 nmeros e imprimir cuantos son positivos, cuantos negativos y cuantos son ceros. Leer 15 nmeros negativos, convertirlos a positivos e imprimir dichos nmeros. Suponga que se tiene un conjunto de calificaciones de un grupo de 40 alumnos. Realizar un algoritmo para calcular la calificacin media y la calificacin ms baja de todo el grupo. Calcular e imprimir la tabla de multiplicar de un nme ro cualquiera. Imprimir el multiplicando, el multiplicador y el producto. Simular el comportamiento de un reloj digital, imprimiendo la hora, minutos y segundos de un da desde las 0:00:00 horas hasta las 23:59:59 horas Una compaa de seguros tiene contratados a N vendedores. Cada uno hace tres ventas a la semana. Su poltica de pagos es que un vendedor recibe un sueldo base y un 10% extra por comisiones de sus ventas. El gerente de la compaa desea saber cuanto dinero obtendr en la semana cada vendedor por concepto de comisiones por las tres ventas realizadas y cuanto le corresponder tomando en cuenta su sueldo base y sus comisiones. En una empresa se requiere calcular el salario semanal de cada uno de los n obreros que laboran en ella. El salario se obtiene de la siguiente forma: Si el obrero trabaja 40 horas o menos se le paga $20 por hora Si trabaja ms de 40 horas se le paga $20 por cada una de las primeras 40 horas y $25 por cada hora extra. 10. Disee un algoritmo que determine cuantos hombres y cuantas mujeres se encuentran en un grupo de N personas. Suponga que los datos son extrados persona por persona. Obtener el promedio de calificaciones de un grupo de n alumnos. Una persona desea invertir su dinero en un banco, el cual le otorga un 2% de inters mensual. Cul ser la cantidad de dinero que esta persona tendr al cabo de un ao si la ganancia de cada mes es reinvertida?. Calcular el promedio de edades de hombres, mujeres y de todo un grupo de alumnos. Pgina 64 de 147

2. 3.

4. 5.

6.

7.

8.

9.

11. 12.

13.

14. 15.

Encontrar el menor y el mayor valor de un conjunto de n nmeros dados. En un supermercado un cajero captura los precios de los artculos que los clientes compran e indica a cada cliente cual es el monto de lo que deben pagar. Al final del da le indica a su supervisor cuanto fue lo que cobro en total a todos los clientes que pasaron por su caja. Cinco miembros de un club contra la obesidad desean saber cuanto han bajado o subido de peso desde la ltima vez que se reunieron. Para esto se debe realizar un ritual de pesaje en donde cada uno se pesa en diez bsculas distintas para as tener el promedio ms exacto de su peso. Si existe diferencia positiva entre este promedio de peso y el peso de la ltima vez que se reunieron, significa que subieron de peso. Pero si la diferencia es negativa, significa que bajaron. Lo que el problema requiere es que por cada persona se imprima un letrero que diga: SUBIO o BAJO y la cantidad de kilos que subi o bajo de peso. Se desea obtener el promedio de g grupos que estn en un mismo ao escolar; siendo que cada grupo puede tener n alumnos que cada alumno puede llevar m materias y que en todas las materias se promedian tres calificaciones para obtener el promedio de la materia. Se desea desplegar el promedio de los grupos, el promedio de cada grupo y el promedio de cada alumno. En una tienda de descuento las personas que van a pagar el importe de su compra llegan a la caja y sacan una bolita de color, que les dir que descuento tendrn sobre el total de su compra. Determinar la cantidad que pagar cada cliente desde que la tienda abre hasta que cierra. Se sabe que si el color de la bolita es roja el cliente obtendr un 40% de descuento; si es amarilla un 25% y si es blanca no obtendr descuento. En un supermercado una ama de casa pone en su carrito los artculos que va tomando de los estantes. La seora quiere asegurarse de que el cajero le cobre bien lo que ella ha comprado, por lo que cada vez que toma un artculo anota su precio junto con la cantidad de artculos iguales que ha tomado y determina cuanto dinero gastara en ese artculo; a esto le suma lo que ira gastando en los dems artculos, hasta que decide que ya tomo todo lo que necesitaba. Aydale a esta seora a obtener el total de sus compras. Un teatro otorga descuentos segn la edad del cliente. Determinar la cantidad de dinero que el teatro deja de percibir por cada una de las categoras. Tomar en cuenta que los nios menores de 5 aos no pueden entrar al teatro y que existe un precio nico en los asientos. Los descuentos se hacen tomando en cuenta el siguiente cuadro: Categoras Categora 1 Categora 2 Categora 3 Categora 4 Categora 5 Edad 5 - 14 15 - 19 20 - 45 46 - 65 66 en adelante 35 % Descuento 35 % 25 % 10 % 25 %

16.

17.

18.

19.

20.

21.

La presin, volumen y temperatura de una masa de aire se relacionan por la frmula: Pgina 65 de 147

masa=

presin * volumen. 0.37 * (temperatura + 460) Calcular el promedio de masa de aire de los neumticos de n vehculos que estn en compostura en un servicio de alineacin y balanceo. Los vehculos pueden ser motocicletas o automviles.

22.

Determinar la cantidad semanal de dinero que recibir cada uno de los n obreros de una empresa. Se sabe que cuando las horas que trabajo un obrero exceden de 40, el resto se convierte en horas extras que se pagan al doble de una hora normal, cuando no exceden de 8; cuando las horas extras exceden de 8 se pagan las primeras 8 al doble de lo que se paga por una hora normal y el resto al triple. Una persona que va de compras a la tienda Enano, S.A., decide llevar un control sobre lo que va comprando, para saber la cantidad de dinero que tendr que pagar al llegar a la caja. La tienda tiene una promocin del 20% de descuento sobre aquellos artculos cuya etiqueta sea roja. Determinar la cantidad de dinero que esta persona deber pagar. Un censador recopila ciertos datos aplicando encuestas para el ltimo Censo Nacional de Poblacin y Vivienda. Desea obtener de todas las personas que alcance a encuestar en un da, que porcentaje tiene estudios bsicos, medios, superiores, y estudios de postgrado. Un jefe de casilla desea determinar cuantas personas de cada una de las secciones que componen su zona asisten el da de las votaciones. Las secciones son: norte, sur y centro. Tambin desea determinar cul es la seccin con mayor nmero de votantes. Un negocio de copias tiene un lmite de produccin diaria de 10.000 copias si el tipo de impresin es offset y de 50.000 si el tipo es estndar. Si hay una solicitud nue va, el empleado tiene que verificar que las copias pendientes hasta el momento y las copias solicitadas no excedan del lmite de produccin. Si el lmite de produccin se excediera el trabajo solicitado no podra ser aceptado. El empleado necesita llevar un buen control de las copias solicitadas hasta el momento para decidir en forma rpida si los trabajos que se soliciten en el da se aceptan o no. Calcular la suma siguiente: 100 + 98 + 96 + 94 + . . . + 0 en este orden Leer 50 calificaciones de un grupo de alumnos. Calcule y escriba el porcentaje de reprobados. Tomando en cuenta que la calificacin mnima aprobatoria es de 70. Leer por cada alumno de Diseo estructurado de algoritmos su nmero de control y su calificacin en cada una de las 5 unidades de la materia. Al final que escriba el nmero de control del alumno que obtuvo mayor promedio. Suponga que los alumnos tienen diferentes promedios. El profesor de una materia desea conocer la cantidad de sus alumnos que no tienen derecho al examen de nivelacin. Para tener derecho, el alumno debe tener un promedio igual o superior a tres en el promedio de las 5 unidades. Pgina 66 de 147

23.

24.

25.

26.

27.

28.

29.

30.

31.

Disee un algoritmo que lea las calificaciones obtenidos en las 5 unidades por cada uno de los 40 alumnos y escriba la cantidad de ellos que no tienen derecho al examen de nivelacin. Disee un algoritmo que lea los 250.000 votos otorgados a los 3 candidatos a alcalde e imprima el nmero del candidato ganador y su cantidad de votos. Suponga que tiene usted una tie nda y desea registrar las ventas en su computador. Disee un algoritmo que lea por cada cliente, el monto total de su compra. Al final del da que escriba la cantidad total de ventas y el nmero de clientes atendidos. Suponga que tiene una tienda y desea registrar sus ventas por medio de un computador. Disee un pseudocdigo que lea por cada cliente: a) b) c) d) e) El monto de la venta, Calcule e imprima el IVA , Calcule e imprima el total a pagar, Lea la cantidad con que paga el cliente, Calcule e imprime el cambio.

32.

33.

Al final del da deber imprimir la cantidad de dinero que debe haber en la caja.

Pgina 67 de 147

OBJETIVO 3.1: REPRESENTAR ESTRUCTURAS DE DATOS ELEMENTALES 3.1.1: ESTRUCTURA DE DATOS Hasta ahora un dato implica una variable. El problema existe cuando tenemos una gran cantidad de datos relacionados entre s. Para cada uno, una variable distinta. Para dar solucin a esta situacin, se agrupan los datos en un solo conjunto, con un mismo nombre y se tratan como una sola unidad. Estos conjuntos reciben el nombre de estructura de datos. Tipos de estructuras: Internas: residen en memoria. Por ejemplo : arreglos Externas: residen en dispositivos de almacenamiento. Por ejemplo: archivos Estas estructuras de datos se encuentran prcticamente en la totalidad de los lenguajes de programacin. OBJETIVO 3.2: REPRESENTAR ESTRUCTURAS DE ARREGLOS 3.2.1: CONCEPTO DE ARREGLO Arreglo: Es una estructura de datos constituida por un nmero fijo de elementos, todos ellos del mismo tipo y ubicados en direccin de memoria fsicamente contiguas. Elementos de un arreglo: Tambin denominados componentes, es cada uno de los datos que forman parte integrante del arreglo. Nombre de un arreglo: Es la identificacin utilizada para referenciar al arreglo y lo s elementos que la forman. Tipo de datos de un arreglo: Marca del tipo bsico que es comn a todos y cada uno de los elementos o componentes que forman dicha estructura. ndice: Es un valor numrico entero y positivo a travs del cual podemos acceder directamente e individualmente a los distintos elementos que forman el arreglo, pues marca la posicin relativa de cada elemento dentro del mismo. Aunque no todos los lenguajes operan de la misma forma, para efectos de ppseudolenguaje el primer elemento de un arreglo tiene ndice 1. Tamao de un arreglo: Corresponde al nmero mximo de elementos que lo forman, siendo el tamao mnimo un elemento y el tamao mximo n elementos. Acceso a los elementos o componentes de un arreglo: Los elementos de un arreglo tratados individualmente son autnticos datos bsicos que reciben el mismo trato que cualquier otra variable. Para acceder o referenciar un elemento en particular es suficiente con indicar el nombre del arreglo seguida del ndice correspondiente a dicho elemento, entre corchetes cuadrados []. Dimensin de un arreglo: Determinado por el nmero de ndices que necesitamos para acceder a cualquier elemento que lo forman. Pgina 68 de 147

Clasificacin de los arreglos: Un arreglo se clasifica segn sus dimensiones. Hay arreglo s unidimensionales, bidimensionales y multidimensionales, en este curso se estudiarn las unidimensionales y las bidimensionales 3.2.2 : ARREGLOS UNIDIMENSIONALES O VECTORES Arreglos Unidimensionales: Tambin reciben el nombre de vector o lista y son estructuras de datos cuyos elementos son todos del mismo tipo y con las mismas caractersticas, y se referencia con un nombre comn. Dichos elementos se ubican en posicin de memoria fsicamente contigua, poseen una sola fila y n columnas.
Ejemplo num Temp[6]
Temp 1 ndices

100
2 3

25
4

34
5

0
6

Nombre del arreglo: Temp Tipo de elementos : Numrico Tamao del arreglo: 6 Elementos del arreglo En el elemento Temp[1] hay un 5 En el elemento Temp[2] hay un 100 En el elemento Temp[3] hay un 25 En el elemento Temp[4] hay un 34 En el elemento Temp[5] hay un 0 En el elemento Temp[6] hay un 3 ndices: 1, 2, 3, 4, 5, 6 Dimensin: unidimensional, pues slo requiere de un ndice. Un elemento cualquiera del arreglo se referencia mediante nombre_arreglo[ndice] Por ejemplo: Print Temp[2], imprimir 100 Print Temp[6], imprimir 3 Print Temp[7], producir un error El proceso de reservar un rea de memoria se llama dimensionamiento Tipo_de_arreglo nombre_arreglo[ N ] Donde: Tipo_de_arreglo: nombre_arreglo : N :

Indica si es numrico o alfanumrico. Cumple la misma norma que los nombre de variables. Nmero mximo de elementos que contendr el arreglo. Pgina 69 de 147

Los ndices slo pueden ser valores enteros. Los ndices pueden comenzar de 1 de 0. En este curso, el primer elemento de un arreglo tendr ndice 1. Al referenciar un elemento, si se sobrepasa el valor de ndice se produce un error. Ejemplo de dimensionamiento de arreglos unidimensionales char nomb[30] num edad[20] : : indica un arreglo de 30 elementos tipo caracter indica un arreglo de 20 elementos numricos

Las listas o arreglos unidimensionales se dimensionan una sola vez. Se debe distinguir claramente entre posicin y contenido. Se debe tener en cuenta que cuando se define un arreglo numrico, en cada elemento se podrn ingresar nmeros, independiente de la cantidad de dgitos que tenga dicho nmero. Ejemplos con arreglos numricos
1.

Algoritmo que permite llenar un arreglo de 100 elementos con nmeros naturales del 1 al 100.

Solucin #con instruccin For num i, A[100] For (i1, i<=100,ii+1) A[i]i End For End #con instruccin While num i1, A[100] While (i<=100) A[i]i ii+1 End While End #con instruccin DoWhile num i1, A[100] Do A[i]i ii+1 While (i<=100) End

Pgina 70 de 147

2.

Dado un arreglo de 100 elementos numricos cualquiera, generar un procedimiento que imprima la suma de todos los elementos del arreglo.

Solucin 1 Usando ciclo While num vector[100] , suma 0 , i 1 While (i <= 100) suma suma+vector[i] i i + 1 End While Print La suma de todos los elementos del vector es , suma End Solucin 2 Usando ciclo for num vector[100], suma 0, i For (i 1; i <= 100; i i + 1) suma suma+vector[i] End For Print La suma de todos los elementos del vector es , suma End
3.

Dado un arreglo llamado vector lleno con 50 elementos numricos cualesquiera, generar un procedimiento que busque el mayor y menor elemento del arreglo.

Solucin 1 Usando ciclo While num Vector[50] , min, max, i # # Se asume que en la primera posicin esta el valor mnimo y mximo. # min vector[1] max vector[1] i 1 While (I <= 50) If (vector[I] > max) Then max vector[I] End if If (vector[I] < min) Then min vector[I] End If II+1 End While Print El Mayor valor es , max Print El menor valor es , min End

Pgina 71 de 147

Solucin 2 Usando ciclo for Num Vector[50] , min, max, i # # Se asume que en la primera posicin esta el valor mnimo y mximo. # min vector[1] max vector[1] For (i 1; i <= 100; i i + 1) If (vector[I] >= max) Then max vector[I] End if If (vector[I] <= min) Then min vector[I] End If End For Print El Mayo valor es , max Print El menor valor es , min End Dado que en los arreglos siempre conocemos de antemano los lmites en que vara el ndice para realizar el recorrido, la instruccin ms adecuada para manejar arreglos es ForEnd For Dado dos arreglos llamados vector1 y vector2 cada uno con 100 elementos numricos cualquiera, confeccione un procedimiento que genere un tercer vector llamado resultado que contenga la multiplicacin de ambos arreglos. Luego indique en que posicin del arreglo resultado esta el mayor valor. Solucin
4.

num vector1[100], vector2[100], resultado[100], auxmax, posicion, i # # Se inicializa la variable auxmax con la multiplicacin de la primera # posicin de ambos vectores. auxmax vector1[1]*vector2[1] posicion 1 For (i 2; i <= 100; i i + 1) resultado[i] vector1[i] * vector2[i] If (resultado[i] > auxma x) Then auxmax resultado[i] posicion i End If End For Print La posicin del mayor valor es posicion End
5.

Algoritmo que permite llenar un arreglo de 50 posiciones con nmeros del 1 al 50. Luego, leer el arreglo y mostrarlo por pantalla. Mostrar el contenido de la posicin 5, 15 y 33 Pgina 72 de 147

Solucin num nume[50], h For (h1,h<=50, hh+1) nume[h] h Print nume[h] End For Print nume[5], nume[15], nume[33] End
6.

Dado un arreglo de 100 elementos lleno con nmeros cualquiera, hallar el ms pequeo
e indicar su posicin.

Solucin num i, n[100], indi1 For (I1,i<=100, ii+1) If (n[i] < n[indi]) Then Indii End If End For Print la posicin del mnimo es: , indi Print su valor es : , n[indi] End Dado un arreglo de N elementos numricos cualquiera, generar otro arreglo que contenga los elementos que estn en las posiciones pares del primero. Solucin
7.

num j, k 1, n[N], nueva[M] For (j2,j<=N, jj+2) nueva[k] n[j] kk+1 End For End
8.

Dado un arreglo de 100 elementos numricos cualquiera, dejar en la ltima posicin el ms grande.

Solucin Num i, n[100], aux For(i1, i=100,ii+1) #Si el nmero de la izquierda es ms grande lo intercambiamos If (n[i] > n[i+1]) Then Auxn[i] n[i] n[i+1] n[i+1] aux End If End For
End

Pgina 73 de 147

Ejemplos con arreglos alfanumricos Se debe tener en cuenta que cuando se define un arreglo alfanumrico, en cada elemento se almacenar solamente un carcter, independiente de la cantidad de caracteres que tenga la cadena o string que se desee almacenar en el arreglo.
9.

Hacer un algoritmo que permita ingresar una frase cualquiera a un arreglo de caracteres para luego escribirla sin el carcter blanco (espacio).

Previo Normalmente se desconoce el largo de la frase que se ingresar al arreglo. Hay que poner algn lmite. En general, es una buena prctica utilizar el estndar de 80 caracteres que corresponde al ancho de la pantalla independiente que se pueda declarar un arreglo de la cantidad que se necesite. El ingreso de una cadena a un arreglo alfanumrico es directo, como se indica en este ejemplo. Solucin char arre[80] num i Read Ingrese una frase , arre For(I1, i<=80,Ii+1) If (arre[i]<> ) Then Print arre[i] End If End For End
10.

Hacer un algoritmo que permita ingresar por teclado una frase cualquiera a un arreglo y luego, cuente las veces que aparece una determinada letras en la frase introducida. La letra tambin debe ser introducida por teclado. Repetir el proceso cuantas veces desee.

Anlisis Dado que normalmente se declara un arreglo de 80 caracteres, es posible que la frase sea mucho ms corta que 80. Bajo esas condiciones, no es muy aconsejable tener que recorrer el arreglo completo. En prcticamente todos los lenguajes de programacin existe una funcin que verifica el largo de una cadena dentro de un arreglo. Una vez que se ha ejecutado la funcin entrega un nmero. Por ahora, no utilizaremos ninguna funcin. Adaptaremos el largo de los arreglos para que reciban las cadenas de los ejercicios.

Pgina 74 de 147

Solucin char frase[80], letra, resp S num lon0, a0, i While (resp = S) Read Ingrese una frase : , frase Read Ingrese letra a buscar , letra For (i 1, i <=80, Ii+1) If (frase[i] = letra) Then aa+1 End If End For Print La letra, letra, aparece , a, veces Print Desea continuar S/N Do read resp While (resp <>N or resp <>S) End While End
11.

Desarrollar un algoritmo que acepte una cadena de caracteres por teclado y luego escriba la cantidad de letras a que tiene.

Solucin char BA[40] num co0, i0 Read Ingrese una frase , BA For(i1, i<=40, ii+1) If (BA[i]=A or BA[i]=a) Then coco+1 End If End For Print La frase , BA, tiene , co, letras a End

12.

Desarrollar un algoritmo que acepte una cadena de caracteres por teclado y luego la escriba sin vocales. Asumamos que todo est en minsculas.

Solucin char B[60] num d Read Ingrese una frase , B For(d1, d<=60,dd+1) If(B[d]<>aand B[d]<>eand B[d]<>i and B[d]<>o and B[d]<>u)Then Print B[d] End If End For End Pgina 75 de 147

13.

Dado un arreglo de n elementos, lleno con nmeros cualquiera. Ingresar un nmero por teclado y buscar en el arreglo cuntos son mayores que l, cuantos son menores que l y donde se encuentra su igualdad.

Solucin num a[n], m, sup0, inf0, i Read Ingrese nmero: , m For( I1, i <=n, Ii+1) If (m = a [i] ) Then Print Una igualdad se encontr en posicin: , i Else If (m > a[ i ]) Then sup sup + 1 Else inf inf + 1 End If End If End For Print Existen , sup, nmeros mayores a, m Print Existen , inf , nmeros menores a, m End
14.

Dado un arreglo A de 50 elementos numricos. Hacer algoritmo que permita llenar un arreglo numrico B de 5 elementos de tal forma que cada elemento del arreglo B tenga la suma de cada decena del arreglo A.

Solucin num A[50], B[5], h1, x10, acu0, k1 While (h <= 50) For ( jh, j<=x, jj+1) Acuacu + A[ j ] End For B[k] acu Acu 0 kk+1 xx+10 hj End While End

Pgina 76 de 147

Ejercicios propuestos de arreglos (OBETIVO 3.2) 1. Escriba un algoritmo en Ppseudolenguaje que permita generar un arreglo numrico de la siguiente forma.

ndices 2.

10 1

9 2

8 3

7 4

6 5

5 6

4 7

3 8

2 9

1 10

Desarrollar un algoritmo en Ppseudolenguaje que permita almacenar en un vector 50 elementos, nmeros reales ingresados por el usuario. Despus del almacenamiento debe mostrar el menor y mayor nmero que se encuentra en el arreglo. Utilizando el v ector creado en el ejercicio anterior (2) muestre el nmero almacenado que se encuentran en las posiciones mltiplos de 3. Desarrollar un algoritmo en Ppseudolenguaje que permita almacenar en un arreglo alfanumrico de nombre Nom, el nombre de los empleados; en otro arreglo alfanumrico llamado Rut, el Rut de los empleados y en un arreglo numrico de nombre Sue, el sueldo imponible de 200 trabajadores de una empresa. Deber imprimir el siguiente listado.

3.

4.

Acta de Sueldos Nombre RUT Sueldo Imp. Salud AFP Total desc. Sueldo Liq.

TOTALES Notas: Considere los siguientes descuentos: AFP:12,8% Salud: 7,2% Total desc.= Salud+AFP Sueldo Liq.= Sueldo Imp. Total des.

5. Utilizando los mismos arreglos del ejercicio N4 desarrollar un algoritmo en Ppseudolenguaje que permita generar el siguiente listado SUELDOS LIQUIDOS MAYORES DE 250000 NOMBRES RUT SUELDOS LIQUIDOS

TOTALES Pgina 77 de 147

OBJETIVO 3.3: REPRESENTAR MEDIANTE ALGORITMOS PROCESOS TIPICOS CON ARREGLOS. PROCESOS TIPICOS CON ARREGLOS 3.3.1: Variable auxiliar. Esta variable es muy utilizada para intercambiar los valores de dos variables sin perder sus contenidos o valores. Se puede ejemplarizar mediante tengo dos vasos, uno con agua y el otro con vinagre. Necesito intercambiar los lquidos Ejemplo El siguiente algoritmo permite el cambio de valor de dos variables Solucin num a, b, aux a5 b20 Print El valor de a es = , a, El valor de b es = , b auxa ab baux Print El valor de a es = , a, El valor de b es = , b End 3.3.2: Nmeros aleatorios Muchas veces no es necesario introducir nmeros por el teclado. Se puede indicar que lo haga el computador. Son los nmeros aleatorios. Sintaxis RND(nmero) RND genera nmeros entre 0 y el nmero indicado - 1 Ejemplo Generar nmeros entre 1 y 50.

RND(50) +1

Ejemplo Llenar un arreglo de 250 posiciones con nmeros cualquiera. Una vez lleno mostrar por pantalla el cuadrado de los elementos pares. Solucin num A[250], k For (k1, k<=250,kk+1) A[k]RND(1000) End For For (k1, k<=250,kk+1) If (k MOD 2 = 0) Then Print A[k] * A[k] End If End For End Pgina 78 de 147

3.3.3: ORDENAMIENTO La ordenacin consiste en reorganizar un conjunto de elementos de acuerdo a algn criterio determinado; estos criterios permiten agrupar elementos siguiendo una secuencia especfica, permitiendo establecer una nueva ordenacin. Normalmente el orden es Ascendente : de la a- z, A-Z, 0-9 Descendente : inverso a lo anterior Si existen valores repetidos quedan en posiciones contiguas Para llevar a cabo un ordenamiento existen muchos mtodos y sirven tanto para arreglos numricos como alfanumricos. 3.3.3.1 Mtodos de la burbuja Se basa en llevar el mximo de la lista a la ltima posicin. En la primera pasada se lleva el ms grande al final. En las etapas siguientes se repite el proceso para llevar el segundo mximo a la penltima posicin y as sucesivamente. La cantidad de pasadas es la cantidad de elementos 1 Ejemplo Sea un arreglo numrico A de n elementos. Ordenar los elementos de menor a mayor. Solucin: num A[ n ], i, k, aux For( k 1, k < n, k k + 1) For (I1, i <=(n-k), i i + 1 ) If (A[ i ] > A[ i + 1 ]) Then aux A[ i ] A[ i ] A[ i + 1 ] A[ i + 1 ] aux End If End For End For 3.3.3.2 Mtodos del switch Es una variante del mtodo la burbuja. Tambin se basa en llevar el mximo al final del arreglo. Existe un switch que permite saber si la lista est ordenada o no. Para el mismo ejercicio anterior Solucin. num A[ n ], i, k0, aux, sw1 While (sw <> 0) sw0 kk+1 For (i1, i <=(n-k), i i + 1 ) If (A[ i ] > A[ i + 1 ]) Then aux A[ i ] A[ i ] A[ i + 1 ] A[ i + 1 ] aux sw1 Pgina 79 de 147

End If End For End While End

Ejemplo Escriba un algoritmo en ppseudolenguaje que permita que el usuario ingrese 100 nmeros enteros para luego listar dicho nmeros ordenados de menor a mayor. Anlisis Asumamos el que el nombre del vector es Nor. Utilizaremos el mtodo Burbuja. Antes Nor 10 23 1 2

35 3

14 4

25 5

68 6

72 7

..

..

205 100

Despus Nor 10 14 1 2

23 3

25 4

35 5

72 6

68 7

..

..

205 100

Solucin: num Nor[100], i, k, aux


For (i1, i<=100, ii+1)

Print ingrese un nmero Read Nor[i] End For For ( i1, i<=99, ii+1) for(ki+1, k<=100, kk+1) If Nor[i]>Nor[k] Then AuxNor[i]) Nor[i]Nor[k] Nor[k]aux End If End For End For Print El Vector ordenado es : For (i1, i<=100, ii+1) Print Nor[i] End For End

Pgina 80 de 147

3.3.4: BUSQUEDA La operacin de bsqueda consiste en determinar si un elemento determinado pertenece o no al conjunto de elementos que forman parte integrant e de un arreglo y, en caso afirmativo indica la posicin que dicho elemento ocupa. Los mtodos ms usados de bsqueda son: 1. 2. Bsqueda secuencial o lineal. (Veremos este) Bsqueda binaria o dicotmica.

Bsqueda secuencial en un vector desordenado : Esta operacin consiste en recorrer un vector secuencialmente de izquierda a derecha hasta encontrar el elemento buscado o hasta alcanzar el final del vector, en cuyo caso finalizar la operacin de bsqueda sin haber localizado el elemento en cuestin. En aquellos casos en que el elemento buscado se encuentra repetido, indicar la posicin del situado ms a la izquierda, es decir, el de menor ndice. En el siguiente algoritmo se muestra el mtodo de bsqueda secuencial. Vector es el nombre del arreglo numrico, lleno de nmeros y N es el largo del mismo. num i1, Vector[N], ele Read Ingrese el elemento a buscar, ele While (i<=N and Vector[i]<>ele) ii+1 End While If (i>N ) Then Print (El elemento no se encuentra en el arreglo) Else Print (El elemento se encuentra en la posicin: , i) End If End Ejemplo En un vector de nombre Cod se encuentra los 100 cdigos de los productos de una bodega, en otro vector de nombre Nom se encuentran los nombre de los 100 productos. Crear un algoritmo que al ingresar un cdigo muestre el nombre del producto si existe o, el mensaje Producto no existe. Anlisis Asumamos los siguientes vectores como ejemplos para Cod y Nom Cod 10 23 1 2 Nom Harina Azcar Fideos Salsa 1 2 3 4 Arroz 5 Aceite Te 6 7 .. .. Caf 100 Pgina 81 de 147 35 3 14 4 25 5 68 6 72 7 .. .. 205 100

Solucin num i1 char ele Read Ingrese el cdigo del producto a buscar, ele While (i<=100 and Cod[i]<>ele) ii+1 End While If i>100 Then Print Producto no existe Else Print (El nombre del producto es:, Nom[i]) End If End

Pgina 82 de 147

3.3.5: ARREGLOS BIDIMENSIONALES. Se llaman tambin matrices o tablas. Es un conjunto de datos homogneos cada uno de los cuales debe referenciarse por dos subndices. Para definir una matriz Sintaxis : tipo nombre[ndice de filas, ndice de columnas] Los elementos de una fila tienen todos igual valor en el primer subndice mientras que los de una columna tienen igual valor para el segundo subndice. Ejemplo: Para una matriz de 4 x 5 o sea 4 filas y 5 columnas, tenemos: a[1,1] a[2,1] a[3,1] a[4,1] a[1,2] a[2,2] a[3,2] a[4,2] a[1,3] a[2,3] a[3,3] a[4,3] a[1,4] a[2,4] a[3,4] a[4,4] a[1,5] a[2,5] a[3,5] a[4,5]

Se puede ir directamente a una posicin determinada indicando sus coordenadas. Operaciones sobre matrices En las matrices las operaciones de declaracin, asignacin, lectura y escritura obedecen a los mismos principios de los vectores, la diferencia es que como las matrices son arreglos bidimensionales requieren de dos ndices [fila, columna] ; as pues tenemos que: Ejemplos con matrices 1. Desarrollar un algoritmo que permita llenar una tabla de 5 por 6 con nmeros introducidos por teclado. Imprimirla. Sumar todos los elementos de las columnas impares. Imprimir los elementos 2,3 y 3,2 Anlisis Elementos de la tabla x x x x x x x x x x

x x x x x

x x x x x

x x x x x

x x x x x

Las columnas impares son 1, 3 y 5. Los elementos de dichas columnas deben sumarse.

Pgina 83 de 147

Solucin num mat[5,6], i, j, sum0 #Para manejar matrices se deben declarar dos ciclos #uno para cada ndice For(i1, i<=5, ii+1) For(j1, j<=6, jj+1) Read mat[i,j] #para determinar las columnas impares If (j MOD 2 = 1) sum sum + mat[i,j] End If End For End For Print Elementos de la tabla Print ----------------------------- #nuevamente dos ciclos para imprimirla For(i1, i<=5, ii+1) For(j1, j<=6, jj+1) Print mat[i,j] End For End For Print La suma de los elementos de las columnas impares es: , sum Print El elemento 2,3 es : , mat[2,3] Print El elemento 3,2 es : , mat[3,2] End 2. Escriba un algoritmo en ppseudolenguaje que permita almacenar en una matriz de nombre P el peso de 50 clientes de un gimnasio durante los doce meses del ao 2001. Adems, debe listar el promedio del peso anual de cada cliente. La tabla tiene los siguientes datos 1 74.3 80.6 64.5 70 58.5 2 70.5 80 64.5 71 56 3 67 80 64.5 71 55.5 4 65 78.6 60 70 55.5 5 65 78 60 73 50.3 .. 12 59 78.2 60 70.2 49

Pgina 84 de 147

Solucin: num P[50,12], i k, suma For (i1, i<=50, ii+1) Print ( Datos de Peso del cliente N, i) For (k1, k<=12, kk+1) Read Peso del mes: , k, es , P[i,k] End For End For For(i1, i<=50, iI+1) Suma 0 For(k1, k<=12, kk+1) Suma Suma + P[i,k] End For Print El promedio anual del peso del cliente,i,es:, Suma/12 End For End 3. Generar una tabla de 4 por 5 con valores aleatorios entre 1 y 100. A partir de ella crear su transpuesta, es decir una matriz de 5 por 4. La matriz transpuesta se fo rma poniendo las filas de la primera matriz como columnas en la segunda.

Anlisis A medida que vamos generando los elementos de la primera tabla se llena la segunda. Solucin num a[4,5], b[5,4], i, j For(i1, i<=4, i i + 1) for(j1, j <= 5, j j + 1) a[i,j] (RND(100)) + 1 b[j,i] a[i,j] End For End For End 4. Una empresa de publicidad tiene 100 empleados. Para efectos de remuneraciones, todos los empleados estn diferenciados por categora. Muchos empleados generan horas extraordinarias al mes y es necesario calcular el monto de cada uno considerando la cantidad de horas extraordinarias echas en un mes. Los antecedentes que la empresa nos proporciona son: Existen 4 categoras de trabajadores. Existe una matriz de 100 por 31 donde cada posicin mantiene el nmero de horas extraordinarias trabajadas al da durante un mes. Tambin se dispone de dos vectores: Uno de 100 elementos con la categora que tiene cada trabajador y uno de 4 elementos con el valor de las horas extraordinarias por categora.

Se pide hacer un algoritmo que permita calcular: Pgina 85 de 147

a) Cuanto le corresponde a cada empleado por concepto de hora extraordinarias durante el mes b) Total pagado por la empresa por dicho concepto.

Anlisis En la matriz de 100 por 31, las horas realizadas por cada trabajador durante el mes estn en una misma fila. Por lo tanto, de debe sumar toda una fila para saber la cantidad de horas extraordinarias trabajadas en el mes por un trabajador. SI esto se hace 100 veces, se obtiene la cantidad de horas extraordinarias generadas por cada trabajador durante el mes de 31 das En el vector de 100 elementos estn las categoras de los trabajadores, el ndice identifica a cada trabajador, vale decir este vector tiene solamente nmeros entre 1 y 4 indicando la categora del trabajador. En la lista de categoras, hay valores que indican cuanto se paga por concepto de horas extraordinarias a cada categora, vale decir, esta lista tiene cuatro cantidades. El ndice indica la categora. Veamos un esquema Matriz de 100 po r 31, la llamaremos hor 1 3 2 1 1 2 5 1 3 1 4 4 3 3 4 1 5 4 1 4 1 . 4 1 31 6 3 2 1 1

Ejemplo, el trabajador 2, tiene 1 hora extraordinaria el da 5, o sea, hor[2,5]=1 Vector de 100, lo llamaremos cat 1 3 2 3 3 2 4 1 5 2 100 4

El trabajador nmero 2 tiene categora 3, vale decir, cat[2]=3 Vector de 4, lo llamaremos val

13456

18345

25230

28100

La categora 3 tiene un monto asignado de $25.230 pesos por cada hora extraordinaria Pgina 86 de 147

Solucin num hor[100, 31], cat[100], val[4], i, j, tot 0 For (i 1, i<=100, i i + 1) acuh0 For (j1, j<=31, j j + 1) #recorremos la matriz acuh acuh + hor[i, j] End For Print El trabajador i, horas extras, acuh, A pago $, acuh* val[ cat[ i ] ] tot tot + acuh* val[ cat[ i ] ] End For Print Total a pagar por la empresa , tot End 5. Se tiene una matriz datos[8,8], numrica, vaca. Se pide hacer un algoritmo que permita: a) b) c) d) e) f) g) Llenarla con nmeros cualquiera entre 121 y 423 Sumar las diagonales en forma separada Sumar todas las filas Sumar todas las columnas Contar cuantos elementos son pares Contar cuantos elementos son divisibles por 7 Sumar todos los elementos

Anlisis En un solo ciclo se: llena la matriz, se suman las filas, se suman las diagonales, se cuentan los elementos pares, se cuentan los mltiplos de 7, se suman todos los elementos. En ciclo aparte se suman las columnas. Solucin num a[8,8], cont70, i, j, sfil0, scol0, stot0, sdiagp0, sdiags0 num cpar0 For(i1, i<= 8, i i + 1) For(j1, j < 8, j j + 1) a[i, j] RND(303)+121 sfil sfil + a[i, j] stot stot + a[i, j] If ( i = j) Then sdiagp sdiagp + a[i, j] End If If ( i + j = 9) Then sdiags sdiags + a[i, j] End If If (a[i, j] MOD 7 = 0 ) Then cont7 cont7 + 1 Else If (a[i, j] MOD2 = 0) Then cpar cpar + 1 End If Pgina 87 de 147

End If End For Print la suma de la fila, i, es, sfil sfil 0 End For For (j1, j <=8, j j + 1) For(i1, i<=8, i i + 1) scol scol + a[i, j] End for Print La suma de la columna , j, es , scol scol 0 End For Print La suma de la diagonal principal es , sdiagp Print La suma de la diagonal secundaria es , sdiags Print La cantidad de pares son , cpar Print La cantidad de mltiplos de 7 es , cont7 Print La suma total de todos los elementos de la matriz es , stot End

Pgina 88 de 147

EJERCICIOS PROPUESTOS (OBJETIVO 3.3) 1. Construya un algoritmo que permita llenar un arreglo con 20 nmeros enteros ingresados por teclado. Luego, calcule y muestre la suma y el promedio de dichos valores. Escribir un algoritmo en ppseudolenguaje que permita resolver el siguiente problema: En un centro meteorolgico se han hecho en el da, N mediciones de temperatura. Al final de la jornada, se debe entregar cul es la medicin ms alta y cul es la ms baja. Se tienen dos vectores A y B, con 20 elementos cada uno. Desarrolle un algoritmo que permita comparar cada elemento del vector A con el correspondiente del vector B, almacenando el elemento mayor entre ambos, en un tercer vector C. Si los elementos comparados son iguales, se traspasa cualquiera de ellos al vector C. Escriba el vector C. Construya un algoritmo que permita llenar un arreglo llamado Orden con 20 nmeros enteros ingresados por teclado. Luego, los imprima ordenados de mayor a menor. Realizar un algoritmo que determine si el nmero 20 se encuentra en un vector llamado Nume de largo 5.000, lleno con nmeros. Hacer un algoritmo que permita ingresar la edad de 350 personas a un vector llamado Edad y que genere otro vector que contenga las edades ordenadas de menor a mayor. Listar dicho vector ordenado. Dado un vector llamado A de largo 700 y otro vector llamado B de largo 100, ambos llenos con nmeros. Hacer un algoritmo que genere otro arreglo llamado C que contenga los elementos repetidos de los vectores A y B. Hacer un algoritmo que genere 5 arreglos con los datos de los 4.000 empleados de una empresa. a) b) c) d) e) Nom contiene el nombre Rut Contiene el rut Ed contiene las edades. Sue contiene el sueldo imponible. NCF contiene la cantidad de cargas familiares.

2.

3.

4.

5.

6.

7.

8.

Segn los datos almacenados en los vectores, el algoritmo debe generar el siguiente listado. Considere como descuentos: AFP: 13 % y Salud: 7%. PLANILLA DE PAGOS Nombre Juan Leiva Mara Ortiz Sueldo Imponible 345.000 420.000 Descuentos 69.000 84.000 Sueldo Lquido 276.000 336.000

Pgina 89 de 147

9.

Utilizando los vectores del ejercicio 12 crear un algoritmo que genere el siguiente listado ordenado por carga familiar de menor a mayor. EMPLEADOS CON CARGAS SUPERIORES A 2 NOMBRE Rosa Gonzlez Patricio Astudillo TOTALES N DE CARGAS 3 4 7

10.

Utilizando los vectores del ejercicio 12 disear un algoritmo que genere el siguiente listado ordenada por sueldo imponible de mayor a menor. PLANILLA DE SUELDOS*** EMPLEADOS
Nombre Rut N de Cargas Sueldo Imponible Asignacin Familiar Afp Salud Descuentos Sueldo Lquido

Total Datos: a) La asignacin familiar corresponde al dinero que recibe el empleado por cada carga familiar. El criterio es el siguiente si el sueldo imponible es inferior a $150.000 recibe $3.000 por cada carga familiar, si es superior a los $150.000 recibe $2.000. b) Los descuentos son: AFP 12,6 % Salud 7% Descuento: suma de AFP y Salud. 11. Disear un algoritmo que permita crear una matriz de 10x10 de nombre TABLA, de tal manera que las filas que son pares se rellenan con 1 y las filas impares con 0. Una vez almacenados estos valores imprima su contenido en pantalla. Desarrolle un algoritmo que genere la matriz unitaria. La matriz unitaria se forma con unos en la diagonal principal y ceros en el resto. Desarrolle un algoritmo que permita llenar una matriz numrica con la multiplicacin de los subndices que la recorren ms 6. Desarrolle un algoritmo que permita Intercambiar la diagonal principal por la secundaria en una matriz de nxn Desarrolle un algoritmo que permita recorrer una matriz por el contorno. Pgina 90 de 147

12. 13. 14.

15.

UNIDAD 4: ARCHIVOS Cuando creamos un algoritmo los datos que intervienen tienen existencia real en la memoria del computador, al finalizar el algoritmo las constantes y variables que utilizamos dejan de tener existencia. Por lo tanto, podemos concluir que los datos tratados hasta aqu tienen limitaciones importantes: cantidad de datos limitados por capacidad de memoria RAM volatilidad: toda queda en memoria principal. Para solucionar estos inconvenientes se utilizan las estructuras externas de datos que se almacenan en discos o cintas magnticas. Su duracin es prcticamente ilimitada y los datos pueden utilizarse todas las veces que sea necesario. OBJETIVO 4.1: CONCEPTOS Archivo Definiremos archivo como un junto de datos que se encuentra fsicamente en un soporte externo, ya sea disco duro o disquete entre otros, de tal forma que los datos en l almacenados se pueden utilizar. Corresponde a una estructura externa de datos. Un archivo esta compuesto por un conjunto de registros lgicos. Se referencian con un nombre y extensin. Por ejemplo: datos.txt Registro Corresponde a cada uno de los componentes del archivo. Un registro es una variable definida por el programador y compuesta por un conjunto de variables que se referencian bajo un mismo nombre. Campo Un registro esta compuesto por unidades menores llamados campos, cada uno de los cuales pueden contener datos de diversos tipos, que tengan relacin entre s, porque todos hacen referencia a la misma y nica entidad. Ejemplo: Los siguientes datos pueden estar en un archivo llamado sueldo.dat 12345678 8765432 4455667 jos pedro marta duran moran sierra alameda 12 lota 123 colmo 33 13 12 1

Un registro del archivo es cualquier lnea completa Por ejemplo: 8765432 pedro moran registro nmero dos del archivo

lota 123

12,

corresponde

al

Un campo del registro puede ser cualquier parte del registro: Por ejemplo: Nombre es un campo, Apellido es un campo, Rut es un campo, etc. En este ejemplo: El archivo se llama sueldo.dat. Tiene 3 registros y los campos son Rut, Nombre, Apellido, direccin y regin Pgina 91 de 147

OBJETIVO 4.2: OPERACIONES BSICAS SOBRE ARCHIVOS Creacin: Consiste en incorporar registro a un archivo. Los datos se pueden incorporar mediante digitacin por teclado o como consecuencia de algn proceso intermedio. Si el archivo no existe fsicamente en el medio magntico, normalmente se crea. Consulta: lectura de uno o de todos los registros del archivo Actualizacin: aadir, borrar o modificar un registro del archivo Borrado : eliminacin fsica del archivo del dispositivo fsico que lo contiene. Deja libre el espacio que ocupa. OBJETIVO 4.3: CONCEPTO DE ARCHIVOS SECUENCIALES En trminos generales, para su almacenamiento y para poder acceder a sus datos, los archivos se organizan en: archivos secuenciales archivos secuenciales indexados archivos directos 4.3.1 Archivos con organizacin secuencial Bajo la organizacin secuencial, los registros se escriben en un archivo en orden correlativo, en secuencia y se leen en el mismo orden que estn escritos empezando por el primero. Para leer el registro N, deben leer todos los registros que ocupan las posiciones anteriores a N. No pueden existir espacios. 4.3.2 Instrucciones para archivos secuenciales Para acceder a la informacin de cualquier archivo, es necesario previamente abrirlo. Esta operacin ubica a un puntero en el primer registro del archivo. Un puntero es una informacin interna del computador que le permite saber cual es el registro activo en todo momento. El uso de archivos en algoritmos requiere de los siguientes pasos. a) b) c) d) e) Declarar el archivo lgico. Asignarle un nombre fsico al archivo declarado. Apertura del archivo ya sea en modos de escritura, lectura o modificacin. Efectuar las operaciones sobre l, que pueden ser: leer o escribir. Cierre del archivo.

Declarar: Consiste en dar un nombre que se utilizara en el algoritmo. Este nombre no necesariamente coincide con el nombre que tiene el archivo en el dispositivo fsico. Sintaxis :Nombre_Lgico_del_Archivo, Nombre_registro (nombre_de_campos) Ejemplo: MiArchi reg_dat (char rut, char nom, char dir, num reg) Asignacin fsica: Consiste en asociar el nombre lgico del archivo utilizado en la declaracin, con un nombre fsico. El nombre fsico es el que tiene el archivo en el dispositivo que lo contiene. Debe indicarse la ruta del archivo y su nombre fsico. Puede tener extensin. Pgina 92 de 147

Sintaxis: Ejemplo:

Nombre_Lgico_del_Archivo ruta\nombre_archivo_fsico archi c:\Archivo de Programas\sueldos.dat

Abrir: Consiste en dejar disponible para el algoritmo la informacin contenida en un archivo fsico previamente asignado a un nombre lgico. Sintaxis: Open (nombre lgico del archivo, modo)

El modo indica: W para escritura R para lectura RW para lectura-escritura Ejemplo: Open (MiArchi, w)

Leer : Consiste en leer los registros del archivo. Cuando se est recorriendo un archivo secuencial, se llegar al final del archivo. Existe una marca de fin de archivo llamada EOF (End Of File), que facilita el control en los algoritmos. Sintaxis: Ejemplo: Read nombre del registro Read reg_dat

Grabar : Consiste en escribir nuevos registros en el archivo. Sintaxis: Ejemplo: Write nombre del registro Write reg_dat

Referencia a elementos: Para hacer referencia a cada uno de los elementos del registro se emplea el operador (punto). Sintaxis: Ejemplo: nombre_registro.nombre_campo reg_dat.rut reg_dat.nombre reg_dat.sueldo

Cerrar: Permite dejar inaccesible la informacin contenida en el archivo fsico para el algoritmo, quedando el nombre lgico del archivo desconectado del archivo fsico. Sintaxis: Close (nombre_archivo_lgico) Ejemplo: Close(MiArchi) Ejemplos con archivos 1. Se tiene un archivo llamado lector.dat con los siguientes datos: Rut 10273425 (Sin digito verificador) Pgina 93 de 147 Nom Juan C. Hernandez Nacionalidad Chilena Sexo M FecNac 20/06/67

Este archivo debe ser almacenado en la carpeta \archivos, de la unidad c:. Declare el archivo, el registro y efecte la asignacin fsica. Solucin #se define el registro y se asocia a un nombre lgico de archivo # lector RegLector(char Rut, char Nom, char Nacio,char Sexo, char FecNac) # #se asocia el nombre lgico al nombre fsico lector C:\archivos\lector.dat # End

2. Se tiene un archivo, que contiene los planes de estudio de Inacap, con el siguiente formato: PLAN 790-3 790-4 790-5 PROGRAM IGI IGI IGI AO 1997 2000 2002

Este archivo se llama Plan.txt y est almacenado en la raz de la unidad C:.Desarrolle un algoritmo que permita leer todos los planes de estudios e imprimirlos. Solucin #declaracin de archivo y registro
MiPlan RegistroPlan(char PLAN, char PROGRAMA, num AO) #asignacin fsica

MiPlan C:\Plan.txt Open ( MiPlan, R) Print PLANES DE ESTUDIO Print ================= Print PLAN PROGRAMA DE ESTUDIOS AO Do Read RegistroPlan Print RegistroPlan.PLAN, RegistroPlan.PROGRAM, RegistroPlan.AO While (MiPlan Not EOF) Close (MiPlan) End 3. Disee un algoritmo que permita ingresar 20 registros al archivo de personal que est en la disquetera y cuyos campos son los siguientes:

Nombre
Cadena

Edad
Entero

Direccion
Cadena

Fono
Entero

Pgina 94 de 147

Solucin Perso RegPer(char Nombre, num Edad, char direccin, num Fono) #asignacin fsica Perso A:\personal.txt Open (Perso, W) Num z1 While (z<=20) Read Ingrese Nombre: , RegPer.Nombre Read Ingrese Edad: , RegPer.Edad Read Ingrese Direccin:, RegPer.Direccion Read Ingrese Telfo no:, RegPer.Fono Write RegPer Z Z+1 End While Close (Perso) End 4. Hacer un algoritmo que permita leer un archivo llamado Personal.txt que se encuentra en la disquetera del computador. El archivo est lleno con datos. Debe mostrar por pantalla el nombre y direccin de todo el personal que est en el archivo. La estructura del registro es: char Rut char Nombre char Direccin char Telefono num Regin Anlisis: Puesto que no se sabe cuantos registros o cuantas personas hay en el archivo, tenemos que utilizar la sentencia EOF para controlar la lectura. La apertura del archivo ser de lectura. Solucin #se define el registro y se asocia a un nombre lgico de archivo MiFile reg-dat (char rut, char nom, char dir, num reg} # #se asocia el nombre lgico al nombre fsico MiFile A:\Personal.txt # #se abre el archive lgico de lectura Open (MiFile, R) #se utiliza ciclo que imprime mientras no se alcance el fin de archivo Do Read reg-dat Print Nombre:, reg-dat.nom Print Direccin: , reg-dat.dir While (MiFile Not EOF) #cierre de archivo Close ( MiFile) End Pgina 95 de 147

Es importante hacer notar que la estructura de ciclo ms adecuada para manejar archivos es Do..While . Esta instruccin asegura que al menos una vez se leer el archivo, al menos la marca EOF. 5. En una biblioteca, los datos de 100 libros que estn almacenados en un archivo denominado libro.dat. Los campos del registro del archivo libro.dat son:

Codigo
entero

titulo
cadena

autor
cadena

editorial
cadena

stock
entero

Disee un algoritmo que permita leer los datos que se encuentran en el archivo libro.dat en la carpeta Mis Documentos del disco C y cargar el campo cdigo y el campo stock en dos vectores. Posteriormente, ordenar los vectores por stock. Solucin #se define el registro y se asocia a un nombre lgico de archivo Biblio regBib(num codigo, char titulo, char autor, char editorial, num stock) # Biblio C:\Mis Documentos\libro.dat #se declaran dos vectores numricos num codigo[100], stock[100], i1 # #se abre el archive de lectura Open (Biblio, R) #se utiliza ciclo para leer y cargar los vectores mientras no se #llegue al fin de archivo Do Read regBib codigo[i] regBib.codigo stock[i]regBib.stock ii+1 While (Biblio Not EOF) #cierre de archivo Close (Biblio) num k, aux #ordenamiento de vector stock. Se debe tener en cuenta que #cuando se cambia de posicin un elemento del arreglo stock #tambin se debe cambiar en el arreglo codigo. For (i1,i<100,ii+1) For (ki, k<=(100- i),kk+1) If (stock[k] > stock[k+1]) Then Aux stock[k] stock[k]stock[k+1] stock[k+1]aux Aux codigo[k] codigo[k]codigo[k+1] codigo[k+1]aux Pgina 96 de 147

End If End for End For End 6. Hacer un algoritmo que acepte un Rut por teclado, luego busque en un archivo llamado personal.txt, si existe algn registro con ese Rut. Si lo encuentra, que muestre el nombre, direccin y regin. La estructura del registro es: char Rut char Nombre char Direccin char Telefono num Regin Solucin MiFile reg-dat (char rut, char nom, char dir, num reg} MiFile A:\Pesrsonal.txt Open ( MiFile, R) Char aux_cod Num sw0 Read Ingrese cdigo, aux_cod Do Read reg-dat If (aux_cod = reg-dat.rut) Then Print Nombre:, reg-dat.nom Print Direccin: , reg-dat.dir sw 1 End If While (MiFile Not EOF and sw=0) Close ( MiFile) End Nota: se utiliza switch sw, con el objeto de abandonar el ciclo cuando se encuentra el registro buscado 7. Escriba un algoritmo en ppseudolenguaje que permita almacenar los datos de 150 productos de una bodega y listar los datos de menor a mayor segn el valor unitario de cada producto. Los datos que se deben almacenar son Nombre, Codigo, Valor y Cantidad Anlisis Por los datos que se deben almacenar, la estructura del registro debe ser: char nom char cod num val num can

Pgina 97 de 147

Aqu, hay varias soluciones. En este caso, primero grabaremos la informacin al archivo, luego leeremos el archivo para llenar un arreglo con los valores de los productos. Finalmente ordenaremos el arreglo por mtodo de la burbuja y lo mostraremos. Solucin dato r_dat (char nom, char cod, num val, num can) dato C:\Bodega.txt Open (dato, w) num i, B char A For (i1, i<=150, ii+1) #ntese que se puede utilizar una misma variable para capturar #los datos alfanumricos y numricos y asignarlos a los campos #del registro Read Ingrese nombre producto: , A r_dat.nomA Read Ingrese cdigo producto: , A r_dat.codA Read Ingrese valor unitario producto: , B r_dat.valB Read Ingrese cantidad del producto: , B r_dat.canB Write r_dat End For Close dato num arre[150] i1 Open dato, r Do Read r_dat Arre[i]r_dat.val ii+1 While (dato Not EOF) num k, aux For (i1,i<150,ii+1) For (ki, k<=(150- i),kk+1) If (Arre[k] > Arre[k+1]) Then Aux Arre[k] Arre[k]Arre[k+1] Arre[k+1]aux End If End for End For For (k1, k<=150, kk+1) Print Arre[k] End For End

Pgina 98 de 147

8. Se tiene un archivo en el disco duro denominado profesin.dat. Cada uno de los n registros que forman el archivo, contiene la siguiente informacin: rut, nombre, sexo, profesin y regin. El campo sexo identifica como 0=hombres y 1=mujeres Se pide construir un algoritmo que entregue los siguientes informes: a) b) c) d) e) Solucin profe reg_prof (char rut, char nom, char sexo, char prof, num region) profe C:\profesion.dat Open (profe, R) num muj0, hom0,abo0, med0,pro0 Do If (reg_prof.region=13) Then If (reg_prof.sexo=0) Then muj muj+1 Else homhom+1 End if If (reg_prof.prof=Abogado and reg_prof.region=1) Then Abobo+1 Else If (reg_prof.prof=Mdico and reg_prof.region=5) Then med med+1 Else If (reg_prof.prof=Profesor or reg_prof.prof=Profesora) Then pro ro+1 End if End if End if Print Rut: ,reg_prof.rut, Nombre: , reg_prof.nom While (profe Not EOF) Close (profe) Print Cantidad de mujeres ,muj, hombres: , hom Print Cantidad de Abogados en I Regin , abo Print Cantidad de Mdicos en 5 Regin ,med Print Cantidad de Profesores,pro End cantidad de hombres y mujeres que viven en la regin metropolitana. cantidad de abogados de la I regin cantidad de mdicos de la v regin cantidad de profesores y profesoras imprimir Rut y nombre de los ingenieros

Pgina 99 de 147

Ejercicios Propuestos (OBEJTIVO 4.0) 1. Escriba un algoritmo en ppseudolenguaje que permita crear un archivo de nombre DATO.DAT en el disco duro que permita almacenar 100 nmeros ingresados por el usuario. Escriba un algoritmo en ppseudolenguaje que permita imprimir los nmeros que son pares y que se encuentran en el archivo anteriormente creado. Escriba un algoritmo en ppseudolenguaje que permita a un usuario agregar 50 nmeros ms a un archivo existente de nombre DATO.DAT. Utilizando el archivo DATO.DAT anteriormente utilizado escriba un algoritmo en ppseudolenguaje que permita imprimir todos aquellos nmeros que estn dentro del archivo y que son mayores a 50. Utilizando el archivo DATO.DAT escriba un algoritmo en ppseudolenguaje que al leer un nmero ingresado por el usuario imprima encontrado si est en el archivo o no existe si no est en el archivo. Construya un algoritmo en ppseudolenguaje que permita leer el archivo AGENDA_INACAP de direcciones, que se encuentra en el disco duro, cuyos registros constan de los siguientes campos: NOMBRE DIRECCIN TELEFONO E-MAIL TIPO (Texto) (Texto) (Texto) (Texto) (Texto)

2.

3.

4.

5.

6.

Luego, imprima slo los registros cuyo TIPO sea PROFESOR 7. Se tiene un archivo secuencial llamado CLIENTES, en un disquete con los estados de cuenta de los clientes. La estructura del registro es: descripcin rut cliente nombre cliente fecha de ingreso cupo asignado cant. disponible monto utilizado

nombre del campo tipo rut nombre fecing cupo dispo monto alfanumrico alfanumrico alfanumrico entero entero entero

Construya un algoritmo que permita generar un listado con el total de clientes ingresados en Marzo del 2001. La fecha de ingreso viene con el formato dd/mm/aaaa

Pgina 100 de 147

8.

Escriba un algoritmo que permita almacenar en un archivo llamado pas.dat en el disco duro, la informacin de los pacientes de un consultorio. Los datos a almacenar son: a) b) c) d) e) Nombre. edad. Previsin (isapre o fonasa). Peso. Estatura.

Se ingresan datos hasta que el usuario desee. 9. Utilizando los datos almacenados en el archivo pas.dat, escriba un algoritmo que permita imprimir lo siguiente: a) La cantidad de pacientes mayores a los 35 aos. b) Liste el nombre y la edad de los clientes cuya previsin es isapre.

10.

En un disquette existe un archivo de nombre pro.dat donde se encuentran grabados los datos de productos existentes de una bodega. Los datos del archivo tienen la siguiente estructura: nombre, cdigo, cantidad, valor unitario. Escriba un algoritmo que permita ingresar un cdigo cualquiera de producto para que liste el siguiente informe por pantalla: NOMBRE: CODIGO: CANTIDAD: VALOR UNITARIO: PRECIO VENTA:

El precio de venta corresponde al valor unitario ms el 20% del valor unitario.

Pgina 101 de 147

ANEXO 1 GLOSARIO Algoritmo Los algoritmos son procedimientos especficos que sealan paso a paso la solucin de un problema y que garantizan el logro de una solucin siempre y cuando sean relevantes al problema. Dato Es todo aquella representacin de una entidad y que es susceptible de tratamiento ya sea en un programa o proceso informtico. Por ejemplo nombre, apellido y edad son datos de una persona (entidad). En otras palabras un dato es la representacin de una realidad. Informacin Mensaje vlido para un receptor o resultado del procesamiento de datos. Computador Mquina capaz de aceptar datos de entrada, procesarlos y entregar resultados de salida (informacin). Programa Conjunto de instrucciones escritas de algn lenguaje de programacin y que ejecutadas secuencialmente resuelven un problema especifico. Todo programa debe pasar por fases de elaboracin hasta llegar al producto final. Codificacin Consiste en la traduccin del algoritmo a algn lenguaje de programacin, el cual crea instrucciones entendibles y ejecutables por el computador; algunos de estos lenguajes pueden ser Pascal, C, C++, Visual Basic, Java, etc. Dispositivos de Entrada Como su nombre lo indica, sirven para introducir datos al computador para su proceso. Los datos se leen de los dispositivos de entrada y se almacenan en la memoria central o interna. Ejemplos: teclado, scanner, mouse, joystick, lpiz ptico, etc. Unidad de Control Coordina las actividades del computador y determina que operaciones se deben realizar y en que orden; as mismo controla todo el proceso del computador. Unidad Aritmtica - Lgica Realiza operaciones aritmticas y lgicas, tales como suma, resta, multiplicacin, divisin y comparaciones.

Dispositivos de Salida Regresan los datos procesados que sirven de informacin al usuario. Ejemplo: monitor, impresora. Memoria Central o interna Pgina 102 de 147

La CPU utiliza la memoria del computador para guardar informacin mientras trabaja. Mientras esta informacin permanece en memoria, el computador puede tener acceso a ella en forma directa. Esta memoria construida internamente se llama memoria de acceso aleatorio (RAM). Memoria RAM (Random Access Memory) Recibe tambin el nombre de memoria principal o memoria de usuario, en ella se almacena informacin slo mientras el computador este encendido. Cuando se apaga o arranca nuevamente el computador, la informacin se pierde, por lo que se dice que la memoria RAM es una memoria voltil. Memoria ROM (Read Only Memory) Es una memoria esttica que no puede cambiar, el computador puede leer los datos almacenados en la memoria ROM, pero no se pueden introducir datos en ella, o cambiar los datos que ah se encuentran; por lo que se dice que esta memoria es de slo lectura. Los datos de la memoria ROM estn grabados en forma permanente y son introducidos por el fabricante del computador. Memoria Auxiliar (Externa) Es donde se almacenan todos los programas o datos que el usuario desee. Los dispositivos de almacenamiento o memorias auxiliares (externas o secundarias) ms comnmente utilizados son: cintas magnticas, discos magnticos discos pticos. Algoritmos cualitativos Son aquellos en los que se describen los pasos utilizando palabras. Algoritmos cuantitativos Son aquellos en los que se utilizan clc ulos numricos para definir los pasos del proceso. Lenguajes Algortmicos Es una serie de smbolos y reglas que se utilizan para describir de manera explcita un proceso. Diagrama de flujo Para el diseo de algoritmos se utilizan tcnicas de representacin. Una de estas tcnicas son los Diagramas de Flujo (DDF), que se definen como la representacin grfica que mediante el uso de smbolos estndar unidos mediante lneas de flujo, muestran la secuencia lgica de las operaciones o acciones que debe realizar un computador, as como la corriente o flujo de datos en la resolucin de problema. Variable Se considera variable a una zona de memoria referenciada por un nombre donde se puede almacenar el valor de un dato, que puede cambiarse cuando se desee. El nombre de la variable es elegido por el usuario pero debe seguir ciertas reglas. Una variable no es un dato, sino un rea de memoria que contendr un dato. A cada variable, el computador le asigna una direccin de memoria. Cuando se haga referencia a esa variable el computador ir siempre a esa direccin.

Pgina 103 de 147

Constante Es una posicin de memoria, referenciada por un nombre, donde se almacena un valor que no puede cambiar y permanece invariable a lo largo del proceso. Tiene las mismas caractersticas de las variables. Contador Un contador es una variable cuyo valor se incrementa o decrementa en una cantidad constante cada vez que se produce un determinado suceso o accin. Los contadores se utilizan en las estructuras de repeticin con la finalidad de contar suc esos o acciones internas de bucle o ciclo. Acumulador Son variables cuyo valor se incrementa o decrementa en una cantidad variable, al igual que los contadores tambin necesitan inicializarse fuera del ciclo. Concepto de Interruptor Un interruptor o bandera (switch) es una variable que puede tomar los valores 1(verdadero) 0 (falso) a lo largo de la ejecucin de un programa, dando as informacin de una parte a otra del mismo. Puede ser utilizado para el control de bucle. Concepto de Bucle o ciclo En informtica, la mayora de las veces las tareas que realiza el computador son repetitivas, lo nico que vara son los valores de los datos con los que se est operando. Se llama bucle o ciclo a todo proceso que se repite un nmero de veces dentro de un programa. Estructura de datos Hasta ahora un dato implica una variable. El problema existe cuando tenemos una gran cantidad de datos relacionados entre s. Para cada uno, una variable distinta. Bsqueda La operacin de bsqueda consiste en determinar si un elemento determinado pertenece o no al conjunto de elementos que forman parte integrante de un arreglo y, en caso afirmativo indica la posicin que dicho elemento ocupa. Archivo Definiremos archivo como un junto de datos que se encuentra fsicamente en un soporte externo de la memoria, ya sea disco duro o disquete entre otros, de tal forma que los datos en l almacenados podamos utilizarlos o modificarlos. Corresponde a una estructura externa de datos. Un archivo esta compuesto por un conjunto de registros lgicos. Se referencian con un nombre y extensin. Por ejemplo: datos.txt Registro Corresponde a cada uno de los componentes del archivo. Un registro es una variable definida por el programador compuesto por un conjunto de variables que se referencian bajo un mismo nombre. Campo Un registro esta compuesto por unidades menores llamados campos, cada uno de los cuales pueden contener datos de diversos tipos, que tengan relacin entre s, porque todos hacen referencia a la misma y nica entidad. Pgina 104 de 147

Archivos con organizacin secuencial Los registros se escriben en orden correlativo en secuencia y se leen en el mismo orden que estn escritos empezando por el primero. Para leer el registro N, deben leer todos los registros que ocupan las posiciones anteriores a N. No pueden existir espacios.

///

Pgina 105 de 147

SOLUCIN A EJERCICIOS PROPUESTOS Solucin OBJETIVO 2.4, Pgina 30 1. Start Read Num

Num es divisible por 2? si

no

Print "Nmero Ingresado es IMPAR"

Print "Nmero Ingresado es PAR"

End

Pgina 106 de 147

2.

Start IPCFebrero0.3 IPCMarzo <- 0.6

Read Precio

PrecioFeb <- Precio + Precio * IPCFebrero

PrecioMar <- PrecioFeb + PrecioFeb * IPCMarzo

DifPrecio <- PrecioMar - PrecioFeb

Print "Precio actualizado ", PrecioMar

Print "Diferencia de Precio ", DifPrecio

End

Pgina 107 de 147

3. Start Read ValorNeto

ValorIVA ValorNeto * 0.18

ValorTotal ValorNeto + ValorIVA

Print "Total de la Factura",ValorTotal

End

Pgina 108 de 147

4.

Start Read Num1, Num2

Num1 > Num2

si

no

Print "Nmero Mayor es", Num1

Num1 < Num2

si

no

Print "Nmero Mayor es", Num2

Print "Nmeros son IGUALES"

End

Pgina 109 de 147

5.

Start Read Salario, Categora

Categora = Cat1

si

no si

Reajustado = Salario + Salario * 0.20

Categora = Cat2

no

Reajustado = Salario + Salario * 0.15

Categora = Cat3

si

Reajustado = Salario + Salario * 0.10 no Reajustado = Salario + Salario * 0.08

Print "Salario Reajustado", Reajustado

End

Pgina 110 de 147

Solucin OBJETIVO 2.5, Pgina 42,43 1. a) b) c) d) e) f) g) h) i) j) 2. a) b) c) d) e) f) g) h) Indicar si son ciertas o falsas las expresiones: Falso Verdadero Verdadero Falso Verdadero Verdadero Verdadero Verdadero Falso Verdadero Realice el siguiente clculo respetando las prioridades 14 9.2 9.2 23 23 5.09 5.09 28.98

3. Transforme las siguientes expresiones algebraicas en expresiones algortmicas utilizando los operadores informticos: a) b) c) d) e) f) 4. a) b) c) d) 5. a) b) c) d) M + N / (P-Q) M/N+4 (M+N) / (P-Q) (P+N/P) / (Q-R/5) (3*x- y)/z + (2*x*y*y)/(z-1) + x/y a/(b-c/(d-(e/(f-g))))+(h+i)/(j+k) Resuelva las siguientes concatenaciones: 1212 El resultado es Metodolgico 123.24-A Si a = 10, Falso Verdadero Falso Verdadero b = 20, c = 30, entonces

Pgina 111 de 147

6. a) b) c) d) e) f) g) 7. a) b) c) d) e) f) 8. a) b) c) d) 9. a) b) c) d) e)

Calcular el valor de las siguientes expresiones aritmticas: 0 5,5 6 3,5555 11 80 16,333333 Calcular el resultado de las siguientes expresiones lgicas: Falso Verdadero Falso Verdadero Verdadero Falso Expresar el resultado de las siguientes expresiones: "PEDRO GOMEZ " "GARCIA - GONZALEZ " "CALLE- -MAYOR " 12.465.450-k Escriba los siguientes intervalos numricos en sus correspondientes intervalos lgicos: x>=5 and x<=15 x>120 and x<=200 x>=0 and x <50 x>15 and x<30 x<=15 and x>=30

Pgina 112 de 147

Solucin OBJETIVO 2.6.5, Pgina 52,53 1. num capital , resultado Read Ingrese su capital: , capital resultado (capital*2)/100 Print Su capital a fin de mes es de: , resultado End #Solucion N1 num a,b 0 Print Ingrese primer nmero: Read a Print Ingrese segundo nmero: Read b If ( a = b ) Then Print Los nmeros son iguales: , Else If ( a > b ) Then Print El nmero mayor es: , a Else Print El nmero mayor es: , b End if End if End #Solucion N2 num a , b 0 Read Ingrese primer nmero: , a Read Ingrese segundo nmero: , b If ( a = b ) Then Print Los nmeros son iguales: , a Else If ( a > b ) Then Print El nmero mayor es: , a Else Print El nmero mayor es: , b End if End if End

2.

3.

num a , b , c Print Ingrese tres nmeros diferentes Print ------------------------------------------- Print Print Read Ingrese primer nmero: , a Read Ingrese segundo nmero: , b Read Ingrese tercer nmero: , c Pgina 113 de 147

4. 5.

If ( a > b and a > c ) Then Print El nmero mayor es: , a Else If ( b > a and b > c) Then Print El nmero mayor es: , b Else Print El nmero mayor es: , c End If End If End *************** propuesto ***************** num a , b Read Ingrese primer nmero: , a Read Ingrese segundo nmero: , b If ( a = b ) Then Print El resultado es: , a*b Else If ( a > b ) Then Print El resultado es: , a-b Else Print El resultado es: , a+b End If End If End # Sb ,variable numrica que significa sueldo base del empleado # comisin, variable numrica que significa comisin por ventas del empleado # SF ,variable numrica que significa sueldo empleado num Sb,V1,V2,V3, Sf,comision Print INGRESE EL SUELDO DEL EMPLEADO Read Sb Print INGRESE PRIMERA VENTA DEL EMPLEADO Read V1 Print INGRESE SEGUNDA VENTA DEL EMPLEADO Read V2 Print INGRESE TERCERA VENTA DEL EMPLEADO Read V3 Comision V1* 0.1 +V2*0.1+ V3*0.1 #Por 0.1 porque es el 10% o sea 10/100 SF Sb + comision Print "Monto de comisin", comision Print "Sueldo final", SF End

6.

Pgina 114 de 147

7.

# MC variable numrica que significa monto de compra # DESC variable numrica que significa descuento de compra # PF variable numrica que significa pago de compra num SE, DESC, PF Print INGRESE MONTO DE COMPRA Read MC DESC MC * 0.15 # por 0.15 porque es el 15% o sea 15/100 PF MC - DESC Print "Monto de compra", PF End

8.

# NP, PNP variable numrica que significa nota y porcentaje de promedio. # EF, PEF variable numrica que significa nota y porcentaje de examen final # TF, PTF variable numrica que significa nota y porcentaje trabajo final num NP, PNP, EF, TF, PEF, PTF, CF Print INGRESE NOTA DE PROMEDIO Read NP Print INGRESE NOTA DE EXAMEN FINAL Read EF Print INGRESE NOTA TRABAJO FINAL Read TF PNP NP * 0.55 # por 0.55 porque es el 55% o sea 55/100 PEF EF * 0.3 # por 0.3 porque es el 30% o sea 30/100 PTF TF * 0.15 # por 0.15 porque es el 15% o sea 15/100 CF PNP + PEF + PTF Print "CALIFICACION FINAL", CF End

9.

# CH, PH variable numrica que significa cantidad y porcentaje de hombres # CM, PM variable numrica que significa cantidad y porcentaje de mujeres # TE variable numrica que significa total de estudiantes num CH, CM, TE , PH, PM Print INGRESE LA CANTIDAD DE HOMBRES Read CH Print INGRESE LA CANTIDAD DE MUJERES Read CM TE CH + CM PH ( CH * 100 ) / TE # por regla de tres simple PM ( CM * 100 ) / TE # por regla de tres simple Print "PORCENTAJE DE HOMBRES", PH Print "PORCENTAJE DE MUJERES", PM End

Pgina 115 de 147

10.

# montod variable numrica que significa monto depositado # porcent variable numrica que significa porcentaje de inters por el deposito # interes1,interes2, los porcentajes obtenidos por los depsitos #montof variable numrica que significa monto final incluyendo intereses num montod, porcent, interes1,interes2,montof Print INGRESE MONTO DEPOSITADO Read montod Print INGRESE PORCENTAJE DE INTERES Read porcent Interes1 (montod * porcent)/100 If (interes1 > 7000) Then Interes2 interes*porcent montof montod + interes1 + interes2 Else montof montod + interes1 End if Print "monto final en su cuenta", montof End Num Nota1,Nota2,Nota3,Promedio Read Nota 1: , Nota1 Read Nota 2: , Nota2 Read Nota 3: , Nota3 Promedio (Nota1+Nota2+Nota3)/3 If (Promedio >=4.5) Then Print (Alumno aprobado) Else Print (Alumno Reprobado) End If End. Num monto_venta, monto_pago Read (Ingrese el monto de la venta:), monto_venta If(monto_venta > 1000) Then Print (Presenta descuento) monto_pago monto_venta * 0.8 Else Print (No presenta descuento) monto_pago monto_venta End If Print (El mo nto a pagar es:, monto_pago) End. Num salario, horas, horas_extras Read(Ingrese la cantidad de horas trabajadas:), horas If(horas <=40) Then salario horas * 16 Else horas_extras horas 40 Pgina 116 de 147

11.

12.

13.

salario 640 + (horas_extras*20) End If End 14. Num Conmul7, sumul7, conmul3, valor Conmul7 0 Sumul7 0 Conmul3 0 Valor 347 While (valor <= 2342) If (valor MOD 7 = 0 ) Then Conmul7 conmul7 + 1 Sumul7 sumul7 + (valor^2) End if #Solucin N1

If (valor MOD 3 = 0) Then Conmul3 conmul3 + 1 End if Valor valor + 1 End While Print La suma de los cuadrados de los mltiplos de 7 es: , sumul7 Print La cantidad de valores mltiplos de 7 es: , conmul7 Print La cantidad de valores mltiplos de 3 es: , conmul3 End.

Conmul7, sumul7, conmul3, valor #Solucin N2 Conmul7 0 Sumul7 0 Conmul3 0 Valor 347 For(valor 347; valor <= 2342; valor valor + 1)) If (valor MOD 7 = 0 ) Then Conmul7 conmul7 + 1 Sumul7 sumul7 + (valor * 2) End if If (valor MOD 3 = 0) Then Conmul3 conmul3 + 1 End if Valor valor + 1 End For Print La suma de los cuadrados de los mltiplos de 7 es: , sumul7 Print La cantidad de valores mltiplos de 7 es: , conmul7 Print La cantidad de valores mltiplos de 3 es: , conmul3 End.

Pgina 117 de 147

15.

Num Edad, sueldoact, sueldoreaj, contrab Contrab 0 While (contrab <= n) Read (edad, sueldoact) If (edad < 26) Then Sueldoreaj sueldoact * 1,10 Else If (edad <= 35) Then Suledoreaj sueldoact * 1,20 Else If (edad <= 50) Then Sueldoreaj sueldoact * 1,50 Else Sueldoreaj sueldoact * 1,70 End if End if End if Print El sueldo reajustado es: , sueldoreaj Contrabaj contrabaj + 1 End While End.

Solucin OBJETIVO 2.6.6, Pgina 63, 64, 65 y 66 1. Num SumNota, i, Nota, Prom SumNota 0 i1 While (i<=7) Print Ingrese Nota N, i Read Nota SumNota SumNota + Nota ii+1 End While Prom SumNota/7 Print Su promedio en la asignatura de Programacin II es:, Prom End Num i, N i1 While ( i <= 10) Print Ingrese un nmero Read N If (N > 0) The n Print N End If ii+1 End While End Pgina 118 de 147

2.

3.

Num i, N i1 Pos 0 Neg 0 Neu 0 While ( i <= 20) Print Ingrese un nmero Read N If (N = 0) Then Neu Neu + 1 Else If (N > 0) Then Pos Pos + 1 Else Neg Neg + 1 Enf If End If ii+1 End While Print Cantidad de nmeros Positivos: , Pos Print Cantidad de nmeros Negativos: , Neg Print Cantidad de nmeros Neutros: , Pos End num numero, contador For (contador1, contador<=15, contador contador +1 ) # se lee el numero asegurando que sea negativo Do Read Ingrese un nmero: , numero While (numero >= 0) numero ( -1 * numero ) Print El equivalente positivo es , numero End For End num nota_actual, nota_promedio0, nota_baja7, contador # inicialmente se supone que la nota ms baja es un siete For (contador1, contador<=40, contador contador +1 ) Read Ingrese un nota , nota_actual nota_promedio nota_promedio + nota_actual # se esta usando nota_promedio como acumulador If ( nota_actual < nota_baja ) Then nota_baja nota_actual End If End For nota_promedio nota_promedio / 40 Print El promedio de notas es , nota_promedio Print La nota ms baja es , nota_baja End Pgina 119 de 147

4.

5.

6.

num numero, mximo, producto, contador # se leen los nmeros asegurando que son positivos Do Read Ingrese la tabla a generar (multiplicando) , numero While (numero < 0) Do Read Ingrese el lmite de generacin (multiplicador) , maximo While (maximo < 0) For (contador1, contador<=maximo, contador contador +1 ) producto ( numero * contador ) Print El producto de , numero, por , contador, es , producto End For End #variable hora para almacenar la hora #variable min para almacenar los minutos #variable seg para almacenar los segundos num hora,min,seg For(hora 0,hora<=23,hora hora+1) For (min 0,min <=59,min min+1) For (seg 0,seg<=59,seg seg+1) Print hora,:,min,:,seg End For End For End For End

7.

8.

#montotal almacenar el monto total vendido por el vendedor #comis almacenar el mo nto total de la comisin #total almacenar el total de dinero que recibir el vendedor Num n,z,sbase,monto1,monto2,monto3,montotal,comis,total Char nom Print ingrese el nmero de vendedores: Read n For(z 1 , z <= n , z z+1) Print ingrese nombre vendedor: Read nom Print ingrese sueldo base: Read sbase Print ingrese monto venta 1: Read Monto1 Print ingrese monto venta 2: Read Monto2 Print ingrese monto venta 3: Read Monto3 Montotal monto1+monto2+monto3 Comis montotal*10/100 Total sbase+comis Pgina 120 de 147

Print Print End For End

Comisin ganada en la semana: , Comis Total a pagar: , Total

9.

Num ht,vh,he,sa Char nom, Resp S While (resp = S) Print ingrese nombre del obrero: Read nom Read ingrese horas trabajadas:; ht If ( ht <=40 ) Then vh 20 sa ht * vh Else he ht 40 sa 40*20+he*25 End If Print el obrero ; nom Print Tiene un Salario semanal de : , sa Print Desea ingresar ms datos(S / N) Read Resp While (resp <> S or resp <> N) Read Resp End While End While End # Estadsticas de hombres y mujeres dentro de un grupo de N personas num ContH, ContM, i, N Char SEXO ContH 0 ContM 0 i 1 While (i <= N ) Read, SEXO If ( SEXO = H) Then ContH ContH +1 Else ContM ContM +1 End If i i +1 End While Print , ContH, ContM End

10.

Pgina 121 de 147

11.

#promedio de calificaciones de un grupo de N alumnos num SumNotas, i, NOTA, Prom, N Print Cuantos alumnos : Read N SumNotas0 i1 While ( i <= N ) Read, NOTA SumNotas SumNotas + NOTA i i +1 End While PromSumNotas / N Print , Prom End

12.

#Clculo de Inters num MONTODINERO, Mes Print , Ingrese Monto de dinero: Read, MONTODINERO Mes 1 While ( Mes <= 12 ) MONTODINERO <-- MONTODINERO + MONTODINERO*0.02 Mes Mes +1 End While Print , "El monto al cabo de un ano es", MONTODINERO End

13.

num ed, ph, pm, pt, she, sem, ch, cm char resp, sex seh0, sem0, ch0, cm0, resps While ( resp = s ) Read Ingrese sexo del alumno (F/M) : , sex Read Ingrese edad del alumno: , ed If (sex = M) Then ch ch + 1 seh seh + ed Else cm cm + 1 sem sem + ed End If Read Hay ms alumnos (s/n) , resp End While ph seh/ch pm sem/cm pt (seh + sem) / (ch + cm) End Pgina 122 de 147

14.

num n, numero, menor, mayor, contador contador 1 Read Ingrese cantidad de nmeros a procesar: , n Read Ingrese numero: , numero mayor numero menor numero While ( contador < n ) Read Ingrese numero: , numero contador contador + 1 If (numero < menor) Then menor numero Else If (numero > mayor) Then mayor numero End If End If End While Print El nmero mayor es : , mayor Print El nmero menor es : , menor End num precio, totalcliente, totalcaja Char resp1, resp2 totalcliente 0, totalcaja 0, resp1 s While ( resp1 = s ) resp2 s While ( resp2 = s ) Read Ingrese precio artculo: , precio totalcliente totalcliente + precio Read Tiene mas artculos el cliente (s/n) , resp2 End While Print El total del cliente es : ,totalcliente totalcaja totalcaja + totalcliente totalcliente 0 Read Hay ms clientes (s/n) , resp1 End While Print El total de la caja es : ,totalcaja End #Programa Control de Pesos num i,j,P,Acum,Peso,Prom_peso,Dif_peso For (i 1,i <= 5, i i+1) Print "Integrante contra la obesidad nmero ",i Print "Ingrese su peso desde la ltima reunin : " Read P # Solicitar el peso registrado por las diez bsculas: Acum 0 For (j1,j<= 10,j j+1) Pgina 123 de 147

15.

16.

Print "Ingrese peso bascula nmero",j Read Peso Acum Acum + Peso End for Prom_peso Acum/10 Dif_peso Prom_peso - P If (Dif_peso > 0 ) Then Print "SUBIO DE PESO" Else If (Dif_peso < 0 ) Then Print "BAJO DE PESO" Else Print "SE MANTUVO EN EL PESO" End if End if End for End

17.

#Hay que utilizar cuatro ciclos. Uno para el nmero de grupos (g), uno para #el nmero de alumnos por grupo (n); uno para el nmero de materias por alumno #y el ltimo para ingresar las 3 notas por asignatura. Se debe imprimir el promedio #de los grupos, el promedio de cada grupo y el promedio de cada alumno. #El proceso de ingreso de notas se debe hacer por teclado y cada vez que #se ingresan se acumulan para calc ular el promedio de cada alumno, el que, a #su vez se acumula para calcular el promedio de cada grupo y este se acumula #para calcular el promedio de todos los grupos. #Variables que se utilizarn num i # contador para controlar el nmero de grupos. num J # contador para controlar el nmero de alumnos por grupo. num k # contador para controlar el nmero de materias por alumno. num L # contador para controlar el nmero de notas por materia. num Sumg # Acumulador donde se realiza la suma de los Promedios por grupo. num Sumn # Acumulador donde se realiza la suma de los Promedios por alumno num Summ # Acumulador donde se realiza la suma de las notas por alumno. num Nota # Variable numrica para ingresar la nota I 1, Sumg 0 While ( I < = g) J 1, Sumn 0 While ( J < = n) K 1 , Summ 0 While ( K < = m) For ( L 1 ; L <= 3; I L + 1 ) Read "Ingrese nota" , nota Summ Summ + nota End For K K + 1 End While Pgina 124 de 147

Summ Summ/ (3*m) Print " EL Promedio del alumno es ", Summ Sumn Sumn + Summ J J +1 End While Sumn Sumn/n Print " EL Promedio del grupo es ", Sumn Sumg Sumg + Sumn i i + 1 End While Sumg Sumg / g Print " EL Promedio de los grupos es ", Sumg End 18. num Compra, Descuento, Total char Color, Resp Do Read Ingrese Monto de la Compra, Compra Do Read Ingrese color de la bolita, Color While (Color<>roja Or Color<>amarilla Or Color<>blanca) Case Color in roja: DescuentoCompra * 0.4 Break amarilla:DescuentoCompra * 0.25 Break blanca:DescuentoCompra * 0 End Case TotalCompra Descuento Print El descuento de su compra es de: , Descuento Print El total a pagar es: , Total Read Ingresa otro cliente? (S/N), Resp While (Resp <> N) End # A: Acumulador en donde se almacena el total del gasto de todos loa artculos. # P: Precio del artculo. # C: Cantidad comprada de un artculo. # D: Dinero gastado en un determinado artculo. # resp: variable para determinar si continuamos agregando artculos al carrito. num A, P, C, D char resp A 0 Do Print Ingrese el precio del artculo: Read P Print Ingrese la cantidad: Read C Pgina 125 de 147

19.

DP*C A A + D Print Dinero gastado en el artculo: , D Print Total de dinero gastado: , A Print Desea continuar S/N ? Read resp While ( resp = S ) End 20. # P: Precio por asiento. # C: Cantidad de asientos. # E: Edad. # C1: Acumulador de la Categora 1 # C2: Acumulador de la Categora 2 # C3: Acumulador de la Categora 3 # C4: Acumulador de la Categora 4 # C5: Acumulador de la Categora 5 # resp: variable para determinar si continuamos num P, C, E, C10, C20, C30, C40, C50 char resp Print Ingrese el precio por asiento: Read P Do Print Ingrese la cantidad de Asientos: Read C Print Ingrese la Edad: Read E If ( E < 5 ) Then Print Los nios menores de 5 aos no pueden entrar al teatro Else If ( E < 15 ) Then C1 C1 + C * P * 0.35 Else If ( E < 20 ) Then C2 C2 + C * P * 0.25 Else If ( E < 46 ) Then C3 C3 + C * P * 0.10 Else If ( E< 66 ) Then C4 C4 + C * P * 0.25 Else C5 C5 + C * P * 0.35 End If End If End If End If End If Pgina 126 de 147

While Print Print Print Print Print Print End 21.

Print Desea continuar S/N ? Read resp ( resp = S ) Dinero que el teatro deja de percibir por categora es la siguiente: Categora 1: , C1 Categora 2: , C2 Categora 3: , C3 Categora 4: , C4 Categora 5: , C5

# Promedio: Promedio de la masa de aire de los neumticos de n vehculos. # Tipo: Tipo de vehculo 1 motocicleta, 2 automvil. # N: Nmero de vehculos. # C: Contador de vehculos. # A: Acumulador # resp: variable para determinar si continuamos # P: Presin # V: Volumen # T: Temperatura num Promedio, Tipo, N, C1, A0, P, V, T char resp Print Ingrese la cantidad de vehculos Read N While (C <= N) Do Print Ingrese el Tipo de vehculo 1 motocicleta, 2 - automvil: Read Tipo While (Tipo<>1 and Tipo<>2) If ( Tipo = 1 ) Then Print Rueda delantera Read Presin: , P Read Volumen: , V Read Temperatura: , T M (P * V )/(0.37* (T+460)) AA+M Print Rueda trasera Read Presin: , P Read Volumen: , V Read Temperatura: , T M (P * V )/(0.37* (T+460)) AA+M CC+1 End If If ( Tipo = 2 ) Then Print Rueda delantera izquierda Read Presin: , P Read Volumen: , V Pgina 127 de 147

Read Temperatura: , T M (P * V )/(0.37* (T+460)) AA+M Print Rueda delantera derecha Read Presin: , P Read Volumen: , V Read Temperatura: , T M (P * V )/(0.37* (T+460)) AA+M Print Rueda trasera izquierda Read Presin: , P Read Volumen: , V Read Temperatura: , T M (P * V )/(0.37* (T+460)) AA+M Print Rueda trasera derecha Read Presin: , P Read Volumen: , V Read Temperatura: , T M (P * V )/(0.37* (T+460)) AA+M CC+1 End If End While Promedio A / C Print Promedio de masa del aire de los neumticos de vehculos es: , Promedio End

22.

num limitetriple8, limitehorasextra40, i, n, horas,valorhora num horasextra,horasextrasobre,sueldo, Read Ingrese nmero de trabajadores:,n For(i1 , i<=n , i i+1) Read Ingrese horas trabajadas:,horas Read ingrese el valor hora para el trabajador,valorhora Horasextra0 Horasextrasobre0 If (horas >40) Then Horasextrahoras 40 If( horasextra>8) Then Horasextresobrehorasextra 8 End If End If sueldo(horas- horasextrasobre)*valorhora+(horasextra horasextrasobre)*2*valorhora+(horasextrasobre)*3*valorhora Print El sueldo del trabajador es:$, sueldo End For End Pgina 128 de 147

23.

num n, cont, cont1, cont2, cont3, opcion Cont 0, cont10, cont20, cont30 Print Ingrese cantidad de diputados Read n While (cont < n) Print Ingrese su opcin 1:A favor, 2:En contra, 3:Abstinencia Read opcion Case opcion in 1: cont1 cont1 + 1 2:cont2 cont2 + 1 3:cont3 cont3 + 1 End case Cont cont + 1 End While Print % diputados a favor, (cont1*100)/n Print % diputados en contra, (cont2*100)/n Print % diputados que se abstienen, (cont3*100)/n End num total, precio, Valor_desc Char etiqueta, respS Precio 0, total 0, Valor_desc 0 While (resp = S) Print Ingrese precio del producto Read precio Print Ingrese color de la etiqueta del producto Read etiqueta If (etiqueta = Rojo) Then Valor_desc precio (precio*20 / 100) Precio Valor_desc End if Total total + precio Do Print Desea continuar S/N ? Read resp While (resp <> N and resp <> S) End While Print El total a pagar ser, total End Num cont, cont1, cont2, cont3, cont4, opcion Char respS Cont 0, cont1 0, cont2 0, cont3 0, cont4 0 While (resp = S) Print Ingrese su opcin 1:Estudios Bsicos, 2:Estudios Medios Print 3:Estudios Superiores, 4:Postgrado Read opcion Case opcion in 1: cont1 cont1 + 1 Pgina 129 de 147

24.

25.

2:cont2 cont2 + 1 3:cont3 cont3 + 1 4:cont4 cont4 + 1 End case Cont cont + 1 Do Print Desea continuar S/N ? Read resp While (resp <> N and resp <> S) End While Print % Estudios Bsicos, (cont1*100)/cont Print % Estudios Medios, (cont2*100)/cont Print % Estudios Superiores, (cont3*100)/cont Print % Estudios Postgrado, (cont4*100)/cont End

26.

Num OffSet, Estandar, Total_E, Total_O, Total Char Tipo Total_E 0 Total_O 0 Do Print Ingrese tipo de solicitud(E=Estndar / O=Offset): Read Tipo If (Tipo = E) Then Print Ingrese cantidad de pedido estndar: Read Estandar Total_E Total_E + Estandar If (Total_E>50000) Then Total_ETotal_E Estandar Print Solicitud rechazada Else Print Solicitud aceptada End If Else If (Tipo = O) Then Print Ingrese cantidad de pedido offset: Read OffSet Total_O Total_O + OffSet If (Total_O>10000) Then Total_O Total_O - OffSet Print Solicitud rechazada Else Print Solicitud aceptada End If End If TotalTotal_O+Total_E While (Total<=60000) End Pgina 130 de 147

27.

Num Cont, Sum, Sec Cont 0 Sum 0 Do Sec 100 - (2*Cont) Sum = Sum + Sec ContCont +1 While (Sec>0) Print Sum End Num Cont, Nota, Cont_Rep, Cont_Aprob, Porcen_R Cont_Rep 0 Cont0 While (Cont<=50) Print Ingrese Calificacin Read Nota If (Nota < 70) Then Cont_Rep Cont_Rep + 1 End If Cont Cont +1 End While Porcen_R ( Cont_Rep * 100 ) / 50 Print Porcentaje de reprobados: , Porcen_R End Num N_Control, Sum, Nota, Prom, Prom_May, N_Control_May, i Char Res Sum 0 Res y Prom_May 0 Do Print Ingrese Cdigo de Control Read N_Control For (i1, i<=5, ii+1) Print Ingrese Nota de Unidad,i Read Nota SumSum+Nota End For PromSum/5 If (Prom>Prom_May) Then Prom_May Prom N_Control_May N_Control End If Print Desea leer otro alumno(s/n) Read Res While (Res<>n) Print Cdigo de Control alumno mayor promedio: , N_Control_May Print Mayor Promedio: , Prom_May Pgina 131 de 147

28.

29.

End

30.

Num Total_Alumnos,i,j , Nota, Promedio, Sum_Nota Char Alumno Total_alumnos 0 For(i 1, i<=40, ii+1) Sum_Nota0 Read Alumno For (J 1, j<=5, jj+1) Read Nota Sum_Nota Sum_Nota + Nota End For Promedio Sum_Nota / 5 If (Promedio < 3.0) Then Total_Alumnos Total_Alumnos + 1 End If End For Print Cantidad de alumnos sin derecho a nivelacin : , Total_Alumnos End Num voto, Total_Votos, Sum_Candi1, Sum_Candi2, Sum_Candi3, i Char Ganador Sum_Candi1 0 Sum_Candi2 0 Sum_Candi3 0 Total_Votos 0 For ( i 1, i<= 250.000, ii+1) Read voto If (voto = 1) Then Sum_Candi1 Sum_Candi1 + 1 Else If (voto = 2) Then Sum_Candi2 Sum_Candi2 + 1 Else Sum_Candi3 Sum_Candi3 + 1 End if End If End For If (Sum_Candi1 > Sum_Candi2) and (Sum_Candi1> Sum_Candi3) Then Ganador Candidato 1 Total_Votos Sum_Candi1 Else If (Sum_Candi2>Sum_Candi1) and (Sum_Candi2>Sum_Candi3) Then Ganador Candidato 2 Total_Votos Sum_Candi2 Else Pgina 132 de 147

31.

Ganador Candidato 3 Total_Votos Sum_Candi3 End If End if Print El Candidato Ganador es el , Ganador Print Su Cantidad de Votos fue de , Total_Votos End 32. # La variable n representa el total de clientes Num Suma_Clientes, i, n Num T_ventas, Compra Suma_Cliente 0 Compra 0 T_venta0 For (i1, i<= n, ii+1) Read Compra T_ventasT_ventas + Compra Suma_Clientes Suma_Clientes + 1 End For Print El total de Ventas del Da es , T_ventas Print El Nmero de clientes atendidos en el da es , Suma_Clientes End # La variable n representa el total de clientes Num i, n, venta, paga, T_paga r, Iva, Cambio, T_Caja T_pagar 0 Iva 0 T_Caja 0 i0 While (i <= n ) Print Ingrese Venta Read venta Iva venta * 0.18 T_pagar venta + Iva T_Caja T_caja + T_pagar Cambio paga T_pagar Print El Iva del Cliente , i , es:, Iva Print EL Total a pagar del Cliente , i , es: , T_pagar Print El cambio del Cliente, i , es:, Cambio ii+1 End While Print La cantidad de Dinero en Caja es : , T_caja End

33.

Pgina 133 de 147

Solucin OBJETIVO 3.2, Pgina 73 1. Num I, numero, X[10] # Asignacin del valor 10 para primera posicin Numero10; For (i1;I <= 10;ii+1) X[i] Numero; NumeroNumero 1; End For End Num Vector[50],Menor, Mayor,Indice Read Vector[1] Mayor Vector[1] Menor Vector[1] For (indice1;indice < 10;indiceindice+1) Print Ingrese numero para posicin :, Indice Read Vector[Indice] If Vector[Indice] < Menor Then MenorVector[Indice] Else If Vector[Indice] > Mayor Then MayorVector[Indice] End If End If End For Print El nmero mayor encontrado en el arreglo es :, Mayor Print El nmero menor encontrado en el arreglo es :, Menor End #Versin N1 Num Vector[50],indice For( indice3; indice <= 50;indiceindice+3) Print El nmero en la posicin, indice , es: , Vector[indice] End For End #Versin N2 Num Vector[50], Indice; For ( indice1;indice <= 50; indiceindice+1) If ((Indice MOD 3) = 0) Then Print El nmero en posicin, indice,es:,Vector[indice] End If End For End

2.

3.

Pgina 134 de 147

4.

string Nom[200],Rut[200] num I, Sue[200], Total_Desc,Sldo.Liq,Salud,Afp num Tot_SldoImp,Tot_Salud,Tot_Afp num Tot_TotalDesc,Tot_SldoLiq # inicializacin de variables Tot_SldoImp=0; Tot_Salud =0; Tot_afp=0; Tot_TotalDesc=0; Tot_TotalDesc=0; Tot_SldoLiq=0; For (i1;i <= 200;ii+1) Print Ingrese Nombre del Empleado: , i Read Nom[i] Print Ingrese Rut del Empleado: , i Read Rut[i] Print Ingrese Sueldo del Empleado: , i Read Sue[i] Tot_SldoImp = Tot_SldoImp + Sue[i]; End For Print Nombre Rut Sldo.Imp Salud Afp Tot.Desc Sldo.Liq Print __________________________________________________ For ( i1;i <= 200; ii+1) Salud Sue[i] * 7,2 /100 Tot_Salud Tot_Salud + Salud Afp Sue[i] * 12,8 / 100 Total_Desc Salud + Afp Tot_TotalDesc Tot_TotalDesc + Total_Desc Sldo_Liq Sue[i] Total_Desc Tot_SldoLiq Tot_SldoLiq + Sldo_Liq Print Nom[i], ,Rut[i], ,Sue[i], ,Salud, ,Afp, , Total_Desc,,Sldo_Liq End For Print __________________________________________________ Print Totales, Tot_SldoImp,, Tot_Salud,,Tot_Afp,,Tot_TotDesc,,Tot_SldoLiq End

5.

String Nom[200], Rut[200] Int Sue[200], I, Salud, Afp, Total_Desc, Contador, Sldo_Liq,Tot_SldoLiq; # Inicializacin de variables Contador=0; Tot_SldoLiq=0; For (i = 1; i<=200; i=i+1) Print Ingrese Nombre del Empleado: , i Read Nom[i] Print Ingrese Rut del Empleado: , i Read Rut[i] Contador = Contador +1; Print Ingrese Sueldo del Empleado: , i Read Sue[i] End For Pgina 135 de 147

Print Nomb re , Rut , Sldo.Liq Print __________________________________________________ For ( i=1; i <= 200; i = i+1) Salud Sue[i] * 7,2%; Afp Sue[i] * 12,8%; Total_Desc Salud + Afp; Sldo_Liq Sue[i] Total_Desc; If (Sldo_Liq > 250000) Then Tot_SldoLiq Tot_SldoLiq + Sldo_Liq; Print Nom[i], , Rut[i], , Sldo.Liq End If End For Print __________________________________________________ Print Totales , Empleados: , Contador, Tot_SldoLiq End

Solucin OBJETIVO 3.3, Pgina 88,89 1. num A[20] , i, suma , Promedio suma 0 For (i 1, i<=20, ii+1 ) Print (Ingrese un n entero) Read(A [ i ]) End For For ( i 1, i<=20, i i+1 ) Suma suma + A [ i ] End For Promedio suma / max Print (El promedio de los nmeros ingresados es , Promedio) Print (La suma de todos los nmeros ingresados es , suma) End

Pgina 136 de 147

2.

num Cont, N , temp, menor, mayor cont 0 Print (Cuantas mediciones se hicieron) Read N While ( cont < N ) Print ( ingrese una temperatura) Read temp If (cont = 0 ) Then menor temp mayor temp Else IF (temp > mayor) Then mayor temp Else If (temp < menor) Then menor temp End If End If End if Cont cont + 1 End While Print ( la temperatura mxima es , mayor) Print ( la temperatura mnima es , menor) End

3.

num A[20], B[20], C[20], i For (i 1, i< = 20, i i+ 1 ) If (A[ i ] > B [ i ] ) Then C [ i ] A [ i ] Else C[ i ] B [ i ] End if End For Print (Los elementos del vector C son: ) For(i1, i<=20, i i +1 ) Print C [ i ] End For End num ORDEN [ 20 ], i, a, b, Aux For (i1, i< = 20, ii + 1 ) Read ORDEN [ i ] End For For (a 1, a<=19, a a +1) For (b ( a + 1), b<=20, bb + 1 ) If (ORDEN [ a ] < ORDEN [ b ] )Then Aux ORDEN [ a ] Pgina 137 de 147

4.

ORDEN [ a ] ORDEN [ b ] ORDEN [ b ] Aux End If End for End For Print (Arreglo ordenado de mayor a menor ) For (i20, i <=20, ii - 1) Print ORDEN [ i ] End For End 5. num NUME[ 5000 ] ,cont , sw Cont 1 Sw 0 While ( cont <= 5000 ) And ( sw = 0 ) Contcont + 1 If (NUME [ cont ] = 20 ) Then Sw 1 End If End While If (sw = 1) Then Print El nmero 20 fue encontrado, en la posicin, cont Else Print El nmero 20, NO fue encontrado End If End

6.

num edad[350], edad2[350], i, j, k,aux k0 For (i1, i<=350, ii+1) Print ingrese edad Read edad[i] End For For (i1, i<=350, ii+1) For (ji+1, j<=350, jj+1) If (edad[i] > edad[j]) Then Aux edad[i] edad[i]edad[j] edad[j]aux End If End For edad2[i]edad[i] End For Print el vector ordenado es : For (i1, i<=350, ii+1) Print edad2[i] End For End Pgina 138 de 147

7.

num a[700], b[100], c[800], i, j, k k0 For (i1, i<=700, ii+1) For (ji+1, j<=700, j=j+1) If (a[i] = a[j]) Then kk+1 c[k]a[i] End If End For End For k0 For (i1, i<=100, ii+1) For (ji+1, j<=100, jj+1) If (b[i] = b[j]) The n kk+1 c[k]b[i] End If End For End For End char nom[4000], rut[4000] num edad[4000], sue[4000], ncf[4000], desc, liq For (i1, i<=4000, ii+1) Print ingrese nombre : Read nom[i] Print ingrese rut : Read rut[i] Print ingrese edad : Read edad[i] Print ingrese sueldo : Read sue[i] Print ingrese carga familiar : Read ncf[i] descsue[i]*0.13 + sue[i]*0.07 liqsue[i] desc Print nom[i], sue[i], desc, liq End For End

8.

9.

char nom[4000], rut[4000], aux num edad[4000], sue[4000], ncf[4000], aux1, i, j For (i1, i<=4000, ii+1) For (ji+1, j<=4000, jj+1) If ncf[i] > ncf[j] Then aux1ncf[i] ncf[i]ncf[j] Pgina 139 de 147

ncf[j]aux1 auxnom[i] nom[i]nom[j] nom[j]aux auxrut[i] rut[i]rut[j] rut[j]aux aux1edad[i] edad[i]edad[j] edad[j]aux1 aux1sue[i] sue[i]sue[j] sue[j]aux1 End If End For Print nom[i], ncf[i] End For End 10. char nom[4000], rut[4000], aux num edad[4000], sue[4000], ncf[4000], aux1, i, j, cfam, afp, salud, desc, liq For (i1, i<=4000, ii+1) For (ji+1, j<=4000, jj+1) If ( ncf[i] < ncf[j] ) Then aux1ncf[i] ncf[i]ncf[j] ncf[j]aux1 auxnom[i] nom[i]nom[j] nom[j]aux auxrut[i] rut[i]rut[j] rut[j]aux aux1edad[i] edad[i]edad[j] edad[j]aux1 aux1sue[i] sue[i]sue[j] sue[j]aux1 End If End For cfam0 If (sue[i] <= 150000) Then cfamncf[i]*3000 Else cfamncf[i]*2000 End If afpsue[i]*0.126 saludsue[i]*0.07 Pgina 140 de 147

descafp + salud liqsue[i] + cfam - desc Print nom[i], rut[i],ncf[i], sue[i], cfam, afp, salud, desc, liq End For End

11.

num tabla[10, 10], i, j For (i1, i<=10, i i + 1) For (j1, j<=10, j j + 1) Print ingrese un nmero Read tabla[ i , j ] End For End For #Asignar 1 a los pares y 0 a los Impares For (i1, i<=10, i i + 1) For (j1, j<=10, j j + 1) If ( i MOD 2 = 0) Then tabla[i, j] 1 Else tabla[i, j] 0 End If End For End For #se imprime la tabla modificada For (i1, i<=10, i i + 1) For (j1, j<=10, j j + 1) Print tabla[ i , j ] End For End For End

12.

num uni[10, 10], i, j For (i1, i<=10, i i + 1) For (j1, j<=10, j j + 1) If (i = j) Then uni[i, j] 1 Else uni[i, j] 0 End If End For End For #se imprime la tabla modificada For (i1, i<=10, i i + 1) For (j1, j<=10, j j + 1) Print uni[ i , j ] End For End For Pgina 141 de 147

13.

End num multi[10, 10], i, j For (i1, i<=10, i i + 1) For (j1, j<=10, j j + 1) multi[i, j] (i * j) + 6 End For End For #se imprime la tabla modificada For (i1, i<=10, i i + 1) For (j1, j<=10, j j + 1) Print multi[ i , j ] End For End For End

14.

num A[10, 10], i, k10, aux For (i1, i<=10, i i + 1) aux A[i, i] A[i, i] A[i, k] A[i, k] aux kk - 1 End For #se imprime la tabla modificada For (i1, i<=10, i i + 1) For (j1, j<=10, j j + 1) Print A[ i , j ] End For End For End

15.

num A[10, 5], i, j For (i1, i<=10, i i + 1) If ( (i = 1) OR (i = 10) ) Then For (j1, j<=5, j j + 1) Print A[ i , j ] End For Else Print A[ i , 1 ], A[ i , 5 ] End If End For End

Pgina 142 de 147

Solucin OBJETIVO 4.0, Pgina 99,100 1. # Programa Almacenar_numeros Arch_Datos regDatos(num numero) Arch_Datos C:\datos.dat num X, N Open (Arch_Datos, W) X1 While (X<=100 ) Read Ingrese Numero, N regDatos.numero N Write RegDatos X X+1 End While Close (Arch_Datos) End

2.

# Programa Numeros_Pares Arch_Datos regDatos(num numero) Arch_Datos C:\datos.dat Num X Open Arch_Datos, R While ( Arch_Datos Not EOF ) Read(RegDatos) X regDatos.numero If (X MOD 2) = 0 Then Print El Numero , X, es Par End If End While Close (Arch_Datos) End # Programa 50_Numeos Datos regNume(num vari) Datos C:\dato.dat num k, Valor Open Datos, RW k0 Valor 0 While (x<50 ) Read Ingrese Nmero , Valor regNume.vari Valor Write regNume kk+1 End While Close (Datos) End Pgina 143 de 147

3.

4.

# Programa Num_Mayor_50 Infor regInfo(num dato) Infor C:\dato.dat Open (Infor, R) While ( Infor Not EOF ) Read(regInfo) If (regInfo.dato) > 50 Then Print regInfo.dato End If End While Close (Infor) End MiFile regFile(num dato) MiFile C:\dato.dat Open MiFile, R num j,k j0 k0 Read Ingrese un Numero , j While ( MiFile Not EOF and k = 0) Read(regFile) If (j = regFile.dato) Then Print Encontrado k1 End If End While If (k = 0) Then Print No existe End If Close (MiFile) End #se define el registro y se asocia a un nombre lgico de archivo Agenda regAgenda(char nombre, char direccion, char fono, char email, char tipo ) #asignacin fsica del archivo Agenda C:\AGENDA_INACAP.DAT #se abre el archivo de lectura Open (Agenda, R) #se utiliza ciclo para leer mientras no se llegue al fin de archivo While ( Agenda Not EOF ) Read regAgenda If ( regAgenda.tipo = PROFESOR) Then Print Nombre:, regAgenda.nombre Print Direccin: , regAgenda.direccion Print Telefono:, regAgenda.fono Print E-Mail: , regAgenda.email Print Tipo :, regAgenda.tipo End if Pgina 144 de 147

5.

6.

End While #cierre de archivo Close (Agenda) End 7. #se define el registro y se asocia a un nombre lgico de archivo Client regClient( char rut, char nombre, char fecing, num cupo, num dispo, num monto ) #asignacin fsica del archivo Client A:\CLIENTES.DAT #se abre el archivo de lectura Open (Client, R) #se utiliza ciclo para leer mientras no se llegue al fin de archivo While (Client Not EOF) Read regClient If ( regClient.fecing >= 01/03/2001 and regClient.fecing <= 31/03/2001 ) Then Print Rut:, regClient.rut Print Nombre : , regClient.nombre Print Fecha Ingeso :, regClient.fecing Print Cupo Asignado: , regClient.cupo Print Cantidad Disponible :, regClient.dispo Print Monto Utilizado :, regClient.monto End if End While Close (Client) End #se define el registro y se asocia a un nombre lgico de archivo Paciente regPaciente (char nombre, num edad, char prevision, num peso, num estatura ) #asignacin fsica del archivo Paciente C:\PAS.DAT Char p_nombre, p_prevision, ingreso Num p_edad, p_peso, p_estatura #se abre el archive de escritura Open (Paciente, W) ingreso = S While ( ingreso = S ) Read Ingrese Nombre del Paciente: , p_nombre regPaciente.nombre p_nombre Read Ingrese Edad del Paciente: , p_edad regPaciente.edad p_edad Read Ingrese Previsin del Paciente: , p_prevision regPaciente.prevision p_prevision Read Ingrese Peso del Paciente: , p_peso regPaciente.peso p_peso Read Ingrese Estatura del Paciente: , p_estatura regPaciente.estatura p_estatura Write regPaciente Pgina 145 de 147

8.

Print Desea continuar S/N Do read ingreso While (ingreso <>N or ingreso <>S) End While #cierre de archivo Close (Paciente) End 9. #se define el registro y se asocia a un nombre lgico de archivo Paciente regPaciente (char nombre, num edad, char prevision, num peso, num estatura ) #asignacin fsica del archivo Paciente C:\PAS.DAT #se abre el archive de lectura Open (Paciente, R) num May_35 May_35 0 #se utiliza ciclo para leer mientras no se llegue al fin de archivo While (Paciente Not EOF) Read regPaciente If ( regPaciente.edad > 35 ) Then May_35 = May_35 + 1 End if If ( regPaciente.prevision = ISAPRE ) Then Print Nombre del Paciente :, regPaciente.nombre Print Edad del Paciente :, regPaciente.edad End if End While #cierre de archivo Close (Paciente) Print La cantidad de Pacientes mayores a los 35 aos es :, May_35 End Prod regProd (char nom, num cod, num cant, num vu) Prod A:\PRO.DAT Num p, sw0 Read Ingrese cdigo producto:, p Open (Prod, R) Do Read regProd If (regProd.cod = p )Then Print Nombre: , regProd.nom Print Cdigo: , regProd.cod Print Cantidad:, regProd.cant Print Valor Unit: ,regProd.vu Print Precio Venta: ,regProd.vu + (regProd.vu / 5) sw1 End if While (Prod Not EOF and sw=0) Pgina 146 de 147

10.

Close (Prod) End

Pgina 147 de 147

You might also like