MANUAL

Anuncio
Firma no
verificada
DAI
Firmado
digitalmente por
DAI
Nombre de
reconocimiento
(DN): cn=DAI,
o=INACAP
Fecha:
2002.03.26
09:51:53 -04'00'
INACAP
Dirección de Área Informática
MANUAL
ELEMENTOS DE PROGRAMACION
MARZO DEL 2002
Programa de Estudios:
INGENIERÍA EN GESTIÓN INFORMÁTICA
ANALISTA PROGRAMADOR
INACAP
Dirección de Área Informática
INDICE
PÁGINA
UNIDAD 1: ANALISIS DE PROBLEMAS Y PROCESAMIENTO DE
DATOS
1.1: METODOLOGIA DE RESOLUCIÓN DE PROBLEMAS SEGÚN GEORGE POLYA
4
1.2: CONCEPTO DE DATO E INFORMACIÓN
10
EJERCICIOS DE LA UNIDAD:
11
UNIDAD 2: ALGORITMOS Y ESTRUCTURAS DE CONTROL
CAPITULO 2.1: UNIDADES FUNCIONALES DE UNA COMPUTADORA.
EJERCICIOS:
12
13
CAPITULO 2.2: PROCESOS DE CREACIÓN DE PROGRAMAS.
EJERCICIOS:
15
16
CAPITULO 2.3: ALGORITMOS
ENTIDADES PARA EL DESARROLLO DE UN ALGORITMO:
CONSTANTES, VARIABLES Y EXPRESIONES
OPERADORES:
EJERCICIOS:
19
20
21
22
28
CAPITULO 2.4: DIAGRAMA DE FLUJO
EJERCICIOS:
29
31
UNIDAD 3: ESTRUCTURAS DE PROGRAMACIÓN.
CAPITULO 3.1 ESTRUCTURAS BASICAS
34
CAPITULO 3.2: INSTRUCCION DE ALTERNATIVA SIMPLE
36
CAPITULO 3.3 INSTRUCCION DE ALTERNATIVA DOBLE
38
CAPITULO 3.4: INSTRUCCION DE ALTERNATIVA MULTIPLE
40
EJERCICIOS PROPUESTOS DE ALTERNATIVA SIMPLE, DOBLE Y MÚLTIPLE
43
CAPITULO 3.5 ESTRUCTURAS CÍCLICAS O DE ITERACIÓN
CONCEPTOS
3.51 INSTRUCCIÓN MIENTRAS
3.52 INSTRUCCIÓN REPETIR
3.53 INSTRUCCIÓN DESDE
EJERCICIOS PROPUESTOS DE CICLOS
46
47
49
52
54
UNIDAD 4: ESTRUCTURA DE ARREGLO.
CAPITULO 4.1: CONCEPTOS.
59
CAPITULO 4.2 : ARREGLOS UNIDIMENSIONALES O VECTORES.
OPERACIONES CONE VECTORES
60
60
2
INACAP
Dirección de Área Informática
EJERCICIOS PROPUESTOS DE VECTORES
CAPITULO 4.3: MÉTODOS DE BÚSQUEDA Y ORDENAMIENTO
64
66
EJERCICIOS DE ARREGLOS Y METODO DE BÚSQUEDA Y ORDENAMIENTO:
71
CAPITULO 4.4: ARREGLOS BIDIMENSIONAL O MATRIZ
OPERACIONES CON MATRICES
EJERCICIOS PROPUESTOS DE ARREGLOS.
74
74
77
UNIDAD 5: ARCHIVOS.
CAPITULO 5.1: REGISTRO
OPERACIONES CON REGISTROS
CAPITULO 5.2: VECTOR Y REGISTRO
81
81
83
CAPITULO 5.3: ARCHIVO
OPERATORIAS CON ARCHIVOS
87
87
EJERCICIOS PROPUESTOS DE ARCHIVOS Y REGISTROS:
91
3
INACAP
Dirección de Área Informática
UNIDAD 1: ANALISIS DE PROBLEMAS Y PROCESAMIENTO DE DATOS
CAPITULO 1.1: METODOLOGIA DE RESOLUCIÓN DE PROBLEMAS SEGÚN
GEORGE POLYA.
La mayoría de los expertos en cualquier campo del conocimiento seguramente saben
como resolver problemas. El éxito de la empresa científica resalta esta conclusión: Los
procedimientos expertos se derivan desde conceptos básicos, usando concretos pasos
lógicos. El proceso es un proceso jerárquico lineal.
Existen métodos bien definidos y desarrollados para lograr una resolución efectiva de
problemas. Uno de estos métodos es el desarrollado por George Polya (destacado Doctor
en Matemática, nacido en Hungría 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. Este
método posee cuatro pasos elementales:
i.
ii.
iii.
iv.
Entender el problema.
Idear un plan.
Realizar el plan.
Mirar hacia atrás.
La comprensión del 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.
Idear un plan, consiste de responder tan directamente como sea posible lo qué se pide.
Esto requiere generalmente uso de una ley, de una definición o de un principio que sea la
respuesta a la pregunta hecha.
Realizar el plan consiste en el responder a las peticiones hechas por el resultado del paso
de progresión anterior. Esto puede derivar en un problema embutido que requiere el uso
progresivo del primer, segundo y tercer paso.
El mirar hacia atrás consiste en varios chequeos, usando el sentido común, del resultado
de usar los primeros tres pasos de progresión.
En problemas complejos los cuatro pasos de progresión se utilizan recurrentemente.
Es evidente que el primer paso de progresión a veces no es utilizado cuidadosamente.
Esto no significa entender todos los detalles del problema, tales como las enumeraciones
dadas y las condiciones. Significa solamente entender qué se pregunta.
También se necesita cuidado al usar el segundo paso. Uno intentará con demasiada
frecuencia solucionar realmente el problema mientras que idea un plan. Esto se puede
hacer en problemas simples en que uno puede visualizar la solución entera. Tan pronto
como los problemas se conviertan en un dígito binario más complejo o tengan variaciones
sutiles, éste mecanismo falla. El segundo paso de progresión significa solamente la
indicación de la ley, de la definición del principio que proporciona las instrucciones para
contestar a la pregunta hecha y expresarla en forma matemática.
4
INACAP
Dirección de Área Informática
Metodología Polya
1. ENTENDER EL PROBLEMA
Primero. Usted tiene que entender el problema:
9 ¿Qué es lo desconocido?
9 ¿Cuáles son los datos?
9 ¿Cuál es la condición?
9 ¿Es posible satisfacer la condición?
9 ¿La condición es suficiente para determinar lo desconocido?, ¿Es escasa?,
¿Es redundante?, ¿Es contradictoria?.
9 Trace una figura e introduzca la notación conveniente.
9 Separa la condición en varias partes. Si Ud. puede escribirlas, entonces
continúe.
2. IDEAR UN PLAN
En segundo lugar. Encuentre la conexión entre los datos y lo desconocido. Usted
puede verse obligado a considerar problemas auxiliares si una conexión inmediata
no puede ser encontrada. Usted debe obtener eventualmente un plan de la
solución.
9 ¿Usted lo ha visto antes?. ¿Usted ha visto el mismo problema en una
forma levemente diferente?.
9 ¿Usted sabe de algún problema relacionado?. ¿Usted conoce un teorema
que podría ser útil?.
9 ¡Está frente a algo completamente desconocido!. Intente pensar en un
problema familiar que tenga alguna parte igual o similar.
9 Es un problema relacionado con otro solucionado antes. ¿Podría usted
utilizarlo?. ¿Podría usted utilizar su resultado?. ¿Podría usted utilizar su
método?. ¿Debe usted introducir un cierto elemento auxiliar para hacer su
uso posible?
9 ¿Podría usted exponer el problema en forma modificada?. ¿Podría usted
todavía exponerlo en forma modificada diferentemente?. Vaya de nuevo a
definiciones para un nuevo plan sobre estas nuevas definiciones.
5
INACAP
Dirección de Área Informática
9 Si usted no puede solucionar el problema propuesto, intente solucionar
primero un problema relacionado. ¿Podría usted imaginar un problema
relacionado más accesible?. ¿Un problema más general?. ¿Un problema
más especial? . ¿Un problema análogo?. ¿Podría usted solucionar una
parte del problema?. Considere solamente una parte de la condición, deje
las otras partes; cómo puede él variar el planteamiento original con la
nueva solución parcial?. ¿Podría usted derivar algo útil de los datos?.
¿Podría usted pensar en otros datos apropiados para determinar lo
desconocido?. ¿Podría usted cambiar lo desconocido o los datos, o ambos
en caso de ser necesario, de modo que los nuevos datos y lo desconocido
sean más cercanos el uno al otro?
9 ¿Utilizó todos los datos?.¿Utilizó la condición entera?. ¿Ha considerado
todas las nociones esenciales implicadas en el problema?
3. REALIZAR EL PLAN
Tercero. Realice un plan.
9 Lo que realiza su plan de la solución, controla cada paso de progresión.
¿Puede ver claramente que el paso de progresión está correcto?. ¿Puede
usted probar que está correcto?
4. MIRAR HACIA ATRÁS
Por último. Examine la solución obtenida.
9 ¿Puede controlar el resultado?. ¿Puede controlar el argumento?.
9 ¿Puede derivar una solución diferentemente?. ¿Puede verla de un
vistazo?.
9 ¿Puede usted utilizar el resultado, o el método, para otro problema similar?
Un modo diferente de sintetizar las ideas del libro de George Polya puede ser descrita
como:
1.
2.
3.
4.
Mire,
Planee,
Haga y
Verifique.
MIRE. Entienda bien el problema.
) Lea cuidadosamente el problema.
) Determine claramente lo que usted está intentando hacer.
) Identifica los datos importantes.
6
INACAP
Dirección de Área Informática
PLANEE: Construya un plan.
)
)
)
)
)
)
)
)
)
)
)
)
Considere toda la información disponible.
Considera algunas acciones posibles.
Busque un modelo.
Construya o dibuje un bosquejo.
Haga una lista ordenada.
Simplifique el problema.
Verifique y chequee.
Construya una tabla.
Escriba una sentencia numérica.
Actúe fuera del problema.
Identifique sub-tareas y
Chequee la validez de la información dada.
HAGA: Realice el plan.
) Implemente un plan de ataque particular.
) Revise y modifique el plan según lo necesitado.
) Cree un nuevo plan en caso de ser necesario.
VERIFIQUE: Controle la respuesta
) Asegúrese de estar usando toda la información importante.
) Decida si las respuestas obtenidas tienen o no tienen sentido.
) Verifique que todas las condiciones dadas del problema son resueltas por la
respuesta.
) Ponga su respuesta en una sentencia completa.
La prescripción de Polya para solucionar problemas consiste en cuatro pasos de
progresión:
1.
2.
3.
4.
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 atrás. (controlando qué hace y me dice el resultado)
EJEMPLO :
A un empleado de una empresa se le cancela como sueldo base es $520.000. ¿Cuál es
el sueldo líquido del empleado si los descuentos legales son de a un 20%?.
MIRE: Entienda el problema.
# Lea Cuidadosamente El Problema.
Se desea obtener el sueldo líquido de un empleado para lo cual se necesita
conocer su sueldo base, los descuentos legales y alguna formula relacionada con
el problema tal como Sueldo Líquido = Sueldo Base –Sueldo Base * 20% u otra
formula podría ser Sueldo líquido = Sueldo Base * 80%. Una vez calculado,
escribir el resultado.
7
INACAP
Dirección de Área Informática
#
Determine Claramente Lo Que Usted Está Intentando Hacer.
Identificar el sueldo bruto
Identificar el porcentaje de descuento
Calcular Sueldo Líquido
Escribir el resultado (Sueldo Líquido).
#
Identifique Los Datos Importantes.
Sueldo Base
El porcentaje a descontar.
Sueldo Líquido
HAGA: Realice un Plan
Porcentaje a descontar ( 20%) = 20/100
Valor a descontar = Sueldo Base * 20/100
Sueldo Líquido = Sueldo Base – Valor a descontar
VERIFIQUE: Controle la Respuesta.
Sueldo base = 520.000
Valor descuento = 520.000 * 20/100 = 104.000
Sueldo Líquido = 520.000-104.000 = 416.000
RESPUESTA:
El sueldo líquido del empleado es de $416.000
El elemento fundamental de una solución de problema es la estructura mostrada arriba:
Pregunta Æ Respuesta Æ Resultado.
Esta es la forma típica utilizada en la solución de problemas. Note que la solución
presentada arriba muestra exactamente lo que se hizo.
1. Se muestra la expresión a ser evaluada.
2. Se obtienen los valores a ser sustituidos.
3. Estos se sustituyen.
4. El resultado se calcula.
Sentido común en la Resolución de Problemas
El método de solución basada en el concepto se desarrolla lógicamente paso a paso,
cada paso indica a qué hacer en el próximo. Los principios simples de comunicación
efectiva se usan en la presentación de solución. Por ejemplo, los subproblemas se
tabulan o identan. El mismo proceso se usa en muchas formas de comunicación para
mostrar subtópicos del tema principal.
8
INACAP
Dirección de Área Informática
Los espacios en blanco en la presentación de solución hace posible para el ojo y mente
seguir la solución fácilmente. El espaciado es fácil de usar. El espaciado es una
herramienta reconocida en la comunicación escrita efectiva. En la comunicación verbal, el
espacio blanco es conocido como una pausa.
Finalmente una sugerencias importantes:
) Enumerar qué se da y qué es desconocidos y a partir de ello determinar la
respuesta.
9
INACAP
Dirección de Área Informática
CAPITULO 1.2: CONCEPTO DE DATO E INFORMACIÓN
Datos: Es todo aquella representación de una entidad y que es susceptible de
tratamiento ya sea en un programa o proceso informático. Por ejemplo nombre, apellido y
edad son datos de una persona (entidad).
En otras palabras un dato es la representación de una realidad.
Información : Mensaje valido para un receptor o resultado del procesamiento de datos.
Una computadora es una simple máquina capaz de aceptar datos de entrada, procesarlos
y facilitar resultados de salida (información).
DISPOSITIVO
DE
ENTRADA
DISPOSITIVO
DE
SALIDA
PROCESAMIENT0
DATO
INFORMACION
Todo programa (software) está constituido por un conjunto de ordenes o instrucciones
capaces de manipular un conjunto de datos. Esta ordenes 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 periférico externo, depositándolos en la memoria principal
de la computadora para poder ser procesados.
DATOS
MEMORIA
PRINCIPAL
DISPOSITIVO
EXTERNO
PROCESO: Engloban todas aquellas instrucciones encargadas de modificar los datos
que previamente habían sido depositados en a memoria principal. Finalmente, todo los
resultados obtenidos en el tratamiento de dichos datos son depositados nuevamente en
la memoria principal quedando de esta manera disponible.
DATOS
DISPOSITIVO
EXTERNO
MEMORIA
PRINCIPAL
PROCESO
RESULTADO
10
INACAP
Dirección de Área Informática
SALIDA DE RESULTADOS: Es el conjunto de instrucciones que toman los
resultados finales desde la memoria principal y lo envían a dispositivos externos.
Una computadora es una simple máquina capaz de aceptar datos de entrada,
procesarlos y facilitar resultados de salida.
MEMORIA
PRINCIPAL
RESULTADO
DISPOSITIVO
EXTERNO
EJERCICIOS:
Crear grupos de trabajos de 6 integrantes y efectuar los siguientes procesos
manualmente.
1.
2.
3.
4.
Determinar el promedio de edad entre los integrantes del grupo.
Determinar la cantidad de mujeres y la cantidad de hombres dentro del
grupo.
Determinar los que son mayores de edad en el grupo si tienen 20 años o
mas y menor de edad los que tienen inferior a 20 años.
Determinar la cantidad de integrantes que salieron de cuarto medio con un
promedio igual o inferior a 5.0.
Para las siguientes situaciones indicar cual(es) corresponden a los datos, cual sería el
proceso y el resultado o la información.
a. El promedio de las edades de los 30 alumnos de un curso es de 22 años.
Datos:
______________________________________________
Proceso:
______________________________________________
Información: ______________________________________________
b. En una agroindustria a un productor por 2 toneladas de poroto verde se le
cancelaron 4 millones de peso.
Datos:
______________________________________________
Proceso:
______________________________________________
Información: ______________________________________________
c. Para cercar un jardín de 3 metros de largo por 5 metros de ancho se
necesitaron 16 metros de alambre.
Datos:
______________________________________________
Proceso:
______________________________________________
Información: ______________________________________________
11
INACAP
Dirección de Área Informática
UNIDAD 2: ALGORITMOS Y ESTRUCTURAS DE CONTROL
CAPITULO 2.1: UNIDADES FUNCIONALES DE UNA COMPUTADORA.
Organización física de una computadora
CPU
Dispositivos
de Entrada
Unida de
Control
Unidad
Arit.-Log.
Dispositivos
de Salida
Memoria
Dispositivos de Entrada: Como su nombre lo indica, sirven para introducir datos a la
computadora para su proceso. Los datos se leen de los dispositivos de entrada y se
almacenan en la memoria central o interna. Ejemplos: teclado , scanners (digitalizadores
de rastreo), mouse (ratón), trackball (bola de ratón estacionario), joystick (palancas de
juego), lápiz óptico, etc.
Dispositivos de Salida: Regresan los datos procesados que sirven de información al
usuario. Ejemplo: monitor, impresora.
La Unidad Central de Procesamiento (C.P.U) se divide en dos:
¾ Unidad de control
¾ Unidad Aritmético - Lógica
Unidad de Control: Coordina las actividades de la computadora y determina que
operaciones se deben realizar y en que orden; así mismo controla todo el proceso de la
computadora.
Unidad Aritmético - Lógica: Realiza operaciones aritméticas y lógicas, tales como suma,
resta, multiplicación, división y comparaciones.
La memoria de la computadora se divide en dos:
1. Memoria Central o Interna
2. Memoria Auxiliar o Externa
Memoria Central (interna): La CPU utiliza la memoria de la computadora para guardar
información mientras trabaja con ella; mientras esta información permanezca en memoria,
12
INACAP
Dirección de Área Informática
la computadora puede tener acceso a ella en forma directa. Esta memoria construida
internamente se llama memoria de acceso aleatorio (RAM).
La memoria interna consta de dos áreas de memoria:
La memoria RAM (Random Access Memory): Recibe el nombre de memoria principal o
memoria del usuario, en ella se almacena información solo mientras la computadora esta
encendida. Cuando se apaga o arranca nuevamente la computadora, la información se
pierde, por lo que se dice que la memoria RAM es una memoria volátil.
La memoria ROM (Read Only Memory): Es una memoria estática que no puede
cambiar, la computadora 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 solo lectura. Los datos de la memoria ROM están
grabados en forma permanente y son introducidos por el fabricante de la computadora.
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) mas comúnmente utilizados son: cintas magnéticas y discos magnéticos.
EJERCICIOS:
1. Indique que partes del cuerpo humano que poseen analogías con:
a. Unidad de entrada:
_______________________________________________________________
b. Unidad de salida:
_______________________________________________________________
c. Memoria principal:
_______________________________________________________________
d. Unidad aritmética y lógica:
_______________________________________________________________
e. Unidad central de proceso:
_______________________________________________________________
2. La siguiente ilustración es una representación conceptual de una memoria, cuyas
direcciones están representadas por variables y los contenidos son los ilustrados.
X
R
Y
S
L
P
34
12
45
-9
13
8
T
G
A
J
W
Z
106
56
20
5
80
5
13
INACAP
Dirección de Área Informática
Determinar los valores finales de los contenidos si se ejecutan secuencialmente
las siguientes operaciones matemáticas.
X=G+5
W=A*X
T=S+P-J
J=T+L
Z=P*R+Y
Y=Y+Z
Y=Y+1
Escriba en la siguientes ilustración los valores finales de las variables
X
R
Y
S
L
P
T
G
A
J
W
Z
14
INACAP
Dirección de Área Informática
CAPITULO 2.2: PROCESOS DE CREACIÓN DE PROGRAMAS.
Programa: Es el conjunto de instrucciones escritas de algún lenguaje de programación y
que ejecutadas secuencialmente resuelven un problema especifico. Este programa debe
pasar por fases de elaboración hasta llegar al producto final.
Etapas en el proceso de la resolución de un programa:
Resolvemos problemas a diario, pero normalmente ignoramos el proceso que estamos
siguiendo. La mayoría de nuestra experiencia es simplemente seguir algoritmos,
seguimos recetas, practicamos un juego, tomamos medicina, etc.
Para aprender a programar tendrás que hacer conscientemente algunas de las
estrategias subyacentes de resolución de problemas, en orden para aplicarlos a los
problemas de programación
Algunas de estas etapas son:
1. Diseño del proceso: Esta etapa consiste en el análisis del problema esto es:
entender el problema, determinar estrategias de solución. En ambas
situaciones se indicará claramente los procesos a seguir (lo que se va a hacer)
para llegar a la solución correcta. En esta etapa además se desarrolla un
modelo que no es más que una representación apropiada al problema
planteado. En otras palabras se debe visualizar como se realizará la
transformación de los datos de entrada para que a través de un proceso
apropiado obtener la salida correcta.
2. Construcción: 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 Pseudolenguaje.
3. Codificación: Consiste en la traducción del algoritmo a algún lenguaje de
programación, el cual crea instrucciones entendibles y ejecutables por la
computadora; algunos de estos lenguajes pueden ser Pascal, C, C++, Visual
Basic, Clipper etc.
4. Verificación: En primer lugar, se prueba el algoritmo en forma analítica, esto
es para demostrar la efectividad del algoritmo; luego se prueba el algoritmo y/o
programa con datos que producirán una salida conocida, con esto se pretende:
detectar errores lógicos, corregir los errores, mejorar el programa o algoritmo.
5. Documentación: En esta etapa se debe documentar el o los programas
realizados en la etapa de construcción. Se debe confeccionar un manual de
uso que contenga, al menos los siguientes puntos:
5.1.
5.2.
Descripción del método de solución utilizado
Requerimientos lógicos (Sistema Operativo,
producción, etc.).
15
Software
INACAP
Dirección de Área Informática
5.3.
Requerimientos
periféricos)
físicos
(Servidores,
computadoras,
Como profesional de la informática, la calidad de los programas y sistemas de desarrollo,
es de vital importancia, considerando que para un problemas existen muchas soluciones o
programas, y es misión elegir la alternativa mas eficaz y eficiente en función del problema
dado. La elección de la solución depende de:
a) Legibilidad: El programa debe ser claro y sencillo para una fácil
lectura y comprensión.
b) Modificabilidad: El programa para su vigencia y actualización,
debe ser de fácil mantenimiento.
c) Fiabilidad: El programa debe ser robusto, fácil de recuperarse
frente a errores o malos usos
d) Eficiencia: El programa debe ser eficiente, aprovechando al
máximo los recursos.
e) Portabilidad: El programa debe ser de fácil codificación para
distintos lenguajes.
EJERCICIOS:
Para las siguientes situaciones identifique la etapa o fase del proceso en la resolución de
un programa.
a. El algoritmo creado se traducirá en lenguaje C: esta situación corresponde a la
etapa
_______________________________________________________________
b. Un algoritmo requiere de la formula de volumen de un prisma: esta situación
corresponde a la etapa
_______________________________________________________________
c. La resolución de un problema ha sido escrita en forma narrativa: esta situación
corresponde a la etapa
_______________________________________________________________
d. Un algoritmo ha sido recorrido con datos conocidos: esta situación corresponde
a la etapa
_______________________________________________________________
16
INACAP
Dirección de Área Informática
Ejercicios:
1 La siguiente ilustración es una representación conceptual de una memoria, cuyas
direcciones están representadas por variables y los contenidos son los ilustrados.
X
R
Y
S
L
P
14
8
0
-9
130
0
T
G
A
J
W
Z
16
-56
-4
5
-8
0
Determinar los valores finales de los contenidos si se ejecutan secuencialmente las
siguientes operaciones matemáticas.
X=X+A-W
S=X-J*Z
R=R+1
Y=R-X+2
L=Y+L
T=G+J-Z*3
W=W+5
J=J+Z/X+2
Escriba en la siguientes ilustración los valores finales de las variables
X
R
Y
S
L
P
T
G
A
J
W
Z
2. Para las siguientes situaciones identifique la etapa o fase del proceso en la resolución
de un programa.
a. Para un problema dado, que haremos para llegar a una solución correcta: esta
situación corresponde a la etapa
_______________________________________________________________
17
INACAP
Dirección de Área Informática
b. Al recorrer el algoritmo que algunos datos el resultado no es el esperado: esta
situación corresponde a la etapa
_______________________________________________________________
c. Un algoritmo será traducido a lenguaje Pascal: esta situación corresponde a la
etapa
_______________________________________________________________
d. Un algoritmo calcula el área de un cuadrado para un valor cualquiera del lado:
esta situación corresponde a la etapa
_______________________________________________________________
e. Al parecer el modelo matemático escogido soluciona el problema solo para un
tipo de datos: esta situación corresponde a la etapa
_______________________________________________________________
18
INACAP
Dirección de Área Informática
CAPITULO 2.3: ALGORITMOS
DEFINICIÓN DE ALGORITMO
La palabra algoritmo se deriva de la traducción al latín de la palabra árabe alkhowarizmi,
nombre de un matemático y astrónomo árabe que escribió un tratado sobre manipulación
de números y ecuaciones en el siglo IX.
Un algoritmo es una serie de pasos organizados que describe el proceso que se debe
seguir, para dar solución a un problema especifico.
Tipos de Algoritmos
Cualitativos: Son aquellos en los que se describen los pasos utilizando palabras.
Cuantitativos: Son aquellos en los que se utilizan cálculos numéricos para definir los
pasos del proceso.
Lenguajes Algorítmicos
Es una serie de símbolos y reglas que se utilizan para describir de manera explícita un
proceso.
Tipos de Lenguajes Algorítmicos
Gráficos: Es la representación gráfica de las operaciones que realiza un algoritmo
(diagrama de flujo).
No Gráficos: Representa en forma descriptiva las operaciones que debe realizar un
algoritmo (pseudocódigo).
Características de un algoritmo
Las características de un buen algoritmo son:
♦ Debe tener un punto particular de inicio.
♦ Debe ser definido, no debe permitir dobles interpretaciones.
♦ Debe ser general, es decir, soportar la mayoría de las variantes que se puedan
presentar en la definición del problema.
♦ Debe ser finito en tamaño y tiempo de ejecución.
19
INACAP
Dirección de Área Informática
Ejemplo:
1.Se desea construir un algoritmo que cambie la rueda de un automóvil. La
siguiente lista de paso le ayudará a en la construcción del algoritmo pero, para
ellos debe ordenarlas en una secuencia lógica.
a.
b.
c.
d.
e.
f.
g.
h.
i.
j.
k.
l.
m.
n.
Sacar las tuercas
Inicio
Bajar el auto y retirar las tuercas
Colocar repuesto
Sacar herramientas y respuesta.
Cerrar maletera
Colocar tuercas
Fin
Abrir maletera
Apretar turcas
Posicionar gata y levantar
Guardar herramientas y rueda
Retirar rueda mala
Soltar tuercas
2.Escriba el algoritmo que soluciona los siguientes problemas cotidianos.
a. Cambiar las cuatro ruedas de un vehículo.
b. Guardar 20 monedas de $100 en una alcancía.
c. Destapar un botellas de bebidas hasta que se terminen, es decir un número
indefinido de botellas.
ENTIDADES PARA EL DESARROLLO DE UN ALGORITMO:
DATO: Recordemos que el dato es una entidad, tratable por software, la cual puede ser
procesada, a fin de obtener resultados o información útil. Un dato está compuesto
por tres partes, las cuales son:
1.Identificador: Es un nombre para referenciarlo, puede contener letras, números
o combinaciones de ambas, donde el primer carácter es un letra, y su nombre
comúnmente esta relacionado con la información que representa, para facilitar
nuestra tarea y evitar confusiones.
20
INACAP
Dirección de Área Informática
Ejemplo
hola
Punto_Final
5puntos
$punto3
Punto/2
Punto1
.P4
Válido
Válido
No válido, comienza con un número
Válido
Válido
Valido
No válido, comienza con el carácter .
2.Tipo: El tipo se refiere a la forma del dato, esto puede ser: de carácter (char),
numérico (real o entero), fecha, cadena de caracteres (string), booleano (lógico, es
decir, verdadero o falso).
Ejemplo:
Si
A=12,
B=3.5,
C= “hola”, D=”S”,
entonces las variables son del siguiente
tipo:
A: entero
B: real
C: string o cadena
D: char
3.Valor: El valor está directamente relacionado con el tipo.
Ejemplo
Si las siguientes variables son declaradas como:
X: entero, debe almacenar un valor entero, es decir cualquier número del conjunto Z
H: boolena, debe almacenar un valor lógico es decir, Verdadero o falso
Z: real, debe almacenar cualquier número del conjunto de los reales (R)
P: char, debe almacenar sólo un carácter de cualquier tipo
F: String, debe almacenar una cadena de caracteres, desde dos caracteres o más
caracteres.
Constantes, Variables y expresiones
Constantes: Las constantes son valores declarados en un programa para su
utilización posterior y poseen un valor que no varia durante el proceso de ejecución;
Ejemplo
PI= 3.14, constante numérica
21
INACAP
Dirección de Área Informática
OP= “s”, constante char
Men=” hola” , constante string
Variables: Las variables son objetos que poseen un valor que puede ir cambiando o
ser modificado a lo largo de la ejecución del programa.
Expresiones: Las expresiones son la representación de un cálculo necesario para
la obtención de un resultado. En informática existen tres tipos de expresiones:
a) Numéricas: Generan un resultado numérico y se construyen
mediante operadores aritméticos: Ejemplo PI*4.15+X
b) Alfanuméricas: Resultados alfanuméricos, se construyen
mediante operadores alfanuméricos: Ejemplo N=”Juan”
“Don”+N=”Don Juan”
c) Booleanos: Resultados verdaderos o falso, se construyen
mediante operadores relacionales y lógicos: Ejemplo A>O y B<5.
Operadores: Sirven para la construcción de expresiones. La presente tabla muestra
su respectiva clasificación.
ARITMETICOS
ˆ
*
/
MOD
+
-
POTENCIA
PRODUCTO
DIVISIÓN
RESTO DE LA DIVISIÓN ENTERA
SUMA
RESTA O SIGNO NEGATIVO
ALFANUMÉRICO
+
=
CONCATENACIÓN
ASIGNACIÓN
RELACINALES
=
<
<=
>
>=
<>
IGUAL
MENOR QUE
MENOR O IGUAL QUE
MAYOR QUE
MAYOR O IGUAL QUE
DISTINTO A
LÓGICOS
NOT
AND
OR
NEGACIÓN
Y (CONJUNCION)
O (DISYUNCION)
Operadores Aritméticos: Los operadores aritméticos permiten la realización de
operaciones matemáticas con los valores (variables y constantes).
Los operadores aritméticos 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.
22
INACAP
Dirección de Área Informática
Operando (Operador) Operando
Valor
(constante o variable)
Ejemplos:
7/2
= 3.5
12 mod 7 = 5
4 + 2 * 5 = 14
Prioridad de los Operadores Aritméticos
Todas las expresiones entre paréntesis se evalúan primero. Las expresiones con
paréntesis anidados se evalúan de dentro a fuera, el paréntesis más interno se
evalúa primero.
❈ Dentro de una misma expresión los operadores se evalúan en el siguiente orden.
❈
a) ( )
b) ^
c) *, /, mod
d) +, -
Parentesis
Exponenciación
Multiplicación, división, modulo.
Suma y resta.
❈ Los operadores en una misma expresión con igual nivel de prioridad se evalúan de
izquierda a derecha.
Ejemplos:
1.Observe el siguiente calculo respetando las prioridades
4 + 2 * 5 = 14
23 * 2 / 5 = 9.2
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)
= 9.2
= 23
=23
= 5.09
= 5.09
= 28.98
2.La siguiente expresión matemática es transcrita a una expresión utilizando los
operadores informáticos.
M+
N
= M + N / (P-Q)
P−Q
Observe los siguientes ejemplo:
23
INACAP
Dirección de Área Informática
a)
M
+ 4 = M/N+4
N
b)
M +N
= (M+N) / (P-Q)
P−Q
N
P = (P+N/P) / (Q-R/5)
R
Q−
5
P+
c)
Operadores Alfanuméricos
La operación mas utilizado es la concatenación representada por el signo +; La
concatenación no es mas que la unión de caracteres o cadena de caracteres,
transformándola de este modo a una sola cadena.
Ejemplo:
Observe las siguientes concatenaciones
a) “12” + “12” = “1212”
b) “EL RESULTADO” + “ ES”= “EL RESULTADO ES”
c) “METODO”+”LOGICO” = ”METODOLOGICO”
d) “123”+”.24-“+”A” = “123.24-A”
Operadores Relaciónales: Se utilizan para establecer una relación entre dos valores.
Compara estos valores entre sí del mismo tipo y esta comparación produce un resultado
verdadero o falso, tienen el mismo nivel de prioridad en su evaluación.
Ejemplos:
Si
a = 10,
a+b>c
a-b<c
a-b=c
a*b<>c
b = 20,
c = 30
Falso
Verdadero
Falso
Verdadero
Ejemplos no lógicos:
a<b<c
10 < 20 < 30
24
INACAP
Dirección de Área Informática
V
< 30
(no es lógico porque tiene diferentes operandos)
Operadores Lógicos y las proposiciones: Los operadores lógicos, permiten entre otras
cosas resolver proposiciones, donde llamaremos proposiciones a toda expresión que
tenga un sentido y de la cual se puede decir que es verdadera o falsa. Esta es llamada
lógica proposicional.
Ejemplo:
a) La quinta región se caracteriza por ser zona minera (Esta proposición es falsa).
b) ¿Cómo se resuelve este ejercicio? (Esta no es una proposición)
c) El caballo blanco de Napoleón es blanco (Esta proposición es verdadera).
Las proposiciones pueden ser nominadas con algunas letras tales como p,q,r, etc. Las
cuales pueden ser unidas por conectivos lógicos, dando origen a una expresión lógicas.
Los operadores lógicos más utilizado en la programación es la negación (not), los
conectivos and (y) or (o). Su tablas de verdad son:
OPERADOR NO (NOT)
P
Not P
1 (V)
0 (F)
0 (F)
1 (V)
OPERADOR Y (AND)
P
Q
P AND Q
1 (V)
1 (V)
1 (V)
1(V)
0 (F)
0 (F)
0 (F)
1 (V)
0 (F)
0 (F)
0 (F)
0 (F)
OPERADOR O (OR)
P
Q
25
P OR Q
INACAP
Dirección de Área Informática
1 (V)
1 (V)
1 (V)
1 (V)
0 (F)
1 (V)
0 (F)
1 (V)
1 (V)
0 (F)
0 (F)
0 (F)
Ejemplos:
Si
a=10,
b=20,
c=30 entonces el valor de verdad de la siguiente expresión
es:
(a < b) and (b < c)
(10<20) and (20<30)
V and
F
F
Prioridad de los Operadores Lógicos
a) Not
b) And
c) Or
NO
Y
O
Prioridad de los Operadores en General
a)
b)
c)
d)
e)
()
^
*, /, Mod, Not
+, -, And
>, <, > =, < =, < >, =, Or
Paréntesis
Exponenciación
Multiplicación, Division, Modulo, No
Suma, Resta, Y
Operadores de Relación, O
Ejemplos:
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
26
INACAP
Dirección de Área Informática
F
b)
((a > = b) or (a < d)) and (( a > = d) and (c > d))
( F
or
F ) and ( V
and F )
F
and
F
F
c)
not (a = c) and (c > b)
not ( F ) and ( V )
V
and V
V
2. Supongamos que a Ud. le solicitan evaluar si un número cualquiera se encuentra en el
intervalo [2, 5[. Su respuesta debe ser en término de verdadero o falso
El intervalo [2,5[ matemáticos se interpreta de la siguiente forma, “ son todos los
número que se encuentran entre 2 y 5 considerando el 2 y excluyendo al 5”.
Cuando el paréntesis corchete encierra al número [2 índica que se considera al
número por tal motivo utilizamos el signo =, cuando el paréntesis en corchete se
utiliza hacia fuera del número o no lo encierra como el caso de 5[ índica que no
se considera su extremo por tal razón no se utiliza el símbolo =.
Luego el intervalo en forma lógica es:
( x >= 2) and ( x < 5), supongamos que el valor de x es 3, la respuesta debe ser
verdadero, hagamos la evaluación.
(3 >=2) and (3<5)
V and V
V
Si x toma el valor 13 se encuentra fuera del intervalo, por lo tanto la respuesta es
falso,
(13>=2) and (13<5)
V
and
F
F
Observe los siguientes ejemplos:
a) ]12,56[
= (x>12) and (x< 56)
b) ] -∞,56] and [150, ∞+[ = (x<=56) and (x >= 150)
c) [25,89] or ]800, ∞+[
= (x>=25) and (x<=89) or (x>800)
27
INACAP
Dirección de Área Informática
EJERCICIOS:
1.Calcular el valor de las siguientes expresiones aritméticas:
a)
b)
c)
d)
e)
f)
g)
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)))
2.Calcular el resultado de las siguientes expresiones lógicas:
a) not (5>6) and 7<=4
b) 7>4 and 5<=5 or 4=5
d) not (7=7) and (7>=8 or 8=6)
e) 5+2<=5 and 3*2=5 or 7<=2*2 or 2*2<=2+2
f) (not (14/2>8) or 5>5) and (5<=27/3 ord 5+3<=3/2)
g) 3+5*2=12/3 and (5+3=18/9 or 10/2<=9) or not (9>=2)
3. Expresar el resultado de las siguientes expresiones:
a) "PEDRO " + "GOMEZ " =
b) "GARCIA
" + " - GONZALEZ " =
c) "CALLE- " + "-MAYOR " =
d) “12.465”+”.450”+”-k”=
4.Escriba los siguientes intervalos numéricos en sus correspondientes intervalos
lógicos:
a) [5,15]
b) ]120,200]
c) [0,50[
d) ]15,30[
e) ]-∞,15[ and [30, ∞+[
5.Escriba las siguientes expresiones matemáticas en forma de expresiones
algorítmicas.
a)
3 x − y 2 xy 2 x
+
+
z
z −1 y
28
INACAP
Dirección de Área Informática
a
b)
+
c
b−
d−
h+i
j+k
e
f −g
CAPITULO 2.4: DIAGRAMA DE FLUJO
Para el diseño de algoritmos se utilizan técnicas de representación. Una de estas técnicas
son los denominados diagramas de flujo, que se definen como la representación gráfica
que mediante el uso de símbolos estándar conectados o unidos mediante líneas de flujo,
muestran la secuencia lógica de las operaciones o acciones que debe realizar un
ordenador, así como la corriente o flujo de datos en la resolución de problema.
Algunos símbolos correspondientes a operaciones de proceso son:
Símbolo
Función
Terminal (marca el inicio, final o una
parada necesaria realizada en la
ejecución del programa.
Operación de E/S en general (utilizada
para mostrar la introducción de datos
desde un periférico a la memoria del
ordenador y la salida de resultados
desde la memoria del ordenador a un
periférico.
Proceso u operación en general
(utilizado para mostrar cualquier tipo
de operación durante el proceso de
elaboración de los datos depositados
en la memoria).
Si
SI
No
Decisión de dos salidas, indica
operaciones lógicas o comparativas
seleccionando la ruta en función del
resultado (si, no) .
No
Flechas indicadoras de la dirección del
flujo de datos
Línea conectora, también llamada
línea de flujo de datos (permite la
conexión entre los diferentes símbolos
utilizados en el diseño)
Conector (éste símbolo es utilizado
29
INACAP
Dirección de Área Informática
para el reagrupamiento de línea de
flujo).
Ejemplo:
Al recorrer el siguiente diagrama de flujo, considerando a Base=5, Altura=8. El resultado
es la impresión del valor de la variable Area que es 20.
inicio
Base,
altura
Area=(Base*Altura)/2
Area
fin
Recorrer el siguiente diagrama de flujo, considerando N1=4.5, N2=5.5, N3=6.5, el valor
de P es 5.5, como el mayor que 3.9, la ruta continua por la alternativa NO por lo tanto se
imprime la cadena Aprobado.
inicio
N1,N2,N3
P=(N1+N2+N3)/3
P<3.9
SI
NO
“Reprobado”
“Aprobado”
30
INACAP
Dirección de Área Informática
Fin
Recomendaciones para el diseño de Diagramas de Flujo
❈ Se deben usar solamente líneas de flujo horizontales y/o verticales.
❈ Se debe evitar el cruce de líneas utilizando los conectores.
❈ Se deben usar conectores solo cuando sea necesario.
❈ No deben quedar líneas de flujo sin conectar.
❈ Se deben trazar los símbolos de manera que se puedan leer de arriba hacia abajo y
de izquierda a derecha.
❈ Todo texto escrito dentro de un símbolo deberá ser escrito claramente, evitando el uso
de muchas palabras.
Ejercicios:
a) Crear un algoritmo en diagrama de flujo que al leer un número entero positivo
(asuma que el número cumple las condiciones), imprimir PAR si el número es
par e IMPAR si es impar.
b) Supongamos que el I.P.C. de los meses de Febrero y Marzo fueron 0.3% y 0.6%
respectivamente. Crear un algoritmo en diagrama de flujo que muestre el valor
de un producto actualizado y la diferencia de precio entre el mes de febrero y
Marzo.
c) Confeccione un algoritmo en diagrama de flujo que al leer el neto de una factura,
calcule el I.V.A. y de cómo salida el total de la factura.
d) Crear un algoritmo en diagrama de flujo que al ingresar dos números imprima el
mayor de ellos o IGUALES si son iguales.
e) Confeccionar un algoritmo en diagrama de flujo que imprimir el salario reajustado
de un trabajador según las siguientes categorías.
f)
b.1.
36000 - 60.000
20%
b.2.
60001 – 80000
15%
b.3.
80001 - 120000
10%
b.4.
120001 y más 8%
En una financiera utilizan la formula Cf=N*I*Ci+Ci para calcular el capital final de
un ahorrante a un interés simple.
Si
I = Interés en (%) , N = Meses, Ci = Capital inicial
Crear los siguientes un algoritmo en Pseudolenguaje:
31
INACAP
Dirección de Área Informática
♦ Al ingresar el capital inicial, los años y el interés simple, la salida sea el
capital final.
♦ Al ingresar los meses, capital inicial y final de como salida el interés.
♦ Al ingresar el interés, capital inicial y final de como salida la cantidad de
meses.
g) Recorra (rutee) el siguiente diagrama de flujo
Inicio
E
V
E<15
“Infantil”
F
(E>=15) and (E<21)
V
“Juvenil”
F
E>=21
V
“Adulto”
F
Fin
32
INACAP
Dirección de Área Informática
Haga el ruteo con los siguientes valores.
Entrada
E
Salida
28
15
21
69
33
INACAP
Dirección de Área Informática
UNIDAD 3: ESTRUCTURAS DE PROGRAMACIÓN.
CAPITULO 3.1 ESTRUCTURAS BASICAS
ESTRUCTURAS BASICAS
Asignación:
Permite
realizar
cálculos Asignación:
evaluando una expresión y depositando su
valor final en un objeto o realizar movimientos
VARIABLE = EXPRESION
de datos de un objeto a otro.
Variable = Expresión
Leer Variable: Toma uno o varios datos desde Leer Variable:
un dispositivo de entrada para almacenarlos
en los objetos cuyo identificador aparece en la
propia instrucción
Leer VARIABLE
Leer Variable
Escribir Expresión: Envía datos a los Escribir Expresión :
dispositivos externos, bien tomándolos de
objetos o definidos de alguna forma en la
propia instrucción.
Escribir EXPRESION
Escribir Expresión
Procesos : Instrucciones que modifican los Procesos :
objetos a partir de un estado inicial (I1) hasta
un estado final (In).
I1; I2; I3; …; In
34
I1; I2; I3; …; In
INACAP
Dirección de Área Informática
Ejemplo:
1.
Realice un algoritmo para ingresar el Nombre y el sueldo base de un empleado.
Calcular el sueldo líquido y mostrar el resultado con un mensaje correspondiente.
Considere el sueldo liquido como el 80% del sueldo base.
Mire: Entienda el problema
Se desea imprimir el sueldo liquido de un empleado.
Determinar lo que se intenta hacer
Se debe ingresar el nombre del empleado y su sueldo base, es decir sin descuentos para
luego calcular el sueldo liquido e imprimirlo.
Identifique los datos importantes
Nombre del empleado.
Sueldo base.
Planee: Construya un plan
Lea el nombre del empleado en una variable alfanumérica.
Lea el sueldo base del empleado en una variable entera.
Calcular el sueldo liquido y almacenar en una variable real.
Sueldo liquido sueldo base por 0.8
Escribir un mensaje y el resultado.
Construya un ejemplo:
Nombre = Juan Pérez
Sueldo base = 500 000
Sueldo Liquido = 500 000*0.8=400 000
Solución:
PROGRAMA Sueldo_Líquido
VARIABLES
Nombre : Alfabético
Sbase : Entero
Liquido : Real
INICIO
Escribir (“Ingrese Nombre Empleado”)
Leer (Nombre)
Escribir (“Ingrese Sueldo Base”)
Leer(Sbase)
Liquido = Sbase* 0.8
Escribir(“El Sueldo Líquido de ”, Nombre, “ Es ”, Liquido)
FIN
35
INACAP
Dirección de Área Informática
CAPITULO 3.2: INSTRUCCION DE ALTERNATIVA SIMPLE
INSTRUCCION DE ALTERNATIVA SIMPLE
Alternativa Simple: Controla la Alternativa Simple:
ejecución de Un Conjunto De
Instrucciones por el cumplimiento o no
de una condición, de tal forma que, si
CONDICION
se esta es verdadera, se ejecutan, si
es falsa, no se ejecutan.
F
V
I1,I2,I3, …,In
Si ( CONDICION ) Entonces
I1; I2; I3l; …; In
Fin Si
Ejemplo:
2.
Realice un algoritmo el cual permita obtener los cálculos de una venta de
televisores, donde hay que ingresar la cantidad de TV y su valor unitario, este
algoritmo debe considerar:
¾ Sí el monto de la venta es mayor que $ 50 000 se aplica un descuento a la venta de
3%, imprimir el valor descontado.
¾ Calculo del impuesto IVA que es un 18% sobre la venta total.
¾ Por ultimo imprima la venta bruta que es la venta total más el IVA calculado
anteriormente.
Mire: Entienda el problema
Hay que ingresar la cantidad de TV y su valor analizar si corresponde descuento, calcular
el IVA e imprimir el total de la venta.
Determinar lo que se intenta hacer
Se quiere imprimir el descuento (si corresponde ) y la venta total de la venta de TV.
Identifique los datos importantes
Número de TV.
Valor unitario de TV.
Planee: Construya un plan
Ingrese cantidad de TV en una variable entera.
Ingrese valor unitario de TV en una variable entera.
Calcule el total de la venta: Multiplicar Cantidad de TV por el valor unitario de estos y
almacenar el resultado en una variable real .
Preguntar si la venta es mayor que 50000 realizar descuento y guardar el resultado.
Imprimir el resultado del descuento.
36
INACAP
Dirección de Área Informática
Calcular el iva y guardar el resultado en una variable real.
Obtener vanta bruta: Sumar venta más iva y guardar en una variable real.
Imprimir venta bruta con un mensaje adecuado.
Construya un ejemplo:
a)
N° de TV 5, valor unitario $ 12000
La venta es 5*12000=60000
Descuento 60000*0.03=1800
Nueva venta 60000-1800=58200
Iva: 58200*0.18= 10476
Venta brutal es: 58200 + 10476= 68676.
b)
N° de Tv 5, valor unitario $ 8000
La venta es 5*8000=40000
No hay descuento
Iva: 40000*0.18=7200
Venta brutal es: 40000 + 7200= 47200.
Solución:
PROGRAMA Venta_TV
VARIABLES
Ct, Vut: Entero
Venta, IVA, Vbruta, Dcto: Real
INICIO
Escribir(“Ingrese cantidad de TV”), Leer(Ct)
Escribir(“Ingrese valor unitario de TV”), Leer(Vut)
Venta = Ct * Vut
Si (Venta > 50000) Entonces
Dcto= Venta*0.03
Venta = Venta - Dcto
Escribir(“El descuento es: “ Dcto)
Fin Si
IVA = Venta * 0.18
Vbruta = Venta + IVA
Escribir(Venta Bruta Es:", Vbruta)
FIN
37
INACAP
Dirección de Área Informática
CAPITULO 3.3 INSTRUCCION DE ALTERNATIVA DOBLE
INSTRUCCION DE ALTERNATIVA DOBLE
Alternativa Doble: Controla la Alternativa Doble
ejecución de Dos Conjuntos De
Instrucciones por el cumplimiento o
no de una condición, de tal forma
que, si la condición es verdadera,
NF
se ejecutan las instrucciones del
N
primer bloque (I1...In), de lo
contrario si la condición es falsa, se
J1; J2; J3;
ejecutan las instrucciones del
segundo bloque (J1...Jn).
CONDICIO
N
v
I1; I2; I3; …
Si ( CONDICION ) Entonces
I1; I2; I3l; …; In
Sino
J1; J2; J3; …; Jn
Fin Si
Ejemplo:
3.
Realice un algoritmo el cual permita obtener los cálculos de una venta de
televisores, donde hay que ingresar la cantidad de TV y su valor unitario, este
algoritmo debe considerar:
¾
¾
¾
¾
Sí el monto de la venta es mayor que $ 100 000 se aplica un descuento a la
venta de 5%, imprimir el valor descontado.
Sí el monto de la venta es menor o igual que $ 100 000 se aplica un
descuento a la venta de 3%, imprimir el valor descontado.
Calculo del impuesto IVA que es un 18% sobre la venta total.
Por ultimo imprima la venta bruta que es la venta total más el IVA calculado
anteriormente.
Mire: Entienda el problema
Hay que ingresar la cantidad de TV y su valor analizar si corresponde un descuento de
5% o 3% , luego calcular el IVA e imprimir el total de la venta.
Determinar lo que se intenta hacer
Se quiere imprimir el descuento correspondiente y el monto de la venta total de TV.
Identifique los datos importantes
38
INACAP
Dirección de Área Informática
Número de TV.
Valor unitario de TV.
Planee: Construya un plan
Ingrese cantidad de TV en una variable entera.
Ingrese valor unitario de TV en una variable entera.
Calcule el total de la venta: Multiplicar Cantidad de TV por el valor unitario de estos y
almacenar el resultado en una variable real .
Preguntar si la venta es mayor que $100.000 realizar descuento de 5% y guardar el
resultado; de lo contrario realizar descuento de 3%. Imprimir el resultado del descuento
en ambos casos.
Calcular el iva y guardar el resultado en una variable real.
Obtener venta bruta: Sumar venta más iva y guardar en una variable real.
Imprimir venta bruta con un mensaje adecuado.
Construya un ejemplo:
a)
N° de TV 5, valor unitario $ 12000
La venta es 5*12000=60000
Descuento 60000*0.03=1800
Nueva venta 60000-1800=58200
Iva: 58200*0.18= 10476
Venta brutal es: 58200 + 10476= 68676.
b)
N° de Tv 10, valor unitario $ 20000
La venta es 10*20000=200000
Descuento 200000*0.05=10000
Nueva venta 200000-10000=190000
Iva: 190000*0.18=34200
Venta brutal es: 190000 + 34200= 155800
Solución:
PROGRAMA Venta_TV2
VARIABLES
Ct, Vut: Entero
Venta, IVA, Vbruta, Dcto: Real
INICIO
Escribir(“Ingrese cantidad de TV”), Leer(Ct)
Escribir(“Ingrese valor unitario de TV”), Leer(Vut)
Venta = Ct * Vut
Si (Venta > 100000) Entonces
Dcto= Venta*0.05
Venta = Venta – Dcto
Sino
Dcto= Venta*0.03
Venta = Venta – Dcto
Fin Si
39
INACAP
Dirección de Área Informática
Escribir(“El descuento es: “ Dcto)
IVA = Venta * 0.18
Vbruta = Venta + IVA
Escribir(Venta Bruta Es:", Vbruta)
FIN
CAPITULO 3.4: INSTRUCCION DE ALTERNATIVA MULTIPLE
INSTRUCCIÓN DE ALTERNATIVA MULTIPLE
Alternativa Múltiple: Controla la Alternativa Múltiple :
ejecución de varios conjuntos de
instrucciones por el valor final de
una expresión, de tal forma que
cada conjunto de instrucciones
EXPRESION
está ligado a un posible resultado
de la expresión, existiendo además
V
V
un bloque al final que corresponde
a otros posibles valores no
J1;…; Jn
I1;…; In
definidos.
V
K1;…; Kn
Otro
L1;…; Ln
Opción EXPRESION de
V1 Hacer I1; I2; I3; …; In
V2 Hacer J1; J2; J3; …; Jn
…
Vn Hacer K1; K2; K3; …; Kn
Otro Hacer L1; L2; L3; …; Ln
Fin Opción
Concepto de Interruptor: Un interruptor o bandera (switch) es una variable que puede
tomar los valores 1(verdadero) o 0 (falso) a lo largo de la ejecución de un programa,
dando así información de una parte a otra del mismo. Puede ser utilizados para el control
de bucle.
Ejemplo:
4.
Construya un algoritmo en pseudolenguaje que permita a un usuario imprimir
boletos de viaje en avión de vuelos nacionales desde la Región Metropolitana
hacia el Norte del País.
Por cada boleto se ingresará:
¾
¾
¾
Nombre del pasajero.
Destino del vuelo (1=Primera Región ..... 5=Quinta Región).
Clase (E:ejecutiva T:turista).
¾
Los siguientes son los valores de los vuelos para la clase turista, según
región de destino para, la clase ejecutiva lleva un recargo de $20 000 en
todos los destinos.
Región Turista
Ejecutiva
40
INACAP
Dirección de Área Informática
01
02
03
04
05
$100.000
$80.000
$60.000
$50.000
$30.000
$120.000
$100.000
$80.000
$70.000
$50.000
Se requiere que el programa imprima un boleto con el nombre del pasajero, la
región a la que viaja y el precio a pagar por el vuelo.
Mire: Entienda el problema
Se trata de imprimir: el nombre del pasajero, la región de destino y el valor del pasaje,
según el destino; y la clase.
Determinar lo que se intenta hacer
Hay que poder asignar el valor correcto del pasaje según destino y lcase.
Identifique los datos importantes
Nombre del cliente.
Código de Destino.
Clase.
Planee: Construya un plan
Se debe ingresar los datos ya mencionados
Asignar el precio del destino de la clase turista.
Luego validar si el código de destino esta entre 1 y 5.
Si el código de destino no corresponde se debe imprimir un mensaje y terminar el
programa, se recomienda utilizar un interruptor.
Si el código esta correcto se debe preguntar por la clase y si esta es ejecutiva se debe
aumentar en $20000 el valor del pasaje.
Finalmente se debe imprimir el nombre del pasajero, la región y el valor del pasaje.
Construya un ejemplo:
Pasajero: Julio Díaz.
Destino: 3
Clase: E
Se imprime: Julio Díaz.
Tercera Región.
$80 000
Solución:
PROGRAMA Boletos de Viaje
VARIABLES
Sw, Coddes, Precio : Entero
Nombre, Región, clase : Alfanumérico
INICIO
Escribir (“Ingrese Nombre Del Cliente”)
Leer(NomCli)
Escribir(“Ingrese Código De Destino)”)
41
INACAP
Dirección de Área Informática
Leer(Coddes)
Escribir(“Ingrese Clase E:ejecutiva, T:turista)
Leer(Clase)
SW=0
Opción Coddes de
1 : Hacer
2: Hacer
3: Hacer
4: Hacer
5: Hacer
Región=”Primera Región”
Precio=100 000
Región=”Segunda Región”
Precio=80 000
Región=”Tercera Región”
Precio=60 000
Región=”Cuarta Región”
Precio=40 000
Región=”Quinta Región”
Precio=30 000
Otro Hacer
SW=1
Fin Opción
Si SW=1 Entonces
Escribir(“Error en código de destino”)
Sino
Si Clase=”E” Entonces
Precio=Precio + 20000
Fin Si
Escribir(“Nombre”, Nombre)
Escribir(“Región Destino”, Región)
Escribir “Precio Del Vuelo”, Precio)
Fin Si
FIN
42
INACAP
Dirección de Área Informática
EJERCICIOS PROPUESTOS DE ALTERNATIVA SIMPLE, DOBLE Y MULTIPLE
1) Suponga que un individuo desea invertir su capital en un banco y desea saber
cuanto dinero ganara después de un mes si el banco paga a razón de 2%
mensual.
2) Un vendedor recibe un sueldo base mas un 10% extra por comisión 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.
3) 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.
4) Un alumno desea saber cual será su calificación final en la materia de
Algoritmos. Dicha calificación se compone de los siguientes porcentajes:
55% del promedio de sus tres calificaciones parciales.
30% de la calificación del examen final.
15% de la calificación de un trabajo final.
5) Un maestro desea saber que porcentaje de hombres y que porcentaje de
mujeres hay en un grupo de estudiantes.
6) Realizar un algoritmo que calcule la edad de una persona.
7) Un hombre desea saber cuanto dinero se genera por concepto de intereses
sobre la cantidad que tiene en inversión 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.
8) Determinar si un alumno aprueba a reprueba un curso, sabiendo que aprobara
si su promedio de tres calificaciones es mayor o igual a 70; reprueba en caso
contrario.
9) En un almacén se hace un 20% de descuento a los clientes cuya compra
supere los $1000
¿ Cual será la cantidad que pagara una persona por su compra?
10) Un obrero necesita calcular su salario semanal, el cual se obtiene de la sig.
manera:
Si trabaja 40 horas o menos se le paga $16 por hora
43
INACAP
Dirección de Área Informática
Si trabaja mas de 40 horas se le paga $16 por cada una de las primeras 40
horas y $20 por cada hora extra.
11) Un hombre desea saber cuanto dinero se genera por concepto de intereses
sobre la cantidad que tiene en inversión 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.
12) Que lea dos números y los imprima en forma ascendente
13) Una persona enferma, que pesa 70 kg, se encuentra en reposo y desea saber
cuantas calorías consume su cuerpo durante todo el tiempo que realice una
misma actividad. Las actividades que tiene permitido realizar son únicamente
dormir o estar sentado en reposo. Los datos que tiene son que estando dormido
consume 1.08 calorías por minuto y estando sentado en reposo consume 1.66
calorías por minuto.
14) Hacer un algoritmo que imprima el nombre de un articulo, clave, precio original
y su precio con descuento. El descuento lo hace en base a la clave, si la clave es
01 el descuento es del 10% y si la clave es 02 el descuento en del 20% (solo
existen dos claves).
15) Hacer un algoritmo que calcule el total a pagar por la compra de camisas. Si
se compran tres camisas o mas se aplica un descuento del 20% sobre el total de
la compra y si son menos de tres camisas un descuento del 10%
16) Una empresa quiere hacer una compra de varias piezas de la misma clase a
una fabrica de refacciones. La empresa, dependiendo del monto total de la
compra, decidirá que hacer para pagar al fabricante.
Si el monto total de la compra excede de $500 000 la empresa tendrá la
capacidad de invertir de su propio dinero un 55% del monto de la compra, pedir
prestado al banco un 30% y el resto lo pagara solicitando un crédito al fabricante.
Si el monto total de la compra no excede de $500 000 la empresa tendrá
capacidad de invertir de su propio dinero un 70% y el restante 30% lo pagara
solicitando crédito al fabricante.
El fabricante cobra por concepto de intereses un 20% sobre la cantidad que se le
pague a crédito.
17) Leer 2 números; si son iguales que los multiplique, si el primero es mayor que
el segundo que los reste y si no que los sume.
18) Leer tres números diferentes e imprimir el numero mayor de los tres.
19) Determinar la cantidad de dinero que recibirá un trabajador por concepto de
las horas extras trabajadas en una empresa, sabiendo que cuando las horas de
44
INACAP
Dirección de Área Informática
trabajo exceden de 40, el resto se consideran horas extras y que estas se pagan
al doble de una hora normal cuando no exceden de 8; si las horas extras exceden
de 8 se pagan las primeras 8 al doble de lo que se pagan las horas normales y el
resto al triple.
20) Calcular la utilidad que un trabajador recibe en el reparto anual de utilidades si
este se le asigna como un porcentaje de su salario mensual que depende de su
antigüedad en la empresa de acuerdo con la sig. tabla:
Tiempo
Utilidad
Menos de 1 año
5 % del salario
1 año o mas y menos de 2 años
7% del salario
2 años o mas y menos de 5 años
10% del salario
5 años o mas y menos de 10 años
15% del salario
10 años o mas
20% del salario
21) En una tienda de descuento se efectúa una promoción en la cual se hace un
descuento sobre el valor de la compra total según el color de la bolita que el
cliente saque al pagar en caja. Si la bolita es de color blanco no se le hará
descuento alguno, si es verde se le hará un 10% de descuento, si es amarilla un
25%, si es azul un 50% y si es roja un 100%. Determinar la cantidad final que el
cliente deberá pagar por su compra. se sabe que solo hay bolitas de los colores
mencionados.
22) El IMSS requiere clasificar a las personas que se jubilaran en el año de 1997.
Existen tres tipos de jubilaciones: por edad, por antigüedad joven y por antigüedad
adulta. Las personas adscritas a la jubilación por edad deben tener 60 años o mas
y una antigüedad en su empleo de menos de 25 años.
Las personas adscritas a la jubilación por antigüedad joven deben tener menos de
60 años y una antigüedad en su empleo de 25 años o mas.
Las personas adscritas a la jubilación por antigüedad adulta deben tener 60 años
o mas y una antigüedad en su empleo de 25 años o mas.
Determinar en que tipo de jubilación, quedara adscrita una persona.
45
INACAP
Dirección de Área Informática
CAPITULO 3.5 ESTRUCTURAS CÍCLICAS O DE ITERACIÓN
CONCEPTOS
Contadores: Un contador es una variable cuyo valor se incrementa o decrementa en una
cantidad constante cada vez que se produce un determinado suceso o acción. Los
contadores se utilizan en las estructuras de repetición con la finalidad de contar sucesos o
acciones internas del bucle; deben realizar una operación de inicialización y,
posteriormente, las sucesivas de incrementación o decrementación del contador. La
inicialización consiste en asignar al contador un valor inicial. Se situará antes y fuera del
bucle la inicialización. Su estructura es la siguiente.
Nombre_del_contador=valor_inicial
En cuanto a los incrementos o decrementos del contador, puesto que la operación de
asignación admite que la variable que recibe el valor final de una expresión intervenga en
la misma, se realizarán a través de este tipo de instrucción de asignación, de la siguiente
forma:
(incremento) Nombre_del_contador = Nombre_del_contador + valor_constante
(decremento) Nombre_del_contador = Nombre_del_contador - valor_constante
Acumulador: Son variables cuyo valor se incrementa o decrementa en una cantidad
variable, al igual que los contadores también necesitan inicilizarce fuera del bucle, esto es:
Nombre_del_acumulador=valor_inicial
Su operación dentro del bucle queda definida en la siguiente expresión:
Nombre_del_acumuladorr = Nombre_del_acumulador + nombre_variable
46
INACAP
Dirección de Área Informática
3.51 INSTRUCCIÓN MIENTRAS
INSTRUCCIÓN MIENTRAS
Mientras: Repite la ejecución de un conjunto Mientras:
de instrucciones, de tal forma que estas se
ejecutan
mientras
la
condición
sea
verdadera, la condición,
será evaluada
siempre antes de cada repetición.
CONDICION
F
V
Mientras ( CONDICION ) Hacer
I1; I2; I3; …; In
Fin Mientras
I1; I2; I3; …; In
Ejemplo:
5.
Escriba un algoritmo que permita obtener la nota final de cada uno de los 20
alumnos de un curso y el promedio general del curso. Para ello, se debe ingresar
el promedio del semestre y la nota del examen de cada alumno, considerando lo
siguiente:
El Promedio General Equivale Al 60% De La Nota Final.
El Examen Equivale Al 40 % De La Nota Final.
Mire: Entienda el problema
Se necesita calcular la nota final de cada alumno y luego con estas notas calcular el
promedio del curso. Hay que imprimir el promedio de cada alumno y el promedio del
curso.
Determinar lo que se intenta hacer
Hay que ingresar 20 veces el promedio semestral y la nota examen de cada, además se
debe calcular el promedio del curso.
Identifique los datos importantes
Se debe tener un contador que permita controlar que el proceso se repita 20 veces.
Se debe ingresar el promedio del semestre y la nota del examen.
Planee: Construya un plan
Se debe inicializar un contador con el valor 1.
Leer dentro del ciclo promedio semestral y nota del examen.
Calcular e imprimir, dentro del ciclo ,la nota de cada alumno
Acumular dentro del ciclo las notas de cada alumno
Calcular el promedio del curso fuera del ciclo
47
INACAP
Dirección de Área Informática
Construya un ejemplo: Este ejemplo considera 3 alumnos pero se puede proyectar para
20.
Alumno
Alu-1
Alu-2
Alu-3
PS
5.0
4.0
3.0
Examen
6.0
5.5
7.0
Nota Final
5.0*0.6 + 6.0*0.4 = 5.4
4.0*0.6 + 5..5*0.4 = 4.6
3.0*0.6 + 7.0*0.4 = 4.6
Suma= 5.4+4.6+4.6=14.6
Promedio= 14.6/3=4,86
Solución:
SOLUCION
PROGRAMA Notas
VARIABLES
Num : Entero
Sum,Prom,Nota : Real
INICIO
Num = 1
Sum = 0
Mientras ( Num <= 20 ) Hacer
Escribir(“Ingrese Promedio Semestral”)
Leer (Prom)
Escribir(“Ingrese Nota Examen”)
Leer(Ex)
Nota = (Prom * 0.6) + (Ex * 0.4)
Sum=Sum + Nota
Escribir(“El promedio es: “,Nota)
Num = Num + 1
Fin Mientras
Prom=Sum/20
Escribir(“El promedio general del Curso es”, Prom)
FIN
48
INACAP
Dirección de Área Informática
3.52 INSTRUCCIÓN REPETIR
INSTRUCCIÓN REPETIR
Repetir: Repite la ejecución de un conjunto Repetir:
de instrucciones (I1...In), de tal forma que
estas se ejecutan mientras la condición sea
FALSA, que será evaluada siempre después
de cada repetición, es decir, hasta que la
condición sea VERDADERA. Hay que hacer
notar que el conjunto de instrucciones se
F
ejecuta al menos una vez
I1; I2; I3; …; In
CONDICION
V
Repetir
I1; I2; I3; …; In
Hasta ( CONDICION )
Ejemplo:
6. Escriba un algoritmo que permita obtener la nota final de cada uno de los 20
alumnos de un
curso y el promedio general del curso. Para ello, se debe ingresar el promedio del
semestre y la nota del examen de cada alumno, considerando lo siguiente:
Se deben Validar las notas.
El Promedio General Equivale Al 60% De La Nota Final.
El Examen Equivale Al 40 % De La Nota Final.
Mire: Entienda el problema
Se necesita calcular la nota final de cada alumno y luego con estas notas calcular el
promedio del curso. Hay que imprimir el promedio de cada alumno y el promedio del
curso.
Determinar lo que se intenta hacer
Hay que ingresar 20 veces el promedio semestral y la nota examen de cada alumno,
además se debe calcular el promedio del curso.
Identifique los datos importantes
Se debe tener un contador que permita controlar que el proceso se repita 20 veces.
Se debe ingresar el promedio del semestre y la nota del examen.
Planee: Construya un plan
Se debe inicializar un contador con el valor 1.
Leer dentro del ciclo promedio semestral y nota del examen.
49
INACAP
Dirección de Área Informática
Validar que la nota semestral y del examen este entre 1 y 7
Calcular e imprimir, dentro del ciclo ,la nota de cada alumno
Acumular dentro del ciclo las notas de cada alumno
Calcular el promedio del curso fuera del ciclo
Construya un ejemplo: Este ejemplo considera 3 alumnos pero se puede proyectar para
20.
Alumno
Alu-1
Alu-2
Alu-3
PS
5.0
4.0
3.0
Examen
6.0
5.5
7.0
Nota Final
5.0*0.6 + 6.0*0.4 = 5.4
4.0*0.6 + 5..5*0.4 = 4.6
3.0*0.6 + 7.0*0.4 = 4.6
Suma= 5.4+4.6+4.6=14.6
Promedio= 14.6/3=4,86
Solución:
PROGRAMA Notas
VARIABLES
Num : Entero
Sum,Prom,Nota : Real
INICIO
Num = 1
Sum = 0
Mientras ( Num <= 20 ) Hacer
Repetir
Escribir(“Ingrese Promedio Semestral”)
Leer (Prom)
Hasta (Prom>=1 and Prom<=7)
Repetir
Escribir(“Ingrese Nota Examen”)
Leer(Ex)
Hasta (Prom>=1 and Prom<=7)
Nota = (Prom * 0.6) + (Ex * 0.4)
Sum=Sum + Nota
Escribir(“El promedio es: “,Nota)
Num = Num + 1
Fin Mientras
Prom=Sum/20
Escribir(“El promedio general del Curso es”, Prom)
FIN
50
INACAP
Dirección de Área Informática
7. A continuación se mostrara el ejemplo del programa Boletos de Viaje pero validando
el destino y la clase con la instrucción Repetir. De esta forma no necesitaremos el
interruptor.
PROGRAMA Boletos de Viaje2
VARIABLES
Coddes, Precio : Entero
Nombre, Región, clase : Alfanumérico
INICIO
Escribir (“Ingrese Nombre Del Cliente”)
Leer(NomCli)
Repetir
Escribir(“Ingrese Código De Destino)”)
Leer(Coddes)
Hasta (Coddes>=1 and Coddes<=5)
Repetir
Escribir(“Ingrese Clase E:ejecutiva, T:turista)
Leer(Clase)
Hasta (Clase<>”E” or Clase<>”T”)
Opción Coddes de
1 : Hacer
2: Hacer
3: Hacer
4: Hacer
5: Hacer
Región=”Primera Región”
Precio=100 000
Región=”Segunda Región”
Precio=80 000
Región=”Tercera Región”
Precio=60 000
Región=”Cuarta Región”
Precio=40 000
Región=”Quinta Región”
Precio=30 000
Fin Opción
Si Clase=”E” Entonces
Precio=Precio + 20000
Fin Si
Escribir(“Nombre”, Nombre)
Escribir(“Región Destino”, Región)
Escribir “Precio Del Vuelo”, Precio)
FIN
51
INACAP
Dirección de Área Informática
3.53 INSTRUCCIÓN DESDE
INSTRUCCIÓN DESDE
Para: Repite la ejecución del conjunto de Desde :
instrucciones, de tal forma que estas se
ejecuten un número determinado de
veces, determinado por el valor de la
variable inicial y final, es decir el ciclo
termina cuando esta variable toma el valor
final. El Incremento sino se especifica por
defecto asume un incremento de uno.
Vc=Vi Vf In
I1; I2; I3; …; In
Donde:
Vc: Variable de Control.
Vi: Valor Inicial.
Vf: Valor Final.
Inc: Incremento.
Desde Vc= Vi hasta Vf Incremento Inc
Hacer
I1; I2; I3; …; In
Fin desde
Ejemplo:
8. Construir un algoritmo que permita calcular e imprimir el valor de un N°
combinatorio.
nCk =
n!
(n − k )!*k!
; n≥k
; n, k ∈ Ν
Mire: Entienda el problema
El N° combinatorio implica el calculo de 3 números factoriales los cuales una vez
obtenidos se deben operar de acuerdo a la formula.
Determinar lo que se intenta hacer
Se debe calcular el factorial de n, k y el factorial de la diferencia.
El factorial de 5 es: 5!=1*2*3*4*5=120
Identifique los datos importantes
Se debe ingresar n y k
Hay que considerar que n debe ser siempre mayor o igual que k
N y K son enteros positivos.
Planee: Construya un plan
52
INACAP
Dirección de Área Informática
Se debe leer n y k.
Validar que n y k sean mayores que cero.
Validar que n sea mayor o igual que k.
Calcular el factorial de n.
Calcular el factorial de k
Calcular el factorial de (n-k)
Multiplicar y almacenar el resultado de los factoriales de n y (n-k)
Dividir y almacenar el factorial de n por el resultado de la multiplicación.
Imprimir el resultado de la división.
Construya un ejemplo:
5C3= ?
5C 3 =
5!=1*2*3*4*5=120
3!=1*2*3=6
120 120
=
= 10
6 * 2 12
Solución:
PROGRAMA Combinatorio
VARIABLES
I,FN,FK,FD, C: Entero
INICIO
Repetir
Escribir(“Ingrese N”)
Leer (N)
Escribir(“Ingrese K”)
Leer (K)
Hasta (K>0 and N>0 and N>=K)
FN=1
Desde I= 1 hasta N hacer
FN=FN*I
Fin desde
FK=1
Desde I=1 hasta K hacer
FK=FK*I
Fin desde
D=N-K
FD=1
Desde I=1 hasta D hacer
FD=FD*I
Fin Desde
C=FN/(FK*FD)
Escribir ( “El resultado es”, C)
FIN
53
(5-3)!=2!=1*2=2
INACAP
Dirección de Área Informática
EJERCICIOS PROPUESTOS DE CICLOS
1) Calcular el promedio de un alumno que tiene 7 calificaciones en la materia de
Diseño Estructurado de Algoritmos
2) Leer 10 números y obtener su cubo y su cuarta.
3) Leer 10 números e imprimir solamente los números positivos
4) Leer 20 números e imprimir cuantos son positivos, cuantos negativos y cuantos
neutros.
5) Leer 15 números negativos y convertirlos a positivos e imprimir dichos números.
6) Suponga que se tiene un conjunto de calificaciones de un grupo de 40 alumnos.
Realizar un algoritmo para calcular la calificación media y la calificación mas baja
de todo el grupo.
7) Calcular e imprimir la tabla de multiplicar de un numero cualquiera. Imprimir el
multiplicando, el multiplicador y el producto.
8) Simular el comportamiento de un reloj digital, imprimiendo la hora, minutos y
segundos de un día desde las 0:00:00 horas hasta las 23:59:59 horas
9) Una compañía de seguros tiene contratados a n vendedores. Cada uno hace
tres ventas a la semana. Su política de pagos es que un vendedor recibe un
sueldo base, y un 10% extra por comisiones de sus ventas. El gerente de su
compañía desea saber cuanto dinero obtendrá en la semana cada vendedor por
concepto de comisiones por las tres ventas realizadas, y cuanto tomando en
cuenta su sueldo base y sus comisiones.
10) 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 sig. forma:
Si el obrero trabaja 40 horas o menos se le paga $20 por hora
Si trabaja mas de 40 horas se le paga $20 por cada una de las primeras 40
horas y $25 por cada hora extra.
11) Determinar cuantos hombres y cuantas mujeres se encuentran en un grupo de
n personas, suponiendo que los datos son extraídos alumno por alumno.
12) El Depto. de Seguridad Publica y Transito del D.F. desea saber, de los n autos
que entran a la ciudad de México, cuantos entran con calcomanía de cada color.
54
INACAP
Dirección de Área Informática
Conociendo el ultimo dígito de la placa de cada automóvil se puede determinar el
color de la calcomanía utilizando la sig. relación:
DÍGITO
1o2
3o4
5o6
7o8
9o0
COLOR
amarilla
rosa
roja
verde
azul
13) Obtener el promedio de calificaciones de un grupo de n alumnos.
14) Una persona desea invertir su dinero en un banco, el cual le otorga un 2% de
interés. Cual será la cantidad de dinero que esta persona tendrá al cabo de un año
si la ganancia de cada mes es reinvertida?.
15) Calcular el promedio de edades de hombres, mujeres y de todo un grupo de
alumnos.
16) Encontrar el menor valor de un conjunto de n números dados.
17) Encontrar el mayor valor de un conjunto de n números dados.
18) En un supermercado un cajero captura los precios de los artículos que los
clientes compran e indica a cada cliente cual es el monto de lo que deben pagar.
Al final del día le indica a su supervisor cuanto fue lo que cobro en total a todos los
clientes que pasaron por su caja.
19) Cinco miembros de un club contra la obesidad desean saber cuanto han
bajado o subido de peso desde la ultima vez que se reunieron. Para esto se debe
realizar un ritual de pesaje en donde cada uno se pesa en diez básculas distintas
para así tener el promedio mas exacto de su peso. Si existe diferencia positiva
entre este promedio de peso y el peso de la ultima 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.
20) Se desea obtener el promedio de g grupos que están en un mismo año
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. Lo que se desea desplegar es el promedio
de los grupos, el promedio de cada grupo y el promedio de cada alumno.
21) 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
tendrán sobre el total de su compra. Determinar la cantidad que pagara cada
cliente desde que la tienda abre hasta que cierra. Se sabe que si el color de la
55
INACAP
Dirección de Área Informática
bolita es roja el cliente obtendrá un 40% de descuento; si es amarilla un 25% y si
es blanca no obtendrá descuento.
22) En un supermercado una ama de casa pone en su carrito los artículos que va
tomando de los estantes. La señora quiere asegurarse de que el cajero le cobre
bien lo que ella ha comprado, por lo que cada vez que toma un articulo anota su
precio junto con la cantidad de artículos iguales que ha tomado y determina cuanto
dinero gastara en ese articulo; a esto le suma lo que ira gastando en los demás
artículos, hasta que decide que ya tomo todo lo que necesitaba. Ayúdale a esta
señora a obtener el total de sus compras.
23) un teatro otorga descuentos según la edad del cliente. determinar la cantidad
de dinero que el teatro deja de percibir por cada una de las categorías. Tomar en
cuenta que los niños menores de 5 años no pueden entrar al teatro y que existe un
precio único en los asientos. Los descuentos se hacen tomando en cuenta el
siguiente cuadro:
Categorías
Edad
Descuento
Categoría 1
Categoría 2
Categoría 3
Categoría 4
Categoría 5
5 - 14
15 - 19
20 - 45
46 - 65
66 en adelante
35 %
25 %
10 %
25 %
35 %
24) La presión, volumen y temperatura de una masa de aire se relacionan por la
formula:
masa=
presión * volumen
.
0.37 * (temperatura + 460)
Calcular el promedio de masa de aire de los neumáticos de n vehículos que
están en compostura en un servicio de alineación y balanceo. Los vehículos
pueden ser motocicletas o automóviles.
25) 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.
56
INACAP
Dirección de Área Informática
26) En una granja se requiere saber alguna información para determinar el precio
de venta por cada kilo de huevo. Es importante determinar el promedio de calidad
de las n gallinas que hay en la granja. La calidad de cada gallina se obtiene según
la formula:
calidad = peso de la gallina * altura de la gallina
numero de huevos que pone
Finalmente para fijar el precio del kilo de huevo, se toma como base la siguiente
tabla:
PRECIO TOTAL DE CALIDAD
mayor o igual que 15
mayor que 8 y menor que 15
menor o igual que 8
PESO POR KILO DE HUEVO
1.2 * promedio de calidad
1.00 * promedio de calidad
0.80 * promedio de calidad
27) En la Cámara de Diputados se levanta una encuesta con todos los integrantes
con el fin de determinar que porcentaje de los n diputados esta a favor del Tratado
de Libre Comercio, que porcentaje esta en contra y que porcentaje se abstiene de
opinar.
28) 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 promoción del 20% de descuento
sobre aquellos artículos cuya etiqueta sea roja. Determinar la cantidad de dinero
que esta persona deberá pagar.
29) Un censador recopila ciertos datos aplicando encuestas para el ultimo Censo
Nacional de Población y Vivienda. Desea obtener de todas las personas que
alcance a encuestar en un día, que porcentaje tiene estudios de primaria,
secundaria, carrera técnica, estudios profesionales y estudios de posgrado.
30) Un jefe de casilla desea determinar cuantas personas de cada una de las
secciones que componen su zona asisten el día de las votaciones. Las secciones
son: norte, sur y centro. También desea determinar cual es la sección con mayor
numero de votantes.
31) Un negocio de copias tiene un limite de producción diaria de 10 000 copias si
el tipo de impresión es offset y de 50 000 si el tipo es estándar. Si hay una
solicitud de un el empleado tiene que verificar que las copias pendientes hasta el
momento y las copias solicitadas no excedan del limite de producción. Si el limite
de producción se excediera el trabajo solicitado no podría ser aceptado. El
empleado necesita llevar un buen control de las copias solicitadas hasta el
57
INACAP
Dirección de Área Informática
momento para decidir en forma rápida si los trabajos que se soliciten en el día se
deben aceptar o no.
32) Calcular la suma siguiente:
100 + 98 + 96 + 94 + . . . + 0 en este orden
33) Leer 50 calificaciones de un grupo de alumnos. Calcule y escriba el porcentaje
de reprobados. Tomando en cuenta que la calificación mínima aprobatoria es de
70.
34) Leer por cada alumno de Diseño estructurado de algoritmos su numero de
control y su calificación en cada una de las 5 unidades de la materia. Al final que
escriba el numero de control del alumno que obtuvo mayor promedio. Suponga
que los alumnos tienen diferentes promedios.
35) El profesor de una materia desea conocer la cantidad de sus alumnos que no
tienen derecho al examen de nivelación.
Diseñe un algoritmo que lea las calificaciones obtenidas en las 5 unidades
por cada uno de los 40 alumnos y escriba la cantidad de ellos que no tienen
derecho al examen de nivelación.
36) Leer los 250,000 votos otorgados a los 3 candidatos a gobernador e imprimir
el numero del candidato ganador y su cantidad de votos.
37) Suponga que tiene usted una tienda y desea registrar las ventas en su
computadora. Diseñe un algoritmo que lea por cada cliente, el monto total de su
compra. Al final del día que escriba la cantidad total de ventas y el numero de
clientes atendidos.
38) Suponga que tiene una tienda y desea registrar sus ventas por medio de un
computador. Diseñe un pseudocódigo que lea por cada cliente:
A).- el monto de la venta,
B).- calcule e imprima el IVA ,
C).-calcule e imprima el total a pagar,
D).- lea la cantidad con que paga el cliente,
E).-calcule e imprime el cambio.
Al final del día deberá imprimir la cantidad de dinero que debe haber en la caja.
58
INACAP
Dirección de Área Informática
UNIDAD 4: ESTRUCTURA DE ARREGLO
CAPITULO 4.1: CONCEPTOS
Definiciones:
Las estructuras de arreglos o tablas permiten estructurar y manejar los datos básicos
(números enteros, reales, carácter o string). Estas estructuras de datos se encuentran
prácticamente en la totalidad de los lenguajes de programación, clasificadas como
estructuras lineales y estáticas de datos internos. Toda estructura de datos o dato
estructurado se caracteriza por su organización y por las operaciones que en dichas
estructuras se han definido.
Arreglo o Tabla: Es una estructura de datos constituida por un número fijo de elementos,
todos ellos del mismo tipo y ubicados en dirección de memoria físicamente contiguas.
Elementos de un arreglo: También denominados componentes, es cada uno de los
datos que forman parte integrante del arreglo.
Nombre de un arreglo: Es la identificación utilizada para referenciar el arreglo y los
elementos que la forman.
Tipo de datos de un arreglo: marca del tipo básico que es común a todos y cada uno de
los elementos o componentes que forman dicha estructura.
Índice: Es un valor numérico entero y positivo a través del cual podemos acceder
directamente e individualmente a los distintos componentes que forman dicho arreglo,
pues marca la situación relativa de cada elemento o componente dentro de la misma.
Tamaño de un arreglo: Es el tamaño o longitud de un arreglo, vienen determinada por el
número máximo de elementos que la forman, siendo el tamaño mínimo un elemento y el
tamaño máximo de n elementos.
Acceso a los elementos o componentes de un arreglo: Los elementos o componentes
de un arreglo o tabla tratados individualmente son auténticos datos básicos que reciben
el mismo trato que cualquier otra variable, con un tipo de datos que coincide con el tipo de
la tabla y una denominación propia que le distingue del resto de los elementos que
constituyen dicha estructura. Para acceder o referenciar un elemento en particular es
suficiente con indicar el nombre de la tabla seguida del índice, correspondiente a dicho
elemento entre paréntesis corchete [].
Dimensión de un arreglo: Viene determinada por el número de índices que necesitamos
para acceder a cualquier elemento que la forman.
59
INACAP
Dirección de Área Informática
CAPITULO 4.2 : ARREGLOS UNIDIMENSIONALES O VECTORES
Clasificación de los arreglos: Un arreglo se clasifica según sus dimensiones hay
arreglos unidimensionales, bidimensionales y multidimensionales, en este curso se
estudiarán las unidimensionales y las bidimensionales
1.Arreglo Unidimensionales: También reciben el nombre de vector y son
estructuras de datos cuyos elementos son del mismo tipo y con las mismas
características, y se referencian con un nombre o identificador común.
Dichos elementos se ubican en posición de memoria físicamente contigua,
poseen una fila y n columnas.
Ejemplo
INDICE
5
1
10
2
25
3
30
4
45
5
3
6
Nombre del arreglo: NUM
Tipo de elementos : enteros
Tamaño de la tabla : 6
Elementos de la tabla:
Num[1]-> 5
Num[2]-> 10
Num[3]-> 25
Num[4]-> 30
Num[5]-> 45
Num[6]-> 3
Indices: 1, 2, 3, 4, 5, 6
Dimensión: unidimensional, pues solo requiere de un índice.
Operaciones sobre vectores
Las operaciones que se pueden realizar sobre un vector o tabla unidimensional son:
1.Declarar: Consisten en dar el nombre del vector, el máximo de elementos entre
corchetes y el tipo de elementos.
Nombre_vector[máximo]:tipo_variable
Ejemplo
a) Num[6]:entero
60
INACAP
Dirección de Área Informática
b) X[25]:real
2.Asignación: A cada elemento del vector referenciado por su índice, se le
aplica una sentencia de asignación, cuyo formato es la siguiente:
Nombre_vector[índice]=Expresión
Ejemplo
a) X=5
Num[2]=X
b) I=3
Num[I]=X
c) Num[X]=56
Num[X-I]=-96
d) desde i=1 hasta 6 hacer
Nm[i]=2*i
Fin desde
3.Lectura: La operación de lectura nos permite almacenar valores en los distintos
elementos de un vector, valores que son introducidos a través de un dispositivo
externo, como por ejemplo, el teclado. El formato para realizar una operación de
lectura de un dato que será almacenado en un elemento o componente de un
vector es el siguiente:
Leer(Nombre_vector[índice] )
Ejemplos:
a) Ecribir(“ingrese el número”)
Leer(X)
Num[3]=X
b) Desde i=1 hasta 6 hacer
escribir (“ingrese un número real”)
leer(x)
Num[i]=X
Fin desde
61
INACAP
Dirección de Área Informática
c) Desde i=1 hasta 6 hacer
escribir (“ingrese un número real”)
leer(Num[i])
Fin desde
e) Desde i=1 hasta n hacer
repita
Escribir(“ Ingrese un número POSITIVO”)
Leer(x)
Hasta x> 0
Num[i]=x
Fin desde
g) I=1
Repita
Escribir(“Ingrese un Número”)
Leer(Num[I])
I=I+1
repita
Escribir (“Desea continuar S/N”)
Leer(res)
Hasta (res=”S”) or (res=”N”)
Hasta (res=”N”) and (I > 6)
4.Escritura : La operación de escritura trata de mostrar los valores contenidos en
un vector, ya sea todos sus elementos o algunos. Su formato es:
Escribir(Nombre_vector[índice] )
Ejemplos
a) escribir(Num[3])
b) Escribir(Num[i])
c) Desde i=1 hasta 6 hacer
Escribir(Num[i])
Fin desde
d) I=1
Mientras I<=60 haga
Escribir(Num[I])
I=I+2
Fin mientras
62
INACAP
Dirección de Área Informática
Ejemplo:
Escriba un algoritmo en Pseudolenguaje que permita llenar un vector con los diez primero
números naturales.
Mire: Entienda el problema
Se desea almacenar en un vector los diez primeros números naturales, esto significa que
los números a almacenar en el vector son consecutivos partiendo desde el 1 hasta el 10.
Determinar lo que se intenta hacer
Se debe almacenar en la posición uno el número 1, en la posición dos el número 2 y así
sucesivamente hasta llegar a la posición diez y almacenar el número 10.
Identifique los datos importantes
El vector es de tipo entero.
Tiene un tamaño de 10.
Los números no son ingresados por el usuario sino que los genera un contador.
Planee: Construya un plan
Declarar el vector como tipo entero con un largo de 10.
Crear un ciclo que permita generar 10 vueltas.
Utilizar un contador tanto para las iteraciones como para indicar el índice y el número a
almacenar.
Asignar a cada posición de vector su contenido.
Construya un ejemplo:
Al vector solicitado o llamaremos Ent y debe tener la siguiente forma
Indices
1
1
2
2
3
3
4
4
5
5
6
6
7
7
Solución:
PROGRAMA EJEMPLO
VARIABLES
Ent[10]:Entero
I: Entero
INICIO
Desde I=1 hasta 10 haga
Ent[I]=I
Fin desde
63
8
8
9
9
10
10
INACAP
Dirección de Área Informática
FIN
Ejercicios:
1. Escriba un algoritmo en Pseudolenguaje que permita generar un arreglo de la
siguiente forma.
X
10
1
Indices
9
2
8
3
7
4
6
5
5
6
4
7
3
8
2
9
1
10
2. Desarrollar un algoritmo en Pseudolenguaje que permita almacenar en un vector 50
números reales ingresados por el usuario, después del almacenamiento debe mostrar
el menor y mayor número que se encuentra en el arreglo.
3. Utilizando el vector creado en el ejercicio anterior (2) muestre el número almacenado
que se encuentran en las posiciones múltiplos de 3.
4. Desarrolle un algoritmo en pseudolenguaje que permita realizar los siguientes
procesos:
¾
¾
¾
¾
¾
Definir un arreglo de nombre T de tipo entero con un largo 50.
Ingresar los elementos al arreglo desde el teclado.
Realizar la suma de todos los elementos almacenados en el arreglo
Mostrar elementos almacenados en el arreglo desde el último al primero
Mostrar el resultado de la suma.
5. Desarrollar un algoritmo en Pseudolenguaje que permita almacenar en un arreglo de
nombre N el nombre, en otro llamado R el rut, y en un vector de nombre S el sueldo
imponible de los 200 trabajadores de una empresa, e imprimir el siguiente listado.
Acta de sueldos
Nombre
RUT
Sueldo
Imp.
Salud
TOTALES
DATOS:
64
AFP
Total desc. Sueldo Liq.
INACAP
Dirección de Área Informática
Considere los siguientes descuentos:
AFP:12,8%
Salud: 7,2%
6. Utilizando los mismos arreglos del ejercicio nº4 desarrollar un algoritmo en
Pseudolenguaje que permita generar el siguiente listado
SUELDOS LIQUIDOS MAYORES DE 250000
APELLIDOS
RUT
TOTALES
65
SUELDOS LIQUIDOS
INACAP
Dirección de Área Informática
CAPITULO 4.3: MÉTODOS DE BÚSQUEDA Y ORDENAMIENTO
Antes de comenzar con los métodos de búsqueda y ordenamiento es necesario definir el
concepto de variable auxiliar. Esta variable es muy utilizada para intercambiar los valores
de dos variables numéricas sin perder sus contenidos o valores, comúnmente se le asocia
con el nombre de aux.
El siguiente algoritmo permite el cambio de valor de la variables
PROGRAMA Intercambio
VARIABLES
a, b, aux: Entero
INICIO
Leer (a,b)
aux = a
a=b
b = aux
Escribir (a,b)
FIN
BUSQUEDA
La operación de búsqueda consiste en determinar si un elemento determinado pertenece
o no al conjunto de elementos que forman parte integrante de un arreglo o tabla y, en
caso afirmativo indica la posición que dicho elemento ocupa.
Los métodos más usados de búsqueda son:
1. Búsqueda secuencial o lineal.
2. Búsqueda binaria o dicotómica.
Búsqueda secuencial en un vector desordenado: Esta operación consiste en recorrer
el vector secuencialmente de izquierda a derecha hasta encontrar el elemento el elemento
buscado o hasta alcanzar el final del vector, en cuyo caso finalizará la operación de
búsqueda sin haber localizado el elemento en cuestión. En aquellos casos en que el
elemento buscado se encuentra repetido, indicará la posición del situado más a la
izquierda, es decir, el de menor índice.
En el algoritmo de búsqueda secuencial, vector es el nombre del vector y N es el largo del
mismo.
66
INACAP
Dirección de Área Informática
PROGRAMA búsqueda hasta que encuentra el elemento
VARIABLES
Elemento: cualquier tipo
i: entero
INICIO
Escribir(“ingrese el elemento a buscar”)
Leer(elemento)
i=1
mientras((i<N) and (vector[i]<>elemento)
i=i+1
fin mientras
Si (vector[i]=elemento) entonces
Escribir(“el elemento se encuentra en la posición”, i)
Sino
Escribir(“el elemento no se encuentra en el vector”)
Fin si
FIN
Observaciones:
a) elemento corresponde al elemento que ingresa el usuario para ser
buscado.
b) N corresponde al tope o largo que posee el vector.
c) vector es el arreglo unidimensional donde se busca el elemento.
Ejemplo:
En un vector de nombre Cod se encuentra los 100 códigos de los productos de una
bodega, en otro vector de nombre Nom se encuentra los nombre de los 100 productos.
Crear un algoritmo en pseudolenguaje que al ingresar un usuario un código muestre el
nombre del producto si existe o el mensaje “PRODUCTO NO EXISTENTE”.
Mire: Entienda el problema
Se pide que el algoritmo busque el código que ingresa el usuario en el vector Cod, y que
liste el nombre asociado a este código que se encuentra en el vector de nombre Nom.
Determinar lo que se intenta hacer
Debe leer el código, buscarlo en el vector Cod e imprimir el nombre del producto que se
encuentra en el vector Nom o el mensaje “PRODUCTO NO EXISTENTE” si el código no
se encuentra.
Identifique los datos importantes
67
INACAP
Dirección de Área Informática
♦ Los vectores ya existen.
♦ El código que se encuentra en la posición 1 del vector Cod corresponde al nombre del
producto que se encuentra en la posición 1 del vector Nom y así sucesivamente.
♦ El largo de cada vector es de 100.
♦ El código a buscar debe ser ingresado por el usuario.
Planee: Construya un plan
♦ Declarar el contador y el código a ingresar el usuario
♦ Adaptar el método de búsqueda lineal según el requerimiento del problema.
♦ Si el código se encuentra en el vector Cod utilizar la posición encontrada para imprimir
el contenido del vector Nom (nombre del producto).
♦ Si no se encuentra escribir el mensaje requerido
Construya un ejemplo:
Asumamos los siguientes vectores como ejemplos para Cod y Nom
Cod
Indices
10
1
23
2
35
3
14
4
25
5
68
6
72
7
…..
…..
205
100
Nom
Indices
Harina azucar
1
2
Fideos
3
salsa
4
Arroz
5
aceite
6
Solución:
PROGRAMA ejemplo
VARIABLES
ele: entero
i : entero
INICIO
Escribir(“ingrese el código del producto a buscar”)
Leer(ele)
i=1
mientras((i<100) and (Cod[i]<>ele)
i=i+1
fin mientras
Si (Cod[i]=ele) entonces
Escribir(“el nombre del producto es:”, Nom[i])
Sino
Escribir(“PRODUCTO NO EXISTENTE ”)
Fin si
FIN
68
te
7
….. …..
…………..
café
100
INACAP
Dirección de Área Informática
ORDENAMIENTO
La ordenación consiste en reorganizar o clasificar un conjunto de elementos de acuerdo a
una serie de criterios previamente establecidos; estos criterios nos permiten agrupar
dichos elementos siguiendo una secuencia específica, permitiéndonos así establecer una
ordenación creciente o decreciente.
El siguiente algoritmo corresponde a uno de los métodos de ordenación más corrientes y
utilizados denominado método Sort.
PROGRAMA
ordenamiento Sort
VARIABLES
I;J: entero
Aux: del tipo del vector
INICIO
Desde( I=1 hasta N-1 haga)
Desde(J=I+1 hasta N haga)
Si vector[I]>vector[J] entonces
Aux=vector[I])
vector[I]=vector[J]
vector[J]=Aux
Fin si
Fin desde
Fin desde
FIN
Ejemplo:
Escriba un algoritmo en pseudolenguaje que permita que el usuario ingrese 100 números
enteros e listar dicho números ordenados de menor a mayor.
Mire: Entienda el problema
Se pide leer 100 números enteros cualesquiera y que se escriban ordenados de menor a
mayor.
Determinar lo que se intenta hacer
Debe crear un ciclo que permita leer y almacenar los 100 números en un vector , utilizar
el método Sort para ordenar el vector y por último crear un ciclo que permita listar el
contenido del vector ordenado.
69
INACAP
Dirección de Área Informática
Identifique los datos importantes
♦ Declarar un vector con un largo de 100.
♦ Los valores a almacenar son números enteros.
♦ Declarar una variables auxiliar para hacer el intercambio de contenido si es necesario.
♦ Utilizar contadores para crear los ciclos que se requieren.
♦ El criterio del ordenamiento es de menor a mayor
Planee: Construya un plan
♦ Declarar los contadores, variable auxiliar y el vector.
♦ Crear un ciclo para leer los números.
♦ Adaptar el método de ordenamiento Sort para ordenar el vector.
♦ Crear un ciclo para listar el vector ya ordenado.
Construya un ejemplo:
Asumamos el que el nombre del vector es Num
Num
Indices
10
1
23
2
35
3
14
4
25
5
88
6
72
7
…..
…..
205
100
10
1
14
2
23
3
25
4
35
5
72
6
88
7
…..
…..
205
100
Num
Indices
Solución:
PROGRAMA
Ejemplo ordenamiento
VARIABLES
Num[100]:entero
I;J,aux: entero
INICIO
Desde( I=1 hasta 100 haga)
Escribir(“ingrese un número”)
Leer(Num[I])
Fin desde
Desde( I=1 hasta 99 haga)
Desde(J=I+1 hasta 100 haga)
Si Num[I]>Num[J] entonces
aux=Num[I])
Num[I]=Num[J]
Num[J]=aux
Fin si
Fin desde
Fin desde
Escribir(“ EL VECTOR ORDENADO ES”)
Desde( I=1 hasta 100 haga)
70
INACAP
Dirección de Área Informática
Escribir(Num[I])
Fin desde
FIN
Ejercicios:
1. Construya un algoritmo que permita leer y almacenar 20 valores numéricos
enteros. Luego, calcule y muestre la suma y el promedio de dichos valores.
2. Escribir un algoritmo en pseudolenguaje que permita resolver el siguiente problema: En
un centro meteorológico se han hecho N mediciones en un día. Al final se debe
entregar cuál es la medición más alta y cuál es la más baja”.
3. Se tienen dos vectores A y B, con el mismo número de elementos(20 Elementos c/u).
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.
4. Si los elementos comparados son iguales, se traspasa cualquiera de ellos al vector C.
Escriba el vector C.
5. Resuelve el problema de cálculo de la Desviación Estándar, para lo cual debes definir
y usar la estructura de datos más adecuada para resolver el problema. Las fórmulas a
utilizar son:
6. Para una lista de 10 alumnos se tienen 2 pruebas parciales y 2 controles, los que tienen
la siguiente ponderación. Prueba 1 (25%), Prueba 2 (35%), promedio de controles
(40%). Mostrar las notas ingresadas por alumno, y al lado su promedio.
7. Construir un Pseudocódigo que permita ingresar una secuencia de 50 números y los
almacene en un vector llamado NUMEROS y los imprima ordenados de mayor a
menor.
8. Realizar un algoritmo que determine si el número 20 se encuentra en un vector
llamado N de largo 5.000.
71
INACAP
Dirección de Área Informática
9. Realice un algoritmo que al leer un número ingresado por el usuario, imprima la
cantidad de veces que se encuentra el número en un vector de nombre T cuyo largo
es 500.
10. Hacer un algoritmo que al leer la edad de 3.5000 personas almacene dichas edades
en un vector llamado edad y que genere otro vector que contenga las edades
ordenadas de menor a mayor y listar dicho vector ordenado.
11. Dado un vector llamado A de largo 700 y otro vector llamado B de largo 100. Hacer un
algoritmo que genere otro arreglo llamado C que contenga los elementos repetidos de
los vectores A y B.
12. Hacer un algoritmo que genere los siguientes vectores con los datos de los 4.000
empleados de una empresa.
A) Nom contiene el nombre
B) Rut Contiene el rut
C) Ed contiene las edades.
D) S contiene el sueldo imponible.
E) N contiene la cantidad de cargas familiares.
Según los datos almacenados en los vectores el algoritmo debe generar el
listados
siguientes
PLANILLA DE PAGOS
NOMBRE
Juan Leiva
María Ortiz
SUELDO IMPONIBLE
DESCUENTOS SUELDO LÍQUIDO
345.000
420.000
69000
84000
276000
336000
765.000
153000
612000
Descuentos:
AFP: 13 %
Salud: 7%
13. 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
72
INACAP
Dirección de Área Informática
NOMBRE
Rosa González
Patricio Astudillo
Nº DE CARGAS
3
4
7
TOTALES
14. Utilizando los vectores del ejercicio 12 diseñar un algoritmo que genere el siguiente
listado ordenada por sueldo imponible de mayor a menor.
PLANILLA DE LOS EMPLEADOS
NOMBRE
RUT
Nº DE
CARGAS
SUELDO
IMPONIBLE
ASIGNA-CION
DE CARGA
SUELDO
IMPONIBLE
AFP
SALUD
DESCUENTOS
Totales
Datos:
1. La asignación de carga corresponde al dinero que recibe el empleado por carga
familiar el criterio es el siguiente si el sueldo imponible es inferior a $150.000 recibe
$3.000 por carga familiar, si es superior a los $150.000 recibe $2.000.
2. Sueldo bruto corresponde al imponible más la asignación de carga.
3. Los descuentos son:
3.1 AFP 12,6 %
3.2 Salud 7%
3.3 Descuento la suma de AFP y Salud.
73
SUELDO
LÍQUIDO
INACAP
Dirección de Área Informática
Capitulo 4.4: ARREGLOS BIDIMENSIONAL O MATRIZ
Es un conjunto de elementos del mismo tipo caracterizados porque la forma de identificar
o acceder a cada elemento se realiza por mediante el uso de dos índices, donde el
primero nos marca la fila y el segundo la columna.
La nomenclatura utilizada para acceder o referenciar a un elemento de la matriz es la
siguiente:
Nombre_matriz[fila,columna]
Ejemplo:
NUM
2
2
1
4
1
-2
5
10
1
1
-10
16
9
47
15
1
2
12
30
45
Según el ejemplo responda
1.
2.
3.
4.
5.
6.
7.
Declaración de la tabla: NUM[5,4]: ENTERO
Números de filas: 5
Números de columnas: 4
Dimensión: BIDIMENSIONAL
Nombre: NUM
Los elementos cuya suma de sus índices sea impar: 2,1,1,5,1,-10,9,15,2,30
Los índices cuyo elementos es par:
[1,1];[2,1];[4,1];[1,2];[3,2];[1,3];[2,3];[2,4];[3,4];[4,4]
8. Si J=3 y L=2 resuelva los siguientes cálculos:
8.1.
8.2.
8.3.
NUM[J,L] + NUM[L,J] * L – J = 39
NUM[J+2,4] / NUM[3,L+1] * NUM[J-L,L] = -10
3 * NUM[L,J] + NUM[2*L,9/J] – J * L = -5
Operaciones sobre matrices
En las matrices las operaciones de declaración, asignación, lectura y escritura obedecen
al mismo principios de los vectores, la diferencia es que como las matrices son arreglos
bidimensionales requieren de dos índices [fila, columna] ; así pues tenemos que:
74
INACAP
Dirección de Área Informática
Declaración:
Nombre_matriz[fila,columna]: entero
Asignación:
Nombre_matriz[fila,columa]= valor_asiganar
Lectura:
Leer( nombre_matriz[fila,columna])
Escritura:
Escribir(nombre_matriz[fila,columna])
Ejemplo:
Escriba un algoritmo en pseudolenguaje que permita almacenar en una matriz de nombre
P el peso de los doce meses del año 2001 de los 50 clientes de un gimnasio y que liste el
promedio del peso anual de cada cliente.
Mire: Entienda el problema
Se pide leer y almacenar en una matriz de nombre P el peso de cada cliente durante los
doce meses del año y calcular el promedio de peso de cada cliente.
Determinar lo que se intenta hacer
Debe crear los ciclo que permita leer y almacenar los 600 pesos que generan 12 meses
por los 50 clientes. Cada cliente está representado por una fila y cada columna representa
a un mes del año. Para el cálculo del promedio de pesos de un cliente sólo se debe sumar
los pesos por fila y dividirlo por doce, este proceso se debe repetir 50 veces.
Identifique los datos importantes
♦ La matriz esta formada por 50 filas y 12 columnas.
♦ Los valores a almacenar son números reales y los ingresa el usuario.
♦ El algoritmo requiere de 2 contadores y un acumulador.
♦ Declarar un acumulador como un número real.
♦ Cada fila representa a un cliente.
♦ Cada columna representa a un mes del año.
♦ Calcular el promedio, el acumulador de los datos de una fila debe ser dividido por 12.
♦ Se debe imprimir dicho valor.
75
INACAP
Dirección de Área Informática
Planee: Construya un plan
♦ Declarar una matriz cuya dimensiones será 50x12.
♦ Los valores a almacenar son números reales.
♦ Declarar los contadores necesarios para generar los ciclos.
♦ Declarar un acumulador para el calculo del promedio de los pesos.
♦ Crear los ciclos para leer los datos por clientes y almacenarlos en la matriz.
♦ Crea otro ciclo que permita acumular los pesos por fila.
♦ Calcular el promedio por fila e imprimirlo.
Construya un ejemplo:
P
1
2
3
4
5
………
12
74.3
70.5
67
65
65
………
59
80.6
80
80
78.6
78
………
78.2
64.5
64.5
64.5
60
60
………
60
70
71
71
70
73
……..
70.2
….
…..
…
…
…..
…..
…
58.5
56
55.5
55.5
50.3
…….
49
Solución:
PROGRAMA
Ejemplo matriz
VARIABLES
P[50,12]:real
I;J,: entero
Sum:real
INICIO
Desde I=1 hasta 50 haga
Escribir (“ Ud. ingresara los pesos del cliente nº”, I)
Desde J=1 hasta 12 haga
Escribir (“ingrese el peso del mes “ J)
Leer (P[I,J])
Fin desde
Fin desde
Desde I=1 hasta 50 haga
Sum=0
Desde J=1 hasta 12 haga
Sum = Sum + P[I,J]
Fin desde
Prom= Sum/12
Escribir( “ El promedio del peso del cliente”,I,”es:”,Prom)
Fin desde
FIN
76
INACAP
Dirección de Área Informática
EJERCICIOS:
1. Diseñar el algoritmo correspondiente a un programa, que permita crear una matriz de
10x10 (filas x columnas) de nombre TAB, 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.
2.Diseñar el algoritmo correspondiente que cree una tabla bidimensional de longitud 5x5 y
nombre D, que almacene en la diagonal de la matriz el valor 1 y el resto el valor 0 y que
además imprima el contenido de la tabla en pantalla.
3.Diseñar el algoritmo correspondiente a un programa, que:
3.4 Cree una tabla bidimensional de longitud 10x10 y nombre MAT'.
3.5 Almacenar en la tabla con valores numéricos enteros.
3.6 Suma todos los elementos de cada fila y todos los elementos de cada
columna visualizando los resultados en pantalla.
4. Diseñar el algoritmo correspondiente a un programa, que:
4.1 Crea una tabla bidimensional de longitud 5x15 y nombre 'marco'.
4.2 Almacenar en la tabla con dos únicos valores 0 y 1, donde el valor uno
ocupar las posiciones o elementos que delimitan la tabla, es decir, las
más externas, mientras que el resto de los elementos contendrán el
valor 0.
111111111111111
100000000000001
100000000000001
100000000000001
111111111111111
4.3 Visualiza el contenido de la matriz en pantalla.
5. Dada una cantidad de 3.000 personas, hacer un algoritmo que cree una matriz que
registre el peso de las 3.000 personas durante los meses del año 1998.
6. Considerando la matriz anterior, diseñar un algoritmo que imprima:
6.1 El promedio de peso durante el año de cada persona.
6.2 El mayor y el menor peso durante el mes de abril.
77
INACAP
Dirección de Área Informática
7. Dada la matriz A de orden 50 x 50, diseñar un algoritmo que:
7.1 Guarde en un arreglo llamado S los elemento de la diagonal superior.
7.2 Guarde en un arreglo llamado I los elemento de la diagonal inferior.
7.3 Guarde en un arreglo llamado P los elemento pares de la matriz.
8. Hacer un algoritmo que almacene en una matriz y en un vector la información de los
n alumnos del Instituto validada :
8.1 El nombre en la matriz DAT.
8.2 El curso que puede ser cualquiera que cumpla con la codificación del
Instituto. En la matriz DAT
8.3 La jornada que puede ser A, B y C. En la matriz DAT
8.4 Promedio del semestre en el arreglo NUM
8.5 Nota de examen en el arreglo NUM.
9. Utilizando la matriz y el vector anterior, diseñe un algoritmo que genere el siguiente
listado ordenado por apellido.
Listado de notas
Apellido
Promedio
Curso
Jornada
Promedio
√
60%
Examen
√
40%
Nota final
√
10. Diseñe un algoritmo que ingrese la siguiente información validada a una matriz
llamada A y a un vector de nombre B con respecto al parque automotriz de la ciudad
de Rancagua.
10.1 Región de 1 a la 13 donde la 13 corresponde a la región
Metropolitana. (A)
10.2 Tipo de vehículo que puede ser A, B o C. (B)
10.3 Año del vehívulo. (A)
10.4 Avalúo fiscal. (A)
10.5 Valor de la patente del año 1998 que corresponde al 10% del avalúo
fiscal. (A)
10.6 Valor de la patente de 1999 que corresponde al valor anterior más el
5% del avalúo fiscal. (A)
10.7 El valor del permiso de circulación que corresponde a los siguientes
valores. (A)
10.7.1 Tipo A $30.000
10.7.2 Tipo B $15.000
10.7.3 Tipo C $5.000
10.8 El número de patente. (B)
78
INACAP
Dirección de Área Informática
11. Utilizando la matriz anterior generar el siguiente listado de todos los vehículos de tipo
A.
LISTADO VEHICULOS TIPO A
Patente
TOTALES
Año Tipo Región
Avalúo fiscal
Valor patente
Valor circulación
Total a Pagar
√
√
√
√
12. Dada una cantidad n de personas, hacer un algoritmo que cree una matriz que registre
el peso de las n personas durante los meses del año 1998.
13. Considerando la matriz anterior, diseñar un algoritmo que imprima:
13.1 El promedio de peso durante el año de cada persona.
13.2 El mayor y el menor peso durante el año de cada persona.
14. Dada la matriz A de orden nxn, diseñar un algoritmo que:
14.1 Guarde en un arreglo llamado S los elemento de la diagonal
superior.
14.2 Guarde en un arreglo llamado I los elemento de la diagonal inferior.
14.3 Guarde en un arreglo llamado P los elemento pares de la matriz.
15. Hacer un algoritmo que al leer n números de seis cifras almacene los dígitos de dichos
números en una matiz llamada D.
16. Hacer un algoritmo que almacene en una matriz y en un vector la información de los
n alumnos del Instituto validada :
16.1 El nombre en la matriz DAT.
16.2 El curso que puede ser cualquiera que cumpla con la codificación
del Instituto. En la matriz DAT
16.3 La jornada que puede ser A, B y C. En la matriz DAT
16.4 Promedio del semestre en el arreglo NUM
16.5 Nota de examen en el arreglo NUM.
17. Utilizando la matriz y el vector anterior, diseñe un algoritmo que genere el siguiente
listado ordenado por apellido.
79
INACAP
Dirección de Área Informática
Listado de notas
Apellido
curso
Jornada
Promedio
60%
Examen
√
Promedio
40%
Nota final
√
√
18. Diseñe un algoritmo que ingrese la siguiente información validada a una matriz
llamada A con respecto al parque automotriz de la ciudad de Rancagua.
18.1 Región de 1 a la 13 donde la 13 corresponde a la región
Metropolitana.
18.2 Tipo de vehículo que puede ser A, B o C.
18.3 Año del vehívulo.
18.4 Avalúo fiscal.
18.5 Valor de la patente del año 1998 que corresponde al 10% del avalúo
fiscal.
18.6 Valor de la patente de 1999 que corresponde al valor anterior más el
5% del avalúo fiscal.
18.7 El valor del permiso de circulación que corresponde a los siguientes
valores.
18.7.1 Tipo A $30.000
18.7.2 Tipo B $15.000
18.7.3 Tipo C $5.000
18.8 El número de patente.
19. Utilizando la matriz anterior generar el siguiente listado de todos los vehículos de tipo
A.
LISTADO VEHICULOS TIPO A
Patente
TOTALES
Año Tipo Región
Avalúo fiscal
Valor patente
Valor circulación
Total a Pagar
√
√
√
√
80
INACAP
Dirección de Área Informática
UNIDAD 5: ARCHIVOS
CAPITULO 5.1: REGISTRO
Un registro es una variable definida por el programador compuesta por un conjunto de
variables que se referencian bajo un mismo nombre.
Los registros son muy útiles ya que permiten generar tablas de datos de distintos tipos
reduciendo el uso de varios arreglos para almacenar distinto tipo de información
relacionadas con un mismo ente, por ejemplo nombre, sueldos etc.
Un registro esta compuesto por unidades menores llamados campos, cada uno de los
cuales pueden contener datos de diversos tipos, que se hayan relacionados entre sí,
porque todos hacen referencia a la misma y única entidad.
Operaciones sobre registro
Las operaciones de registros son las siguientes:
Declaración:
registro nombre_registro:
elemento1: tipo
elemento2: tipo
elemento3: tipo
elemento n: tipo
campos
nFin registros
lista_variables: tipo nombre_registro
Ejemplo
Registro: empleado
nombre: cadena
dir
: cadena
81
INACAP
Dirección de Área Informática
fono
: entero
sueldo : real
fin registro
empleado1, empleado2 : tipo empleado
REFERENCIA A ELEMENTOS:
Para hacer referencia a cada uno de los elementos de la estructura se emplea el operador
• (punto). Su formato de referencia es:
nombre_registro.nombre_campo
Ejemplo:
Si se desea hacer referencia a los campos de empleado1, se identificarán como:
empleado1.nom → referencia al nombre
empleado1.dir
→ referencia a la dirección
empleado1.fono → referencia al teléfono
empleado1.sueldo → referencia al sueldo
Lectura:
Si se desea leer datos y almacenarlos en una estructura esta se efectúa campo a campo,
utilizando las operaciones de lecturas de datos.
Leer(nombre_rgistro.campo)
Si quisiéramos que el usuario ingrese los valores a los campos de empleado1, la lectura
de los datos será:
Ejemplo:
Escribir(“ingrese el nombre)
Leer(empleado1.nom)
Escribir(“ingrese la dirección)
leer(empleado1.dir)
Escribir((“ingrese el telefono)
Leer(empleado1.fono)
Escribir(“ingrese sueldo”)
Leer(empleado1.sueldo)
Escritura:
Las operaciones de escritura al igual que la de lectura se efectúa campo a campo.
82
INACAP
Dirección de Área Informática
Escribir(nombre_registro.campo)
Ejemplo
Si queremos imprimir todos los del empleado1 se escribirá:
Escribir(“nombre:”, empleado1.nom)
Escribir(“ dirección:”, empleado1.dir)
Escribir(“ teléfono:” empleado1.fono)
Escribir(“sueldo:”,empleado1.sueldo)
Asignación
La asignación de valores se puede efectuar campo a campo, como también es posible
asignar todos los valores de un registro a otras variables del tipo registro, observe los
siguientes ejemplos.
Ejemplo:
Los ejemplos le asigna valores al teléfono y sueldo de un empleado
empleado1.fono=256363
empleado1.sueldo=580000
Si se quiere hacer una copia del registro empleado1 en otra variable declarada como
estructura llamémosla aux será:
aux=empleado1
CAPITULO 5.2: VECTOR Y REGISTRO
Si se pidiera un algoritmo donde hay que almacenar los datos de los 1000 empleados de
una empresa, definir 1000 variables del tipo registro empleado sería bastante complicado
y poco práctico. Para estas situaciones lo más recomendable es declarar un arreglo
unidimensional del tipo empleado, esto significa que en cada posición del vector está
almacenando todos los datos definidos en el registro para cada empleado, este tipo de
declaración se presenta a continuación.
Nombre_vector[largo]: tipo nombre_registro
Ejemplo
Registro: empleado
nom: cadena
dir : cadena
83
INACAP
Dirección de Área Informática
fono: entero
sueldo: real
fin registro
trabajador[1000]: tipo empleado
Para hacer la referencia por ejemplo al nombre del empleado almacenado en la posición 2
del arreglo basta con escribir trabajador[2].nom . En general para referirse a los datos de
un empleado cualquiera y un campo de él, su formato es el siguiente:
Nombre_vector[posición].campo
Este formato debe respetarse tanto para asignación como para la lectura y escritura de
los datos.
Ejemplo
Escriba un algoritmo en pseudolenguaje que permita almacenar los datos de los 150
productos de una bodega y que liste los datos ordenados de menor a mayor según el
valor unitario de los productos.
Los datos de los productos son:
Campo
Nom
Co
Vu
Ca
Contenido
Nombre
Código
Valor unitario
Cantidad
Tipo
cadena
entero
entero
entero
Mire: Entienda el problema
Se pide crear un registro con los campos mencionados que se encuentran relacionado
con los productos de una bodega. Los datos de los campos se deben leer y almacenar en
un vector ya que son 150 productos, después de ser almacenados se pide listar en orden
ascendente utilizando como criterio el precio unitario.
Determinar lo que se intenta hacer
Debe crear los campos para el registro, en cada posición del vector se debe almacenar un
registro, después del almacenamiento de datos, hay que aplicar el método de
ordenamiento Sort para ordenar el vector y después imprimir la información.
Identifique los datos importantes
♦ Los campos están definidos en el enunciado con su nombre y su tipo.
♦ Hay que utilizar un vector con 150 celdas para almacenar cada registro.
♦ Los contenidos de los campos los ingresa el usuario.
♦ Se requiere de un contador para generar el ciclo del vector.
Planee: Construya un plan
♦ Declarar el registro.
♦ Declarar el vector y una variable auxiliar del tipo registro.
♦ Declarar los contadores para generar los ciclos a utilizar.
84
INACAP
Dirección de Área Informática
♦ Leer y almacenar la información campo a campo.
♦ Aplicar el método de ordenamiento Sort para ordenar el vector.
♦ Listar la información solicitada.
Construya un ejemplo:
Supongamos que el vector que contiene los registros se llama B, entonces el vector
tendrá por ejemplo la siguiente forma:
B
Azúcar
12
250
5000
1
Te
560
150
8900
2
Aceite
780
850
79000
3
……….
……….
………
……….
…….
Arroz
03
799
45000
150
Arroz
03
799
45000
……….
……….
………
……….
Aceite
780
850
79000
El vector debe quedar
B
Te
560
150
8900
Azúcar
12
250
5000
1
2
3
85
…….
150
INACAP
Dirección de Área Informática
Solución:
PROGRAMA
Ejemplo registro
VARIABLES
Registro: bodega
nom: cadena
co : entero
vu : entero
ca : entero
fin registro
B[150]: tipo bodega
Aux : tipo bodega
I,J
:entero
INICIO
Desde I=1 hasta 150 haga
Escribir(“ingrese nombre producto”)
Leer (B[I].nom)
Escribir(“ingrese códigp producto”)
Leer (B[I].co)
Escribir(“ingrese valor unitario producto”)
Leer (B[I].vu)
Escribir(“ingrese cantidad del producto”)
Leer (B[I].ca)
Fin desde
Desde I=1 hasta 149 haga
Desde J=I+1 hasta 150 haga
Si B[I].vu > B[J].vu entonces
aux= B[I]
B[I]=B[J]
B[J]=aux
Fin si
Fin desde
Fin desde
Escribir( “LISTADO DE PRODUCTO ORDENADOS POR VALOR UNITARIO”)
Desde I=1 hasta 150 haga
Escribir( B[I].nom,B[I].co,B[I].vu,B[I].ca)
Fin desde
FIN
86
INACAP
Dirección de Área Informática
CAPITULO 5.3: ARCHIVO
Cuando creamos un algoritmo los datos que intervienen tienen existencia real en la
memoria de la computadora, al acabar el recorrido de este algoritmo las constantes y
variables que utilizamos dejan de tener existencia.
Hay situaciones en que es necesario disponer de los datos para que podamos tratarlo en
forma permanente, tanto para recuperarlos como para ser utilizados en otros algoritmos.
La solución para estas situaciones es utilizar otra estructura de dato externa llamada
archivos o ficheros.
Archivo se define como un junto de datos que se encuentra físicamente 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.
El uso de un archivo en un algoritmo requiere de los siguientes pasos.
a) Declarar el archivo lógico.
b) Asignarle un nombre físico al archivo declarado.
c) Apertura del archivo ya sea en modos de escritura, lectura o
modificación.
d) Efectuar las operaciones sobre él estas son: leer o escribir.
e) Cierre del archivo.
OPERATORIAS CON ARCHIVOS
DECLARACION: Definir una variable del tipo archivo
Nombre_archivo : archivo
Ejemplo:
ar : archivo o fichero
1. ASIGNACIÓN FÍSICA: Consiste en asociar el nombre lógico del archivo con el nombre
físico, debe indicarse la ruta del archivo y su nombre físico puede tener extensión.
Nombre_archivo_lógico= “ruta\nombre_archivo_físico”
Ejemplo:
87
INACAP
Dirección de Área Informática
ar = “c:\num.dat”
2. APERTURA DE UN ARCHIVO: Consiste en dejar disponible para el algoritmo la
información contenida en un archivo físico previamente asignado a un nombre lógico.
Los modos de apertura son :
2.1.
2.2.
2.3.
Leer: Permite extraer información de un archivo físico. Esto requiere que el
archivo exista.
Escribir: Introduce datos al archivo. Si el archivo existe se borrará toda la
información que en él se encuentra.
Añadir: Introduce nueva información en un archivo, al final del último dato
que se encuentre en él.
ABRIR nombre_archivo_lógico MODO tipo_modo
Ejemplos:
a) Abrir ar modo añadir
b) Abrir ar modo escribir
c) Abrir ar modo leer
3. OPRATORIA CON ARCHIVO: Las operatorias que se pueden efectuar en un archivo
son: leer y escribir.
3.1.
Leer: permite extraer información del archivo, una variable debe recibir esta
información.
Leer(nombre_archivo_lógico, variable)
3.2.
Escribir: permite almacenar datos en un archivo, los datos almacenados
puede ser a través de variables o constante.
Escribir(nombre_archivo_lógico, variable o constante)
Ejemplos:
Leer(ar, x)
Escribir(ar,y)
Escribir(ar,6)
4. CIERRE DE UN ARCHIVO: Permite dejar inaccesible la información contenida en el
archivo físico para el algoritmo, quedando el nombre lógico del archivo desconectado
del archivo físico.
Cerrar (nombre_archivo_lógico)
88
INACAP
Dirección de Área Informática
Ejemplo:
Cerrar (ar)
5. FUNCION FIN DE ARCHIVO: Es una función que permite recorrer el archivo y
detectar el fin del archivo físico, esta función es muy utilizada en la creación de ciclos
ya sea con el ciclo mientras o con repita.
EOF(nombre_archivo_lógico)
Ejemplo:
Mientras not EOF(ar) haga
Leer(ar, num)
Escribir(num)
Fin mientras
Ejemplo:
Supongamos que en un archivo de nombre dato.dat grabado en el disco duro, se
encuentran los datos de los productos de una bodega. Escriba un algoritmo en
pseudolenguaje que leer el código de un producto y si se encuentra liste los datos
correspondientes, en caso contrario muestre el siguiente mensaje “PRODUCTO NO
EXISTENTE”. Considere que en el archivo los registros contienen los siguientes campos.
Campo
Nom
Co
Vu
Ca
Contenido
Nombre
Código
Valor unitario
Cantidad
Tipo
cadena
entero
entero
entero
Mire: Entienda el problema
Se pide buscar un producto según su código en un archivo y listar los datos del producto
si se encuentra de lo contrario se debe imprimir un mensaje.
Determinar lo que se intenta hacer
Debe abrir un archivo que se encuentra grabado en el disco duro y leer la información que
se encuentra en él para buscar un código que será ingresado por el usuario, encontrado
el código deberá lista la información del registro o enviar un mensaje sino se encuentra en
el archivo. Termida la búsqueda y el listado se debe cerrar el archivo.
Identifique los datos importantes
♦ El nombre del archivo y su ubicación física.
♦ Los campos están definidos en el enunciado con su nombre y su tipo.
♦ El archivo debe abrirse en modo lectura, según el enunciado ya existe.
♦ Leer el código ingresado por el usuario
♦ La lectura de los registros del archivo debe ser hasta el fin de archivo, ya que no se
sabe cuantos registros son.
Planee: Construya un plan
♦ Declarar el registro y las variables.
♦ Asignar un archivo lógico al físico.
89
INACAP
Dirección de Área Informática
♦ Abrir el archivo en modo lectura
♦ Leer el código que ingresa el usuario.
♦ Crear un ciclo con la función EOF y aplicar un método de búsqueda para localizar el
código.
♦ Si se encuentra el código listar los datos sino enviar un el mensaje solicitado en el
enunciado.
♦ Cerrar el archivo.
Construya un ejemplo:
Supongamos que al archivo lógico lo llamamos Pro y su contenido es el siguiente.
Archivo Pro
Nom
co
vu
ca
Azúcar 12
250
5000
Te
560
150
8900
Aceite 780
850
79000
………. ….
…… ……….
Arroz 03
799
45000
Si ingresamos el código 03 los datos a listar son:
Nombre
: Arroz
Código
: 03
Valor unitario $
: 799
Cantidad
: 45000
Solución:
PROGRAMA Ejemplo archivo
VARIABLES
Registro: bodega
nom: cadena
co : entero
vu : entero
ca : entero
fin registro
ar
: “c\doto.dat”
reg
: tipo bodega
cod,Sw :entero
INICIO
Abrir ar modo lectura
Sw=0
Escribir(“Ingrese el código del producto)
Leer(cod)
Mientras not EOF(ar) haga
Leer (ar,reg)
Si reg.co=cod entonces
Sw=1
Fin si
Fin mientras
Si Sw=1 entonces
Escribrir(“Nombre : “, reg.nom)
Escribrir(“codigo
: “, reg.co)
90
INACAP
Dirección de Área Informática
Escribrir(“Valor unitario$: “, reg.vu)
Escribrir(“Cantidad
: “, reg.ca)
Si no
Escribir(“PRODUCTO NO EXISTENTE”)
Fin
Cerrar(ar)
Fin
EJERCICIOS:
1. Escriba un algoritmo en pseudolenguaje que permita crear un archivo de nombre
DATO.DAT en el disco duro que permita almacenar 100 números ingresados por el
usuario.
2. Escriba un algoritmo en pseudolenguaje que permita imprimir los números que son
pares que se encuentran en el archivo anteriormente creado.
3. Escriba un algoritmo en pseudolenguaje que permita agregar 50 números mas
ingresados por el usuario al archivo creado de nombre DATO.DAT.
4. Utilizando el archivo DATO.DAT escriba un algoritmo en pseudolenguaje que permita
imprimir todos aquellos números que son mayores a 50.
5. Utilizando el archivo DATO.DAT escriba un algoritmo en pseudolenguaje que al leer
un número ingresado por el usuario imprima “encontrado” si está en el archivo o “no
existe” si no está en el archivo.
6. Construya un algoritmo en pseudolenguaje que permita leer el archivo
AGENDA_INACAP de direcciones, que se encuentra en el disco duro, cuyos registros
constan de los siguientes campos:
NOMBRE
DIRECCIÓN
TELEFONO
E-MAIL
TIPO
(Texto)
(Texto)
(Texto)
(Texto)
(Texto)
Luego, imprima sólo 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:
NOMBRE DEL CAMPO
TIPO
DESCRIPCION
RUT
NOMBRE
FECING
CUPO
DISPO
MONTO
ALFANUMERICO
ALFABETICO
ALFANUMERICO
ENTERO
ENTERO
ENTERO
RUT CLIENTE
NOMBRE CLIENTE
FECHA DE INGRESO
CUPO ASIGNADO
CANT. DISPONIBLE
MONTO UTILIZADO
91
INACAP
Dirección de Área Informática
Construya un algoritmo que permita generar un listado con :
•
Total de clientes ingresados en Marzo del 2001.
CONSIDERACION: La fecha de ingreso viene con el formato dd/mm/aaaa
8. Escriba un algoritmo que permita almacenar en un archivo del disco duro de nombre
pas.dat, la información de los pacientes de un consultorio. Los datos a almacenar son:
a) Nombre.
b) edad.
c) Previsión (isapre o fonasa).
d) Peso.
e) Estatura.
Se ingresan datos hasta que el usuario de 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 años.
b) Liste el nombre y la edad de los clientes cuya previsión es isapre.
10. Escriba un algoritmo que permita agregar al archivo pas.dat 10 pacientes más.
11. Escriba un algoritmo que permita leer el nombre de un paciente y si lo encuentra lista
todos los datos del paciente. Si no lo encuentra imprima el siguiente mensaje “EL
PACIENTE NO EXISTE”.
12. Escriba un algoritmo que permita almacenar en una matriz el peso y la edad de los
pacientes y en un vector el nombre y la posición contigua del nombre la isapre de los
pacientes.
13. En un archivo de nombre pro.dat que se encuentra grabado en un disquete los datos
de los productos de una bodega. Los datos que almacenadod fueron: nombre, código,
cantidad, valor unitario. Escriba un algoritmo que permita ingresar el código y que liste
el siguiente informe del producto:
NOMBRE:
CODIGO:
CANTIDAD:
VALOR UNITARIO:
PRECIO VENTA:
El precio de venta corresponde al siguiente calculo, valor unitario mas el 20% del valor
unitario.
92
Descargar