Documentos de Académico
Documentos de Profesional
Documentos de Cultura
1
en el hombre y en la mayoría de los casos es de tipo - &( $ % ( $.(
inconsciente, en otras palabras, las personas suelen )$(&
resolver problemas sin tener que recurrir a la aplicación
de cierto algoritmo. No obstante al encontrarse con
problemas de un grado de dificultad mayor es necesario
detenerse a analizar y pensar en la solución de éste.
$ * * ! " #
+ , * Dar una respuesta completa.
Hallar el mismo resultado de otra manera.
Ejemplo de sistemas: Un termostato que controla la Verificar por apreciación que la respuesta es
temperatura. La entrada es la temperatura media. La adecuada.
salida es una señal que controla la caldera del aire
acondicionado.
2
(/ *
1.1. Se tienen dos cubetas de 5 y 4 litros
En un juego, el ganador obtiene una ficha roja; el respectivamente. Las mismas no están graduadas
segundo, una ficha azul; y el tercero, una amarilla. Al con medidas. Sí se tiene disponible toda el agua
final de varias rondas, el puntaje se calcula de la necesaria. ¿Cómo lograría poner dos litros de agua
siguiente manera: Al triple de la cantidad de fichas rojas en una de las dos?
se adicionan las fichas azules y se descuenta el doble de 1.2. En un curso de un colegio, la materia de educación
las fichas amarillas. Si Andrés llegó 3 veces en primer física se divide en dos grupos de estudiantes:
lugar, 4 veces de último y 6 veces de intermedio, ¿Qué Natación, con 136 y Fútbol, con 204. Si hay 25
puntaje obtuvo? estudiantes que estudian Natación y Fútbol, ¿cuántos
estudiantes tiene el curso? Para resolver este
problema, debes tener conocimientos sobre
conjuntos (representación, clasificación e
! & ( ( intersección). Es buena idea que construyas una
Leer detenidamente el problema. tabla para organizar la información y un diagrama
¿Cuántos colores de fichas se reparten? para representar los datos.
¿Cuántas fichas rojas, azules y amarillas obtuvo 1.3. Orlando compró 15 metros de tela para mandar a
Andrés? fabricar una cortina, a $26 el metro. Para colgarla
¿Qué pregunta el problema? necesita 28 aros de madera cuyo valor es de $1 cada
uno. El riel y demás accesorios cuestan $30. Si la
$ ( modista cobra $5 por cada metro de tela
Para hallar el puntaje que obtiene Andrés por sus confeccionado y la instalación vale $15 ¿Cuánto es
llegadas de primero, calcular el triple de la el costo total de la cortina instalada? Debes tener
cantidad de fichas rojas. conocimientos sobre sumas y multiplicaciones.
Para hallar el puntaje por sus llegadas en segundo 1.4. El “peso neto” indicado en la envoltura de un jabón
lugar, contar la cantidad de fichas azules. de baño es de 140 gramos y el “peso neto” indicado
Para hallar el puntaje que pierde por sus llegadas en otro jabón es de 80 gramos. El primero vale $0.90
en último lugar, calcular el doble de la cantidad de y el segundo $0.65. ¿Cuál de los dos es más
fichas amarillas. costoso? Debes tener conocimientos sobre sistemas
de medidas (peso) y divisiones.
Para hallar el puntaje total, calcular la suma de los
puntajes por las fichas rojas y azules, restarle los
puntos de las fichas amarillas. 0 ( ($ ! !$ (
% & !" (! & (
( ($.(
Por tres fichas rojas: 3 x 3 = 9 puntos. Muchos expertos en programación afirman que para
Por seis fichas azules: 6 = 6 puntos. elaborar en un computador procedimientos que realicen
Por cuatro fichas amarillas: 4 x 2 = 8 puntos. determinadas tareas, se deben seguir cuatro fases o
Para obtener el puntaje final de Andrés, sumar los etapas.
puntos obtenidos con las fichas rojas y azules (9 +
6 = 15 puntos) y de este resultado restar los puntos Estas fases concuerdan con los procedimientos para
representados por las fichas amarillas (15 – 8 = 7 solucionar problemas, vistos anteriormente:
puntos).
1. Analizar el problema ( )
(. 2. Diseñar un algoritmo ( )
El puntaje que obtuvo Andrés es 7 puntos. 3. Traducir el algoritmo a un lenguaje de programación
( ! )
Verificar las operaciones y comparar los cálculos
4. Depurar el programa (" )
con la solución estimada.
Como puedes apreciar, hay una semejanza entre los
(/
métodos utilizados para solucionar problemas y las
cuatro fases para solucionar problemas con ayuda del
Debes tener en cuenta (y anotar) las actividades que
computador en otras áreas del conocimiento.
realizas para resolver estos problemas y clasificarlas en
cada una de las cuatro etapas vistas: comprender,
planear, resolver y revisar.
3
1 $% & 5. Enroscar la bombilla nueva hacia la derecha en el
plafón hasta apretarla.
En la naturaleza hay muchos procesos que puedes 6. Bajar de la escalera o del banco.
considerar como Algoritmos ya que tienen 7. Fin.
procedimientos y reglas. Incluso, muchas veces no
somos conscientes de ellos. (/
1. Ubicar una escalera o un banco debajo de la Cuando el procesador es una computadora, el algoritmo
bombilla fundida. se expresa por medio de un programa. Cada paso esta
2. Tomar una bombilla nueva. expresado por medio de una instrucción.
3. Subir por la escalera o al banco.
4. Girar la bombilla fundida hacia la izquierda hasta
soltarla.
4
(/ * 0 proposiciones, mientras que en un 3 /
se representa por medio de gráficos.
Consideremos algo más complejo como el algoritmo de
Euclides para hallar el Máximo Común Divisor (MCD) (/ * 1
de dos números enteros positivos dados. Obsérvese que Diseñar un algoritmo (pseudocódigo) para hallar el área
no se especifica cuáles son los dos números, pero si se de un triángulo rectángulo cuya Base mide 3 cm, la
establece claramente una restricción: deben ser enteros y Altura 4 cm y la Hipotenusa 5 cm.
positivos.
$% &
1. Paso 1: Inicio. 4$ ($ )$(&
2. Paso 2: Leer los dos números (“a” y “b”). Avanzar 3 * Ya se encuentra claramente
al paso 3. planteado.
3. Paso 3: Comparar “a” y “b” para determinar cuál es * : El área de un triángulo
mayor. Avanzar al paso 4. rectángulo.
4. Paso 4: Si “a” y “b” son iguales, entonces ambos son * : Base, Altura, Hipotenusa, tipo de
el resultado esperado y termina el algoritmo. En triángulo. La incógnita es el área y todos los valores son
caso contrario, avanzar al paso 5. constantes. El valor de la hipotenusa se puede omitir.
5. Paso 5: Si “a” es menor que “b”, se deben Debes preguntarte si tus conocimientos actuales de
intercambiar sus valores. Avanzar al paso 6; si “a” matemáticas te permiten resolver este problema; de no
no es menor que “b”, avanzar al paso 6. ser así, debes plantear una estrategia para obtener los
6. Paso 6: realizar la operación “a” menos “b”, asignar conocimientos requeridos.
el valor de “b” a “a” y asignar el valor de la resta a : Utilizar las medidas
“b”. Ir al paso 3. dadas.
: Guardar en dos variables (BASE y
(/ ALTURA) los valores de Base y Altura; Guardar en una
constante (DIV) el divisor 2; aplicar la fórmula
A diferencia de los seres humanos que realizan BASE*ALTURA/DIV y guardar el resultado en la
actividades sin detenerse a pensar en los pasos que variable AREA; comunicar el resultado (AREA).
deben seguir, los computadores son muy ordenados y
necesitan que quien los programa les especifique cada $% & ( ( !" %
uno de los pasos que debe realizar y el orden lógico de Paso 1: Inicio
ejecución. Paso 2: Asignar el número 2 a la constante "div"
Paso 3: Asignar el número 3 a la constante “base”
Numerar en orden lógico los pasos siguientes (para Paso 4: Asignar el número 4 a la constante “altura”
pescar): Paso 5: Guardar en la variable "área" el resultado de
base*altura/div
___ El pez se traga el anzuelo. Paso 6: Imprimir el valor de la variable "área"
___ Enrollar el sedal. Paso 7: Final
___ Tirar el sedal al agua.
___ Llevar el pescado a casa. (/
___ Quitar el Anzuelo de la boca del pescado.
___ Poner carnada al anzuelo. Elabora un algoritmo para cada uno de los siguientes
___ Sacar el pescado del agua. problemas:
5
1.8. Desarrollar un algoritmo para cambiar un neumático
desinflado. Supóngase que se dispone de una rueda
de repuesto y de gato.
1.9. Hallar el perímetro de un cuadrado cuyo lado mide 5
cm.
1.10. Hallar el perímetro de un círculo cuyo radio
mide 2 cm.
1.11. Hallar el área de un cuadrado cuyo lado mide 5
cm.
1.12. Hallar uno de los lados de un rectángulo cuya
área es de 15 cm2 y uno de sus lados mide 3 cm. #
1.13. Hallar el área y el perímetro de un círculo cuyo $
radio mide 2 cm.
1.14. Hallar el área de un pentágono regular de 6 cm / Constantes: Tienen un valor fijo que se le da cuando
de lado y con 4 cm de apotema. se define la constante y que ya no puede ser
modificado durante la ejecución.
/ Variables: El valor puede cambiar durante la
# ejecución del algoritmo, pero nunca varia su nombre
y su tipo.
# . )$( , ! ( (
( 3! ( ## ' (
En programación, las . son espacios de trabajo Las cosas se definen en la computadora mediante datos,
reservados para guardar datos (valores). El valor de una los algoritmos que vamos a diseñar van operar sobre
Variable puede cambiar en algún paso del Algoritmo o esos datos. A nivel de la máquina los datos se
permanecer invariable; por lo tanto, el valor que representan como una serie de bits (dígito 1 ó 0). Los
contiene una variable es el del último dato asignado a tipos de datos que vamos a manejar a lo largo del curso
esta. son: numéricos y carácter (también llamados
alfanuméricos), existen además, los datos de tipo lógicos
(/ * # que solo pueden tener uno de dos valores: verdadero o
falso.
En el siguiente diagrama de flujo, "AREA" es un
ejemplo de Variable; en el paso 5 se guardó en ella el Los datos numéricos pueden ser de varias clases:
resultado de multiplicar "BASE" por "ALTURA" y en el enteros, enteros largos, de doble precisión, de simple
paso 6 se utilizó nuevamente para guardar el valor de precisión, de coma flotante, reales; cuya definición
dividir su propio contenido ("AREA") entre la Constante depende del lenguaje de programación utilizado.
"DIV".
Los datos de tipo carácter o alfanuméricos están
compuestos por el conjunto finito y ordenado de
caracteres que la computadora reconoce:
6
Una cadena o string es una sucesión de caracteres que se El primer carácter de un nombre debe ser una letra.
encuentran delimitados por comillas (" "). La longitud de La mayoría de los lenguajes de programación
la cadena es la cantidad de caracteres que la forma, diferencian las letras mayúsculas de las minúsculas.
incluyendo los espacios que son un carácter más. Así: Con solo leer los nombres se puede entender lo que
contienen. Deben ser muy descriptivos; no utilizar
"Quito, Pichincha" es una cadena de longitud 18. abreviaturas, a menos que se justifique plenamente.
"Miércoles 7 de Marzo de 2008" es una cadena de Es conveniente utilizar una sola palabra para
longitud 28 (el 7 y el 2001 no son números) nombrar páginas, controles, variables, etc.
"123456" es una cadena de longitud 6, no es el No utilizar caracteres reservados (%, +, /, >, etc).
número 123.456 sobre "123456" no se puede Se debe tener en cuenta que algunos lenguajes de
realizar ninguna operación aritmética como sumar, programación no admiten las tildes.
restar, etc., ya que se trata de una cadena No utilizar palabras reservadas por los lenguajes de
alfanumérica. Ejemplo de este tipo son: cedula, programación.
pasaporte, teléfonos. Los nombres de procedimientos, variables y
constantes deben empezar con minúscula. Ejemplo,
#- . )$( fecha, suma, etc. Si es un nombre compuesto por
varias palabras, cada una de las palabras (con
Cuando representamos datos, numéricos o excepción de la primera) deben empezar con
alfanuméricos, debemos darles un nombre. mayúscula. Ejemplo: fechaInicial, baseTriángulo,
etc.
Una variable es un nombre que representa el valor de un
dato. El tipo de nombre que se asigne a variables, constantes y
procedimientos es muy importante. Cuando dejas de
En esencia, una variable es una zona o posición de trabajar en un proyecto por varios días, es más fácil para
memoria en la computadora donde se almacena ti retomar la actividad si los nombres describen muy
información. En un algoritmo y también en un programa bien el contenido de variables, constantes y
se pueden crear tantas variables como queramos. Así procedimientos.
tenemos:
Ejemplos de nombres válidos de variables
A = 50: Variable tipo numérica A cuyo valor es 50.
Ciudad = "Guayaquil": Variable alfanumérica o de fechaNueva.
tipo carácter Ciudad, cuyo valor es "Guayaquil" c1.
X = C + B: Variable numérica X cuyo valor es la totalPersonas.
suma de los valores de las variables numéricas C y contador_Maletas.
B. Es una variable calculada. cantidad_de_Alumnos.
pedido_Almacen.
Ten en cuenta que las operaciones que se pueden realizar
con dos o más variables exigen que éstas sean del mismo Algunos lenguajes de programación exigen la
tipo. No podemos "sumar", por ejemplo una variable declaración de las variables que se van a utilizar en todo
alfanumérica a otra numérica y viceversa como por el programa; es decir, que al comenzar el programa se
ejemplo: debe decir que nombre tiene, de que tipo es (numérica o
alfanumérica) y un valor inicial. Como aquí no estamos
FechaNueva="1 de Junio de 1.971" + 5 ( tratando con ningún lenguaje, la declaración de las
* 5 66 variables puede omitirse.
7
Las variables se pueden procesar utilizando operaciones "C" < "c" Verdadero
apropiadas para su tipo. Los operadores son de 4 clases: "2" < "12" Falso
8
que se van incrementando o decrementando cada vez
¿Cómo se evalúan los operadores? La prioridad de los que se ejecuta la acción que lo contiene. El incremento o
operadores es: decremento es llamado paso de contador y es siempre
constante.
Paréntesis
Potencias Por ejemplo; el marcador de un partido de fútbol, cada
Productos y Divisiones vez que un equipo anota un gol, aumenta su marcador en
Sumas y restas una unidad.
Concatenación
Relacionales En las carrera de automóviles, cada vez que un vehículo
Lógicos pasa por la línea de meta, se incrementa en una unidad el
número de vueltas dadas al circuito, o bien se
decrementa en una unidad el número de vueltas que
#1 % . $ ( $ . )$( quedan por realizar.
La operación de dar valor a una variable se llama Aunque el incremento es siempre constante, el paso de
asignación. La asignación vamos a representarla con el contador no necesariamente puede ser la unidad como en
símbolo ; una flecha apuntando a la izquierda. No los ejemplos que se han dado más arriba; también puede
utilizaremos en signo = ya que el operador de asignación incrementarse o decrementarse a de dos, tres, cuatro,....
varía de acuerdo con el lenguaje de programación n; es decir, puede ser cualquier número que conserva el
utilizado. El formato general de una asignación es: mismo valor durante todo el programa.
9
a) números.
acumulador acumulador + variable (al incrementar) b) Numero X.
acumulador acumulador / variable (al decrementar) c) 7
d) A(45+
acumulador es la variable en la que se almacena el e) VII
resultado. f) 7mesas.
g) sieteMesas
variable contiene el número que estamos incrementando
o decrementando 2.2. Halle el valor de A:
A A o (3+5*8) < 3 y ((/6/3 div 4)*2 < 2)
Ejemplos:
2.3. Halle el valor de B:
saldo saldo + entrega. B 3 mod 2 div 3
saldo saldo – retiro.
suma suma + numero. 2.4. Halle el valor de C:
sumaEdades sumaEdades + edad. C (/B*2 <> 8*3 mod 4) y (‘A’>’B’)
(/ *
10
2.9. Escribir las siguientes expresiones matemáticas en e) (I < 4) o (J > 5)
forma de expresiones de computación: f) no (I > 6)
-
- % & ( 3$ ;
( ( ( $% &
3 /
a) C OR NOT A AND B Los siguientes son los principales símbolos para elaborar
Diagramas de Flujo:
b) NOT (A OR C) OR B AND NOT C
11
Todo el Diagrama debe ser claro, ordenado y fácil
de recorrer.
7 2
Hallar el perímetro de un cuadrado cuyo lado mide 5
cm.
Hallar el perímetro de un círculo cuyo radio mide 2
cm.
Hallar el área de un cuadrado cuyo lado mide 5 cm.
Hallar uno de los lados de un rectángulo cuya área
es de 15 cm2 y uno de sus lados mide 3 cm.
Hallar el área y el perímetro de un círculo cuyo radio
mide 2 cm.
Hallar el área de un pentágono regular de 6 cm de
lado y con 4 cm de apotema.
-# ( !" % ( ( (
$% &
Reglas básicas para elaborar Diagramas de Flujo: Este nació como un lenguaje similar al inglés y era un
medio de representar básicamente las estructuras de
Poner un encabezado que incluya un título que control de programación estructurada.
identifique la función del algoritmo; el nombre del
autor; y la fecha de elaboración. El pseudocódigo no puede ser ejecutado por una
Sólo se pueden utilizar los símbolos anteriores. computadora. Una ventaja del pseudocódigo es que
Los diagramas se deben dibujar de arriba hacía abajo puede ser traducido fácilmente a lenguajes de
y de izquierda a derecha. programación.
La ejecución del programa siempre empieza en la
parte superior del diagrama. La escritura del pseudocódigo exige normalmente la
Los símbolos de “Inicio” y “Final” deben aparecer indentación (sangría en el margen izquierdo) o en su
solo una vez. defecto, numeración jerárquica.
La dirección del flujo se debe representar por medio
de flechas (líneas de flujo). (/
Todas las líneas de flujo deben llegar a un símbolo o / , < 3 /
a otra línea.
Una línea de flujo recta nunca debe cruzar a otra.
3.1. Escribir un algoritmo que calcule y saque por
Cuando dos líneas de flujo se crucen, una de ellas
pantalla, las horas, minutos y segundos de un tiempo
debe incluir una línea arqueada en el sitio donde
expresado sólo en segundos introducido por teclado.
cruza a la otra.
3.2. Escribe un algoritmo que calcule la altura desde la
Las bifurcaciones y ciclos se deben dibujar
que cae un objeto que tarda segundos en llegar al
procurando una cierta simetría.
suelo. El tiempo lo introduce el usuario por teclado.
Cada rombo de decisión debe tener al menos dos Use la fórmula:
líneas de salida (una para SI y otra para NO).
Las acciones y decisiones se deben describir
utilizando el menor numero de palabras posible; sin
que resulten confusas.
12
3.3. Escribe un algoritmo que lea por teclado una
temperatura en grados Fahrenheit y la convierta a
grados centígrados según la fórmula:
0 % &
13
que lea el nombre del estudiante, la nota de Selección Múltiple.
laboratorio, la nota del examen parcial y la nota del
examen final e imprima el tanto por ciento Las estructuras condicionales simple y múltiple evalúan
correspondiente a cada una de las notas así como la una proposición (condición) que devuelve como
calificación final. resultado únicamente dos valores posibles y excluyentes:
4.5. Realizar un algoritmo para calcular la longitud de verdadero o falso.
una circunferencia y el área del círculo con un radio
leído desde teclado. El algoritmo debe detectar *
entradas no válidas.
4.6. Leer dos números y mostrar el producto de ellos. La estructura condicional de selección simple ejecuta un
4.7. Leer las longitudes de un rectángulo y calcular la bloque de instrucciones cuando la proposición
superficie y el perímetro. (condición) es verdadera; si esta es falsa, no hace nada.
4.8. Convierta de doláres a euros.
4.9. Un negocio de deportes hace un 25 % de descuento
en pelotas de fútbol y de béisbol. Se requiere escribir
un programa que le permita a un empleado ingresar
los precios originales de las pelotas. El programa
deberá usar esta entrada de datos para calcular el
precio rebajado. La salida del programa deberá
mostrar, en líneas separadas, el precio original y el
precio con descuento.
4.10. Efectuar un programa que lea los valores de 3
resistencias electrónicas (en Ohmios, W) conectadas
en paralelo y muestre en pantalla el valor global de
las 3. El valor global es calculado por la siguiente
ecuación: 1 / (1/R1 + 1/R2 + 1/R3).
4.11. ¿Dada la duracion en minutos de una llamada
calcular el costo,considerando? El formato de la estructura de selección es:
/Hasta tres minutos el costo es 0.50
/Por encima de tres minutos es 0.50 más <condición>
0.1*cada minuto adicional a los tres primeros instrucción 1
instrucción 2
4.12. Realizar un algoritmo que permita ingresar una ...................
frase y la descomponga esta en sus palabras instrucción n
imprimiéndolas al revés. Ejem. '
CIUDAD CHICLAYO instrucción a
DADUIC OYALCIHC instrucción b
...................
0-( ! ! ! $ instrucción z
'
La estructura condicional se utiliza para indicarle al
computador que debe evaluar una condición y, a partir Por ejemplo, Cuando realizamos una llamada telefónica:
del resultado, ejecutar el bloque de instrucciones
correspondiente. La forma más común está compuesta {señal de ocupado}
por una proposición que se evalúa y dos bloques de Colgar el teléfono
instrucciones que se ejecutan, uno cuando la condición '
es verdadera (selección simple y doble) y otro cuando Iniciar la conversación
ésta es falsa (únicamente en la selección doble). (
Por su parte, un bloque de instrucciones puede contener En este caso, la condición es {señal de ocupado}, que
una o varias instrucciones que se ejecutan una detrás de puede ser verdadera o falsa. Si es verdadera, entonces
otra. La estructura condicional tiene dos variantes: debemos colgar el teléfono y si no, podemos realizar la
conversación.
Selección simple.
14
Ejemplo: #4 5
#/ 5
Si a = 5 entonces 1 - 14 5
imprimir"A es 5" '
si / no 1 - 14 #
imprimir "A no es igual a 5" '
fin / si
#/ 5
1 - 14 5
( El resultado de la condición
/0
1 2 1 Esta solución contiene dos estructuras de repetición, una
' dentro de la otra (anidada). En caso de ser necesario
1 2 1 podemos anidar tantas estructuras de selección como sea
' necesario. El algoritmo averigua si A es menor a B, si no
lo es, tenemos otras dos posibilidades: que sea menor o
igual, esto es lo que determina la estructura anidada.
Ejemplo. 3 2 4 -
Otro ejemplo de estructuras de repetición anidadas,
Comenzamos leyendo ambos números, que en el consiste en dado un número del 1 al 7, establecer al día
ejemplo se llamarán NumeroA y NumeroB. Luego de la semana.
debemos comparar como es uno contra el otro (puede ser
NumeroA contra NumeroB o bien comparar NumeroB
contra NumeroA):
8
13 1
15
' inicio
8 7 numero
817 1 2 numero
' . =1
89 13 1
1& 1 . =2
' 817 1
8% . 89
1& 1 81& 1
' . 8%
: 8; 1& 1
1< 1 . 8;
' 1< 1
8= . 8=
1> 1 1> 1
' . 8?
8? 1 1
1 1 @ .
' 1 2 - ?1
1 2 ' 2
- ?1 fin
'
' Lo cual resulta menos engorroso que varios
' anidados. Es posible anidar
' dentro de estructuras 2 y viceversa.
'
' Observa que la instrucción @ . ejecuta una o
' varias instrucciones cuando no se cumple ningún caso de
los contemplados más arriba. @ . debe estar
siempre al final (cuando sea necesario, si no o es se
Notarás que tenemos varios anidados, ya puede omitir @ . )
que si el número ingreso no es 1, tenemos que preguntar
si es 2 ó 3 ó 4...etc. El último es para El uso de una u otra estructura depende de cada persona,
verificar que el número ingresado no es 1, 2, 3, 4, 5, 6 ó pero en general cuando las condiciones a evaluar son
7; sino cualquier otro que no nos interesa. muchas, se utiliza 2 .
Repasa los algoritmos anteriores. La estructura según sea admite varias condiciones por
ejemplo:
Resulta bastante tedioso anidar un montón de Si ...
entonces, como en el ejemplo del día de la semana. 2 &
Cuando queramos o necesitemos hacer numerosas 8 494;4?4A4 04
comparaciones podemos usar otra estructura de 3 89
selección llamada 2 El formato de estructura 8 4%4=4
de selección 2 es: 3 890
8
2 <variable> 3 8 A
. = <condición> ' 2
. = <condición>
instrucción o instrucciones Este pequeño ejemplo establece el número de días de un
@ mes determinado almacenado en la variable MES (para
instrucción o instrucciones años no bisiestos). En lugar de escribir varios . 8 4
' 2 . 8 , etc, se puede especificar acción o acciones (en
este caso la asignación de días a 3 ) cuando la
Así, utilizando esta estructura, el problema del día de la variable tome uno de los valores separados por comas.
semana será así:
16
Es decir si 3 es 1 ó 3 ó 5 ó 7 ó 8 ó 10 ó 12; se del triángulo. Tener en cuenta los casos no válidos
ejecuta 3 =31. (la base o la altura negativas).
4.20. Introducir un número por teclado y determinar si
(/ es positivo o negativo./
Para saber si un número es positivo o negativo,
4.13. Los n trabajadores de la empresa “PagaPoco" debemos saber si es menor o mayor a cero. Si es
lograron obtener un aumento de sueldo en el último mayor, el número es positivo y si es menor resulta
mes. Este aumento de sueldo se determinó por negativo.
tramos, de acuerdo a la siguiente tabla: 4.21. Dado un número del 1 al 7, establecer al día de
la semana.
4.22. Leer un número y mostrar por la salida estándar
si dicho numero es o no es par.
4.23. Definir una función que dados tres números X,
Y y Z, devuelva una lista con los números ordenados
por orden creciente.
4.24. Diseñar una función para leer un año y
Construya un algoritmo que reciba como entrada el determinar si es bisiesto. NOTA: un año es bisiesto
sueldo actual de cada uno de los trabajadores y calcule el si es múltiplo de 4. Los múltiplos de 100 no son
nuevo sueldo. Además, el algoritmo debería indicar bisiestos, salvo si son también múltiplos de 400.
cuánto más gasta la empresa por concepto de sueldos,
después del aumento.
4.14. Escribir un algoritmo para calcular las 00( ! ( .
soluciones de una ecuación cuadrática de la forma = ( ( !" >
17
! $ , C 7 - A %%= ?%% 0?9 ?0M ;; = ;
$ C ! - =% E
$ - '7 $ 7 ,
$ ! $ C ' 2 ' $ L $
- D9 4 00
-9 EF $ N - 7 4
4$ C 4 -
4 - 4 4 C
) - $ $ 4 4 !
C
H. $ C - $
# 2 )4 - " -7 - J
! - ) ) ! , 2 C 4 4
' G 4 C 4
$ 4 $ 7 , ' - ) '4
! 4 4 $ 4 2 4 $ ! 3 )
$ - 4 4 - 2 $ C
$ $ $ 4 -
! , 4
# 4 ! L 2 4 )
' > -4 4 ! $ )4
$ F -4 L $
4 4 4 4 3 ! 4
D O , $ P
'HI J ( K -4 & , E
$ ! ' H.
) J (/ *
': ' ' 3
4 Elabora un algoritmo para ayudar a los hábiles
4 4 , 4- C algebristas de la corte del Rey Ladava con el cálculo del
, K ) - 2 número de granos de trigo que deben entregar a Lahur
Sessa como pago por haber inventado el juego de
: -4 ) - ajedrez.
4 C K L
!
' K -' H3
J7 $
C
& - ,
. - $
C
7 4 ,
4
, -
-4 !
'H. ) 4
4 , , ! J
'" - '
' 2
$ 4
- 2 -
, D 2
0 -
18
ejecutadas de forma repetitiva mediante la ocurrencia o
no de una condición.
( = @? >
La sintaxis es:
variable= vi , vf [incremento]
acción o acciones
'
Donde:
Ejemplo:
Imprimir todos los números del 1 al 100.
8 , 00
La estructura repetitiva se utiliza cuando se quiere que
'
un conjunto de instrucciones se ejecuten un cierto
número finito de veces. Llamamos bucle o ciclo a todo
proceso que se repite un cierto número de veces dentro
I es la variable índice con un valor inicial de 1, se
de un algoritmo o un programa.
incrementa uno en cada paso hasta 100.
Existen dos tipos de estructuras repetitivas; la primera es
Podemos notar que la estructura desde comienza con un
aquella en donde se tiene perfectamente establecido el
valor inicial de la variable índice y las acciones se
número de veces que un grupo de acciones se van a
ejecutan hasta que el valor inicial sea MAYOR que el
ejecutar (20, 5, 2 veces), y la segunda en la que el
que el Valor final.
número de repeticiones es desconocido y se hará hasta
que se cumpla o no cierta condición.
La variable índice se incremente en uno (en el ejemplo)
y si este nuevo valor del índice no es mayor que el valor
Un ejemplo de la primera sería imprimir los datos de los
final, se ejecuta de nuevo la acción imprimir.
alumnos de una clase (se conoce cuantos alumnos hay) y
un ejemplo de la segunda puede ser el mostrar un
En este caso se visualizará los números 1, 2, 3, 4, 5, 6, 7,
mensaje de error cada vez que el usuario pulse una
8, 9, 10 ....97, 98, 99, 100.
determinada tecla (no sabemos cuantas veces pulsará esa
tecla).
Otro Ejemplo:
Las acciones que forman parte del cuerpo del bucle son
Imprimir todos los números pares desde 2 hasta el 300
19
Estas estructuras son básicamente dos: Estructura
8 , 900 mientras....fin/mientras y la estructura repetir.... hasta.
Estas dos se diferencian en que la verificación de la
' condición para repetir el ciclo se hace al inicio con
mientras y al final con repetir.
Donde:
También existen estructuras repetitivas que son
La variable índice comienza en 2, se imprime 2 y en el combinaciones de estas dos que mencionamos, pero
siguiente paso se incrementa (suma) 2 a la variable no las estudiaremos.
índice que pasa a valer 4; se imprime el 4 y como 4 es
menor que 300 (valor final) , se pasa a una nueva (/
iteración incrementando nuevamente en 2 el índice, que
ahora vale 6; y así sucesivamente... 4.25. Construya un algoritmo que reciba como entrada
un cierto valor n, y genere como salida n veces la
Aquí se visualizan: 2, 4, 6, 8, 10, 12, 14, 16, 18, ..... 296, palabra “hola".
298, 300 4.26. Construya un algoritmo que reciba como entrada
un cierto valor n y genere como salida el valor de la
Si deseamos mostrar los impares el algoritmo es el serie: 1 + 2 + 3 + 4 + : : : + n.
siguiente: 4.27. Escribir un algoritmo que calcule la desviación
estándar de cinco números.
8 , 900
20
por lo menos una vez. Con la estructura mientras el
Lo primero que el computador hace es examinar la bucle puede ejecutarse 0 o más veces.
condición, lo que puede dar como resultado dos
posibilidades: Lo que la computadora hace al ejecutar la estructura
repetir es:
/ La condición se cumple: Se ejecutan acción 1, acción
2, acción 3, ..., acción n. / Se ejecutan: instrucción 1, instrucción 2, instrucción 3,
......
Las estará repitiendo hasta que la condición no se / Se evalúa la condición. Si esta es FALSA se vuelve a
cumpla, entonces se sale del ciclo y se siguen ejecutando repetir el ciclo y se ejecutan instrucción 1, instrucción 2,
la o las instrucciones que vienen a continuación y están instrucción 3, ......
fuera del bucle; instrucción X.
Si la condición es VERDADERA se sale del ciclo y se
/ La condición no se cumple: No entrará en el ciclo. Se ejecuta instrucción X.
ejecutan las instrucciones que vienen después del bucle,
instrucción X, por ejemplo. Ejemplo
La estructura repetir cumple la misma función que la Pero las estructuras mientras... o hacer ... no tienen
estructura mientras. La diferencia está en que la NINGÚN desde.....fin/desde equivalente.
estructura mientras comprueba la condición al inicio y
repetir lo hace al final; por eso la estructura repetir se (/
ejecuta por lo menos una vez. 4.35. Construya un algoritmo que reciba como entrada
varios montos de depósito y despliegue la suma de
La sintaxis es: ellos. Considere que un valor negativo significa que
no hay más datos y no debe ser considerado como
dato válido.
4.36. Construya un algoritmo que reciba como entrada
una secuencia de valores numéricos y genere como
9 salida la suma de los valores pares y la
multiplicación de los impares. Considere que un
, * + valor negativo significa que no hay más datos y no
Q debe ser considerado como dato válido.
4.37. Construya un algoritmo que reciba como entrada
Repetir es opuesta a la estructura mientras. Repetir se una secuencia de valores de temperaturas y genere
ejecuta hasta que se cumpla una condición que se como salida el total de veces que la temperatura fue
comprueba al final del bucle. Esto implica que las 0. Considere que un valor de temperatura negativo
instrucciones que forman el cuerpo del bucle se ejecutan significa que no hay más datos y no debe ser
considerado como válido.
21
4.38. Construya un algoritmo que reciba como entrada n/ésimo puede ser identificado y homogéneo porque sus
una secuencia de valores de temperaturas y genere elementos son todos del mismo tipo (numéricos o
como salida el total de veces que se registro una alfanuméricos, pero no una combinación de ambos).
temperatura menor que 0, el total de veces que fue 0
y el total de veces que fue mayor que 0. Considere Gráficamente, un arreglo se representa como una tabla:
que una temperatura con valor 99 es una temperatura
no válida e indica el término de los datos.
4.39. Construya un algoritmo que genere como salida
los términos de la siguiente serie: 2; 5; 7; 10; 12; 15;
17; : : : ; 1800. Hasta un valor dado por el usuario. De igual forma que cualquier variable, un arreglo debe
4.40. Escribir un diagrama de flujo para un algoritmo tener un nombre.
que calcule la media de varios números, los que
introduzca el usuario por teclado, y saque el
resultado por pantalla. Nota: el primer carácter no
numérico que introduzca el usuario indicará que no
va a introducir más números. Aquí hemos llamado A a nuestro arreglo ejemplo.
4.41. Leer secuencia de números y mostrar la suma de
dichos números hasta que se introduce un número Los elementos que están en el arreglo A ocupan todos
negativo. una determinada posición dentro de él:
4.42. Pedir al usuario una contraseña hasta que este de
la correcta o decida salir.
4.43. El número mágico.
22
La carga de un vector se hace por medio del ciclo inicio
. Nuestro bucle va a comenzar en 1 7
hasta un número N que es la longitud del vector. (n)
i=1,
Pero antes, no demos olvidar que el vector debe ser 7 v(i)
dimensionado. Al dimensionar un vector le decimos a la
máquina que reserve los espacios de memoria necesarios fin
para los elementos del vector.
Así vamos a cargar un arreglo SIEMPRE
Los problemas relacionados con vectores tendrán casi
siempre esta forma 1- & & (%$
Por lo tanto, vamos a tener tres bien Es bueno volver a señalar que los elementos de un
diferenciados: arreglo son todos del mismo tipo (todos numéricos o
Un bucle para la carga todos alfanuméricos).
Un bucle para el proceso
Un bucle para la impresión 10 !( (%$
Aunque la carga y el proceso pueden hacerse dentro de Ejercicio: Leer un vector de N componentes. Hallar la
un solo bucle, particularmente no recomiendo esta suma y el promedio de los elementos del vector.
práctica, ya que casi siempre crea dificultades
innecesarias. Se pide la suma y el promedio de los elementos.
Sabemos que el promedio lo hallaremos dividiendo la
Ejercicio: Cargar un vector de 30 componentes. suma todos los elementos, sobre la cantidad.
Nuestro arreglo (al que llamaremos h) va a tener una
No olvidemos que antes de cargar un vector debemos dimensión d, que será determinada por el usuario.
dimensionarlo. En este caso la dimensión del vector es
30. Siguiendo el esquema que habíamos visto, vamos a tener
primeramente un bucle para la carga del arreglo, otro
Luego habilitaremos un bucle para el proceso y otro para imprimir el arreglo.
comenzando en 1 hasta 30. Llamaremos V a nuestro
vector. inicio
suma 0
inicio d
v(30) h (d)
i= 1 , 30 i = 1 hasta h
l v(i) ,DE
fin =1, d
suma suma + h(i)
De esta forma hemos cargado un arreglo v con
componentes. Ahora bien, el usuario deberá siempre promedio suma/d
poder determinar la dimensión del arreglo sobre el que h (i)
quiera trabajar. Por eso, vamos a leer la dimensión del
vector en una variable:
23
La matriz MAT está definida con 5 filas y 6 columnas.
""La suma de los elementos del vector es:", La notación para el dimensionamiento de una matriz es
suma NOMBRE (cantidad de filas, cantidad de columnas);
"El promedio es:", promedio luego: MAT(5, 6)
fin
Una vez que la matriz contenga datos (veremos más
11 (%$ ) &( $( adelante como cargar una matriz) para referirnos a un
elemento debemos conocer en que fila y que columna
& reside ese elemento, por ejemplo:
24
a los ejemplos anteriores. Utilicemos un ejemplo que
calcula el promedio de los elementos de una matriz.
4
&D 4 E
8 ,
<8 ,
&D 4 <E
'
'
Una matriz también puede recorrerse por columnas. Al 8 ,
programar, no siempre podremos predefinir el tamaño de <8 ,
un matriz, por eso, solicitaremos al usuario que ingrese S &D 4 <E
la cantidad de filas y columnas con las que desea '
dimensionar una matriz: '
TD U E
8 ,
4 <8 ,
&# D 4 E &D 4 <E
8 , '
8 , '
&# D 4 E
'
' Una matriz que tiene la misma cantidad de filas y de
columnas se llama matriz cuadrada.
Procesando una matriz. La diagonal principal define así dos áreas bien notorias,
una que está por encima y otra por debajo. La región
Proceso de una matriz se realiza también forma análoga determinada por los elementos situados sobre la diagonal
25
principal se llama matriz triangular superior que tiene la 7 8 9 10 11 12
propiedad de que fila < columna.
/ /
0 /3 21 22
La matriz triangular inferior es la zona situada debajo de 1 2
la diagonal principal, cuyos índices cumplen con la 33 3 0 5 12 4
propiedad: fila > columna. Escalar: 5
Resultado de multiplicar la matriz A por el escalar
(numero) 5
Matriz D
5 10 15 20 15 30
35 40 45 50 55 60
/ /
0 /5 105 110
10 15
165 15 0 25 60 20
Elementos de la Matriz Elementos de la Matriz
triangular superior triangular inferior
3/ Traspuesta de una matriz: Si A es una matriz de orden
MxN, la traspuesta de A, denotada como A°, es otra
Operaciones con Matrices matriz de orden NxM donde cada B (i, j) = A (j,i). Una
matriz es simétrica si A° = A:
1/ Suma de matrices: Si A y B son dos matrices de igual
dimensión (MxN), entonces la suma de Ay B existe y es Matriz A:
igual a una matriz C también de dimensión MxN en
donde cada C (i, j) = A (i, j) + B (i, j):
0 1 2
Matriz A 3 4 5
6 7 8
10 8 3 0 9 10 11
7 /3 33 45 Traspuesta de A, A°:
9 15 71 29
Matriz B 0 3 6 9
1 4 7 10
1 6 9 69 2 5 8 11
14 22 56 7
3 5 80 1 (/
5.1. Se tiene una tabla con los datos de matricula, peso,
A y B son de igual dimensión, por lo tanto existe una estatura y sexo de los alumnos de una Universidad.
matriz C que es la suma de A y B Construya un algoritmo que reciba los datos de la tabla
antes mencionada, calcule y genere como salida el
promedio de los pesos y de las estaturas. Su algoritmo
11 14 13 69 debe entregar estos valores considerando todos los
21 19 89 52 individuos y también diferenciando por sexo. Considere
12 20 151 30 fin de datos la matrícula en cero (0).
5.2. Se dispone de una tabla con las temperaturas
2/ Producto Escalar por una matriz: Si A es una matriz registradas a medio día durante el año 2007. Se
de orden (dimensión) MxN y K es un escalar, el desea determinar cuál fue la máxima, cual fue la
producto de K*A es igual a otra matriz D también de mínima y cuantas veces se repitió cada una de estas
orden MxN en donde casa D (i, j) = K * A (i ,j): durante el año 2007. Además se desea saber el
Matriz A: promedio de dichas temperaturas.
5.3. Cargar un vector de n componentes
1 2 3 4 5 6
26
5.4. Leer una lista de n números y almacenar en un Los subalgoritmos son independientes entre si, en el
vector el factorial de cada número de la lista. sentido de que se puede escribir y verificar cada módulo
5.5. Leer un vector de N componentes. Hallar la suma y en forma separada sin preocuparse por los demás
el promedio de los elementos del vector módulos. Por ello, es menos complicado localizar un
5.6. Leer y almacenar en una matriz de m x n una error y también se puede modificar el código sin tener
secuencia de números. que tocar o rehacer varias partes del mismo.
5.7. Dadas 2 matrices a y b obtener la suma.
5.8. Dada una matriz determinar la posición ( i , j ) del Los subalgoritmos pueden ser dos tipos: Funciones y
mayor número y del menor. Procedimientos (también llamadas subrutinas o
5.9. Leer una secuencia de n números almacenarlos en subprogramas).
un vector A (1 .. n) y mostrar la suma de los
elementos pares y el mayor de los impares. Notemos que al utilizar procedimientos y funciones se
5.10. Dada una matriz de m x n (1..4)(1..5) realizar el establece un límite para el alcance de las variables, unas
proceso de ordenar la misma. tendrán efecto y valor sólo en el subalgoritmo y otras en
5.11. Dada una matriz [1..n] [1..m] realizar proceso el algoritmo principal, también es posible especificar
de ordenar solo por filas. que una variable tenga efecto en el algoritmo principal y
5.12. Dado un vector de números determinada todos los subalgoritmos. Este punto lo estudiaremos con
aquellos que sean primos. más detalle en la sección Ámbito de variables.
5.13. Calcular el promedio de los elementos de una
matriz. Los subalgoritmos pueden recibir valores del algoritmo
5.14. Suma de Matrices principal (parámetros), trabajar con ellos y devolver un
5.15. Producto Escalar por una matriz resultado al algoritmo principal: No existen limitaciones
5.16. Traspuesta de una matriz. en cuanto a las acciones que pueda ejecutar un
5.17. Desarrolla un algoritmo que lea por el teclado subalgoritmo. Un subprograma puede, a su vez, invocar
una secuencia de n enteros y visualice por pantalla o llamar a otros o a sus propios subprogramas, inclusive
los que sean pares. puede llamarse a sí mismo (esto se conoce como
5.18. Diseñar un programa que cree una lista de recursividad).
números enteros. Cada número se debe situar en
orden creciente. El programa visualizará también el 3 ! (
contenido de la lista
Desde el punto de vista matemático, una función es una
expresión que toma uno o más valores llamados
2 argumentos y produce un valor que se llama resultado.
Este resultado es además, único. Ejemplos de funciones
3 ! ( ' !( &( matemáticas son los logaritmos, funciones
trigonométricas (seno, coseno, etc).
En general un problema complejo puede ser resuelto de
manera más fácil y eficiente si se divide en problemas El en ambiente de programación y diseño de algoritmos,
más pequeños y concentrándonos en cada etapa en la las funciones tienen exactamente el mismo significado.
solución de ese "subproblema". Esto implica que el gran Es decir, se realizan ciertos cálculos con una o más
problema original será resuelto por medio de varios variables de entrada y se produce un único resultado. En
módulos, cada uno de los cuales se encarga de resolver programación y diseño de algoritmos, este resultado
un subproblema determinado. Esos módulos, se conocen podrá ser un valor numérico, alfanumérico o lógico. Es
con el nombre de . Un subalgoritmo no es decir, una función puede devolver un resultado que
más que un algoritmo que tiene la función de resolver un puede ser una cadena, un número o un valor de tipo
subproblema. lógico (verdadero o falso). Esto hace que en los
lenguajes de programación, debamos especificar de qué
Los subalgoritmos se escriben sólo una vez, luego es tipo es una función. Una función será de tipo numérica
posible hacer referencia a ellos ("llamarlos") desde cuando devuelva un número y será de tipo alfanumérica
diferentes puntos del algoritmo. La ventaja obvia es que o string cuando devuelva una cadena. En el caso de las
nos permite reutilización y evita la duplicación de funciones de tipo numérico se tienen subdivisiones que
códigos. están dadas por los tipos de datos soportados por el
lenguaje (integer o entero, simple o single, doble
precisión o double, real, etc). O sea que cuando una
función numérica devuelva un valor numérico entero
27
(sin decimales) será de tipo entera o integer. Si devuelve
un valor decimal será doble o simple, dependiendo del Una función se identifica mediante su nombre. De la
grado de exactitud que se desea; sin embargo como esto misma manera que cuando escribimos un algoritmo
es propio de lenguajes de programación no se tendrá en comenzamos poniendo: inicio y al final fin, debemos
cuenta en este tutorial (las funciones serán numéricas hacer lo mismo para una función. Esto nos dirá donde
cuando devuelvan un dato numérico y de tipo string comienza y donde termina la función. La sintaxis es:
cuando devuelvan una cadena, sin necesidad de
especificar esto previamente en el algoritmo). Puedes W D E
consultar al profesor de la materia que te proporcione / 6
más detalles sobre los tipos de datos y su aplicación en / 6
las funciones.
Tomemos como ejemplo al función matemática sen(x). Todas las funciones devuelven un sólo valor. Siempre
En este caso la función se llama sen (seno) y el debemos indicar a la función mediante una instrucción
argumento o valor que se pasa a la función para que lo que devuelva el valor al algoritmo principal (recordemos
procese es x. Así sen(90º)=1. Este valor es además único que la función será llamada desde un algoritmo). Esto se
(por eso se llama función), es decir no existe ningún otro debe hacer en el cuerpo de la función cuando tengamos
número que la función pueda procesar y devolver 1 más el resultado. Así que, tomando como ejemplo la función
que 90º. MES, veremos como se escribe el algoritmo principal,
como se llama a la función desde el algoritmo principal
Cuando utilicemos esta función en un algoritmo y y cómo se declara la función:
necesitemos el valor del sen(90º), debemos asignarlo a Algoritmo principal
una variable, así:
Inicio
valor sen(90) leer numero_mes
mientras numero_mes <=0 ó numero_mes >12
En este caso, la variable valor será = 1, por la tanto imprimir "Debe ingresar un número entre 1 y
nuestra función es numérica. 12" > Validación del número entre 1 y 12
leer numero_mes
La llamada a una función será siempre: fin mientras
nombre_mes MES
D E (numero_mes) > Llamada a la función
MES
Ejemplos: La llamada a una función MES que devuelva imprimir "El mes correspondiente es: ", nombre_mes
el nombre del mes, pasándole el valor numérico fin
correspondiente será:
& D E
nombre_mes VMES(2) (esto 2
devolvería "Febrero") 8
81 1
La función es de tipo string porque devuelve una cadena 8
como resultado en la variable nombre_mes. 81 1
89
Ya sabemos como llamar a una función, ahora veremos 8 1& 1
como se escribe la función. 8%
8 1# 1
Como las funciones y procedimientos no se escriben en 8;
el algoritmo principal (en programación existen espacios 8 1& - 1
destinados a ellos) todas las funciones y procedimientos 8=
que utilicen un algoritmo se podrán escribir antes o 8 1< 1
después del algoritmo principal. 8?
81< 1
Para efectos de este curso las funciones y 8A
procedimientos se escribirán siempre al final del 81# 1
algoritmo principal. 8M
28
81 1 Función / W 6
8 0 fin_función
8 1@ 1
8 La llamada a la función se hace con su nombre y el o los
8 1: 1 valores que le pasamos.
81 1
813 1 Cuando necesitemos procesar uno o varios valores y
ofrecer UN resultado, utilizaremos funciones.
& 6 7 $
Ejemplos de Funciones
Cuando se llama a la función, este valor debe ser Llamaremos RAIZCUA a la función que vamos a
recibido por la misma, en este caso en el cuerpo de la escribir. La función RAIZCUA debe obtener un valor
función se coloca entre paréntesis el nombre de la que se pasa desde el algoritmo principal (el número del
variable que recibirá el valor: cual queremos calcular la raíz cuadrada), elevarlo a la
potencia 1/2 y luego devolver este valor al algoritmo
& D E principal. Recordemos que no podemos permitir el
ingreso de números negativos.
Si se pasan varios valores, todos deben ser recibidos en
sus correspondientes variables. inicio
numero
La función toma el valor pasado desde el algoritmo y lo numero < = 0
guarda en la variable valor para procesarlo. Luego de "Ingrese un número positivo"
que obtiene un resultado, en este caso el valor de numero
nombre_mes, se le ordena a la función que devuelva ese f '
valor al algoritmo principal: resultado RAIZCUA(numero)
"La raiz cuadrada es:", resultado
& fin
RAIZCUA(valor)
Esto es siempre así: nombre_funcion resultado raiz valor ^ 1/2
RAIZCUA raiz
Es en este punto donde se retorna a la línea siguiente a la '
que llamó a la función en el algoritmo principal:
Este algoritmo comienza leyendo el número, verifica
1 14 que sea un número positivo con la estructura repetitiva
W mientras y luego hace el llamado a la función RAIZCUA
pasándole la variable numero. El valor de esa función se
Resumiendo. Una función devuelve un sólo valor, para recibe en una variable resultado.
que funcione la función debe recibir uno o varios valores
desde el algoritmo principal, realizar el proceso y La función RAIZCUA recibe el numero que el programa
devolver el resultado. La función se escribe de igual le pasa en la variable valor, luego eleva ese numero a la
forma que cualquier algoritmo, la diferencia consiste en potencia 1/2 y lo asigna a la variable raíz.
que en lugar de inicio y fin, ponemos:
29
Para que la función devuelva el resultado del proceso al numero1, numero2, numero3
algoritmo principal, se asigna la variable raiz a la prom PROMEDIO(numero1, numero2,
función, así: RAIZCUA raiz (esto será así para todas numero3)
las funciones que escribamos). "El promedio es:", prom
fin
Observa que existen variables tanto en el algoritmo
principal como en la función. Hablemos de ellas. PROMEDIO(valor1, valor2,valor3)
promedio (valor1 + valor2 + valor3) / 3
4&) ($ . )$( PROMEDIO promedio
'
En programación existen dos tipos de variables, las
llamadas locales y las variables globales. !( &(
Variables Locales: Son aquellas que se encuentran Hemos visto que las funciones se utilizan para devolver
dentro de un subprograma (procedimiento o función) como resultado un valor Sin embargo, en ocasiones
y es distinta de las variables que están en el algoritmo necesitaremos devolver más de un resultado o también
principal. El valor se confina al subprograma en el ejecutar las mismas líneas de código varias veces en un
que está declarada. algoritmo (como por ejemplo una ordenación, etc.) En
Variables Globales: Son las que se definen o están estas situaciones la función no es apropiada y se
declaradas en el algoritmo principal y tiene efecto utilizarán los procedimientos (también llamados
tanto en el algoritmo principal como en cualquiera de subrutinas).
sus subprogramas.
Un procedimiento es un conjunto de sentencias o
Tomando como referencia la función RAIZCUA, las instrucciones que realizan una determinada tarea y que
variables globales son: numero y resultado. Y las pueden ser ejecutados desde más de un punto del
variables locales son: valor y raíz. programa principal. Un procedimiento tiene una
llamada, cuando el procedimiento se ejecuta totalmente,
valor y raiz sólo existen en la función RAIZCUA, si en vuelve al punto desde donde fue llamado y se ejecuta la
el algoritmo principal tratamos de utilizar estas variables siguiente instrucción.
o imprimirlas, no obtendremos nada, ya que para el
algoritmo estas variables son locales y desde su punto de El procedimiento se escribe como cualquier otro
vista NO EXISTEN. algoritmo, solo existen diferencias en la parte inicial y
final. Para nombrar los procedimientos se deben seguir
numero y resultado son variables globales, es decir que las mismas reglas que para las variables. Notemos que el
están disponibles en el algoritmo principal y también en objetivo de los procedimientos es ayudar en la
la función RAIZCUA. modularidad del programa y evitar la repetición de
instrucciones ya que estas se pueden escribir en un
Una variable local (de un subprograma) no tiene ningún procedimiento y en lugar de repetirlas, llamar al
significado en el algoritmo principal y otros procedimiento cuantas veces sea necesario.
subprogramas. Si un subprograma asigna un valor a una
de sus variables locales, este valor no es accesible a Desde el programa principal es posible pasar valores
otros subprogramas, es decir, no pueden utilizar este (numéricos, alfanuméricos o combinación de ambos) al
valor. Las variables globales tienen la ventaja de procedimiento. Este utilizará esos valores para realizar
compartir información de diferentes subprogramas. un determinado proceso. Los valores que se pasan a un
procedimiento (en forma de variables) se llaman
En resumen: las variables locales son las que se definen parámetros (de igual forma que en las funciones).
en subprogramas y solo tienen valor dentro de él. Las
variables locales son las definidas en el algoritmo Declaración de un procedimiento
principal y tienen valor y se pueden utilizar en cualquier
parte de algoritmo o en cualquier subprograma. La sintaxis para la declaración de un procedimiento es la
siguiente:
Ejemplo 2: Diseñar una función que calcule la media de
tres números. Nombre_procedimiento (parámetros)
<......acciones...>
inicio <......acciones...>
30
resto. P recibirá el valor de cociente y Q recibirá el valor
del resto.
La llamada a un procedimiento se hace simplemente por
su nombre: Es decir, que cuando necesitemos devolver más de un
valor, los parámetros del procedimiento deben ser los
: W D E valores que se pasan al procedimiento y luego las
variables en las que se recibirán los resultados.
También es posible que no se pase ningún parámetro al
procedimiento, en cuyo caso la llamada se hace así: El objetivo de esta sección es ayudar a comprender
cómo funcionan las funciones y procedimiento. Puedes
: W DE pedir a tu profesor más ejemplos de procedimientos y
funciones.
Cuando no se pasan parámetros se puede obviar los
paréntesis. (/
31
digito impar, la multiplicación es mayor que 9,
* / se debe restar 9 a la multiplicación obtenida)
/ Sumar los dos resultados obtenidos
1 1 anteriormente.
2 1 Buscar la decena igual o superior y restar la
3 2 suma obtenida a esta decena.
4 3 Comprobar que el dígito de control que hemos
5 5 calculado y el último dígito del de la cedula
6 8 coinciden, de lo contrario no es válida.
Ej: 100336275/1
Construya un algoritmo que dado un valor n,
correspondiente a un mes cualquiera, determine la 1 0 0 3 3 6 2 7 5 1
cantidad de conejos en ese mes. Indicación: observe que 2 0 6 4 1 13
en cada mes, la cantidad de conejos corresponde a la 0 3 6 7 16
suma de los conejos de los dos meses anteriores a ese Suma 29
mes.
Decena igual o superior 30
3.Construya un algoritmo que genere los términos de la
siguiente serie, y además calcule su valor para un n Resta 1
dado.
7.Convertir un número decimal a binario.
Ej:
134 2
134 67 2
4.El siguiente es un menú de una hamburguesería. Resto 0 66 33 2
Diseñar un algoritmo capaz de leer número de cada 1 32 16 2
alimento ordenado y calcular la cuenta total: 1 16 8 2
Hamburguesa 1.50 0 8 4 2
Con queso 1.75 0 4 2 2
Refresco 1.25 0 2 1
Patatas 1.00 0
Ensalada 2.00
5.Elabore, un algoritmo que permitan calcular el Número
máximo común divisor de dos números enteros Binario: 1 0 0 0 0 1 1 0
positivos.
6.La cedula en Ecuador, es uno de los documentos más
importantes que tiene una persona. Por este motivo es 75 2
muy importante que todo sistema informático que 74 37 2
maneje la misma sea capaz de reconocer si la cedula es Resto 1 36 18 2
valida.
1 18 9 2
0 8 4 2
La cedula consta de 10 dígitos, el último digito es un
digito de control. 1 4 2 2
0 2 1
Para reconocer si una cedula es verdadera se debe 0
seguir el siguiente procedimiento:
Número
Comprobar que la cedula tiene 10 dígitos y que
Binario: 1 0 0 1 0 1 1
estos sean numéricos. De no ser así no es
correcta.
Sumar los dígitos de los lugares pares. 8.Transformar un número decimal en letras.
Ej: 134
Multiplicar por dos los dígitos de los lugares
Ciento treinta y cuatro.
impares y sumarlos. (Si al multiplicar por dos un
32
9.El codigo EAN (European Article Number) es un Se coge un número natural n, y se prueba a
sistema de código de barras para asignar un número dividirlo por los números primos, empezando
único a cada producto. Los códigos más comunes por el 2, luego el 3, luego el 5... cuando el resto
tienen 8 o 13 dígitos, especialmente 13 (sistemas de la división es 0, hemos obtenido un factor,
conocidos como EAN8 y EAN13). En ellos van hacemos que n valga ahora el cociente, y
codificados el país de origen del producto, la empresa seguimos probando por el último primo en el
y el propio producto. El último de los dígitos es un que estábamos. Así indefinidamente hasta que
dígito de control para evitar errores de trascripción. n=1.
El algoritmo para comprobar que un código EAN8 o Por ejemplo, para factorizar el 350, hacemos n=350... y
EAN13 ha sido trascrito correctamente es empezamos a probar a dividir por los números primos.
extremadamente sencillo.
Probamos a dividir n por 2... 350/2=175, y resto 0...
Podemos describirlo algorítmicamente de esta manera: perfecto, hemos encontrado un factor: el 2. Hacemos
n=175
Comprobar que el código tiene 8 o 13 dígitos.
De no ser así, no es correcto. Lo volvemos a intentar 175/2 = 87 y resto 1... oops... el
Sumar los dígitos de lugares pares por un lado y 2 no vuelve a ser factor primo.
los de los impares por otro, pero sin incluir el
último dígito. Pasamos a probar con el 3.
Si el código es EAN13, multiplicar la suma de
los pares por 3. 175/3=58 y resto 1... el 3 no es factor primo. Pasamos al
Si el código es EAN8, es la suma de los impares 5.
la que se multiplica por 3.
Sumar el resultado de los pares y el de los 175/5=35 y resto 0 ... el 5 es factor primo. Tomamos
impares y hallar el resto de la división por 10. nota (ya tenemos el 2 y el 5), y hacemos n=35
Realizar la operación 10 menos ese resto y ese
es el dígito de control. Volvemos a probar el 5... 35/5=7 y resto 0. Otra vez el 5
Si como resultado sale 10, entenderemos que el es factor primo (ya tenemos 2, 5 y 5). Hacemos n=7
dígito de control es 0.
Comprobar que el dígito de control que hemos
Volvemos a probar el 5... 7/5=1 y resto 2. Ya no hay
calculado y el último dígito del código EAN
más cincos. Probamos con el 7.
coinciden
7/7=1 y resto 0. El siete es factor primo (ya tenemos 2,
10. Un palíndromo es una palabra que si se lee de
5, 5, y 7). Hacemos n=1... ya hemos terminado.
izquierda a derecha suena igual que de derecha a
izquierda, por ejemplo, ANILINA, RASAR,
NADAN. El término C es a las palabras lo Así pues, 350 se puede expresar como 350=2 x 5 x 5 x 7.
mismo que 2 es a los números. El ejercicio El procedimiento es sencillo... pero... ¿Seremos capaces
consiste en comprobar si una cadena dada es un de encontrar un buen algoritmo que dado un número
palíndromo. natural n nos devuelva sus factores primos?
11. Ordenar una lista de mayor a menor o viceversa,
según desee el usuario. 13. Algoritmo de Euclides: MCD y MCM.
12. Descomposición en factores primos. Cualquier
número entero positivo se puede representar de El máximo común divisor de dos o más números es el
forma única (salvo el orden) como el producto de número, más grande posible, que permite dividir a esos
una serie de factores primos. números.
A esto se le llama el teorema fundamental de la Para calcularlo. De los números que vayas a
aritmética. Este teorema tiene aplicaciones prácticas en sacar el máximo común divisor, se ponen uno
muchos campos. debajo del otro, se sacan todos los divisores de
los dos números y el máximo que se repita es el
Un algoritmo simple para obtener la factorización de un máximo común divisor (M.C.D.)
número entero en sus factores primos es: Ejemplo: Sacar el M.C.D. de 20 y 10:
33
1, 2, 4, 5, A y
20:
20 14. El ISBN (International Standard Book Numbers)
10: 1, 2, 5 y A sirve para identificar libros y otras publicaciones a
nivel mundial. Si abres un libro cualquiera, verás
3 B* &B8 C 7 que en sus primeras páginas consta este ISBN.
=& ! >
El ISBN consta de una serie de dígitos decimales (de 0 a
Ejemplo: Sacar el M. C. D. de 40 y 60: 9), de los cuales, el último es un carácter de control, que
puede ser bien un dígito decimal (de 0 a 9) o la letra "X".
A veces el ISBN lleva guiones. No se deben tener en
1º Tienes que saber las 7 . Haces la
cuenta para validarlo.
* + poniendo C
* . Por ejemplo para 40, en la tabla de abajo, se va
descomponiendo en 2, 2, 2 y 5. Para comprobar un ISBN:
El mínimo común múltiplo (m. c. m.) de dos o más Para comprobarlo, obtenemos
números es el menor múltiplo común distinto de cero.
s=8*1+4*2+7*3+2*4+1*5+0*6+2*7+6*8+2*9=130
s mod 11=130 mod 11=<strong>9</strong>
Ejemplo: Averiguar el m.c.m. de Sacar el
///> Coincide con el último dígito del ISBN
M.C.D. de 20 y 10:
///> Correcto.
20: #A, 40, 60, 80... 15. La congruencia de Zeller es un algoritmo que
10: 10, #A, 30... permite obtener, a partir de una fecha, el día de la
semana que le corresponde.
#A es el múltiplo menor que es común a ambos números.
Se atribuye su creación a Julius Christian Johannes
Zeller, un sacerdote protestante alemán que vivió en el
(/ * ! 0, 1 2
siglo XIX.
Se hace la descomposición de factores. Lo hacemos de
Zeller observó que existía una dependencia entre las
la siguiente forma:
fechas del calendario gregoriano y el día de la semana
que les correspondía. A raíz de esa observación, obtuvo
4= 2x2
(se dice que por tanteo), esta fórmula, en apariencia
5= 5
mágica, que lleva su nombre.
6= 2x3
La fórmula en sí es muy sencilla, y se basa en algunas
Se toman los factores comunes y no comunes con el
operaciones de aritmética modular (el resto, también
mayor exponente y se multiplican: 2x2 x3 x5 = 60. El
llamado módulo, de las divisiones)
mcm de 4,5 y 6 es 60.
34
Es necesario tener en cuenta que la fórmula presentada a laberinto es encontrar un camino que lleve desde un
continuación es válida sólo para el calendario punto inicial a una de las salidas, desplazándose
gregoriano, promulgado por el papa Gregorio XIII en siempre en sentido horizontal o vertical y
1582, pero adoptado en distintas fechas en cada país. exclusivamente por casillas libres. Elaborar un
algoritmo capaz de resolver un laberinto.
Para calcular la congruencia de zeller, se parte de una
fecha del calendario gregoriano, que consideraremos 19. El problema de las ocho reinas consiste en encontrar
como tres enteros: año, mes (1=enero, 12=diciembre) y una disposición de ocho reinas en un tablero de
día. ajedrez de tal manera que ninguna de ellas amenace
a ninguna otra (en el juego del ajedrez una reina
Primeramente, es necesario hacer algunos ajustes en el amenaza a cualquier pieza que le sea accesible
mes y el año. Si el mes es enero o febrero (1 o 2) se mediante un desplazamiento horizontal, vertical o
considerarán como el mes 13 o 14 del año anterior. A diagonal de cualquier número de casillas).
partir de ahí, basta con aplicar la fórmula. Desarrollar un programa que nos muestre en pantalla
la disposición de las reinas. Tras resolver el
Pasos: problema, intentar generalizarlo a los casos
siguientes:
/Sean año, mes, día tres enteros que representan a una
fecha del calendario gregoriano
Colocar N reinas sobre un tablero de N filas y N
/Si mes<=2
columnas.
/mes=mes+12
Encontrar no solo una solución, sino todas las
/año=año/1
soluciones posibles, mostrándolas
/si no
sucesivamente en pantalla.
/mes=mes/2
Elaborar un programa que nos diga el número de
/a=año mod 100
soluciones existentes para los tableros de
/b=año / 100 TT
dimensiones desde 4 x 4 hasta 11 x 11.
/d=( 700 +
(mes*26/2)/10 +
dia + 20. Camino
a+ Todos los días José parte de su casa (ubicada en un
a / 4 + TT cruce) hacia su trabajo (ubicado en un cruce también),
b / 4 / TT recorriendo calles que unen estos cruces. Aunque José
b*2 puede realizar este recorrido usando diferentes rutas, ha
) mod 7 notado que existen cruces a los cuales le es imposible
TT $ evitar.
TT $ 04 =
16. Escribir un algoritmo que lea diez nombres y los A José le inquieta saber todos los cruces que
ponga en orden alfabético. necesariamente tiene que visitar, por eso usted debe
escribir un programa que le ayude a identificarlos.
17. El problema de las Torres de Hanoi consiste en lo
siguiente: Hay tres postes; en uno se encuentra una Suponga el siguiente mapa de calles y cruces:
torre con n discos, todos de diferentes tamaños,
colocados del más grande en la base, hasta el más
pequeño en la cima. Elaborar un programa que
exhiba todos los pasos para mover la torre a otro
poste, moviendo un solo disco cada vez, y sin
colocar un disco más grande encima de otro menor.
35
En la primera línea del archivo CAMINO.ENT, un entendiendo por comentario todo aquel texto que
número D / / 000E indicando el número de calles aparece entre paréntesis.
existentes en el mapa. En las siguientes líneas
números D / K4 - / 000E indicando la existencia de Así al ingresar el siguiente texto:
una calle entre los cruces K y -. Las calles son de doble Juan (mi mejor amigo) regresa a la Argentina el día 20.
vía, si se indica la calle K'- es posible recorrerla de K a
- ó de - a K. El cruce siempre designará la ubicación se debe reescribir:
de la y el 000 el del ! Se garantiza que al Juan regresa a la Argentina el día 20.
menos habrá un camino del cruce al cruce 000.
Debe tenerse en cuenta que los comentarios pueden estar
! & $ "anidados", como por ejemplo en el siguiente texto:
Un archivo CAMINO.SAL conteniendo la lista de Carlos (el hermano de Juan (mi mejor amigo) que
cruces solicitados, uno por línea. Los cruces y 000 regresa a la Argentina el día 20) irá a esperarlo al
(casa y trabajo respectivamente) no deben ser aeropuerto.
considerados en esta lista.
En este caso, el programa debe producir la siguiente
(/ * "salida":
Carlos irá a esperarlo al aeropuerto.
CAMINO.ENT
22. Una palabra es anagrama de otra cuando se obtiene
CAMINO.SAL
una de la otra por permutación de sus letras. Por
14 5 ejemplo:
35 cava
empresa
pote
45
torta
tope
56 trota
vaca
59
los conjuntos de anagramas serían:
67 cava / vaca
empresa
68 pote / tope
torta – trota
79
89 23. Pesca
9 1000 ?
Limo se ha ido de pesca y ha observado que los peces se
21. Escribir un programa que permita ingresar un texto y encuentran distribuidos a los largo de un lago. El tiene
luego lo reescriba eliminando los comentarios, una red de tamaño x Un pez es atrapado si se
36
encuentra en el área en donde Limo tire la red. Ayuda a
Limo a decidir donde tirar su red. La red siempre cubre Es decir, lo que le toque a cada concursantes debe
una superficie de unidades en la vertical y en lo provenir de la misma pizza, y nunca de dos o más pizzas
horizontal (Limo no sabe tirarla de otra manera). distintas.
Dado un arreglo de 0 X 000 puntos de coordenadas Dada la cantidad de concursantes de los Alpes, de
enteras 0 K , y 0000. Hallar el mayor número de peces concursantes del Colón y X de concursantes del
que puede atrapar Limo con su red de x con 1 Veintimilla, escribe la mínima cantidad de pizzas que es
0000 y 1 0000. necesario comprar para alimentar a todos los
concursantes. (NOTA: puede haber desperdicio, pero no
( te preocupes, dado que los entrenadores se darán a la
abnegada tarea de comerse el resto).
El archivo de entrada consiste en X+1 líneas. La primera
línea contiene tres enteros 4 - X. En las siguientes X (
líneas vienen las coordenadas de los peces en formato El archivo de entrada contiene una única línea de texto
(X,Y). con tres números 0 ≤ ≤ 100, y 0 ≤ ≤ 100 y 0 ≤ X ≤
100, separados entre ellos por un único espacio.
37
que quedan, por tanto, líneas diagonales y casillas fáciles de aplicar de lo que puede parecer en un primer
interiores del cuadrado en blanco. D 2 E momento:
38
- -2 · El tercero es la acción a aplicar: completar diagonales
(DG), interior diagonales (DGI), exterior diagonales
-# -1 2
centro (DGE), escribir pares (EP), escribir impares (ES),
G #G #E completar números restantes (NR)
F 1 2 #0
26. El rey blanco y 8 peones negros se encuentran
G # ## - ubicados en un tablero de ajedrez (8 casilleros de
#2 F A #F largo por 8 casilleros de ancho). El rey y cada uno
- 1 # H-2 de los peones pueden "comerse" entre sí. El rey
puede moverse de acuerdo a las reglas usuales del
Después de esto ya llevaremos escritas 2n cifras, por ajedrez, esto es, un casillero por vez, en cualquier
ejemplo, como este es de orden 6, ya llevamos 12. dirección. Sin embargo, los peones no pueden
moverse salvo para "comer" al rey; para ello, el rey
3a. Nos situaremos, ahora, en el extremo superior debe ubicarse en cualquiera de los casilleros
izquierda y con un desplazamiento siempre de derecha a diagonales adyacentes al que ocupa el peón.
izquierda, iremos contando de uno en uno y escribiremos Diremos que una "ruta" para el rey es SEGURA si el
sólo los números pares en las casillas correspondientes. rey puede recorrerla sin ser "comido" por ninguno
-# 0 -1 H2 de los 8 peones. Se trata entonces de encontrar un
# G #G #E algoritmo que permita determinar si existe o no una
0 #0 ruta segura para el rey desde el casillero A1 al H8
F 1 2
para una posición dada de los 8 peones negros.
G # ## #A -
-A #2 F A #F Escribir un programa que:
- 1 -0 # -2
A/ permita la entrada de las posiciones de los 8 peones
3b. Finalmente nos situaremos en el extremo inferior negros.
derecho y con un desplazamiento de derecha a izquierda,
iremos contando de uno en uno y escribiremos sólo los B/ determine si existe o no una ruta segura para el rey,
números impares en las casillas correspondientes que con respecto a la posición ingresada de los 8 peones
han de coincidir exactamente con las casillas que todavía negros, desde el casillero A1 al H8.
quedaban en blanco.
C/ si tal ruta existe, la describa.
(Los pasos 3a y 3b pueden invertirse de orden sin
27. Para un palabra dada encontrar todos sus anagramas.
afectar el resultado final)
-# 0 -- -1 2 28. Un equipo electrónico consta de un visor y dos
# G #G #E #1 únicos botones señalados con "1" y "2".Al encender
F #- 1 2 0 #0 el equipo aparece 0 en el visor. Si se oprime el botón
G E # ## #A - 1 el número que está en la pantalla aumenta en 1,
-A #2 F A #F E mientras que si se oprime el botón 2, el número se
duplica. Escribir un programa que:
- 1 -0 - # H-2
a) permita ingresar un número natural N.
Una vez completado este cuadrado mágico de orden 6
se pueden extraer algunas conclusiones, dado que este b) muestre la cantidad de veces que deberá apretarse el
método es recurrente y sólo varían algunos detalles botón 1 y la cantidad de veces que deberá apretarse el
dependiendo del orden del cuadrado. botón 2 para obtener, en la menor cantidad posible de
pasos, el número N en el visor.
Hay tres factores determinantes o que definen cada paso:
· El primero es indicar el extremo de inicio: Superior (S) c) indique la manera en que deberán apretarse los
/ Inferior (I), Derecha (D) / Izquierda (E) botones.
· El segundo el tipo de desplazamiento a seguir: de Por ejemplo: Si N = 25
izquierda a derecha (E/D), de derecha a izquierda (D/E)
o en zig/zag (Z/Z)
Se deberá apretar el botón 1: "3 veces"
39
Se deberá apretar el botón 2: "4 veces" 2. Determine a cuáles de las empresas se les responderá
afirmativamente y fije el día en que se realizará la cena
Los botones deberán apretarse en el siguiente orden: "1/ de cada una de ellas respetando los plazos máximos
2/1/2/2/2/1" fijados de forma tal que la ganancia obtenida por ChefEc
29. Escriba un programa que permita el ingreso de un sea máxima.
número natural N (N<=1000) y que encuentre el
número natural menor igual que N que tenga el 3. Escriba en un archivo ASCII de salida, !?(3 $:,
mayor número de divisores. Si hubiese varios de en forma cronológica los días de las cenas junto con el
tales números, el programa deberá imprimirlos todos número de la empresa atendida. Deberá agregarse
junto con los divisores de cada uno. también la ganancia máxima obtenida mediante este
cronograma.
30. ChefEc S.A. se dedica a la preparación de cenas
empresariales que se sirven en su salón del centro de Las respuestas a los distintos juegos de datos deberán
la ciudad. En este momento N empresas distintas separarse con un registro en blanco.
han requerido sus servicios. Cada una de ellas ha
fijado una cantidad de días a partir de hoy como Ejemplo:
plazo máximo para realizar la cena. ChefEc no
puede atender a más de una empresa por noche. !?(3
Debido a los menús y vinos seleccionados y a la
cantidad de invitados de cada empresa, la ganancia 5
que cada una de estas cenas le redituará a ChefEc no
es pareja. El Gerente General de ChefEc necesita dar 50 1
una respuesta a cada una de las N empresas
informándole si atenderá o no su pedido y, en caso 25 2
afirmativo, cuándo se realizará la cena; demás está
decir que pretende que la ganancia obtenida por
44 4
ChefEc sea máxima.
30 2
Ud. es el programador que debe encargarse de dar una
solución al Gerente General. Para ello, en un archivo de
20 1
entrada ASCII, !?(3 , se han escrito distintos
juegos de datos. En cada uno de ellos figura:
11
N (el número total de empresas)
45 10
g1 d1 (la ganancia en $ y el plazo en días de la cena para
la empresa 1) 35 6
40
40 4 / El primer y segundo caracter se colocan a izquierda y
derecha respectivamente, de lo que se obtuvo como
!?(3 $ codificación de la primera contraseña
/ El tercer caracter se guarda a izquierda del primero.
Día 1: cena para la empresa 1 / El cuarto a derecha del segundo.
/ El quinto a izquierda del tercero.
Día 2: cena para la empresa 4 / El sexto a derecha del cuarto.
Para ello usa el siguiente método. La primera contraseña la salida debería ser:
se guarda de la siguiente manera:
3
/ Los dos primeros caracteres quedan como están. RtmNo7
/ El tercer caracter se guarda a izquierda del primero. CuIdAr
/ El cuarto a derecha del segundo. 721403
/ El quinto a izquierda del tercero.
/ El sexto a derecha del cuarto. 32. Las resistencias electrónicas suelen ir identificadas
por un código de colores que permite marcar cada
Para la segunda contraseña se utiliza el mismo método resistencia con su valor (en Ohmios, W) y su
pero tomando como base la codificación de la primera Tolerancia (en %). Este código de colores viene
contraseña, es decir: representado en la siguiente tabla:
41
ya creado y leerá de teclado 4 números que
corresponderán a los colores de las 4 bandas.
Tras esta lectura mostrará los datos de la resistencia con
esos colores en las bandas. El programa se repetirá
indefinidamente hasta que lea un valor negativo como
color de una banda.
42
código Morse, lo cual se implementará en una función El objetivo del juego es adivinar los dígitos así como sus
que se llame Frase2Morse(), posiciones correctas con el menor número de intentos
2) Pasar código Morse a una frase, implementando una posibles. Para cada intento, el jugador proporciona tres
función que se llame Morse2Frase() y dígitos para las posiciones 1, 2 y 3. El programa
3) Salir. responde con una pista que consta de rojo, amarillo y
verde. Si un dígito está en la posición correcta, la
34. Análisis de texto. La disponibilidad de respuesta es verde. Si el dígito adivinado está en una
computadoras con capacidades de manipulación de posición incorrecta, la respuesta es amarillo. Si el dígito
cadenas nos proporciona interesantes métodos para para una posición dada no coincide con ninguno de los
analizar lo escrito por grandes autores. Se ha puesto, tres dígitos, la respuesta es rojo. A continuación se
por ejemplo, gran atención al hecho de saber si muestra un ejemplo de respuestas para los dígitos 6, 5 y
William Shakespeare alguna vez existió. Algunos 8 en las posiciones 1, 2 y 3, respectivamente:
estudiosos creen que existen evidencias indicando
que Christopher Marlowe fue el que escribió las INTENTO PISTA
obras maestras atribuidas a Shakespeare. Los 1 2 5 rojo rojo amarillo
investigadores han utilizado ordenadores para 8 5 3 amarillo verde rojo
localizar similitudes en los textos de estos dos 8 5 6 amarillo verde amarillo
autores. Realice un programa que lea varias líneas 6 5 8 verde verde verde
de texto y analice las siguientes características del
texto: 36. Implementar el juego del AHORCADO. El
programa dispondrá de un menú con tres opciones:
a) Imprimir una tabla indicando el número de veces que introducir palabra, adivinar palabra y salir. La
aparece cada letra del alfabeto en dicho texto. primera opción permitirá introducir la palabra que
b) Imprimir una tabla que indique el número de palabras otro jugador (o nosotros mismos, para probar el
de una letra, de dos letras, de tres letras ... que aparecen programa) ha de adivinar. La segunda opción sólo
en el texto. podrá llevarse a cabo si ha sido introducida
c) Imprimir una tabla indicando el número de previamente una palabra. De ser así aparecerá una
ocurrencias de cada palabra distinta en el texto. Para ello cadena formada por guiones “/” (tantos como letras
supondremos que el texto tiene como máximo 100 contiene la palabra). El programa irá pidiendo una
palabras distintas, con lo que deberá almacenarlas en un letra tras otra. Si la letra es válida aparecerá en la
array de estructuras de tamaño 100. Cada estructura cadena en la posición correspondiente, si no es así
deberá contener una cadena de caracteres con la palabra contaremos un fallo. El programa termina cuando se
(máximo 20 caracteres) y otro campo con el número de han destapado todas las letras o se ha fallado seis
veces que aparece esa palabra en el texto. Considere veces (cabeza, tronco, brazo derecho, brazo
opcionalmente la posibilidad de que las palabras izquierdo, pierna derecha y pierna izquierda)
aparezcan ordenadas alfabéticamente. Para ordenarlas
puede utilizar cualquier algoritmo de ordenación
teniendo en cuenta que hay que intercambiar estructuras
completas (la cadena y el número de ocurrencias).
Para comparar las cadenas de caracteres en la
ordenación utilice la función strcmp() que dice si dos
cadenas son iguales, si una es mayor que la otra o
viceversa.
El programa deberá mostrar un menú con las siguientes
opciones: 1) Introducir texto, 2) Número de instancias de
cada letra,
3) Número de palabras de cada longitud,
4) Número de ocurrencias de cada palabra distinta,
5) Salir.
43