Sei sulla pagina 1di 41

Tema: LECCIN 1, INTRODUCCIN A LOS PROBLEMAS

Introduccin: Por medio de esta gua se describen las etapas para resolver un problema
cualquiera usando un computador, afianzando las pocas ideas de programacin y solucin
de problemas usando algoritmos.
Objetivos: 1. Describir el enfoque de sistemas para la solucin de problemas.
2. Concientizar al alumno sobre el uso de los algoritmos en la solucin de problemas de la
vida real.
Describir las fases de desarrollo d un sistema de procesamiento de datos.
Recursos Tablero Acrlico.
Didcticos Marcadores borrables.
Material textual de apoyo.
Desarrollo:
Etimolgicamente, la palabra problema deriva del griego proballein y significa algo
lanzado hacia delante. Un problema es un asunto o un conjunto de cuestiones que se
plantean para ser resueltas. La naturaleza de los problemas vara con el mbito o con el
contexto donde estn planteados; as, existen problemas matemticos, qumicos, filosficos,
etc. Consideramos aqu slo aquellos problemas cuya solucin se puede calcular utilizando
una serie de reglas introducidas en un computador.
Muchas veces, la mitad del trabajo es saber exactamente que problema hay que resolver. Si
al abordar un problema no se tiene una descripcin simple y precisa de l, resulta complejo
modelar, similar o programar una solucin en el computador. En este punto, hay que
destacar tambin la importancia de ciertos aspectos relacionados con la solucin de
problemas: notaciones de representaciones, estrategias, relaciones entre problemas, etc.
En general, conviene expresar un problema utilizando algn modelo formal. Por ejemplo,
un modelo aritmtico puede resultar adecuado para problemas de naturaleza numrica o un
modelo basado en gramticas formales puede servir para problemas de procesamiento
simblico o de textos.
Una vez modelado el problema, puede buscarse una solucin en forma de algoritmo. Un
algoritmo es un conjunto finito, y no ambiguo de etapas expresadas en un cierto orden que,
para unas condiciones iniciales, permiten resolver el problema en un tiempo finito. Al
plantear una solucin algortmica es importante elegir una representacin adecuada de los
datos para que dicha solucin resulte eficiente.
Para convertir un algoritmo, que puede estar expresado en una notacin informal o
seudolenguaje, en un programa ser necesario pasar por varias etapas de formalizacin o
refinamiento progresivo. El objetivo final es describir una solucin algortmica al problema
inicialmente planteado mediante el uso de las construcciones formales de un lenguaje de
programacin. Dicho programa se podr ejecutar en un computador, y para un conjunto de
datos de entrada producir unos resultados esperados.
ASPECTOS DE LA SOLUCIN DE PROBLEMAS
No existe un mtodo universal que permita resolver cualquier problema. En general, la
solucin de problemas es un proceso creativo donde el conocimiento, la habilidad y la
experiencia tienen un papel importante. El proceder de manera sistemtica puede ayudar en
la solucin. Es muy importante que el problema tratado est perfectamente definido: se
trata en este momento de saber qu es lo que hay que resolver antes de averiguar cmo
resolver el problema. Esta etapa de definicin lleva consigo eliminar las ambigedades y la
informacin irrelevante que aparezcan en el enunciado de un problema, y saber
exactamente qu elementos constituyen una solucin vlida.
Al comenzar a abordar un problema es necesario tener en cuenta que, para la mayora de
ellos, hay muchas maneras de resolverlos y pueden existir muchas soluciones. Se plantean
sin embargo criterios o estrategias generales que se deben tener en cuenta, para ello se
pueden seguir ocho etapas, articuladas de tal forma que cada una depende de las anteriores,
lo que indica que se trata de proceso complementario y por lo tanto cada paso exige el
mismo cuidado en su elaboracin. Las etapas son:
Definicin y delimitacin del problema a solucionar: Por computador se pueden
resolver cualquier clase de problema una vez definidos los pasos o instrucciones.
Seudocdigo o diagrama de flujo (algoritmo): Este es en realidad el primer paso que se
debe de seguir pues generalmente ya se tiene definido el problema. En esta etapa es donde
se determinan los pasos o instrucciones a seguir y el orden lgico de su ejecucin para darle
una eficiente solucin al problema. Aqu es donde radica toda la dificultad para solucionar
un problema por computador; el resto de las etapas bsicamente se circunscriben a la
adaptacin para que un computador determinado ejecute los pasos o instrucciones
planteados en el seudocdigo y se obtengas los resultados esperados.
Prueba de escritorio: Luego de realizar el seudocdigo viene la prueba de escritorio, la
cual consiste en hacer un seguimiento manual de los pasos seguidos que se definieron en el
seudocdigo y comprobar, con base en sus datos, si el resultado al cual se llega es el
esperado.
Codificacin: Es la escritura de las instrucciones o enunciados, determinados en la etapa
de la diagramacin o la seudocodificacin en un lenguaje de alto nivel (Basic, Cobol,
Pascal, C, etc.) incluyendo las instrucciones de control adecuadas al computador donde se
vayan a ejecutar.
Digitacin: Ya codificadas las instrucciones se convierten a un medio legible para el
computador. Es pasar las instrucciones al editor del lenguaje de programacin a utilizar.
Compilacin: Es aqu donde el computador Chequea si todas las instrucciones estn
escritas correctamente desde el punto de vista de la sintaxis y gramtica de cada lenguaje y
las transcribe, dentro de la memoria, del lenguaje de alto nivel al lenguaje de mquina para
obtener el llamado programa objeto.
Ejecucin del Programa: El programa objeto es ejecutado por el computador para llegar
a los resultados esperados, utilizando los dispositivos, unidades y memoria necesaria, segn
cada paso o programa.
Evaluacin de Resultados: Obtenidos los resultados se les evala para verificar si son
correctos. En caso contrario, se revisa en las etapas anteriores para detectar la falla o error,
entrar a corregirlo y reiniciar desde este punto los pasos para resolver de nuevo y en forma
correcta el problema.
Las consideraciones mencionadas hasta ahora corresponden a la solucin general de
problemas (no necesariamente a problemas informticos); sin embargo, estas ideas se
pueden particularizar para resolver problemas donde se use el computador como
herramienta. A veces, la situacin ms frecuente para mucha gente es comenzar a
programar la solucin de un problema que no est completamente definido, o pensar en
detalles de implementacin sin saber cmo abordar el problema independientemente del
computador. Es mucho ms productivo conocer primero un problema lo suficiente y
plantear una estrategia adecuada para su solucin, que comenzar prematuramente a
programar la solucin a un problema incompleto, ambiguo o que no ha sido analizado
adecuadamente.
Evaluacin: Se deben tener presentes todos y cada uno de los conceptos descritos
anteriormente, pues cada vez que se desee resolver un problema se tienen que tener
recordar y utilizar adecuadamente.
Bibliografa: Desarrollo de Algoritmos Y Sus Aplicaciones, Correa Uribe Guillermo,
McGraw-Hill.
Curso de Programacin con C, Francisco Javier Ceballos, Macrobit.
Gua de Aprendizaje
Duracin: 2 horas
Modulo: Programacin de Computadores.
Tema: LECCIN 2, CLASES DE ALGORITMOS Y ELEMENTOS NECESARIOS
Introduccin: Existen varias clases de algoritmos y elementos que le hacen la vida ms fcil
a los diseadores de estos, y debido a su simplicidad es de suma importancia el
reconocerlos y tenerlos presentes.
Objetivos: 1. Utilizar las diferentes clases de algoritmos para la solucin de problemas.
2. Reconocer fcilmente cada elemento escrito en un algoritmo.
Recursos Tablero Acrlico.
Didcticos Marcadores borrables.
Material textual de apoyo.
Desarrollo:
Como hemos mencionado en repetidas ocasiones, un algoritmo es un conjunto de pasos,
instrucciones o acciones que se deben seguir ordenadamente para llegar a un fin
determinado, (solucin de un problema, obtencin de una respuesta intermedia o
realizacin de una tarea) de cualquier problema de un mismo tipo.
Existen dos clases de algoritmos, las cuales son:
Algoritmos Cualitativos: Son todos aquellos pasos o instrucciones descritos por medio
de palabras que sirven para llegar a la obtencin de una respuesta o solucin de un
problema cualquiera.
Como ejemplo podemos decir que la utilizacin de un directorio (Bsqueda de un telfono).
Para poder buscar un telfono en un directorio, se debe conocer el algoritmo que se va a
utilizar, es decir la forma en que estn codificados los nombres de las personas, para as
lograr encontrarlos y localizar el nmero telefnico correspondiente.
Algoritmos Cuantitativos: Son aquellos pasos o instrucciones que involucran clculos
numricos para llegar a un resultado satisfactorio.
Como ejemplo podemos citar los pasos para resolver una ecuacin de segundo grado, los
pasos lgicos y secuenciales para obtener una nomina.
Antes de entrar a estudiar lo que es en s el desarrollo de algoritmos se deben tener claros
algunos conceptos, como:
Variables: Son todos aquellos valores que pueden o no cambiar en el transcurso de un
algoritmo. Usualmente son introducidas como datos. Existen variables simples y variables
suscritas (arreglos). Todas las variables se componen de dos partes esenciales: Nombre y
Valor.
El nombre es quien identifica la variable en todo el transcurso del algoritmo, y son un
conjunto de caracteres, letras y nmeros. Dicho nombre debe ser mnemotcnico, es decir,
que con solo leer el nombre de la variable se pueda entender o determinar con facilidad lo
que ella significa o contiene. Como ejemplo podemos decir la Variable VrHr significa a
simple vista Valor de la Hora; pero si fuese X o HH, estos nombres pueden significar
muchas cosas o, a la vez, no significar nada.
El valor es la cantidad que una variable representa o tiene asociada en un momento
determinado. Se debe tener en cuenta que una variable tambin puede tener asociado un
valor lgico como falso o verdadero.
Constantes: Son todos aquellos valores que no cambian en el transcurso de un algoritmo y
son introducidos en el momento de utilizarse.
En determinados casos se puede presentar que el valor de una variable no cambie en el
transcurso de un algoritmo; pero por este hecho no se considera constante, sigue siendo una
variable, porque su valor puede cambiar y las constantes no lo pueden hacer.
Evaluacin: Se deben tener presentes todos y cada uno de los conceptos descritos
anteriormente, pues cada vez que se desee resolver un problema se deben utilizar
adecuadamente.
Bibliografa: Guillermo Correa Uribe (1998), Desarrollo de Algoritmos Y Sus Aplicaciones
en Basic, Pascal, Cobol y C, McGraw-Hill.
Francisco Javier Ceballos (1990), Curso de Programacin con C, Macrobit.
Manuel Abellanas y Dolores Lodares (1990), Anlisis de algoritmos y teora de grafos, Ra-
Ma
Gua de Aprendizaje
Duracin: 2 horas
Modulo: Programacin de Computadores.
Tema: LECCIN 3, ELEMENTOS NECESARIOS.
Introduccin: Existen varios elementos que le hacen la vida ms fcil a los diseadores de
algoritmos, y debido a su simplicidad es de suma importancia el reconocerlos y tenerlos
presentes.
Objetivos: 1. Utilizar las diferentes clases de algoritmos para la solucin de problemas.
2. Reconocer fcilmente cada elemento escrito en un algoritmo.
Recursos Tablero Acrlico.
Didcticos Marcadores borrables.
Material textual de apoyo.
Desarrollo:
DATOS, CONSTANTES, VARIABLES Y OPERADORES
Los datos son los objetos sobre los que opera una computadora.
Tipos de Datos: datos numricos: los relativos a diferentes clases de nmeros. Son enteros
(sin parte decimal) y reales (con parte entera y decimal).
datos tipo carcter (cadena): son caracteres que puede interpretar la computadora:
alfabticos A - Z, a - z; dgitos 0 - 9; especiales $, *, >, <, . , , ,; :,.... Un dato tipo
carcter es un solo carcter.
Los caracteres se organizan en cadenas (secuencia de caracteres vlidos encerrados entre
comillas o comillas dobles).
datos lgicos o booleanos: aquellos que slo pueden tomar dos valores: cierto o
falso (true / false)
datos estructurados: arrays, registros, conjuntos y ficheros.
datos enumerados : definidos por el usuario.
Constantes: conjunto de caracteres numricos que no cambian durante la ejecucin del
programa. Pueden estar precedidos de un signo o un carcter + o - y pueden contener el
carcter . (punto). Las hay enteras, reales, caracteres, cadena de caracteres y booleanas.
Variables: conjunto de caracteres alfabticos o alfanumricos tal que su primer carcter sea
alfabtico, ejemplos: Jos, M1, kont.
Pueden cambiar su valor durante la ejecucin del programa.
Una variable siempre tendr asignado un valor de una constante.
Es conveniente utilizar nombres significativos, mnemotcnicos, que sugieran lo que
representan para facilitar la lectura y comprensin del algoritmo.
Operadores Aritmticos:
suma +
resta -
multiplicacin *
divisin /
potenciacin ^
divisin entera \ div
resto de divisin entera mod
Prioridad de las operaciones aritmticas:
^
*, /
+, -
div, mod
Todas las subexpresiones entre parntesis se evalan primero. Las subexpresiones
con parntesis anidados se evalan de dentro - a fuera; el parntesis ms interno se
evala primero.
La prioridad de operaciones dentro de una misma expresin o subexpresin, los
operadores se evalan en el siguiente orden:
Primero *, /, Div, Mod.
Ultimo +, -.
Regla asociativa izquierda. Los operadores de una misma expresin o subexpresin
con igual nivel de prioridad (tal como * y /) se evalan de izquierda a derecha.
Operadores Relacionales: se utilizan para expresar condiciones.
= igual
<> diferente
<= menor o igual
>= mayor o igual
> mayor que
< menor que
El resultado de la operacin expresin1 operador relacional expresin2 ser verdadero o
falso.
Estos operadores de relacin se pueden aplicar a cualquiera de los cuatro tipos de datos
estndar: entero, real, lgico y carcter.
Operadores Lgicos: permiten relaciones lgicas (si/no) y sirven para representar
condiciones compuestas.
no (not) no p negacin de p
y (and) p y q conjuncin de p y q
o (or) p o q disjuncin de p y q
Teniendo en cuenta los datos anteriores la siguiente expresin tiene como resultado:
3 + 5 * (10 - (2 + 4)) = ?
Evaluacin: Resolver el ejercicio planteado en la forma que usted cree ms conveniente.
Bibliografa: Guillermo Correa Uribe (1998), Desarrollo de Algoritmos Y Sus Aplicaciones
en Basic, Pascal, Cobol y C, McGraw-Hill.
Francisco Javier Ceballos (1990), Curso de Programacin con C, Macrobit.
Manuel Abellanas y Dolores Lodares (1990), Anlisis de algoritmos y teora de grafos, Ra-
Ma
Gua de Aprendizaje
Duracin: 2 horas
Modulo: Programacin de Computadores.
Tema: LECCIN 4, INTRODUCCIN A LOS ALGORITMOS
Introduccin: Los lenguajes de programacin permiten expresar los algoritmos en una
notacin formal que pueda ser reconocida y ejecutada por el computador.
Objetivos: 1. Utilizar los algoritmos para la solucin de problemas.
2. Describir las fases de desarrollo de un sistema de procesamiento de datos.
Recursos Tablero Acrlico.
Didcticos Marcadores borrables.
Material textual de apoyo.
Desarrollo:
Hasta ahora se han realizado algunos comentarios respecto a la necesidad de disear
algoritmos correctos y eficientes utilizando los elementos de un lenguaje de programacin.
El acto de disear algoritmos puede considerarse como una tarea que difcilmente podr ser
del todo automatizada. Todo problema es un reto para el diseador: algunos resultan
inmediatos de resolver, otros son bastante complejos. La investigacin en esta rea ha
permitido descubrir un conjunto de mtodos o esquemas de diseo hacia los cuales puede
orientarse la realizacin de muchos algoritmos. No obstante, y a pesar de que resulta ms
adecuado en bastantes casos utilizar algunos de estos esquemas que realizar un diseo
desde cero, idear un algoritmo contina siendo una labor bastante creativa donde los
conocimientos y la experiencia del propio diseador tienen un papel fundamental.
Dos tcnicas de las ms usadas en la prctica son divide y vencers y el mtodo voraz.
Divide y vencers: Consiste en descomponer un problema en subproblemas, resolver
independientemente los subproblemas para luego combinar sus soluciones y obtener la
solucin del problema original. Esta tcnica se puede aplicar con xito a problemas como la
multiplicacin de matrices, la ordenacin de vectores, la bsqueda en estructuras
ordenadas, etc.
Como ejemplo sencillo de aplicacin de esta estrategia puede considerarse la bsqueda de
una palabra en un diccionario de acuerdo con el siguiente criterio. Se abre el diccionario
por la pgina central (quedando dividido en dos mitades) y se comprueba si la palabra
aparece all o si lexicogrficamente es anterior o posterior. Si no se ha encontrado y es
anterior, se procede a buscarla en la primera mitad; si es posterior, se buscar en la segunda
mitad. El procedimiento se repite sucesivamente hasta encontrar la palabra o decidir que no
aparece.
Mtodo Voraz: Este mtodo trata de producir algn tipo de mejor resultado a partir
de un conjunto de opciones candidatas. Para ello, se va procediendo paso a paso
realizndose la mejor eleccin (usando una funcin objetivo que respeta un conjunto
de restricciones) de entre las posibles. Puede emplearse en problemas de optimizacin,
como el conocido de la mochila, en la bsqueda de caminos mnimos sobre grafos, la
planificacin en el orden de la ejecucin de unos programas de computador.
Consideremos ahora el problemas de la devolucin del cambio al realizar una compra.
Suponiendo que se disponga de cantidad suficiente de ciertos tipos de monedas de curso
legal, se trata dar como cambio la menor cantidad posible usando estos tipos de monedas.
La estrategia voraz aplicada comienza devolviendo, cuando se pueda, la moneda de mayor
valor (es decir, mientras el valor de dicha moneda sea mayor o igual al cambio que se resta
por dar), contina aplicndose el mismo criterio para la segunda moneda ms valiosa, y as
sucesivamente. El proceso finaliza cuando se ha devuelto todo el cambio.
Evaluacin: Se deben tener presentes todos y cada uno de los conceptos descritos
anteriormente, pues cada vez que se desee resolver un problema se deben utilizar
adecuadamente.
Gua de Aprendizaje
Duracin: 2 horas
Modulo: Programacin de Computadores.
Tema: LECCIN 5, UTILIDAD DE LOS ALGORITMOS
Introduccin: Los algoritmos los ejecutamos a lo largo de nuestras actividades diarias,
como por ejemplo: levantarse para asistir a clase en el SENA, desayunar, ... etc. y tenemos
en cuenta un conjunto de instrucciones mnimas y el orden en el cual debemos ejecutarlas.
Objetivos: 1. Utilizar las diferentes clases de algoritmos para la solucin de problemas.
2. Reconocer fcilmente cada elemento escrito en un algoritmo.
Recursos Tablero Acrlico.
Didcticos Marcadores borrables.
Material textual de apoyo.
Desarrollo:
Cuando se tiene un problema para el cual debemos especificar un algoritmo solucin
tendremos en cuenta varios puntos:
Si no se conoce un mtodo para solucionar el problema, debemos hacer un anlisis
del mismo para llegar a una solucin luego de evaluar alternativas, escogencias y
excepciones.
Si se conoce un buen mtodo de solucin al problema, entonces se debe
especificar el mtodo de solucin en un lenguaje que se pueda interpretar
fcilmente.
Los problemas pueden agruparse en conjuntos de problemas que tienen algo en
comn. Puede existir un mtodo que d solucin al conjunto.
Hay criterios para determinar qu tan buena es una solucin, indiferente de ver si
trabaja o no, o hasta qu punto es general la aplicabilidad del mtodo. Estos criterios
involucran cosas como eficiencia, elegancia, velocidad, etc.
Al definir con exactitud un mtodo de solucin para un problema, ste debe ser
capaz de encontrar la solucin, si existe y en caso contrario suspender toda accin.
El mtodo de solucin debe ser compatible con el dispositivo usado. En nuestro
caso el microcomputador o PC. Es decir, la solucin debe enunciarse en un lenguaje
soportado por el dispositivo a usarse.
CARACTERSTICAS DE LOS ALGORITMOS
Entrada: todo algoritmo debe tener cero (0) o ms elementos de entrada. Como valores,
cantidades, condiciones, etc.
Proceso: clculos necesarios para encontrar la solucin del problema.
Salida: todo algoritmo produce uno o ms elementos como resultado.
Finito: todo algoritmo tiene un nmero fijo de pasos.
Hay algoritmos para los cuales el nmero de pasos es fijo o tiene un mximo
estipulado. (se necesita controlar el nmero de pasos - contador)
Hay algoritmos para los cuales el nmero mximo de pasos est relacionado con los
datos y se puede calcular a priori o predecirlos.
Hay otros algoritmos que el nmero mximo de pasos est relacionado con los datos
pero no podemos predecir el nmero de pasos.
Precisin: cada paso del algoritmo debe definirse con exactitud, sin ambigedades.
Validez: el algoritmo debe ser exitoso y producir resultados esperados. Si el nmero de
pasos est condicionado a un dato y este no se da, el proceso nunca terminara y diremos
por tanto que el algoritmo es no-vlido.
Ejemplos De Algoritmos:
Cambiar una llanta: Juan recibe la siguiente informacin: su automvil tiene una llanta
pinchada.
Juan se dirige al parqueadero con el objeto de cambiar la llanta pinchada. Entonces,
debe revisar llantas (subproceso)
si estn bien, devolverse
sino asegurar vehculo
colocar gato y aflojar pernos
reemplazar llanta
asegurar llanta
guardar herramienta
Directorio telefnico: supongamos que Juan encontr una llanta pinchada y no sabe
repararla.
Busca un directorio telefnico para consultar el nmero telefnico de un amigo y pedirle
instrucciones. Entonces,
busca primer apellido
busca primer nombre
busca segundo apellido
etc.
El agua y el vino: se tienen dos vasijas, una con agua y otra con vino; la primera es de
vidrio y la segunda de madera. Se quiere que el agua quede en la vasija de madera y el vino
en la de vidrio. Grafique la solucin.
Las latas: suponga que dispone de una cantidad ilimitada de agua y tiene dos potes o
latas, una con capacidad para contener 5l y la otra 4l. Cmo obtener 2l de agua en la de 5l si
no tiene medidor exacto? De una solucin.
Los platillos: se tiene una balanza de 2 brazos y 6 platillos metlicos p1, p2, p3,...p6.
Todos los platillos excepto uno tienen el mismo peso y uno es ms pesado que los dems.
Encontrar el ms pesado.
Evaluacin: Resolver los ejercicios planteados en la forma que usted cree ms conveniente,
siempre y cuando siga los parmetros dados y se obtengan las respuestas esperadas. Estos
ejercicios los pueden resolver en grupo, teniendo en cuenta el criterio personal y grupal.
Gua de Aprendizaje
Duracin: 2 horas
Modulo: Programacin de Computadores.
Tema: LECCIN 6, INSTRUCCIN DE ASIGNACIN, ENUNCIADOS DE
DECISIN.
Introduccin: La importancia de un seudocdigo en la programacin de computadores
estriba en la facilidad de describir y representar claramente en un lenguaje no formal (casi
personal) las instrucciones de un algoritmo, que ms tarde, dependiendo del lenguaje
formal que se vaya a utilizar, servir de base para el cdigo o programa fuente.
Objetivos: 1. Agilizar y complementar las instrucciones empleadas en los algoritmos.
2. Implementar los algoritmos antes planeados de una manera ms lgica y ms acorde con
el lenguaje a utilizar.
Recursos Tablero Acrlico.
Didcticos Marcadores borrables.
Material textual de apoyo.
Desarrollo:
Un enunciado o una instruccin de asignacin es una accin o proceso por el cual se le
asigna un valor (constante o variable) o el resultado de una operacin (expresin) a una
variable. Los enunciados de asignacin se utilizan generalmente para cambiarle de valor a
una variable o definirla. Definir una variable consiste en asignarle o darle por primera vez
un valor; y puede hacerse de dos maneras: por medio de una lectura de datos o utilizando
un enunciado de asignacin.
Debe tenerse en cuenta que en la parte izquierda de un enunciado de asignacin siempre va
y debe de ir una variable.
Con una flecha (!) podemos definir que es una asignacin e indica que el valor de la parte
derecha del enunciado (variable, expresin o constante) se le asigna a la parte de la
izquierda (variable). Sin embargo muchas personas acostumbran utilizar el signo (=) para
indicar la asignacin.
El enunciado de asignacin es asimtrico. Esto quiere decir que la expresin de la derecha
es evaluada, para ser asignado el resultado o la variable especificada a la izquierda. De
acuerdo con esta definicin no sera vlida la sentencia:
3.141592 * R * R = rea
Lo correcto sera.
rea = 3.141592 * R * R
REGLAS PRCTICAS A TENER EN CUENTA AL MOMENTO DE LA
CONSTRUCCIN DE ENUNCIADOS:
Toda variable que aparezca al lado derecho de un enunciado de asignacin debe estar
definida
En un enunciado de asignacin la variable de la izquierda es la nica que cambia de valor
cuando con anterioridad tiene un valor asignado.
Las variables que aparezcan en la parte derecha de un enunciado de asignacin,
conservan su valor despus de ejecutarse el enunciado.
Si la variable de la parte izquierda se encuentra tambin al lado derecho, sta variable
cambia de valor por aparecer en la izquierda.
ENUNCIADOS DE DECISIN
En el desarrollo de un algoritmo la mayora de las veces se ver abocado a situaciones de
excepcin o comparacin con el objetivo de aclarar o conocer alguna circunstancia en
particular. Para que el algoritmo sea flexible y general se deben tener en cuenta todas las
posibilidades o alternativas que puedan presentarse en un momento determinado. De aqu la
necesidad de hacer comparaciones y tomar decisiones. Bsicamente los enunciados de
decisin se utilizan para tomar una accin o conocer el estado de alguna situacin en
especial.
Todo enunciado de decisin generalmente permite como respuestas o salidas dos
alternativas, un Si o un No. Tambin pueden expresarse las salidas utilizando operadores
relacionales, las palabras CIERTO o FALSO o las palabras ENTONCES o SINO.
La composicin de un enunciado de decisin podra ser:
SI (VARIABLE vs VARIABLE) ENTONCES
Enunciado(s)O
SINO
Enunciado(s)
FIN_SI
CONDICIONES DE LOS ENUNCIADOS DE DECISIN
COMPOSICIN EJEMPLO
Se Puede Comparar:
VARIABLE contra
CONSTANTE
VARIABLE contra
VARIABLE
VARIABLE contra
EXPRESIN
EXPRESIN contra
CONSTANTE
EXPRESIN contra
VARIABLE
EXPRESIN contra
EXPRESIN
CONSTANTE contra
VARIABLE
CONSTANTE contra
EXPRESIN
(NETO <= 200000)
(HRSEXTRAS < HRNORMALES)
(NETO = (VRHR * HRTRA)
((SALARIO - DESCTOS) = 200000)
((DEVENGADO - ISS) = NETO)
((SALARIO - DESCTOS) = (NETO -
ISS))
(200000 > NETO)
(200000 >= (DEVENGADO - ISS))

Ejercicios
Imprima el nombre, la edad, sexo y el estado civil de una persona.
Lea de un mismo registro el nombre, sexo y la edad de cualquier persona e imprima tanto
el nombre como la edad.
Lea de un mismo registro el nombre y la edad de cualquier persona e imprima, slo si la
persona es mayor de edad, el nombre de la persona.
Lea de un mismo registro el nombre y la edad de cualquier persona e imprima slo si la
persona es mayor de edad, el nombre de la persona, de lo contrario un mensaje que diga :
No puede votar.
Lea de un mismo registro el nombre, la edad y el sexo de una persona e imprima, slo si
la persona es de sexo masculino y mayor de edad el nombre de la persona.
Nota: Suponga que el registro que se lee tiene grabado, en el campo denominado sexo el
nmero 1 en vez de la palabra masculino o el nmero 2 en vez de la palabra femenino.
Lea de un mismo registro el nombre, la edad, el sexo y el estado civil de cualquier
persona e imprima, slo si la persona es hombre o mujer menor de edad o es hombre casado
de cualquier edad, el nombre de la persona y un mensaje que diga Usted no se manda. En
los dems casos imprima el nombre de la persona solamente.
Evaluacin: Resolver los ejercicios planteados en la forma que usted cree ms conveniente,
siempre y cuando siga los parmetros dados y se obtengan las respuestas esperadas. Estos
ejercicios los pueden resolver en grupo, teniendo en cuenta el criterio personal y grupal.
Bibliografa: Guillermo Correa Uribe (1998), Desarrollo de Algoritmos Y Sus Aplicaciones
en Basic, Pascal, Cobol y C, McGraw-Hill.
Francisco Javier Ceballos (1990), Curso de Programacin con C, Macrobit.
Manuel Abellanas y Dolores Lodares (1990), Anlisis de algoritmos y teora de grafos, Ra-
Ma
Selim G. Akl (1989), The Desing and Analysis of Parallel Algorithms, Prentice-Hall.
Traduccin al castellano (1992): Diseo y Anlisis de Algoritmos Paralelos, Ra-Ma
Gua de Aprendizaje
Duracin: 2 horas
Modulo: Programacin de Computadores.
Tema: LECCIN 7, ENUNCIADOS DE REPETICIN.
Introduccin: La ventaja fundamental que tiene un computador es el de hacer las
operaciones supremamente rpido. Debido a esta circunstancia el computador se utiliza
para ejecutar un conjunto de enunciados repetitivamente para as aprovechar su velocidad.
Los enunciados de repeticin permiten como su nombre lo indica repetir varias o muchas
veces un conjunto de enunciados segn se necesite de acuerdo a una condicin.
Objetivos: 1. Complementar los algoritmos anteriores de modo que se puedan ejecutar no
slo
una vez sino muchas veces.
2. Agilizar la ejecucin y eliminar las instrucciones no necesarias, pues con los enunciados
de repeticin muchas de estas instrucciones sobran.
Recursos Tablero Acrlico.
Didcticos Marcadores borrables.
Material textual de apoyo.
Desarrollo:
Existen varios tipos de enunciados de repeticin a saber:
Sentencia Mientras Que (While): En esta sentencia el nmero de veces que se han de
repetir algunas instrucciones no se conoce por anticipado y el interior de la sentencia se
repite MIENTRAS se cumple una determinada condicin. Por esta razn, esta sentencia se
denomina Ciclo o sentencia Condicional.
Ejecuta una sentencia, simple o compuesta, cero o ms veces, dependiendo del valor de una
expresin.
MIENTRAS (CONDICIN) HAGA
SENTENCIA(S)
FIN_MIENTRAS
Condicin es cualquier expresin numrica, relacional o lgica.
Sentencia es una instruccin simple o compuesta.
Reglas de funcionamiento
La condicin se evala antes y despus de cada ejecucin. Si la condicin es verdadera,
se ejecuta el ciclo, y si es falsa, el control pasa a la sentencia siguiente del ciclo.
Si la condicin es falsa cuando se ejecuta el ciclo por primera vez, el cuerpo del ciclo no
se ejecutara nunca. En este caso se dice que el ciclo se ha ejecutado cero veces.
Mientras la condicin sea verdadera el ciclo se ejecutara. Esto significa que se ejecutara
indefinidamente a menos que algo en su interior modifique la condicin haciendo que su
valor cambie a falso. Si la expresin nunca cambia de valor entonces el ciclo no termina
nunca y se define como un ciclo infinito o sin fin (que no es lo ms deseable).
PRECAUCIONES
La condicin lgica de un ciclo Mientras debe tener un valor la primera vez que se
evala; en caso contrario, el programa abortar al ejecutarse el ciclo Mientras.
La condicin lgica de un ciclo Mientras, debe ser modificada por una sentencia en el
cuerpo (interior) del ciclo; en caso contrario, el ciclo se hace infinito.
Es posible que el cuerpo del ciclo no se ejecute nunca. Esto suceder si la condicin
lgica es falsa la primera vez que se evala.
Ciclos controlados por un contador
Son aquellos ciclos cuyas iteraciones o repeticiones son controladas por una variable cuyo
valor representa a un contador. Este ciclo consta de tres (3) partes , adems del cuerpo y de
la condicin de salida.
Inicializacin de una variable de control.
Comprobacin del valor de la variable de control.
Incremento del valor de la variable de control.
Se utiliza un ciclo controlado por contadores cuando se puede anticipar con antelacin
cuantas repeticiones se deben ejecutar exactamente. Cada vez que se ejecute el cuerpo del
ciclo, el contador se incrementa en un nmero programado por el usuario (cuando
incrementa la variable de control).
Ejemplo:

I = 0
MIENTRAS (I < 10) HAGA
IMPRIMA (I)
I = I + 1
FIN_MIENTRAS
Salida: 0, 1, 2, 3, ..., 9
Se ejecuta 10 veces
I = 0
MIENTRAS (I < 10) HAGA
I = I + 1
IMPRIMA (I)
FIN_MIENTRAS
Salida: 1, 2, 3, ..., 10
Se ejecuta 10 veces

I = 1
MIENTRAS (I < 10) HAGA
IMPRIMA (I)
I = I + 1
FIN_MIENTRAS
Salida: 1, 2, 3, ..., 9
Se ejecuta 9 veces
I = 1
MIENTRAS (I < 10) HAGA
I = I + 1
IMPRIMA (I)
FIN_MIENTRAS
Salida: 2, 3, 4, ..., 10
Se ejecuta 9 veces

I = 0
MIENTRAS (I <= 10) HAGA
IMPRIMA (I)
I = I + 1
FIN_MIENTRAS
Salida: 0, 1, 2, 3, ..., 10
Se ejecuta once veces
I = 0
MIENTRAS (I <= 10) HAGA
I = I + 1
IMPRIMA (I)
FIN_MIENTRAS
Salida: 1, 2, 3, 4, ..., 10
Se ejecuta diez veces

Ejercicio
Escriba un programa que genere los primeros N mltiplos de 3 y calcule e imprima: la
suma y el promedio.
INICIO
LEA NUMAX
SUMA = 0
VARCON = 1
MIENTRAS (VARCON <= NUMAX) HAGA
MULTIPLO = 3 * VARCON
SUMA = SUMA + MULTIPLO
VARCON = VARCON + 1
FIN_MIENTRAS
PROMEDIO = SUMA / NUMAX
IMPRIMA (SUMA, PROMEDIO)
FIN_INICIO
NUMAX Nmero hasta el cual se generarn los mltiplos de 3
VARCON Variable de control
Resolver
Imprima los 100 primeros nmeros naturales.
Imprima los nmeros pares comprendido entre 1 y 1000
Lea un nmero entero positivo y obtenga los mltiplos de tres (3) comprendidos entre 1 y
el nmero ledo.
Leer varios registros cada uno de los cuales contiene un nombre. Imprima los nombres.
Imprima la tabla de multiplicar de un nmero ledo por teclado, y con el multiplicador de
1 a 15.
Evaluacin: Resolver los ejercicios planteados en la forma que usted cree ms conveniente,
siempre y cuando siga los parmetros dados y se obtengan las respuestas esperadas. Estos
ejercicios los pueden resolver en grupo, teniendo en cuenta el criterio personal y grupal.
Se entregar un taller con los ejercicios ms representativos de esta clase de ciclos, para
luego realizar un examen individual, donde se medirn los conocimientos adquiridos
durante las anteriores secciones de clase.
Bibliografa: Guillermo Correa Uribe (1998), Desarrollo de Algoritmos Y Sus Aplicaciones
en Basic, Pascal, Cobol y C, McGraw-Hill.
Francisco Javier Ceballos (1990), Curso de Programacin con C, Macrobit.
Manuel Abellanas y Dolores Lodares (1990), Anlisis de algoritmos y teora de grafos, Ra-
Ma
Selim G. Akl (1989), The Desing and Analysis of Parallel Algorithms, Prentice-Hall.
Traduccin al castellano (1992): Diseo y Anlisis de Algoritmos Paralelos, Ra-Ma
Duracin: 2 horas
Modulo: Programacin de Computadores.
Tema: LECCIN 8, CICLO MIENTRAS CONTROLADOS CON UNA
CONDICIN.
Introduccin: En la seccin anterior se describi la forma en como trabajan los ciclos
controlados por un contador, en donde vimos su eficacia y eficiencia, pero no solo de esa
forma son controlados los ciclos, aqu veremos que tambin se pueden controlar por medio
de una condicin.
Objetivos: 1. Utilizar las maneras ms eficientes (no slo una) para resolver cualquier clase
de
problema que tenga que ver con repeticiones.
2. Agilizar la ejecucin y eliminar las instrucciones no necesarias, pues con los enunciados
de repeticin muchas de estas instrucciones sobran.
Recursos Tablero Acrlico.
Didcticos Marcadores borrables.
Material textual de apoyo.
Desarrollo:
Ciclos controlados por una condicin
Estas instrucciones son utilizadas cuando no se conoce por anticipado el nmero de veces
que se han de repetir las instrucciones dentro de un ciclo. Hay diferentes maneras de
realizar el control, como son:
Solicitar al usuario la continuacin del ciclo, el cual slo continua si el usuario decide
si hay ms entradas.
Ejemplo
SUMA = 0
IMPRIMA (DESEA CONTINUAR S / N:)
LEA RESPUESTA
MIENTRAS (RESPUESTA = `S') HAGA
IMPRIMA (INTRODUZCA UN NMERO....)
LEA NUM
SUMA = SUMA + NUM
IMPRIMA (DESEA CONTINUAR S / N:)
LEA RESPUESTA
FIN_MIENTRAS
Dato O Valor Centinela
Centinela es un valor utilizado para sealar el final de una lista de datos, el valor elegido
debe ser totalmente distinto de los posibles valores de la lista para que este se pueda ser
utilizado. Si la lista son nmeros enteros positivos, un nmero negativo quedara bien como
dato centinela.
El siguiente ejemplo suma una lista de nmeros negativo nicamente, y termina cuando
entra un solo dgito positivo.
Ejemplo
SUMA = 0
LEA NUMERO
MIENTRAS (NUMERO <= 0) HAGA
SUMA = SUMA + NUMERO
LEA NUMERO
FIN_MIENTRAS
Uso de banderas o interrupciones: (Flag) son unas variables lgicas que se utilizan
para conservar el estado (verdadero o falso) de una condicin. El valor del interruptor debe
inicializarse antes de comenzar el ciclo y debe cambiar su estado (valor) dentro del cuerpo
del ciclo para preparar la siguiente repeticin.
Estos Flag se representan con variables lgicas, las cuales se inicializan en uno de los dos
posibles valores (Verdadero o falso) y toma el otro valor cuando sucede el evento que se
esta verificando.
Evaluacin: Con base a los conocimientos ya adquiridos, estamos en capacidad de resolver
cualquier problema utilizando las tcnicas adecuadas de programacin
Bibliografa: Guillermo Correa Uribe (1998), Desarrollo de Algoritmos Y Sus Aplicaciones
en Basic, Pascal, Cobol y C, McGraw-Hill.
Francisco Javier Ceballos (1990), Curso de Programacin con C, Macrobit.
Manuel Abellanas y Dolores Lodares (1990), Anlisis de algoritmos y teora de grafos, Ra-
Ma
Selim G. Akl (1989), The Desing and Analysis of Parallel Algorithms, Prentice-Hall.
Traduccin al castellano (1992): Diseo y Anlisis de Algoritmos Paralelos, Ra-Ma
Duracin: 2 horas
Modulo: Programacin de Computadores.
Tema: LECCIN 9, CICLO REPETITIVO PARA
Introduccin: Cuando se desea ejecutar una sentencia simple o compuesta, repetidamente
un nmero de veces conocido, la construccin adecuada es la sentencia PARA.
Objetivos: 1. Utilizar las maneras ms eficientes (no slo una) para resolver cualquier clase
de
problema que tenga que ver con repeticiones.
2. Agilizar la ejecucin y eliminar las instrucciones no necesarias, pues con los enunciados
de repeticin muchas de estas instrucciones sobran.
Recursos Tablero Acrlico.
Didcticos Marcadores borrables.
Material textual de apoyo.
Desarrollo:
Este ciclo requiere que se conozca por anticipado el nmero de veces que se han de ejecutar
las sentencias en el interior del ciclo. Si se desea que las sentencias controladas se ejecuten
hasta que ocurra una determinada situacin y no se conoce de antemano el nmero de
repeticiones, entonces lo ms viable para utilizar en el ciclo Mientras o Repita en lugar de
Para.
Composicin del Ciclo Para
PARA (VBLEINI = VALOR HASTA VALORFIN) HAGA
ENUNCIADO A REPETIR
ENUNCIADO A REPETIR
FIN_PARA
ENUNCIADO
ENUNCIADO
VBLEINI Representa una variable que ser inicializada con un VALOR determinado.
La ejecucin de la expresin o sentencia PARA sucede de la siguiente forma:
Se inicializa la variable con un valor determinado.
Se evala la expresin del Valor final.
Si el resultado es distinto de cero (verdadero), se ejecuta la sentencia, se evala la
expresin que da lugar al Valor final.
Si el resultado de 2, es cero (falso), la ejecucin de la sentencia PARA se por finalizada y
se contina en la siguiente sentencia del programa.
Ejemplo
PARA (I = 1; I <= 100; I++)
IMPRIMA (I)
FIN_PARA
Este ejemplo imprime los nmeros del 1 al 100. Literalmente dice: desde I igual a 1,
mientras I sea menor o igual que 100, con incremento de 1, imprima el valor de I.
PARA (I = 1; I <= 10; I += 05)
IMPRIMA (%G,I)
FIN_PARA
Este ejemplo imprime los nmeros del 1 al 10 con incremento de 0.5.
PARA (K = 7; K <= 112; K += 7)
IMPRIMA (%D,K)
FIN_PARA
Este ejemplo imprime los mltiplos de 7 que hay entre 7 y 112.
CICLOS ANIDADOS
Un ciclo PARA puede colocarse dentro de otro ciclo PARA y entonces se dice que estn
anidados. En este caso el ciclo interno se ejecutar totalmente, por cada valor del ciclo que
lo contiene.
Ejemplo
Escribir un programa que imprima un tringulo construido con caracteres consecutivos del
cdigo ASCII, como el que aparece a continuacin.

#
$ % &
` ( ) *
+ , - . /
0 1 2 3 4 5
#include "stdio.h"
#include "conio.h"
/* Este ejemplo construye un tringulo de N filas con caracteres */
void main (void)
{
clrscr();
char car;
unsigned int filas, columnas;
unsigned int nfilas;
printf ("N-mero de Filas del Triangulo: "); scanf ("%d",&nfilas);
for (filas = 1, car = '\x20'; filas <= nfilas; filas ++)
{
for (columnas = 1; columnas <= filas; columnas ++)
{
car ++;
printf ("%3c", car); /* 3c Espacios entre caracteres */
}
printf ("\n");
}
getche();
}
imprimir un tablero de ajedrez y sobre el marcar con un * las celdas a las que se puede
mover un alfil desde una posicin dada.
Desarrollo del problema:
Leer Fila y Columna en la que se coloca el alfil.
Partiendo de la Fila 1, Columna 1 y recorriendo por Filas el tablero imprimir un(a):
* Si se cumple, que la suma o diferencia de la fila y la columna actuales, coincide
con la suma o diferencia de la fila y columna donde se coloca el alfil.
N Si se cumple, que la fila ms columna actual es par.
B Si se cumple, que la fila ms columna actual es impar.
#include "stdio.h"#include "conio.h"
/* Este ejemplo construye un tablero de ajedrez con la posicin de un alfil */void main
(void){ clrscr(); int falfil, calfil; /* Posicin del alfil */
int fila, columna; /* Posicin actual */
printf ("Posicin del alfil (fila, columna): ");
scanf ("%d %d", &falfil, &calfil); for (fila = 1; fila <= 8; fila ++) { for (columna = 1;
columna <= 8; columna ++) { if ((fila + columna == falfil + calfil) ||
(fila - columna == falfil - calfil))
printf (" * ");
else
if ((fila + columna) %2 ==0)
printf ("NNN"); /* Alt + 219 */
else
printf ("BBB"); /* Alt + 176 */
}
printf ("\n"); /* Cambiar la Fila */
}
getche();
}
ejercicio
Elaborar un algoritmo que lea N registros donde cada uno tiene el valor de X, y encontrar
su suma total. (Utilizando el ciclo PARA). El nmero de registros ser indicado por un
registro identificador.
Elaborar un algoritmo que encuentre e imprima los nmeros impares comprendidos entre
cero y cuarenta. Adems hallar la suma de ellos.
Elaborar un algoritmo que imprima el nombre y la edad de 20 personas.
Elaborar un algoritmo que lea 40 nmeros e imprima slo los nmeros negativos.
Elaborar un algoritmo que lea 80 registros, donde cada uno tenga un numero y
determine:
La cantidad de nmeros impares.
La cantidad de nmeros pares (Excluya el Cero).
La cantidad de ceros.
Evaluacin: Realizar los algoritmos propuestos con el fin de afianzar conocimientos y
destrezas en el uso de los ciclos PARA, tanto sencillos como anidados.
Bibliografa: Guillermo Correa Uribe (1998), Desarrollo de Algoritmos Y Sus Aplicaciones
en Basic, Pascal, Cobol y C, McGraw-Hill.
Francisco Javier Ceballos (1990), Curso de Programacin con C, Macrobit.
Manuel Abellanas y Dolores Lodares (1990), Anlisis de algoritmos y teora de grafos, Ra-
Ma
Selim G. Akl (1989), The Desing and Analysis of Parallel Algorithms, Prentice-Hall.
Traduccin al castellano (1992): Diseo y Anlisis de Algoritmos Paralelos, Ra-Ma
Gua de Aprendizaje
Duracin: 2 horas
Modulo: Programacin de Computadores.
Tema: LECCIN 10, SENTENCIAS CASO.
Introduccin: Las sentencias CASO se le aplica a una variable que en su contenido pueda
guardar un valor de 3 o ms posibles valores. No es conveniente aplicar la sentencia CASO
a la variable sexo, porque slo puede guardar un valor de entre dos posibles valores, ya que
con slo preguntar por uno de su valores se concluye tambin el otro.
Objetivos: Evitar el nido exagerado de preguntas (SI anidados).
Recursos Tablero Acrlico.
Didcticos Marcadores borrables.
Material textual de apoyo.
Desarrollo:
La sentencia CASO se utiliza para elegir entre diferentes alternativas. Una sentencia CASO
se compone de varias sentencias simples. Cuando CASO se ejecuta, una (y slo una) de las
sentencias simples se selecciona y ejecuta.
CASO (SELECCIN) HAGA
LISTA CONSTANTES 1: SENTENCIA 1;
LISTA CONSTANTES 2: SENTENCIA 2;
.
.
LISTA CONSTANTES N: SENTENCIA N;
[SINO
SENTENCIAS X]
FIN_CASO
REGLAS
La expresin SELECCIN se evala y se compara con las listas de constantes; las listas
de constantes son listas d uno o ms posibles valores de SELECCIN separadas por comas.
Slo se ejecuta una sentencia. Si el valor de SELECCIN esta en la lista de constantes 1, se
ejecutar la sentencia 1. El control se pasa seguidamente a la primera sentencia a
continuacin del FIN_CASO. Cada sentencia puede ser a su vez una sentencia simple o
compuesta.
la clusula SINO es opcional como en la sentencia SI.
Si el valor de SELECCIN no esta comprendido en ninguna lista de constantes y no
existe la clusula SINO, no sucede nada y sigue el flujo del programa; si el valor de
SELECCIN no coincide con alguna constante, se ejecutan las sentencias a continuacin
de la clusula SINO.
La Seleccin debe ser un tipo (Integer, Char, Boolean o enumerado). Los nmeros reales
no pueden ser utilizados ya que no son ordinales. Los valores ordinales de los limites
inferiores y superiores deben estar entre los limites del rango -32768 a 32767. Por
consiguiente, los tipos String, Longint y Word no son validos.
Todas las constantes CASO deben ser nicas y de un tipo ordinal compatible con el tipo
de SELECCIN.
Toda sentencia, excepto la ltima, deben ir seguidas de punto y coma.
Ejemplo
LEA CARCTER
CASO CARCTER HAGA
`0'..'9' : IMPRIMA (NUMERO)
`A'..'Z' : IMPRIMA (MAYUSCULA)
`a'..'z' : IMPRIMA (MINUSCULA)
FIN_CASO
Las sentencias CASO son utilizados tambin en aquellos programas que deben presentar
con mucha frecuencia mens. Un men son un conjunto de opciones que se le presentan al
usuario, para los cuales se debe elegir una opcin de ellas, dependiendo de la decisin se
realizar una serie de opciones.
Un men podra ser:
N : Nombre
D : Direccin
T : Telfono
C : Ciudad
F : Fin
El programa debe permitir elegir una de las 5 opciones presentadas. La opcin se debe
asignar una variable SELECCIN de tipo char. El usuario podr introducir el carcter en
minsculas o en maysculas.
LEA CARCTER
CASO CARCTER HAGA
`N', `n' : INICIO
IMPRIMA (DIGITE SU NOMBRE: )
LEA NOMBRE
FIN
`D', `d' : INICIO
IMPRIMA (DIGITE SU DIRECCIN: )
LEA DIRECCION
FIN
`T', `t' : INICIO
IMPRIMA (DIGITE SU TELFONO: )
LEA TELFONO
FIN
`C', `c' : INICIO
IMPRIMA (DIGITE LA CIUDAD: )
LEA CIUDAD
FIN
`F', `f' : [ FIN ]
ELSE
IMPRIMA (OCION NO VALIDA)
FIN_CASO
El siguiente ejercicio lee una fecha representada por dos enteros, mes y ao y da como
resultado los das totales correspondientes al mes y al ao solicitado. Tambin tiene en
cuenta que Febrero puede tener 28 o 29 das si el ao es bisiesto. Un ao es bisiesto cuando
es mltiplo de 4 y no de 100 o cuando es mltiplo de 400.
#include "stdio.h"#include "conio.h"/* Das correspondientes a un mes de un ao dado
*/void main (void){ unsigned int dd, mm, aa; clrscr(); printf ("Introduzca Mes (mm) y Ao
(aaaa): "); scanf ("%d %d",&mm, &aa);
switch (mm)
{
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
dd = 31;
break;
case 4:
case 6:
case 9:
case 11:
dd = 30;
break;
case 2:
if ((aa %4 == 0) && (aa %100 != 0) || (aa %400 == 0))
dd = 29;
else
dd = 28;
break;
default:
printf ("\nEl Mes No Es Valido \n");
}
if (mm >= 1 && mm <= 12)
printf ("\nEl Mes %2d del Ao %4d Tiene %2d Das \n", mm, aa, dd);
getche();
}
El siguiente ejemplo calcula el importe a pagar por un vehculo al circular por una
autopista.
Se utilizar un tipo enumerado. Las variables de un tipo enumerado son tratadas como si
fueran de tipo INT. A cada elemento d un tipo ordinal se le asigna el nmero de orden
partiendo del 0. Este nmero de orden puede ser alterado, como se hace en el ejemplo.
#include "conio.h"
#include "stdio.h"
/* Calcula el impuesto a pagar por un vehculo al circular por una autopista(Peajes) */
void main (void)
{
enum tipo_vehculo
{
bicicleta = 1,
moto,
automvil,
camin
};
enum tipo_vehiculo vehiculo;
int km, tm, importe;
clrscr();
printf ("\t1 - bicicleta \n");
printf ("\t2 - moto \n");
printf ("\t3 - automvil \n");
printf ("\t4 - camin \n");
printf ("\n\tPulse la Opcin Deseada: "); scanf ("%d", &vehiculo);
switch (vehculo)
{
case bicicleta:
importe = 100;
break;
case moto:
case automovil:
printf ("\nKilometros?: "); scanf ("%d", &km);
importe = 30 * km;
break;
case camion:
printf ("\nKilometros y Toneladas?: ");
scanf ("%d %d", &km, &tm);
importe = 30 * km + 25 * tm;
break;
default:
printf ("\nLa opcin no es correcta \n");
}
if (vehculo >= bicicleta && vehculo <= camin)
printf ("\nImporte = %d\n", importe);
getche();
}
Ejercicio
Elabore un algoritmo para que lea un carcter cada vez hasta que llegue un *, si el carcter
ledo corresponde a la letra del nombre de un da de la semana, que imprima el nombre de
dicho da y si no, que imprima un mensaje de error. Al final del proceso debe mostrar
cuantas repeticiones hubo de cada da, y los errores cometidos.
Evaluacin: Realizar el algoritmos propuesto con el fin de afianzar conocimientos y
destrezas en el uso de las sentencias CASO.
Bibliografa: Guillermo Correa Uribe (1998), Desarrollo de Algoritmos Y Sus Aplicaciones
en Basic, Pascal, Cobol y C, McGraw-Hill.
Francisco Javier Ceballos (1990), Curso de Programacin con C, Macrobit.
Manuel Abellanas y Dolores Lodares (1990), Anlisis de algoritmos y teora de grafos, Ra-
Ma
Selim G. Akl (1989), The Desing and Analysis of Parallel Algorithms, Prentice-Hall.
Traduccin al castellano (1992): Diseo y Anlisis de Algoritmos Paralelos, Ra-Ma
Gua de Aprendizaje
Duracin: 2 horas
Modulo: Programacin de Computadores.
Tema: LECCIN 11, SENTENCIAS SWITCH.
Introduccin: Cuando se plantea la necesidad de examinar varios casos correspondientes a
diversos valores de una variable, segn los cuales en necesario emprender tareas diferentes,
es ms fcil utilizar una sentencia SWITCH que alguna combinacin ms o menos
compleja de sentencias SI - SINO.
Objetivos: Evitar el nido exagerado de preguntas (SI anidados).
Permitir ejecutar una de varias acciones, en funcin del valor de una expresin.
Recursos Tablero Acrlico.
Didcticos Marcadores borrables.
Material textual de apoyo.
Desarrollo:
La estructura de una sentencia SWITCH es la siguiente:
SWITCH (EXPRESIN)
{
[DECLARACIONES]
CASO CONSTANTE 1:
[SENTENCIAS 1;]
[CASO CONSTANTE 2:]
[SENTENCIAS 2;]
.
.
[DEFAULT:]
[SENTENCIAS N]
}
EXPRESIN Es una constante de caracteres o una expresin constante. El valor es
convertido a tipo int.
SENTENCIA: puede ser simple o compuesta.
Al principio del cuerpo de la sentencia SWITCH, puede aparecer DECLARACIONES. Las
inicializaciones, si las hay, son ignoradas.
La sentencia SWITCH evala la expresin entre parntesis y compara su valor con las
constantes de cada CASO. La ejecucin de las sentencias del cuerpo de la sentencia
SWITCH, comienza en el CASO cuya constante coincida con el valor de la EXPRESIN y
continua hasta el final del cuerpo o hasta una sentencia que transfiera el control fuera del
cuerpo (por ejemplo BREAK). La sentencia SWITCH puede incluir cualquier nmero de
clusulas CASO.
Si no existe un valor igual al valor de la EXPRESION, entonces se ejecutan las sentencias a
continuacin de FEFAULT, si esta clusula ha sido especificada. La clusula DEFAULT
puede colocarse en cualquier parte del cuerpo y no necesariamente al final.
Ejercicio
Supongamos que el horario de consultas de un mdico est condicionado segn el da de la
semana de acuerdo con las siguientes pautas: lunes y jueves atiende de 10 a 12 de la
maana, mircoles atiende de 2 a 4 de la tarde, martes y viernes la consulta es de 2 a 5 de la
tarde y los dems das no atiende.
Elabore un algoritmo que le informe el da y el horario cuando se introduzca el nmero del
da, entendiendo que el lunes es el primero, y as sucesivamente.
Evaluacin: Realizar el algoritmo propuesto con el fin de afianzar conocimientos y
destrezas en el uso de las sentencias SWITCH.
Bibliografa: Guillermo Correa Uribe (1998), Desarrollo de Algoritmos Y Sus Aplicaciones
en Basic, Pascal, Cobol y C, McGraw-Hill.
Francisco Javier Ceballos (1990), Curso de Programacin con C, Macrobit.
Manuel Abellanas y Dolores Lodares (1990), Anlisis de algoritmos y teora de grafos, Ra-
Ma
Selim G. Akl (1989), The Desing and Analysis of Parallel Algorithms, Prentice-Hall.
Traduccin al castellano (1992): Diseo y Anlisis de Algoritmos Paralelos, Ra-Ma
Varios autores (1999), Curso Prctico de Programacin de Computadores, CEKIT S.A.,
Tomo I.
Gua de Aprendizaje
Duracin: 2 horas
Modulo: Programacin de Computadores.
Tema: LECCIN 12, SENTENCIA BREAK.
Introduccin: Esta sentencia finaliza la ejecucin de la sentencia DO (HAGA), FOR
(PARA), SWITCH o WHILE (MIENTRAS) en la cual aparece. Cuando varias sentencias
se encuentran anidadas, la sentencia BREAK solamente finaliza la ejecucin de la sentencia
donde est incluida..
Objetivos: Recordar que si en una sentencia SWITC no se incluye la sentencia BREAK, el
proceso seguir ejecutando cada una de las restantes clusulas CASO.
Permitir ejecutar una de varias acciones, en funcin del valor de una expresin.
Recursos Tablero Acrlico.
Didcticos Marcadores borrables.
Material textual de apoyo.
Desarrollo:
Si despus de una clusula CASO se escribe un BREAK, en caso de ser ejecutada se
produce la salida de la sentencia CASO.
Ejemplo
El siguiente ejemplo ilustra la forma ms acostumbrada de construir un men mediante la
utilizacin de las sentencias SWITCH y BREAK.
#include "conio.h"#include "ctype.h"#include "stdio.h"/* Construccion de un Menu
*/#define VERDADERO 1#define FALSO 0
void main (void)
{
int a, b, salir;
float c;
char opcion;
char *mensaje;
mensaje = "1. SUMA\n\
2. RESTA\n\
3. PRODUCTO\n\
4. DIVISION\n\
5. SALIR\n\
ESCOJA SU OPCION: ";
salir = FALSO;
do
{
clrscr();
printf ("Primer Numero: "); scanf ("%d", &a);
printf ("Segundo Numero: "); scanf ("%d", &b);
puts (mensaje);
opcion = getch();
switch (opcion)
{
case '1':
c = a + b;
break;
case '2':
c = a - b;
break;
case '3':
c = a * b;
break;
case '4':
c = (float)a / b;
break;
case '5':
printf ("Esta usted seguro (s/n)? ");
if (toupper (getch()) == 'S')
salir = VERDADERO;
break;
default:
puts ("Opcion Inavlida");
c = 0.0;
}
printf ("\nResultado = %6.2f", c);
getche();
}
while (!salir);
}
La sentencia SWITCH (OPCION) indica comparar el valor que tiene la variable OPCION
con cada uno de los valores selectos `1', `2', `3', `4' y `5', que son algunos de los caracteres
posibles. En cada caso se opta por una determinada operacin matemtica. El caso
DEFAULT corresponde a la situacin en que OPCIN no reciba del teclado ninguno de
estos valores.
La declaracin CHAR *MENSAJE, se lee textualmente: el valor al cual la variable
MENSAJE es de tipo CHAR. Vale la pena hacer aqu una pequea digresin sobre el tema
de los punteros o apuntadores. El operador unario asterisco (*) es llamado de indireccin o
desreferencia y equivale al universo del operador ampersand (&). El primero indica el valor
hacia donde apunta la variable a la cual afecta (que debe ser un puntero o direccin). El
segundo indica la direccin donde est contenido el valor de la variable. Por ejemplo, en las
instrucciones SCANF, para indicar dnde se debe almacenar el valor introducido por el
teclado, se expresa por medio de &A y &B respectivamente, con lo cual se quiere decir:
en las direcciones de las variables A y B.
Evaluacin: Investigar o profundizar sobre estas estructuras, su manera adecuada de
funcionar, bajo que medio como funciona y en s todo lo relacionado con ella.

Potrebbero piacerti anche