30
Programación en C Ing. Leonel Antonio Quijano Acuña
Unidad IIUnidad II
INTRODUCCIÓN INTRODUCCIÓN
La computadora no solamente es una máquina que puede realizar procesos para darnos resultados, sin que tengamos la noción exacta de las operaciones que realiza para llegar a esos resultados. Con la computadora, además de lo anterior, también podemos diseñar soluciones a la medida de problemas específicos que se nos presenten. Mas aún, si estos involucran operaciones matemáticas complejas y/o repetitivas, o requieren del manejo de un volumen muy grande de datos.
El diseño de soluciones a la medida de nuestros problemas, requiere como en otras disciplinas una metodología que nos enseñe de manera gradual, la forma de llegar a estas soluciones.
A las soluciones creadas por computadora se les conoce como programas y no son mas que una serie de operaciones que realiza la computadora para llegar a un resultado, con un grupo de datos específicos. Lo anterior nos lleva al razonamiento de que un programa nos sirve para solucionar un problema especifico.
Para poder realizar programas, además de conocer la metodología mencionada, también debemos de conocer, de manera especifica las funciones que puede realizar la computadora y las formas en que se pueden manejar los elementos que hay en la misma.
Conceptos de Programación
Computadora: Es un dispositivo electrónico utilizado para procesar información y obtener resultados. Los datos y la información se pueden introducir en la computadora como entrada (input) y a continuación se procesan para producir una salida (output).
Proceso de información en la computadora
Datos de Proceso Datos de entrada salida
Programa: Es el conjunto de instrucciones escritas de algún lenguaje de programación y que ejecutadas
secuencialmente resuelven un problema especifico.
Lenguaje: Es una serie de símbolos que sirven para transmitir uno o mas mensajes (ideas) entre dos entidades diferentes. A la transmisión de mensajes se le conoce comúnmente como comunicación.
La comunicación es un proceso complejo que requiere una serie de reglas simples, pero indispensables para poderse llevar a cabo. Las dos principales son las siguientes:* Los mensajes deben correr en un sentido a la vez.* Debe forzosamente existir 4 elementos: Emisor, Receptor, Medio de Comunicación y Mensaje.
30
Programación en C Ing. Leonel Antonio Quijano Acuña
Unidad IIUnidad II
Lenguajes de Programación
Es un conjunto de símbolos, caracteres y reglas (programas) que le permiten a las personas comunicarse con la computadora.
Los lenguajes de programación tienen un conjunto de instrucciones que nos permiten realizar operaciones de entrada/salida, calculo, manipulación de textos, lógica/comparación y almacenamiento/recuperación.
Los lenguajes de programación se clasifican en:
Lenguaje Maquina: Son aquellos cuyas instrucciones son directamente entendibles por la computadora y no necesitan traducción posterior para que la CPU pueda comprender y ejecutar el programa. Las instrucciones en lenguaje maquina se expresan en términos de la unidad de memoria mas pequeña el bit (dígito binario 0 o 1).
Lenguaje de Bajo Nivel (Ensamblador): En este lenguaje las instrucciones se escriben en códigos alfabéticos conocidos como mnemotécnicos para las operaciones y direcciones simbólicas.
Lenguaje de Alto Nivel: Los lenguajes de programación de alto nivel (BASIC, pascal, cobol, frotran, etc.) son aquellos en los que las instrucciones o sentencias a la computadora son escritas con palabras similares a los lenguajes humanos (en general en ingles), lo que facilita la escritura y comprensión del programa.
Definición de Algoritmo
La palabra algoritmo se deriva de la traducción al latín de la palabra árabe alkhowarizmi, nombre de un matemático y astrónomo árabe que escribió un tratado sobre manipulación de números y ecuaciones en el siglo IX.
Un algoritmo es una serie de pasos organizados que describe el proceso que se debe seguir, para dar solución a un problema especifico.
Lenguajes algorítmicos
Es una serie de símbolos y reglas que se utilizan para describir de manera explícita un proceso.
Tipos de Lenguajes Algoritmicos
Gráficos: Es la representación gráfica de las operaciones que realiza un algoritmo (diagrama de flujo). No Gráficos: Representa en forma descriptiva las operaciones que debe realizar un algoritmo (pseudocodigo).
30
Programación en C Ing. Leonel Antonio Quijano Acuña
Unidad IIUnidad II
Gráficos : Diagrama de Flujo
Un diagrama de flujo es la representación gráfica de un algoritmo. También se puede decir que es la representación detallada en forma gráfica de como deben realizarse los pasos en la computadora para producir resultados.
Esta representación gráfica se da cuando varios símbolos (que indican diferentes procesos en la computadora), se relacionan entre si mediante líneas que indican el orden en que se deben ejecutar los procesos. Los símbolos utilizados han sido normalizados por el instituto norteamericano de normalización (ANSI).
Recomendaciones para el diseño de Diagramas de Flujo Se deben se usar solamente líneas de flujo horizontales y/o verticales. Se debe evitar el cruce de líneas utilizando los conectores. Se deben usar conectores solo cuando sea necesario. No deben quedar líneas de flujo son conectar. Se deben trazar los símbolos de manera que se puedan leer de arriba hacia abajo y de izquierda a derecha. Todo texto escrito dentro de un símbolo deberá ser escrito claramente, evitando el uso de muchas palabras.
Diagramas estructurados (Nassi-Schneiderman)
El diagrama estructurado N-S también conocido como diagrama de chapin es como un diagrama de flujo en el que se omiten las flechas de unión y las cajas son contiguas. Las acciones sucesivas se pueden escribir en cajas sucesivas y como en los diagramas de flujo, se pueden escribir diferentes acciones en una caja. Un algoritmo se represente en la sig. forma:
Modelo: Inicio Accion1 Accion2 . . .Fin
No Grágicos: Pseudocodigo
Mezcla de lenguaje de programación y español (o ingles o cualquier otro idioma) que se emplea, dentro de la programación estructurada, para realizar el diseño de un programa. En esencial, el pseudocodigo se puede definir como un lenguaje de especificaciones de algoritmos.
Es la representación narrativa de los pasos que debe seguir un algoritmo para dar solución a un problema determinado. El pseudocodigo utiliza palabras que indican el proceso a realizar.
30
SUMA = B + 3 IDENTIFICADOR OPERADOR IDENTIFICADOR OPERADOR CONSTANTE
Programación en C Ing. Leonel Antonio Quijano Acuña
Unidad IIUnidad II
Ventajas de utilizar un Pseudocodigo a un Diagrama de Flujo Ocupa menos espacio en una hoja de papel Permite representar en forma fácil operaciones repetitivas complejas Es muy fácil pasar de pseudocodigo a un programa en algún lenguaje de programación. Si se siguen las reglas se puede observar claramente los niveles que tiene cada operación.
Modelo:
Accion1 Accion2 . . AccionNFin
Ejemplos de Algoritmos Ejemplos de Algoritmos
Identificador:Es el carácter alfabético o grupo de caracteres alfabéticos o alfanuméricos que se emplean para representar algo en la solución de un problema.
Redactar el algoritmo para leer 2 números
cualesquiera y calcular la suma de ambos.
Paso 1. inicio
Paso 2. leer N1 IDENTIFICADOR
Paso 3. leer N2
Paso 4. total = N1 + N2
Paso 5. fin.
Calcular el área de envoltura de papel de
una lata cilíndrica que tiene una altura H y
un diámetro D. Redactar el algoritmo para
leer la H y el diámetro D y calcular el área
solicitada.
Paso 1. inicio
Paso 2. leer D IDENTIFICADOR
Paso 3. leer H
Paso 4. PC = 3.1416 * (D/2)
Paso 5. Area = PC*H
Paso 6. Fin
30
Programación en C Ing. Leonel Antonio Quijano Acuña
Unidad IIUnidad II
Ejemplo: Dada la figura del triangulo ABC, el coseno de ángulo A puede calcularse mediante la formula
dada posteriormente. Redactar un algoritmo para calcular el coseno para cada uno de los ángulos, si se
proporciona como único dato el valor de los lados.
1. Inicio.2. leer a.3. leer b.4. leer c5. Cos_A = b2 + c2 + a2/2bc6. Cos_B = a2 + c2 – b2/2ac7. Cos_C = b2 + a2 – c2/2ab 8. Imprimir el coseno del ángulo que es : cos_A9. Imprimir el coseno del ángulo que es : cos_B10. imprimir el coseno del ángulo que es : cos_C11. Fin.
Estructuras Algoritmicas
Las estructuras de operación de programas son un grupo de formas de trabajo, que permiten, mediante la manipulación de variables, realizar ciertos procesos específicos que nos lleven a la solución de problemas. Estas estructuras se clasifican de acuerdo con su complejidad en:
- AsignaciónSecuenciales - Entrada
- Salida
- Simples Estructuras Condicionales
Algoritmicas - Múltiples
- Hacer paraCíclicas - Hacer mientras
- Repetir hasta
Estructuras Secuenciales
La estructura secuencial es aquella en la que una acción (instrucción) sigue a otra en secuencia. Las tareas se suceden de tal modo que la salida de una es la entrada de la siguiente y así sucesivamente hasta el fin del proceso. Una estructura secuencial se representa de la siguiente forma:
Figura: Triángulo ABCFormula: Cos A = b2 + c2 + a2/2bc
Cos B = a2 + c2 – b2/2ac
Cos C = b2 + a2 – c2/2ab
C
a
b
A c B
30
Programación en C Ing. Leonel Antonio Quijano Acuña
Unidad IIUnidad II
Inicio Accion1 Accion2 . . AccionNFin
- Asignación: La asignación consiste, en el paso de valores o resultados a una zona de la memoria. Dicha zona será reconocida con el nombre de la variable que recibe el valor. La asignación se puede clasificar de la siguiente forma:
Simples: Consiste en pasar un valor constate a una variable (a=15) Contador: Consiste en usarla como un verificador del numero de veces que se realiza un
proceso (a=a+1) Acumulador: Consiste en usarla como un sumador en un proceso (a=a+b) De trabajo: Donde puede recibir el resultado de una operación matemática que involucre
muchas variables (a=c+b*2/4).- Lectura: La lectura consiste en recibir desde un dispositivo de entrada (p.ej. el teclado) un valor. Esta operación se representa en un pseudocodigo como sigue:
Leer a, b
Donde “a” y “b” son las variables que recibirán los valores
-Escritura: Consiste en mandar por un dispositivo de salida (p.ej. monitor o impresora) un resultado o mensaje. Este proceso se representa en un pseudocodigo como sigue:
Escribe “El resultado es:”, R
Donde “El resultado es:” es un mensaje que se desea aparezca y R es una variable que contiene un valor.
Estructuras de Condicionales
Las estructuras condicionales comparan una variable contra otro(s) valor(es), para que en base al resultado de esta comparación, se siga un curso de acción dentro del programa. Cabe mencionar que la comparación se puede hacer contra otra variable o contra una constante, según se necesite. Existen dos tipos básicos, las simples y las múltiples.
Simples: Las estructuras condicionales simples se les conoce como “Tomas de decisión”. Estas tomas de decisión tienen la siguiente forma:
Si <condición> entoncesAcción(es)
Fin-si
30
Programación en C Ing. Leonel Antonio Quijano Acuña
Unidad IIUnidad II
Decisión: Es una comparación o relación existente entre 2 identificadores y un valor. Es decir, dados los
valores A y B se puede tener de ellas la siguiente relación:
A>B A es mayor que B.
A=B A es igual que B.
A<B A es menor que B.
Ejemplo: Dados 2 números cualesquiera redactar el algoritmo para leer y calcular el producto de ambos si
el primer valor es menor que el segundo y en caso contrario efectuar la suma de ellos.
1. Inicio 9. fin
2. leer A
3. leer B Realizar prueba de Escritorio
4. Comparar A con B
si A<B, ir al paso 7
si no continuar
5. multiplicación = A*B
6. imprimir (el valor de multiplicación es, multiplicación) ir al paso 9
7. suma = A+B
8. imprimir ( el valor de suma es, suma)
9. fin
Dobles: Las estructuras condicionales dobles permiten elegir entre dos opciones o alternativas posibles en función del cumplimiento o no de una determinada condición. Se representa de la siguiente forma:
Si <condición> entoncesAcción(es)
si noAcción(es)
Fin-si
Donde:
Si ………………… Indica el comando de comparaciónCondición………… Indica la condición a evaluarentonces……..…… Precede a las acciones a realizar cuando se cumple la condiciónacción(es)………… Son las acciones a realizar cuando se cumple o no la condiciónsi no……………… Precede a las acciones a realizar cuando no se cumple la condición
Dependiendo de si la comparación es cierta o falsa, se pueden realizar una o mas acciones.
30
Programación en C Ing. Leonel Antonio Quijano Acuña
Unidad IIUnidad II
Múltiples: Las estructuras de comparación múltiples, son tomas de decisión especializadas que permiten comparar una variable contra distintos posibles resultados, ejecutando para cada caso una serie de instrucciones especificas. La forma común es la siguiente:
Si <condición> entonces
Acción(es) si no
Si <condición> entoncesAcción(es)
si no.. Varias condiciones.
Forma GeneralCasos Variable Op1: Acción(es) Op2: Acción(es)
. .
OpN: acciónFin-casos
30
Programación en C Ing. Leonel Antonio Quijano Acuña
Unidad IIUnidad II
Diagramas de Flujo (D.F.)
Diagrama de Flujo o Organigrama. Representación semigráfica del algoritmo en cuestión y representa la
solución de un problema por medio de símbolos estandarizados, que se colocan en una secuencia
adecuada para indicar las fases lógicas de la solución de un problema.
Esto nos facilita la visión descriptiva de la ejecución del programa, así como la generación de la traza
del algoritmo o del Diagrama de Flujo . Se denomina traza de un algoritmo o Diagrama de Flujo, a la
ejecución manual de un programa obteniendo para cada paso un resultado.
El sentido de la ejecución de un D.F. es de arriba hacia abajo y de izquierda a derecha. El D.F.,
proporciona algo más que una descripción detallada del flujo o procesamiento de información, sirve
también como:
Medio de comunicación eficiente.
Herramienta de análisis.
Forma concisa de documentación.
Símbolos generales:
Inicio y fin de un programa.
Operaciones de I/O , aritméticas y lógico-aritméticas.
Decisiones lógicas.
Flujo de la ejecución.
Los D.F., sólo tienen una entrada y una salida, es decir, que es la representación gráfica de un algoritmo
estructurado (subalgoritmo).
Traza de un Diagrama de Flujo.
La traza (también conocido como: Prueba de Escritorio) de un Algoritmo o Diagrama de Flujo, se puede definir como la ejecución manual de forma secuencial de las sentencias que lo componen. Así, la la traza del siguiente algoritmo es el valor que van adoptando las variables a medida que se va ejecutando
un programa.
30
+- Diagrama de Flujo
Inicio a=0, b=0
a,b
c = a + b
c terminar
Programación en C Ing. Leonel Antonio Quijano Acuña
Unidad IIUnidad II
La función principal que posee realizar la traza de un algoritmo es la de comprobar que éste funciona
correctamente o para realizar la etapa de depuración en la que se intenta corregir errores, simplificar
el algoritmo al máximo e incrementar su eficacia y velocidad.
Simbología básica del los Diagrama de Flujo
Todos los símbolos se unen mediante líneas que tiene un solo sentido, y se les conoce como líneas de
flujo, las cuales indican el sentido de la ejecución del D.F. de arriba abajo y de izquierda a derecha.
Empleado para marcar el inicio y el fin de un D.F. (Delimita cuerpo lógico del D.F.)
Símbolo de lectura. Se encierra lo que será leído.
Inicio
N
T R A Z A
Comentario ValoresLeemos a: a <- 4Leemos b: b <- 5Calcula c: c <- a+b <- 9Escribe c: c <- 9
30
A=BNo Si
Instrucción Instrucción
Programación en C Ing. Leonel Antonio Quijano Acuña
Unidad IIUnidad II
Símbolo de impresión. Empleado para la impresión de los valores que tienen los indentificadores o
citar mensajes.
Bloque de procesamiento. Se usan para representar: asignaciones o para realizar cálculos.
Conectores. Empleados para indicar hacia donde continua el D.F.
Colectores. Son para recibir dos líneas de flujo y tener una línea resultante.
Símbolo de Condición o Decisión.
No Condición Si
Decisión: Se utiliza para buscar una comparación o relación lógica entre dos valores. Si la condición se
cumple, la dirección lógica tamará el camino del “si” y ejecutará la instrucción o instrucciones
correspondientes; en caso contrario, tomará el camino del “no (si no )”. Al tomar la alternativa del
“no”, podría ser necesario no realizar una instrucción o grupos de instrucciones, ya que puede ser deseable
que por las condiciones del problema, no se necesite realizar ninguna instrucción.
Simbolo de decisión anidados. Esta simbología, es semejante a la anterior. Al implantar una
simbología de condición y agregar inmediatamente otro símbolo igual al anterior (en lugar de una
Resultado
A=B+C
Instrucción
A=BNo Si
30
Programación en C Ing. Leonel Antonio Quijano Acuña
Unidad IIUnidad II
instrucción) independientemente de la posición lógica “si o si no“, en ese momento se puede decir
que se está utilizando simbología de decisión anidada.
Cabe mencionar, que mientras más condiciones anidadas se implanten, más complejidad de interpretación
o confusión se presentará al analizar el diagrama de flujo. Para tal caso, se crea simbología que sigue a
continuación.
Instrucción Según—hacer (case)
Es una instrucción de selección múltiple de opciones. En esta simbología de multiples caminos, solamente
uno es el que se ejecutará (de acuerdo al deseado) e inmediatamente terminará el módulo del flujo lógico.
Instrucción Instrucción Instrucción Instrucción Instrucción Instrucción Instrucción
Según Valor
Fin Según
No Si
No Si No Si
No Si
No Si
Condición
Condición
Condición
Condición
CondiciónInstrucción Instrucción Instrucción
Instrucción Instrucción
30
Programación en C Ing. Leonel Antonio Quijano Acuña
Unidad IIUnidad II
Otros símbolos:
Símbolo Uso Ejemplo
Expresa, la tomar la parte entera
de un identificador
A = 3.567
A = 3
Expresa, tomar el módulo a
residuo de una división entera
A = 20
A / 2 = 0
Expresa, El valor absoluto de que
tine un identificador.
A= -55
A = 55
Ejemplos resueltos:
Diagrama de Flujo. (Utilizando simbología básica) Lee dos números cualesquiera y calcula la suma de
ambos.
Ejercicio utilizando (if-else).-Hacer un D.F. para leer las coordenadas de un punto y las coordenadas del
centro de una circunferencia con radio R, determinar la posición del punto (dentro, sobre, fuera de la
circunferencia).
INICIO
A,B
SUMA = A + B
SUM
ATERMINAR
INICIO
R,Xc,Yc,Xp,Yp
D= (Xc-Xp) 2 + (Yc-Yp)2
R>D Dentro
Inicio
Terminar
Fuera R=D Sobre
30
Programación en C Ing. Leonel Antonio Quijano Acuña
Unidad IIUnidad II
Realizar un diagrama de flujo para leer una calificación que debe ser entera y legal. Determinar si la
calificación es reprobatoria, si saco 70, si saco 80, si saco 90, o excelente.
CAL >= 0And Cal <=100
Según CAL
Terminar
Problemas Secuenciales para Diagramar
1) Suponga que un individuo desea invertir su capital en un banco y desea saber cuanto dinero ganara después de un mes si el banco paga a razón de 2% mensual.
Inicio‘’ Leer cap_inv
gan = cap_inv * 0.02 Imprimir ganFin
2) Un vendedor recibe un sueldo base mas un 10% extra por comisión de sus ventas, el vendedor desea saber cuanto dinero obtendrá por concepto de comisiones por las tres ventas que realiza en el mes y el total que recibirá en el mes tomando en cuenta su sueldo base y comisiones.
Inicio Leer sb, v1, v2, v3 tot_vta = v1 + v2 + v3 com = tot_vta * 0.10 tpag = sb + com Imprimir tpag, comFin
3) Una tienda ofrece un descuento del 15% sobre el total de la compra y un cliente desea saber cuanto deberá pagar finalmente por su compra.
Reprobado Saco 70 Saco 80 Saco 90 Excelente
CAL
INICIO
Terminar Según
30
Programación en C Ing. Leonel Antonio Quijano Acuña
Unidad IIUnidad II
Inicio Leer tc d = tc * 0.15 tp = tc - d Imprimir tpFin
4) Un alumno desea saber cual será su calificación final en la materia de Algoritmos. Dicha calificación se compone de los siguientes porcentajes:
55% del promedio de sus tres calificaciones parciales.30% de la calificación del examen final. 15% de la calificación de un trabajo final.Inicio Leer c1, c2, c3, ef, tf prom = (c1 + c2 + c3)/3 ppar = prom * 0.55 pef = ef * 0.30 ptf = tf * 0.15 cf = ppar + pef + ptf Imprimir cfFin
5) Un maestro desea saber que porcentaje de hombres y que porcentaje de mujeres hay en un grupo de estudiantes.
Inicio Leer nh, nm ta = nh + nm ph = nh * 100 / ta pm = nm * 100 / ta Imprimir ph, pmFin
Problemas Condicionales
Problemas Selectivos Simples para diagramar
1) Un hombre desea saber cuanto dinero se genera por concepto de intereses sobre la cantidad que tiene en inversión en el banco. El decidirá reinvertir los intereses siempre y cuando estos excedan a $7000, y en ese caso desea saber cuanto dinero tendrá finalmente en su cuenta.
Inicio Leer p_int, cap int = cap * p_int si int > 7000 entonces
cap = cap + int fin-si Imprimir capf
fin
30
Programación en C Ing. Leonel Antonio Quijano Acuña
Unidad IIUnidad II
2) Determinar si un alumno aprueba a reprueba un curso, sabiendo que aprobara si su promedio de tres calificaciones es mayor o igual a 70; reprueba en caso contrario.
Inicio Leer calif1, calif2, calif3 prom = (calif1 + calif2 + calif3)/3 Si prom >= 70 entonces
Imprimir “alumno aprobado” si no
Imprimir “alumno reprobado” Fin-siFin
3) En un almacén se hace un 20% de descuento a los clientes cuya compra supere los $1000 ¿ Cual será la cantidad que pagara una persona por su compra?
Inicio Leer compra Si compra > 1000 entonces desc = compra * 0.20 si no
desc = 0 fin-si tot_pag = compra - desc imprimir tot_pagfin.
Problemas Selectivos Compuestos para diagramar1) Leer 2 números; si son iguales que los multiplique, si el primero es mayor que el segundo que los reste y si no que los sume. Inicio
Leer num1, num2 *si num1 = num2 entonces
resul = num1 * num2 si no
-si num1 > num2 entoncesresul = num1 - num2
si noresul = num1 + num2
-fin-si * fin-si
fin
2) Leer tres números diferentes e imprimir el numero mayor de los tres.Inicio Leer num1, num2, num3 Si (num1 > num2) and (num1 > num3) entonces
mayor = num1
30
Programación en C Ing. Leonel Antonio Quijano Acuña
Unidad IIUnidad II
si noSi (num2 > num1) and (num2 > num3) entonces
mayor = num2 si no
mayor = num3fin-si
fin-si Imprimir mayorfin
3) Determinar la cantidad de dinero que recibirá un trabajador por concepto de las horas extras trabajadas en una empresa, sabiendo que cuando las horas de trabajo exceden de 40, el resto se consideran horas extras y que estas se pagan al doble de una hora normal cuando no exceden de 8; si las horas extras exceden de 8 se pagan las primeras 8 al doble de lo que se pagan las horas normales y el resto al triple.
Inicio Leer ht, pph Si ht < = 40 entonces
tp = ht * pph si no
he = ht - 40Si he < = 8 entonces
pe = he * pph * 2 si no
pd = 8 * pph * 2pt = (he - 8) * pph * 3pe = pd + pt
fin-sitp = 40 * pph + pe
fin-si Imprimir tpfin
4) Calcular la utilidad que un trabajador recibe en el reparto anual de utilidades si este se le asigna como un porcentaje de su salario mensual que depende de su antigüedad en la empresa de acuerdo con la sig. tabla:
Tiempo UtilidadMenos de 1 año 5 % del salario1 año o mas y menos de 2 años 7% del salario2 años o mas y menos de 5 años 10% del salario5 años o mas y menos de 10 años 15% del salario10 años o mas 20% del salario
Inicio Leer sm, antig Si antig < 1 entonces
util = sm * 0.05 si no
Si (antig > = 1) and (antig < 2) entoncesutil = sm * 0.07
30
Programación en C Ing. Leonel Antonio Quijano Acuña
Unidad IIUnidad II
si noSi (antig > = 2) and (antig < 5) entonces
util = sm * 0.10 si no
Si (antig > = 5) and (antig < 10) entoncesutil = sm * 0.15
si noutil = sm * 0.20
fin-sifin-si
fin-si fin-si Imprimir utilfin
5) En una tienda de descuento se efectúa una promoción en la cual se hace un descuento sobre el valor de la compra total según el color de la bolita que el cliente saque al pagar en caja. Si la bolita es de color blanco no se le hará descuento alguno, si es verde se le hará un 10% de descuento, si es amarilla un 25%, si es azul un 50% y si es roja un 100%. Determinar la cantidad final que el cliente deberá pagar por su compra. se sabe que solo hay bolitas de los colores mencionados. Inicio
leer tc, b$ si b$ = ‘blanca’ entonces d=0 si no si b$ = ‘verde’ entonces d=tc*0.10 si no
si b$ = ‘amarilla’ entonces d=tc*0.25 si no
si b$ = ‘azul’ entonces d=tc*0.50
si no d=tc
fin-si fin-si fin-si fin-si
fin
30
Programación en C Ing. Leonel Antonio Quijano Acuña
Unidad IIUnidad II
Estructuras Cíclicas
Hasta el momento las instrucciones vistas, sirven para realizar todo el proceso una sola vez. Si se quisiera
repetir estas sentencias, deberá ejecutarse de nuevo el programa. Para evitar este problema surge un
mecanismo iterativo llamado instrucciones repetitivas. Estas instrucciones cíclicas, son controladas
(abortadas, canceladas o terminadas) mediante el cumplimiento de una condición o a través de un
contador automático.
Por lo tanto, Se llaman problemas repetitivos o cíclicos a aquellos en cuya solución es necesario utilizar un mismo conjunto de acciones que se puedan ejecutar una cantidad especifica de veces. Esta cantidad puede ser fija (previamente determinada por el programador) o puede ser variable (estar en función de algún dato dentro del programa).Los ciclos se clasifican en:
a) Mientras-hacer-fin de mientras
b) Repetir-hasta
c) Desde-hasta-hacer-fin desde
a) Mientras-hacer- fin de mientras (Do while).
Realiza repetitivamente un proceso mientras la condición dada sea verdadera, saliéndose del ciclo en el
momento que la condición sea falsa.
Simbología General : Simbología ejemplo:
NoCondición
SiInstrucciones
No N<0
SiI
N
N
30
Programación en C Ing. Leonel Antonio Quijano Acuña
Unidad IIUnidad II
Ejercicio.- Diagrama de flujo para leer un número entero que debe ser no negativo. Calcular el factorial de
dicho número. (Ejemplo: Factorial 5! =5x4x3x2x1 =120)
Observación importante. Si al iniciar el ciclo repetitivo, la concición no se cumple, se sale del proceso
sin que se realice alguna vez el bloque de instrucciones repetitivas.
b) Repetir-Hasta (repet-until)
Realizar repetitivamente un proceso mientras la condición es falsa. Es necesario que un componente de la
condición se altere para evitar caer en un ciclo repetitivo infinito.
Simbología General Simbología de ejemplo: N tiene que ser mayor que cero.
No N<0
SiI
N
N
Inicio
Fact = 1 Aux = N
No Aux > 1
Si Fact, N
Terminar
Fact = Fact * AuxAux = Aux -1
No Condición
N
Si
Instrucción
NoN>0
Si
30
Programación en C Ing. Leonel Antonio Quijano Acuña
Unidad IIUnidad II
Ejercicio - Realizar un D.F. para calcular la suma de los primeros 10 números impares.
C)Desde-hasta-hacer-fin desde (For)
Realiza repetitivamente un ciclo de instrucción(es) hasta cumplir con el número de veces previamente
conocido. Existen dos variantes de este ciclo de control.
To
For
Downto
El For to: El For Downto(forma inversa):
NoCont = 10
Si
Sumimp
Terminar
Genimp = Genimp + 2Cont = cont+ 1
Sumimp = sumimp + Genimp
Inicio
Genimp=1Cont=1
Sumimp = 1
I = 1 to N
Intrucciones
I = N Downto 1
Intrucciones
30
Programación en C Ing. Leonel Antonio Quijano Acuña
Unidad IIUnidad II
El identificador I (pudo ser cualquiera). Es un auxiliar que se utiliza para llevar el control cíclico
automático.
Caso for to; el identificador variable I, tendrá el valor numérico uno (1) cuando el flujo lógico pase la
primera vez. Mientras no salga de la primera vuelta I siempre tendrá el valor nuérico uno (1).
El ciclo lógico terminará cuando I alcance el valor de N (número máximo de vueltas previamente
conocido).
Caso for downto; el identificador variable I, tendrá el valor numérico N (número máximo de vueltas
previamente conocido) y cada vez que pase por el flujo lógico decrementará de manera automática, por lo
tanto, antes de entrar de nuevo al ciclo repetitivo de instrucciones (en la parte alta del ciclo) se comparará
el valor de I con el valor númerico de uno ( pasa por última vez), de tal forma que cuando I tenga como
valor numérico cero (0), el flujo saldrá del ciclo.
Ejemplo:
Problemas ( Hacer para )1) Calcular el promedio de un alumno que tiene 7 calificaciones en la materia de Diseño Estructurado de Algoritmos
Inicio Sum=0 Leer Nom Hacer para c = 1 a 7 Leer calif
Sum = sum + calif Fin-para prom = sum /7 Imprimir promFin.
2) Leer 10 números y obtener su cubo y su cuarta.Inicio Hacer para n = 1 a 10
Leer numcubo = num * num * numcuarta = cubo * numImprimir cubo, cuarta
Fin-para
I = 10 Downto 1
I
Se imprimirá en la pantalla como resultado los valores numéricos del 10 al 1 en forma descendente. Si se deseara realizar el en forma ascendente se tendría que utilizar el ciclo repetitivo For To
30
Programación en C Ing. Leonel Antonio Quijano Acuña
Unidad IIUnidad II
Ejercicio. Realizar un Diagrama de Flujo para calcular hasta el n-ésimo termino (al menos uno ) de la
siguiente serie.
El valor de X, tendrá que estar en un intervalo cerrado de 1 a 20
Serie = X 1 + X 2 + X 3 + X 4 + . . . X N 2 4 6 8 ( N par)
serie
Terminar
Par = Par + 2PotX = Potx * X
Term = PotX/ Parserie = serie + term
Inicio
Serie=0, Term=0Par = 0
PotX=1,N=0
I = 1 T o N
N
No N > 0 Si
X
NoX>0 and X <21 Si
30
Programación en C Ing. Leonel Antonio Quijano Acuña
Unidad IIUnidad II
Arreglos
Arreglo:Es un conjunto o colección de variables del mismo tipo, donde cada elemento ocupa una posición
determinada, única y que se referencian utilizando un nómbre común.
Los arreglos se caracterizan por: Almacenan los elementos en posiciones contiguas de memoria Tienen un mismo nombre de variable que representa a todos los elementos. Para hacer referencia a
esos elementos es necesario utilizar un índice que especifica el lugar que ocupa cada elemento dentro del archivo.
Notación del arreglo: Identificador [subíndice]
Los subíndices indican la posición del elemento dentro del arreglo y son variables ordinales (enteros o
caracteres).
Tipos de arreglos de acuerdo a su dimensión:
Unidimensionales O VECTORES
Bidimensionales O MATRICES
Tridimensionales O MATRICES
Arreglo de una dimensión:
Numeros Nombre del Arreglo Dato de las posiciones
25 1 8 5 34 1256 0
1 2 3 4 5 6 7
Posición de los elementos Acceso al quinto elemento: Numero[5] = 34
Arreglos Multidimensionales: Según el Lenguaje de Programación que se utilice, será el número de dimensiones que soportará el Lenguaje. El Lenguaje C, contempla hasta 7 dimensiones. Los arreglos Tridimensionales por lo general, son los que se utilizan como máximo.
30
Programación en C Ing. Leonel Antonio Quijano Acuña
Unidad IIUnidad II
Vectores
Es un arreglo de “N” elementos organizados en una dimensión donde “N” recibe el nombre de longitud o tamaño del vector. Para hacer referencia a un elemento del vector se usa el nombre del mismo, seguido del índice (entre corchetes), el cual indica una posición en particular del vector. Por ejemplo:
Vec[x]
Donde:Vec………… Nombre del arreglox…………… Numero de datos que constituyen el arreglo
Representación gráfica de un vector
78910
Llenado de un Vector
Hacer para I = 1 a 10 Leer vec[I]Fin-para
Hacer mientras I <= 10 Leer vec[I]Fin-mientras
I=1Repetir Leer vec[I] I = I + 1
Hasta-que I>10
Vec[1]Vec[2]Vec[3]Vec[4]
30
Programación en C Ing. Leonel Antonio Quijano Acuña
Unidad IIUnidad II
Ejemplo: Se Proporciona un arreglo unidimensional de orden N. Dibujar un Diagrama de Flujo para leer
dicho arreglo y determinar todos los elementos pares e impares. Formar dos vectores uno de pares y otro
de impares y guardar los valores anteriores correspondientes en dichos vectores.
Inicio
N=0Par = 0
Impar = 0
N
No N > 2
I = 1 to N
X[ I ]
X[ I ]/2 = 0No Si
X[ par ]= X[ I ]X[ impar ]= X[ I ]
Terminar
30
Programación en C Ing. Leonel Antonio Quijano Acuña
Unidad IIUnidad II
Matriz
Es un arreglo de M * N elementos organizados en dos dimensiones donde “M” es el numero de filas o reglones y “N” el numero de columnas.
Para representar una matriz se necesita un nombre de matriz se necesita un nombre de matriz acompañado de dos índices.
Mat [R,C]
Donde R indica el renglón y C indica la columna, donde se encuentra almacenado el dato.
Representación gráfica de una matriz
Mat [R,C]
1,1 1,2 1,3 1,42,1 2,2 2,3 2.43,1 3,2 3,3 3,44,1 4,2 4,3 4,4
Acceso a la matriz
Matriz_letras Acceso a la letra C: Matriz_letras[2,2]
1 2 3
A P F 1
h C u 2
L z H 3
Llenado de una matriz
Por renglonesHacer para R = 1 a 5 Hacer para C = 1 a 5
Leer Mat [R,C] Fin-paraFin-para
Fila o Renglon
[R]
Columna[C]
30
Programación en C Ing. Leonel Antonio Quijano Acuña
Unidad IIUnidad II
Por columnasHacer para C = 1 a 5 Hacer para R = 1 a 5
Leer Mat [R,C] Fin-paraFin-para
Nota: Para hacer el llenado de una matriz se deben de usar dos variables para los índices y se utilizan 2 ciclos uno para los renglones y otro para las columnas; a estos ciclos se les llama ciclos anidados (un ciclo dentro de otro ciclo).
Ejemplo: Dada la matríz cuadrada de MxN, desarrollar la lógica en D.F., para leer dicha matríz.
M
2 5 5 3
67 8 8 4
346 -9 0 1
10 8 32 -6
M = 1 to 4
N = 1 to 4
M = 1 to 4
N = 1 to 4
30
Programación en C Ing. Leonel Antonio Quijano Acuña
Unidad IIUnidad II
EJERCICIOS DE LA UNIDAD
Ejercicio 1: Redactar un algoritmo para ir a la escuela.
Ejercicio 2: Diseñar un diagrama de flujo para calcular el promedio de las tres calificaciones de un
alumno.
Ejercicio 3: Diseñar un diagrama de flujo para calcular la suma de los 10 primeros números impares.
Ejercicio 4: Dado dos números cualesquiera, diseñar un diagrama de flujo para leer y calcular el
producto de ambos, si el primer valor es menor que el segundo, en caso contrario, efectuar la suma.
Ejercicio 5: Leer N números enteros y calcular el promedio de los pares, contar la cantidad de impares
y calcular el promedio de los números proporcionados.
Ejercicio 6: Se tiene las calificaciones de un grupo de 10 alumnos, se necesita saber, ¿cuántos
alumnos tienen una calificación superior al promedio del grupo?. Realizar un D. F., (No utilice
arreglos).
Ejercicio 7: Hacer un D.F., para generar y sumar los N primeros números de la secuencia de la serie de
Leonardo Fibonacci. La secuencia de Fibonacci es: 1,2,3,5,8,13,21,..., es decir, dados los primeros
dos números (1 y 2) la generación de cada nuevo término se pueden encontrar sumando los dos
términos predecentes.
Ejercicio 8: Realizar D.F. para simular una calculadora que realice las operaciones básicas (+,-,*,-).
Mientras el usuario, no presione el símbolo de “=”, se introducirán valores y estos se acumularan
aritméticamente según corresponda, de otro modo, si el usuario desea dar una sólo valor y luego
presiona el “=”, se entiende que el programa tendrá que terminar, en caso contrario, se preguntará por
el siguiente valor y se ejercerá la operación deseada. (Valor = Valor1 Oper_Arit Valor2)
Ejercicio 9: Se proporciona un grupo de N números, redactar el D.F. para sumar los cuadrados de los
negativos y contarlos, el producto de los positivos y contarlos e indicar en que momento se
proporciona él numero cero como dato. Debe imprimirse todo lo solicitado.
Ejercicio 10: Se proporciona un grupo de N números que deben ser enteros. Realizar un D.F. para
determinar el menor de todos, calcular el producto de los impares y determinar el mayor y la posición
en la cual se proporcionó.
Ejercicio 11: Realizar la siguientes series, hasta el N-ésimo término.
b) Serie = -1 + x 1 - x 2 + x 3 - x 5 + x 8 ... N x+1! x+3! x+5! x+7! x+9!
a) Serie = 5 - x 2 + x 4 - x 6 + x 8 - x 10 ... N x+1 x+3 x+5 x+7 x+9
30
Programación en C Ing. Leonel Antonio Quijano Acuña
Unidad IIUnidad II
Ejercicio 12: Grafique, como se representaría un arreglo tridimensional y etiquete indicando ¿qué es?
y ¿Para qué se utiliza? (Todo lo que grafique).
jercicio 13:Calcular el promedio de 50 valores almacenados en un vector. Determinar además cuántos son
mayores que el promedio, imprimir el promedio, el numero de datos mayores que el promedio y una lista
de valores mayores que el promedio .
Ejercicio 14: Llenar dos vectores A y B de 45 elementos cada uno, sumar el elemento uno del vector A
con el elemento uno del vector B y así sucesivamente hasta 45, almacenar el resultado en un vector C,
e imprimir el vector resultante.
Ejercicio 15: Llenar un vector de 20 elementos, imprimir la posición y el valor del elemento mayor
almacenado en el vector. Suponga que todos los elementos del vector son diferentes.
Ejercicio 16: Almacenar 500 números en un vector, elevar al cuadrado cada valor almacenado en el
vector, almacenar el resultado en otro vector. Imprimir el vector original y el vector resultante
Ejercicio 17: Se tiene las calificaciones de un grupo de 10 alumnos, se necesita saber, ¿cuántos
alumnos tienen una calificación superior al promedio del grupo?. Utilizar arreglos.
Ejercicio 18: Se proporciona un arreglo unidimensional de orden N. Representar el D.F., para leer
dicho vector y determinar cual es el elemento menor y la posición que ocupa; y formar un vector con
los elementos que sean mayores al promedio del arreglo leído. En el vector resultante, analizar si
existen elementos pares y sumarlos, excepto los terminados en dos y en cuatro.
Ejercicio 19: Hacer un algoritmo que almacene números en una matriz de 5 * 6. Imprimir la suma de
los números almacenados en la matriz.
Ejercicio 20: Hacer un algoritmo que llene una matriz de 10 * 10 y determine la posición
[renglon,columna] del numero mayor almacenado en la matriz. Los números son diferentes.
Ejercicio 21: Hacer un algoritmo que llene una matriz de 7 * 7. Calcular la suma de cada renglón y
almacenarla en un vector, la suma de cada columna y almacenarla en otro vector.