Está en la página 1de 26

Algoritmos

Introducción a los Problemas. Clases de Algoritmos y Elementos Necesarios. Utilidades. Instrucción


de Asignación. Enunciados de Repetición. Sentencias Caso. Sentencias Switch. Sentencias Break

Guía de Aprendizaje

Duración: 2 horas

Modulo: Programación de Computadores.

Tema: LECCIÓN 1, INTRODUCCIÓN A LOS PROBLEMAS

Introducción: Por medio de esta guía se describen las etapas para resolver un problema cualquiera usando un
computador, afianzando las pocas ideas de programación y solución de problemas usando algoritmos.

Objetivos: 1. Describir el enfoque de sistemas para la solución de problemas.

2. Concientizar al alumno sobre el uso de los algoritmos en la solución de problemas de la vida real.

 Describir las fases de desarrollo d un sistema de procesamiento de datos.

Recursos Tablero Acrílico.

Didácticos Marcadores borrables.

Material textual de apoyo.

Desarrollo:

Etimológicamente, 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 varía con el ámbito o con el contexto donde están planteados; así, existen problemas matemáticos,
químicos, filosóficos, etc. Consideramos aquí sólo aquellos problemas cuya solución 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 descripción simple y precisa de él, resulta complejo modelar, similar o programar
una solución en el computador. En este punto, hay que destacar también la importancia de ciertos aspectos
relacionados con la solución de problemas: notaciones de representaciones, estrategias, relaciones entre
problemas, etc.

En general, conviene expresar un problema utilizando algún modelo formal. Por ejemplo, un modelo aritmético
puede resultar adecuado para problemas de naturaleza numérica o un modelo basado en gramáticas formales
puede servir para problemas de procesamiento simbólico o de textos.

Una vez modelado el problema, puede buscarse una solución 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 solución algorítmica es importante elegir
una representación adecuada de los datos para que dicha solución resulte eficiente.

Para convertir un algoritmo, que puede estar expresado en una notación informal o seudolenguaje, en un
programa será necesario pasar por varias etapas de formalización o refinamiento progresivo. El objetivo final
es describir una solución algorítmica al problema inicialmente planteado mediante el uso de las
construcciones formales de un lenguaje de programación. Dicho programa se podrá ejecutar en un
computador, y para un conjunto de datos de entrada producirá unos resultados esperados.

ASPECTOS DE LA SOLUCIÓN DE PROBLEMAS

No existe un método universal que permita resolver cualquier problema. En general, la solución de problemas
es un proceso creativo donde el conocimiento, la habilidad y la experiencia tienen un papel importante. El
proceder de manera sistemática puede ayudar en la solución. 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
cómo resolver el problema. Esta etapa de definición lleva consigo eliminar las ambigüedades y la información
irrelevante que aparezcan en el enunciado de un problema, y saber exactamente qué elementos constituyen
una solución válida.

Al comenzar a abordar un problema es necesario tener en cuenta que, para la mayoría 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 elaboración. Las etapas son:

 Definición y delimitación del problema a solucionar: Por computador se pueden resolver cualquier
clase de problema una vez definidos los pasos o instrucciones.
 Seudocódigo 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 lógico de su ejecución para darle una eficiente solución al problema. Aquí es
donde radica toda la dificultad para solucionar un problema por computador; el resto de las etapas
básicamente se circunscriben a la adaptación para que un computador determinado ejecute los pasos o
instrucciones planteados en el seudocódigo y se obtengas los resultados esperados.

 Prueba de escritorio: Luego de realizar el seudocódigo viene la prueba de escritorio, la cual consiste en
hacer un seguimiento manual de los pasos seguidos que se definieron en el seudocódigo y comprobar, con
base en sus datos, si el resultado al cual se llega es el esperado.

 Codificación: Es la escritura de las instrucciones o enunciados, determinados en la etapa de la


diagramación o la seudocodificación en un lenguaje de alto nivel (Basic, Cobol, Pascal, C, etc.) incluyendo las
instrucciones de control adecuadas al computador donde se vayan a ejecutar.

 Digitación: Ya codificadas las instrucciones se convierten a un medio legible para el computador. Es


pasar las instrucciones al editor del lenguaje de programación a utilizar.

 Compilación: Es aquí donde el computador “Chequea” si todas las instrucciones están escritas
correctamente desde el punto de vista de la sintaxis y gramática de cada lenguaje y las transcribe, dentro de
la memoria, del lenguaje de alto nivel al lenguaje de máquina para obtener el llamado programa objeto.

 Ejecución del Programa: El programa objeto es ejecutado por el computador para llegar a los resultados
esperados, utilizando los dispositivos, unidades y memoria necesaria, según cada paso o programa.

 Evaluación de Resultados: Obtenidos los resultados se les evalúa 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 solución general de problemas (no
necesariamente a problemas informáticos); sin embargo, estas ideas se pueden particularizar para resolver
problemas donde se use el computador como herramienta. A veces, la situación más frecuente para mucha
gente es comenzar a programar la solución de un problema que no está completamente definido, o pensar en
detalles de implementación sin saber cómo abordar el problema independientemente del computador. Es
mucho más productivo conocer primero un problema lo suficiente y plantear una estrategia adecuada para su
solución, que comenzar prematuramente a programar la solución a un problema incompleto, ambiguo o que
no ha sido analizado adecuadamente.

Evaluación: 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.

Bibliografía: Desarrollo de Algoritmos Y Sus Aplicaciones, Correa Uribe Guillermo, McGraw-Hill.

Curso de Programación con C, Francisco Javier Ceballos, Macrobit.

Guía de Aprendizaje

Duración: 2 horas

Modulo: Programación de Computadores.

Tema: LECCIÓN 2, CLASES DE ALGORITMOS Y ELEMENTOS NECESARIOS

Introducción: Existen varias clases de algoritmos y elementos que le hacen la vida más fácil a los diseñadores
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 solución de problemas.

2. Reconocer fácilmente cada elemento escrito en un algoritmo.

Recursos Tablero Acrílico.

Didácticos 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, (solución de un problema,
obtención de una respuesta intermedia o realización 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 obtención de una respuesta o solución de un problema cualquiera.

Como ejemplo podemos decir que la utilización de un directorio (Búsqueda de un teléfono). Para poder buscar
un teléfono en un directorio, se debe conocer el algoritmo que se va a utilizar, es decir la forma en que están
codificados los nombres de las personas, para así lograr encontrarlos y localizar el número telefónico
correspondiente.

 Algoritmos Cuantitativos: Son aquellos pasos o instrucciones que involucran cálculos numéricos para
llegar a un resultado satisfactorio.

Como ejemplo podemos citar los pasos para resolver una ecuación de segundo grado, los pasos lógicos 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 números. Dicho nombre debe ser mnemotécnico, 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 también puede tener asociado un valor lógico 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.

Evaluación: 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.

Bibliografía: Guillermo Correa Uribe (1998), Desarrollo de Algoritmos Y Sus Aplicaciones en Basic, Pascal,
Cobol y C, McGraw-Hill.

Francisco Javier Ceballos (1990), Curso de Programación con C, Macrobit.

Manuel Abellanas y Dolores Lodares (1990), Análisis de algoritmos y teoría de grafos, Ra-Ma

Guía de Aprendizaje

Duración: 2 horas

Modulo: Programación de Computadores.

Tema: LECCIÓN 3, ELEMENTOS NECESARIOS.

Introducción: Existen varios elementos que le hacen la vida más fácil a los diseñadores 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 solución de problemas.

2. Reconocer fácilmente cada elemento escrito en un algoritmo.

Recursos Tablero Acrílico.

Didácticos 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 numéricos: los relativos a diferentes clases de números. Son enteros (sin parte
decimal) y reales (con parte entera y decimal).

• datos tipo carácter (cadena): son caracteres que puede interpretar la computadora: alfabéticos A -
Z, a - z; dígitos 0 - 9; especiales $, *, >, <, . , “, ´´,; :,.... Un dato tipo carácter es un solo carácter.

Los caracteres se organizan en cadenas (secuencia de caracteres válidos encerrados entre comillas o
comillas dobles).

• datos lógicos o booleanos: aquellos que sólo 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 numéricos que no cambian durante la ejecución del programa. Pueden
estar precedidos de un signo o un carácter + o - y pueden contener el carácter . (punto). Las hay enteras,
reales, caracteres, cadena de caracteres y booleanas.

Variables: conjunto de caracteres alfabéticos o alfanuméricos tal que su primer carácter sea alfabético,
ejemplos: José, M1, kont.

• Pueden cambiar su valor durante la ejecución del programa.

• Una variable siempre tendrá asignado un valor de una constante.

• Es conveniente utilizar nombres significativos, mnemotécnicos, que sugieran lo que representan para
facilitar la lectura y comprensión del algoritmo.

Operadores Aritméticos:

suma +

resta -

multiplicación *

división /

potenciación ^

división entera \ ó div

resto de división entera mod

Prioridad de las operaciones aritméticas:

*, /

+, -

div, mod

• Todas las subexpresiones entre paréntesis se evalúan primero. Las subexpresiones con paréntesis
anidados se evalúan de dentro - a fuera; el paréntesis más interno se evalúa primero.

• La prioridad de operaciones dentro de una misma expresión o subexpresión, los operadores se


evalúan en el siguiente orden:

Primero *, /, Div, Mod.

Ultimo +, -.

• Regla asociativa izquierda. Los operadores de una misma expresión o subexpresión con igual nivel
de prioridad (tal como * y /) se evalúan 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 operación “expresión1 operador relacional expresión2” será verdadero o falso.

Estos operadores de relación se pueden aplicar a cualquiera de los cuatro tipos de datos estándar: entero,
real, lógico y carácter.

Operadores Lógicos: permiten relaciones lógicas (si/no) y sirven para representar condiciones compuestas.

no (not) no p negación de p

y (and) p y q conjunción de p y q

o (or) p o q disjunción de p y q

Teniendo en cuenta los datos anteriores la siguiente expresión tiene como resultado:

3 + 5 * (10 - (2 + 4)) = ¿?

Evaluación: Resolver el ejercicio planteado en la forma que usted cree más conveniente.

Bibliografía: Guillermo Correa Uribe (1998), Desarrollo de Algoritmos Y Sus Aplicaciones en Basic, Pascal,
Cobol y C, McGraw-Hill.

Francisco Javier Ceballos (1990), Curso de Programación con C, Macrobit.

Manuel Abellanas y Dolores Lodares (1990), Análisis de algoritmos y teoría de grafos, Ra-Ma

Guía de Aprendizaje

Duración: 2 horas

Modulo: Programación de Computadores.

Tema: LECCIÓN 4, INTRODUCCIÓN A LOS ALGORITMOS

Introducción: Los lenguajes de programación permiten expresar los algoritmos en una notación formal que
pueda ser reconocida y ejecutada por el computador.

Objetivos: 1. Utilizar los algoritmos para la solución de problemas.

2. Describir las fases de desarrollo de un sistema de procesamiento de datos.

Recursos Tablero Acrílico.

Didácticos Marcadores borrables.

Material textual de apoyo.

Desarrollo:

Hasta ahora se han realizado algunos comentarios respecto a la necesidad de diseñar algoritmos correctos y
eficientes utilizando los elementos de un lenguaje de programación. El acto de diseñar algoritmos puede
considerarse como una tarea que difícilmente podrá ser del todo automatizada. Todo problema es un reto
para el diseñador: algunos resultan inmediatos de resolver, otros son bastante complejos. La investigación en
esta área ha permitido descubrir un conjunto de métodos o esquemas de diseño hacia los cuales puede
orientarse la realización de muchos algoritmos. No obstante, y a pesar de que resulta más adecuado en
bastantes casos utilizar algunos de estos esquemas que realizar un diseño “desde cero”, idear un algoritmo
continúa siendo una labor bastante creativa donde los conocimientos y la experiencia del propio diseñador
tienen un papel fundamental.

Dos técnicas de las más usadas en la práctica son divide y vencerás y el método voraz.

Divide y vencerás: Consiste en descomponer un problema en subproblemas, resolver independientemente


los subproblemas para luego combinar sus soluciones y obtener la solución del problema original. Esta
técnica se puede aplicar con éxito a problemas como la multiplicación de matrices, la ordenación de vectores,
la búsqueda en estructuras ordenadas, etc.

Como ejemplo sencillo de aplicación de esta estrategia puede considerarse la búsqueda de una palabra en un
diccionario de acuerdo con el siguiente criterio. Se abre el diccionario por la página central (quedando dividido
en dos mitades) y se comprueba si la palabra aparece allí o si lexicográficamente 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.

Método Voraz: Este método trata de producir algún tipo de mejor resultado a partir de un conjunto de
opciones candidatas. Para ello, se va procediendo paso a paso realizándose la mejor elección (usando
una función objetivo que respeta un conjunto de restricciones) de entre las posibles. Puede emplearse
en problemas de optimización, como el conocido de la mochila, en la búsqueda de caminos mínimos
sobre grafos, la planificación en el orden de la ejecución de unos programas de computador.

Consideremos ahora el problemas de la devolución 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), continúa aplicándose el mismo criterio para la segunda moneda más valiosa, y
así sucesivamente. El proceso finaliza cuando se ha devuelto todo el cambio.

Evaluación: 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.

Bibliografía: Guillermo Correa Uribe (1998), Desarrollo de Algoritmos Y Sus Aplicaciones en Basic, Pascal,
Cobol y C, McGraw-Hill.

Francisco Javier Ceballos (1990), Curso de Programación con C, Macrobit.

Manuel Abellanas y Dolores Lodares (1990), Análisis de algoritmos y teoría de grafos, Ra-Ma

Guía de Aprendizaje

Duración: 2 horas

Modulo: Programación de Computadores.

Tema: LECCIÓN 5, UTILIDAD DE LOS ALGORITMOS

Introducción: 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 mínimas y el orden en el cual debemos ejecutarlas.

Objetivos: 1. Utilizar las diferentes clases de algoritmos para la solución de problemas.

2. Reconocer fácilmente cada elemento escrito en un algoritmo.

Recursos Tablero Acrílico.

Didácticos Marcadores borrables.

Material textual de apoyo.

Desarrollo:

Cuando se tiene un problema para el cual debemos especificar un algoritmo solución tendremos en cuenta
varios puntos:

• Si no se conoce un método para solucionar el problema, debemos hacer un análisis del mismo para
llegar a una solución luego de evaluar alternativas, escogencias y excepciones.

• Si se conoce un “buen” método de solución al problema, entonces se debe especificar el método de


solución en un lenguaje que se pueda interpretar fácilmente.

• Los problemas pueden agruparse en conjuntos de problemas que tienen algo en común. Puede
existir un método que dé solución al conjunto.

• Hay criterios para determinar qué tan “buena” es una solución, indiferente de ver si trabaja o no, o
hasta qué punto es general la aplicabilidad del método. Estos criterios involucran cosas como
eficiencia, elegancia, velocidad, etc.
• Al definir con exactitud un método de solución para un problema, éste debe ser capaz de encontrar la
solución, si existe y en caso contrario suspender toda acción.

• El método de solución debe ser compatible con el dispositivo usado. En nuestro caso el
microcomputador o PC. Es decir, la solución debe enunciarse en un lenguaje soportado por el
dispositivo a usarse.

CARACTERÍSTICAS DE LOS ALGORITMOS

 Entrada: todo algoritmo debe tener cero (0) o más elementos de entrada. Como valores, cantidades,
condiciones, etc.

 Proceso: cálculos necesarios para encontrar la solución del problema.

 Salida: todo algoritmo produce uno o más elementos como resultado.

 Finito: todo algoritmo tiene un número fijo de pasos.

• Hay algoritmos para los cuales el número de pasos es fijo o tiene un máximo estipulado. (se necesita
controlar el número de pasos - contador)

• Hay algoritmos para los cuales el número máximo de pasos está relacionado con los datos y se
puede calcular a priori o predecirlos.

• Hay otros algoritmos que el número máximo de pasos está relacionado con los datos pero no
podemos predecir el número de pasos.

 Precisión: cada paso del algoritmo debe definirse con exactitud, sin ambigüedades.

 Validez: el algoritmo debe ser exitoso y producir resultados esperados. Si el número de pasos está
condicionado a un dato y este no se da, el proceso nunca terminaría y diremos por tanto que el algoritmo es
no-válido.

Ejemplos De Algoritmos:

 Cambiar una llanta: Juan recibe la siguiente información: “su automóvil tiene una llanta pinchada”.

Juan se dirige al parqueadero con el objeto de cambiar la llanta pinchada. Entonces,

debe revisar llantas (subproceso)

si están bien, devolverse

sino asegurar vehículo

colocar gato y aflojar pernos

reemplazar llanta

asegurar llanta

guardar herramienta

 Directorio telefónico: supongamos que Juan encontró una llanta pinchada y no sabe repararla.

Busca un directorio telefónico para consultar el número telefónico 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 solución.

 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. Cómo obtener 2l de agua en la de 5l si no tiene medidor exacto? De
una solución.
 Los platillos: se tiene una balanza de 2 brazos y 6 platillos metálicos p1, p2, p3,...p6. Todos los platillos
excepto uno tienen el mismo peso y uno es más pesado que los demás. Encontrar el más pesado.

Evaluación: Resolver los ejercicios planteados en la forma que usted cree más conveniente, siempre y cuando
siga los parámetros dados y se obtengan las respuestas esperadas. Estos ejercicios los pueden resolver en
grupo, teniendo en cuenta el criterio personal y grupal.

Bibliografía: Guillermo Correa Uribe (1998), Desarrollo de Algoritmos Y Sus Aplicaciones en Basic, Pascal,
Cobol y C, McGraw-Hill.

Francisco Javier Ceballos (1990), Curso de Programación con C, Macrobit.

Manuel Abellanas y Dolores Lodares (1990), Análisis de algoritmos y teoría de grafos, Ra-Ma

Guía de Aprendizaje

Duración: 2 horas

Modulo: Programación de Computadores.

Tema: LECCIÓN 6, INSTRUCCIÓN DE ASIGNACIÓN, ENUNCIADOS DE DECISIÓN.

Introducción: La importancia de un seudocódigo en la programación de computadores estriba en la facilidad


de describir y representar claramente en un lenguaje no formal (casi personal) las instrucciones de un
algoritmo, que más tarde, dependiendo del lenguaje formal que se vaya a utilizar, servirá de base para el
código o programa fuente.

Objetivos: 1. Agilizar y complementar las instrucciones empleadas en los algoritmos.

2. Implementar los algoritmos antes planeados de una manera más lógica y más acorde con el lenguaje a
utilizar.

Recursos Tablero Acrílico.

Didácticos Marcadores borrables.

Material textual de apoyo.

Desarrollo:

Un enunciado o una instrucción de asignación es una acción o proceso por el cual se le asigna un valor
(constante o variable) o el resultado de una operación (expresión) a una variable. Los enunciados de
asignación 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 asignación.

Debe tenerse en cuenta que en la parte izquierda de un enunciado de asignación siempre va y debe de ir una
variable.

Con una flecha (!) podemos definir que es una asignación e indica que el valor de la parte derecha del
enunciado (variable, expresión o constante) se le asigna a la parte de la izquierda (variable). Sin embargo
muchas personas acostumbran utilizar el signo (=) para indicar la asignación.

El enunciado de asignación es asimétrico. Esto quiere decir que la expresión de la derecha es evaluada, para
ser asignado el resultado o la variable especificada a la izquierda. De acuerdo con esta definición no sería
válida la sentencia:

3.141592 * R * R = Área

Lo correcto sería.

Área = 3.141592 * R * R

REGLAS PRÁCTICAS A TENER EN CUENTA AL MOMENTO DE LA CONSTRUCCIÓN DE ENUNCIADOS:

 Toda variable que aparezca al lado derecho de un enunciado de asignación debe estar definida

 En un enunciado de asignación 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 asignación, conservan su valor
después de ejecutarse el enunciado.
 Si la variable de la parte izquierda se encuentra también al lado derecho, ésta variable cambia de valor por
aparecer en la izquierda.

ENUNCIADOS DE DECISIÓN

En el desarrollo de un algoritmo la mayoría de las veces se verá abocado a situaciones de excepción o


comparación 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. Básicamente
los enunciados de decisión se utilizan para tomar una acción o conocer el estado de alguna situación en
especial.

Todo enunciado de decisión generalmente permite como respuestas o salidas dos alternativas, un Si o un No.
También pueden expresarse las salidas utilizando operadores relacionales, las palabras CIERTO o FALSO o
las palabras ENTONCES o SINO.

La composición de un enunciado de decisión podría ser:

SI (VARIABLE vs VARIABLE) ENTONCES

Enunciado(s)O

SINO

Enunciado(s)

FIN_SI

CONDICIONES DE LOS ENUNCIADOS DE DECISIÓN

COMPOSICIÓN EJEMPLO
Se Puede Comparar:
(NETO <= 200000)
VARIABLE contra CONSTANTE
(HRSEXTRAS < HRNORMALES)
VARIABLE contra VARIABLE
(NETO = (VRHR * HRTRA)
VARIABLE contra EXPRESIÓN
((SALARIO - DESCTOS) = 200000)
EXPRESIÓN contra CONSTANTE
((DEVENGADO - ISS) = NETO)
EXPRESIÓN contra VARIABLE
((SALARIO - DESCTOS) = (NETO - ISS))
EXPRESIÓN contra EXPRESIÓN
(200000 > NETO)
CONSTANTE contra VARIABLE
(200000 >= (DEVENGADO - ISS))
CONSTANTE contra EXPRESIÓN

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, sólo 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 sólo 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, sólo 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 número 1 en vez
de la palabra “masculino” o el número 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, sólo
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 demás casos imprima el nombre de la persona
solamente.
Evaluación: Resolver los ejercicios planteados en la forma que usted cree más conveniente, siempre y cuando
siga los parámetros dados y se obtengan las respuestas esperadas. Estos ejercicios los pueden resolver en
grupo, teniendo en cuenta el criterio personal y grupal.

Bibliografía: Guillermo Correa Uribe (1998), Desarrollo de Algoritmos Y Sus Aplicaciones en Basic, Pascal,
Cobol y C, McGraw-Hill.

Francisco Javier Ceballos (1990), Curso de Programación con C, Macrobit.

Manuel Abellanas y Dolores Lodares (1990), Análisis de algoritmos y teoría de grafos, Ra-Ma

Selim G. Akl (1989), The Desing and Analysis of Parallel Algorithms, Prentice-Hall.

Traducción al castellano (1992): Diseño y Análisis de Algoritmos Paralelos, Ra-Ma

Guía de Aprendizaje

Duración: 2 horas

Modulo: Programación de Computadores.

Tema: LECCIÓN 7, ENUNCIADOS DE REPETICIÓN.

Introducción: La ventaja fundamental que tiene un computador es el de hacer las operaciones supremamente
rápido. Debido a esta circunstancia el computador se utiliza para ejecutar un conjunto de enunciados
repetitivamente para así aprovechar su velocidad. Los enunciados de repetición permiten como su nombre lo
indica repetir varias o muchas veces un conjunto de enunciados según se necesite de acuerdo a una
condición.

Objetivos: 1. Complementar los algoritmos anteriores de modo que se puedan ejecutar no sólo

una vez sino muchas veces.

2. Agilizar la ejecución y eliminar las instrucciones no necesarias, pues con los enunciados de repetición
muchas de estas instrucciones sobran.

Recursos Tablero Acrílico.

Didácticos Marcadores borrables.

Material textual de apoyo.

Desarrollo:

Existen varios tipos de enunciados de repetición a saber:

Sentencia Mientras Que (While): En esta sentencia el número 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 condición. Por esta razón, esta sentencia se denomina Ciclo o sentencia Condicional.

Ejecuta una sentencia, simple o compuesta, cero o más veces, dependiendo del valor de una expresión.

MIENTRAS (CONDICIÓN) HAGA

SENTENCIA(S)

FIN_MIENTRAS

Condición es cualquier expresión numérica, relacional o lógica.

Sentencia es una instrucción simple o compuesta.

Reglas de funcionamiento

 La condición se evalúa antes y después de cada ejecución. Si la condición es verdadera, se ejecuta el


ciclo, y si es falsa, el control pasa a la sentencia siguiente del ciclo.

 Si la condición 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 condición sea verdadera el ciclo se ejecutara. Esto significa que se ejecutara indefinidamente a
menos que algo en su interior modifique la condición haciendo que su valor cambie a falso. Si la expresión
nunca cambia de valor entonces el ciclo no termina nunca y se define como un ciclo infinito o sin fin (que no
es lo más deseable).

PRECAUCIONES

 La condición lógica de un ciclo Mientras debe tener un valor la primera vez que se evalúa; en caso
contrario, el programa abortará al ejecutarse el ciclo Mientras.

 La condición lógica 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 condición lógica es falsa la
primera vez que se evalúa.

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 , además del cuerpo y de la condición de salida.

 Inicialización de una variable de control.

 Comprobación 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 antelación cuantas repeticiones
se deben ejecutar exactamente. Cada vez que se ejecute el cuerpo del ciclo, el contador se incrementa en un
número 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 múltiplos 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 Número hasta el cual se generarán los múltiplos de 3

VARCON Variable de control

Resolver

 Imprima los 100 primeros números naturales.

 Imprima los números pares comprendido entre 1 y 1000

 Lea un número entero positivo y obtenga los múltiplos de tres (3) comprendidos entre 1 y el número leído.

 Leer varios registros cada uno de los cuales contiene un nombre. Imprima los nombres.

 Imprima la tabla de multiplicar de un número leído por teclado, y con el multiplicador de 1 a 15.

Evaluación: Resolver los ejercicios planteados en la forma que usted cree más conveniente, siempre y cuando
siga los parámetros 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 más representativos de esta clase de ciclos, para luego realizar un
examen individual, donde se medirán los conocimientos adquiridos durante las anteriores secciones de clase.

Bibliografía: Guillermo Correa Uribe (1998), Desarrollo de Algoritmos Y Sus Aplicaciones en Basic, Pascal,
Cobol y C, McGraw-Hill.

Francisco Javier Ceballos (1990), Curso de Programación con C, Macrobit.

Manuel Abellanas y Dolores Lodares (1990), Análisis de algoritmos y teoría de grafos, Ra-Ma

Selim G. Akl (1989), The Desing and Analysis of Parallel Algorithms, Prentice-Hall.

Traducción al castellano (1992): Diseño y Análisis de Algoritmos Paralelos, Ra-Ma

Duración: 2 horas

Modulo: Programación de Computadores.

Tema: LECCIÓN 8, CICLO MIENTRAS CONTROLADOS CON UNA CONDICIÓN.

Introducción: En la sección 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 también se pueden controlar por medio de una condición.

Objetivos: 1. Utilizar las maneras más eficientes (no sólo una) para resolver cualquier clase de

problema que tenga que ver con repeticiones.

2. Agilizar la ejecución y eliminar las instrucciones no necesarias, pues con los enunciados de repetición
muchas de estas instrucciones sobran.

Recursos Tablero Acrílico.

Didácticos Marcadores borrables.

Material textual de apoyo.

Desarrollo:

Ciclos controlados por una condición

Estas instrucciones son utilizadas cuando no se conoce por anticipado el número 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 continuación del ciclo, el cual sólo continua si el usuario decide si hay más
entradas.
Ejemplo

SUMA = 0

IMPRIMA (“DESEA CONTINUAR S / N:”)

LEA RESPUESTA

MIENTRAS (RESPUESTA = `S') HAGA

IMPRIMA (“INTRODUZCA UN NÚMERO....”)

LEA NUM

SUMA = SUMA + NUM

IMPRIMA (“DESEA CONTINUAR S / N:”)

LEA RESPUESTA

FIN_MIENTRAS

 Dato O Valor Centinela

Centinela es un valor utilizado para señalar 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 números enteros
positivos, un número negativo quedaría bien como dato centinela.

El siguiente ejemplo suma una lista de números negativo únicamente, y termina cuando entra un solo dígito
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 lógicas que se utilizan para conservar el
estado (verdadero o falso) de una condición. 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 repetición.

Estos Flag se representan con variables lógicas, 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.

Evaluación: Con base a los conocimientos ya adquiridos, estamos en capacidad de resolver cualquier
problema utilizando las técnicas adecuadas de programación

Bibliografía: Guillermo Correa Uribe (1998), Desarrollo de Algoritmos Y Sus Aplicaciones en Basic, Pascal,
Cobol y C, McGraw-Hill.

Francisco Javier Ceballos (1990), Curso de Programación con C, Macrobit.

Manuel Abellanas y Dolores Lodares (1990), Análisis de algoritmos y teoría de grafos, Ra-Ma

Selim G. Akl (1989), The Desing and Analysis of Parallel Algorithms, Prentice-Hall.

Traducción al castellano (1992): Diseño y Análisis de Algoritmos Paralelos, Ra-Ma

Duración: 2 horas

Modulo: Programación de Computadores.

Tema: LECCIÓN 9, CICLO REPETITIVO PARA


Introducción: Cuando se desea ejecutar una sentencia simple o compuesta, repetidamente un número de
veces conocido, la construcción adecuada es la sentencia PARA.

Objetivos: 1. Utilizar las maneras más eficientes (no sólo una) para resolver cualquier clase de

problema que tenga que ver con repeticiones.

2. Agilizar la ejecución y eliminar las instrucciones no necesarias, pues con los enunciados de repetición
muchas de estas instrucciones sobran.

Recursos Tablero Acrílico.

Didácticos Marcadores borrables.

Material textual de apoyo.

Desarrollo:

Este ciclo requiere que se conozca por anticipado el número 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 situación y no se conoce de antemano el número de repeticiones, entonces lo más viable para
utilizar en el ciclo Mientras o Repita en lugar de Para.

Composición 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 ejecución de la expresión o sentencia PARA sucede de la siguiente forma:

 Se inicializa la variable con un valor determinado.

 Se evalúa la expresión del Valor final.

 Si el resultado es distinto de cero (verdadero), se ejecuta la sentencia, se evalúa la expresión que da lugar
al Valor final.

 Si el resultado de 2, es cero (falso), la ejecución de la sentencia PARA se por finalizada y se continúa en la


siguiente sentencia del programa.

Ejemplo

PARA (I = 1; I <= 100; I++)

IMPRIMA (I)

FIN_PARA

Este ejemplo imprime los números 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 números 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 múltiplos 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 están 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 triángulo construido con caracteres consecutivos del código ASCII, como
el que aparece a continuación.

“#

$%&

`()*

+,-./

012345

#include "stdio.h"

#include "conio.h"

/* Este ejemplo construye un triángulo 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 posición 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 más columna actual es par.

• B Si se cumple, que la fila más columna actual es impar.

#include "stdio.h"#include "conio.h"

/* Este ejemplo construye un tablero de ajedrez con la posición de un alfil */void main (void){ clrscr(); int falfil,
calfil; /* Posición del alfil */

int fila, columna; /* Posición actual */

printf ("Posición 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 número de registros será indicado por un registro identificador.

 Elaborar un algoritmo que encuentre e imprima los números impares comprendidos entre cero y cuarenta.
Además hallar la suma de ellos.

 Elaborar un algoritmo que imprima el nombre y la edad de 20 personas.

 Elaborar un algoritmo que lea 40 números e imprima sólo los números negativos.

 Elaborar un algoritmo que lea 80 registros, donde cada uno tenga un numero y determine:

 La cantidad de números impares.

 La cantidad de números pares (Excluya el Cero).

 La cantidad de ceros.
Evaluación: Realizar los algoritmos propuestos con el fin de afianzar conocimientos y destrezas en el uso de
los ciclos PARA, tanto sencillos como anidados.

Bibliografía: Guillermo Correa Uribe (1998), Desarrollo de Algoritmos Y Sus Aplicaciones en Basic, Pascal,
Cobol y C, McGraw-Hill.

Francisco Javier Ceballos (1990), Curso de Programación con C, Macrobit.

Manuel Abellanas y Dolores Lodares (1990), Análisis de algoritmos y teoría de grafos, Ra-Ma

Selim G. Akl (1989), The Desing and Analysis of Parallel Algorithms, Prentice-Hall.

Traducción al castellano (1992): Diseño y Análisis de Algoritmos Paralelos, Ra-Ma

Guía de Aprendizaje

Duración: 2 horas

Modulo: Programación de Computadores.

Tema: LECCIÓN 10, SENTENCIAS CASO.

Introducción: Las sentencias CASO se le aplica a una variable que en su contenido pueda guardar un valor de
3 o más posibles valores. No es conveniente aplicar la sentencia CASO a la variable sexo, porque sólo puede
guardar un valor de entre dos posibles valores, ya que con sólo preguntar por uno de su valores se concluye
también el otro.

Objetivos: Evitar el nido exagerado de preguntas (SI anidados).

Recursos Tablero Acrílico.

Didácticos 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 sólo una) de las sentencias simples se
selecciona y ejecuta.

CASO (SELECCIÓN) HAGA

LISTA CONSTANTES 1: SENTENCIA 1;

LISTA CONSTANTES 2: SENTENCIA 2;

LISTA CONSTANTES N: SENTENCIA N;

[SINO

SENTENCIAS X]

FIN_CASO

REGLAS

 La expresión SELECCIÓN se evalúa y se compara con las listas de constantes; las listas de constantes
son listas d uno o más posibles valores de SELECCIÖN separadas por comas. Sólo se ejecuta una sentencia.
Si el valor de SELECCIÓN esta en la lista de constantes 1, se ejecutará la sentencia 1. El control se pasa
seguidamente a la primera sentencia a continuación del FIN_CASO. Cada sentencia puede ser a su vez una
sentencia simple o compuesta.

 la cláusula SINO es opcional como en la sentencia SI.

 Si el valor de SELECCIÓN no esta comprendido en ninguna lista de constantes y no existe la cláusula


SINO, no sucede nada y sigue el flujo del programa; si el valor de SELECCIÓN no coincide con alguna
constante, se ejecutan las sentencias a continuación de la cláusula SINO.
 La Selección debe ser un tipo (Integer, Char, Boolean o enumerado). Los números 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 SELECCIÓN.

 Toda sentencia, excepto la última, deben ir seguidas de punto y coma.

Ejemplo

LEA CARÁCTER

CASO CARÁCTER HAGA

`0'..'9' : IMPRIMA (“NUMERO”)

`A'..'Z' : IMPRIMA (“MAYUSCULA”)

`a'..'z' : IMPRIMA (“MINUSCULA”)

FIN_CASO

Las sentencias CASO son utilizados también en aquellos programas que deben presentar con mucha
frecuencia menús. Un menú son un conjunto de opciones que se le presentan al usuario, para los cuales se
debe elegir una opción de ellas, dependiendo de la decisión se realizará una serie de opciones.

Un menú podría ser:

N : Nombre

D : Dirección

T : Teléfono

C : Ciudad

F : Fin

El programa debe permitir elegir una de las 5 opciones presentadas. La opción se debe asignar una variable
SELECCIÓN de tipo char. El usuario podrá introducir el carácter en minúsculas o en mayúsculas.

LEA CARÁCTER

CASO CARÁCTER HAGA

`N', `n' : INICIO

IMPRIMA (“DIGITE SU NOMBRE: ”)

LEA NOMBRE

FIN

`D', `d' : INICIO

IMPRIMA (“DIGITE SU DIRECCIÓN: ”)

LEA DIRECCION

FIN

`T', `t' : INICIO

IMPRIMA (“DIGITE SU TELÉFONO: ”)

LEA TELÉFONO

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 año y da como resultado los días
totales correspondientes al mes y al año solicitado. También tiene en cuenta que Febrero puede tener 28 o 29
días si el año es bisiesto. Un año es bisiesto cuando es múltiplo de 4 y no de 100 o cuando es múltiplo de
400.

#include "stdio.h"#include "conio.h"/* Días correspondientes a un mes de un año dado */void main (void)
{ unsigned int dd, mm, aa; clrscr(); printf ("Introduzca Mes (mm) y Año (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 Año %4d Tiene %2d Días \n", mm, aa, dd);

getche();

El siguiente ejemplo calcula el importe a pagar por un vehículo 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 número de orden partiendo del 0. Este número de orden puede
ser alterado, como se hace en el ejemplo.

#include "conio.h"

#include "stdio.h"

/* Calcula el impuesto a pagar por un vehículo al circular por una autopista(Peajes) */

void main (void)

enum tipo_vehículo

bicicleta = 1,

moto,

automóvil,

camión

};

enum tipo_vehiculo vehiculo;

int km, tm, importe;

clrscr();

printf ("\t1 - bicicleta \n");

printf ("\t2 - moto \n");

printf ("\t3 - automóvil \n");

printf ("\t4 - camión \n");

printf ("\n\tPulse la Opci¢n Deseada: "); scanf ("%d", &vehiculo);

switch (vehículo)

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 opci¢n no es correcta \n");

if (vehículo >= bicicleta && vehículo <= camión)

printf ("\nImporte = %d\n", importe);

getche();

Ejercicio

Elabore un algoritmo para que lea un carácter cada vez hasta que llegue un *, si el carácter leído corresponde
a la letra del nombre de un día de la semana, que imprima el nombre de dicho día y si no, que imprima un
mensaje de error. Al final del proceso debe mostrar cuantas repeticiones hubo de cada día, y los errores
cometidos.

Evaluación: Realizar el algoritmos propuesto con el fin de afianzar conocimientos y destrezas en el uso de las
sentencias CASO.

Bibliografía: Guillermo Correa Uribe (1998), Desarrollo de Algoritmos Y Sus Aplicaciones en Basic, Pascal,
Cobol y C, McGraw-Hill.

Francisco Javier Ceballos (1990), Curso de Programación con C, Macrobit.

Manuel Abellanas y Dolores Lodares (1990), Análisis de algoritmos y teoría de grafos, Ra-Ma

Selim G. Akl (1989), The Desing and Analysis of Parallel Algorithms, Prentice-Hall.

Traducción al castellano (1992): Diseño y Análisis de Algoritmos Paralelos, Ra-Ma

Guía de Aprendizaje

Duración: 2 horas

Modulo: Programación de Computadores.

Tema: LECCIÓN 11, SENTENCIAS SWITCH.

Introducción: Cuando se plantea la necesidad de examinar varios casos correspondientes a diversos valores
de una variable, según los cuales en necesario emprender tareas diferentes, es más fácil utilizar una
sentencia SWITCH que alguna combinación más o menos compleja de sentencias SI - SINO.

Objetivos: Evitar el nido exagerado de preguntas (SI anidados).

Permitir ejecutar una de varias acciones, en función del valor de una expresión.

Recursos Tablero Acrílico.

Didácticos Marcadores borrables.

Material textual de apoyo.

Desarrollo:

La estructura de una sentencia SWITCH es la siguiente:


SWITCH (EXPRESIÓN)

[DECLARACIONES]

CASO CONSTANTE 1:

[SENTENCIAS 1;]

[CASO CONSTANTE 2:]

[SENTENCIAS 2;]

[DEFAULT:]

[SENTENCIAS N]

EXPRESIÓN Es una constante de caracteres o una expresión 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 evalúa la expresión entre paréntesis y compara su valor con las constantes de cada
CASO. La ejecución de las sentencias del cuerpo de la sentencia SWITCH, comienza en el CASO cuya
constante coincida con el valor de la EXPRESIÓN 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
número de cláusulas CASO.

Si no existe un valor igual al valor de la EXPRESION, entonces se ejecutan las sentencias a continuación de
FEFAULT, si esta cláusula ha sido especificada. La cláusula DEFAULT puede colocarse en cualquier parte
del cuerpo y no necesariamente al final.

Ejercicio

Supongamos que el horario de consultas de un médico está condicionado según el día de la semana de
acuerdo con las siguientes pautas: lunes y jueves atiende de 10 a 12 de la mañana, miércoles atiende de 2 a
4 de la tarde, martes y viernes la consulta es de 2 a 5 de la tarde y los demás días no atiende.

Elabore un algoritmo que le informe el día y el horario cuando se introduzca el número del día, entendiendo
que el lunes es el primero, y así sucesivamente.

Evaluación: Realizar el algoritmo propuesto con el fin de afianzar conocimientos y destrezas en el uso de las
sentencias SWITCH.

Bibliografía: Guillermo Correa Uribe (1998), Desarrollo de Algoritmos Y Sus Aplicaciones en Basic, Pascal,
Cobol y C, McGraw-Hill.

Francisco Javier Ceballos (1990), Curso de Programación con C, Macrobit.

Manuel Abellanas y Dolores Lodares (1990), Análisis de algoritmos y teoría de grafos, Ra-Ma

Selim G. Akl (1989), The Desing and Analysis of Parallel Algorithms, Prentice-Hall.

Traducción al castellano (1992): Diseño y Análisis de Algoritmos Paralelos, Ra-Ma

Varios autores (1999), Curso Práctico de Programación de Computadores, CEKIT S.A., Tomo I.

Guía de Aprendizaje

Duración: 2 horas

Modulo: Programación de Computadores.

Tema: LECCIÓN 12, SENTENCIA BREAK.


Introducción: Esta sentencia finaliza la ejecución 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 ejecución 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 cláusulas CASO.

Permitir ejecutar una de varias acciones, en función del valor de una expresión.

Recursos Tablero Acrílico.

Didácticos Marcadores borrables.

Material textual de apoyo.

Desarrollo:

Si después de una cláusula 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 más acostumbrada de construir un menú mediante la utilización 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 operación matemática. El caso DEFAULT corresponde a la situación en que OPCIÓN no
reciba del teclado ninguno de estos valores.

La declaración CHAR *MENSAJE, se lee textualmente: “el valor al cual la variable MENSAJE es de tipo
CHAR”. Vale la pena hacer aquí una pequeña digresión sobre el tema de los punteros o apuntadores. El
operador unario asterisco (*) es llamado de indirección 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 dirección). El segundo indica la dirección donde está contenido el valor de la variable. Por ejemplo,
en las instrucciones SCANF, para indicar dónde 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”.

Evaluación: Investigar o profundizar sobre estas estructuras, su manera adecuada de funcionar, bajo que
medio como funciona y en sí todo lo relacionado con ella.

Bibliografía: Guillermo Correa Uribe (1998), Desarrollo de Algoritmos Y Sus Aplicaciones en Basic, Pascal,
Cobol y C, McGraw-Hill.

Francisco Javier Ceballos (1990), Curso de Programación con C, Macrobit.


Manuel Abellanas y Dolores Lodares (1990), Análisis de algoritmos y teoría de grafos, Ra-Ma

Selim G. Akl (1989), The Desing and Analysis of Parallel Algorithms, Prentice-Hall.

Traducción al castellano (1992): Diseño y Análisis de Algoritmos Paralelos, Ra-Ma

Varios autores (1999), Curso Práctico de Programación de Computadores, CEKIT S.A., Tomo I.

Un programa objeto es aquel programa que se encuentra en lenguaje de máquina (Unos y Ceros).

En algunos lenguajes como PASCAL, estos operadores tienen prioridad sobre +, -.

También podría gustarte