You are on page 1of 31

Acua

Programacin en C

Ing. Leonel Antonio Quijano


Unidad II

INTRODUCCIN
La computadora no solamente es una mquina que puede realizar procesos para darnos resultados,
sin que tengamos la nocin exacta de las operaciones que realiza para llegar a esos resultados. Con la
computadora, adems de lo anterior, tambin podemos disear soluciones a la medida de problemas
especficos que se nos presenten. Mas an, si estos involucran operaciones matemticas complejas y/o
repetitivas, o requieren del manejo de un volumen muy grande de datos.
El diseo de soluciones a la medida de nuestros problemas, requiere como en otras disciplinas una
metodologa que nos ensee 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 30
serie de operaciones que realiza la computadora para llegar a un resultado, con un grupo de datos
especficos. Lo anterior nos lleva al razonamiento de que un programa nos sirve para solucionar un
problema especifico.
Para poder realizar programas, adems de conocer la metodologa mencionada, tambin 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 Programacin
Computadora: Es un dispositivo electrnico utilizado para procesar informacin y obtener resultados. Los
datos y la informacin se pueden introducir en la computadora como entrada (input) y a continuacin se
procesan para producir una salida (output).
Proceso de informacin en la computadora
Datos de
entrada

Proceso

Datos de
salida

Programa: Es el conjunto de instrucciones escritas de algn lenguaje de programacin y que ejecutadas


secuencialmente resuelven un problema especifico.

Lenguaje: Es una serie de smbolos que sirven para transmitir uno o mas mensajes (ideas) entre dos
entidades diferentes. A la transmisin de mensajes se le conoce comnmente como comunicacin.
La comunicacin es un proceso complejo que requiere una serie de reglas simples, pero
indispensables para poderse llevar a cabo. Las dos principales son las siguientes:
*0
Los mensajes deben correr en un sentido a la vez.
*1
Debe forzosamente existir 4 elementos: Emisor, Receptor, Medio de Comunicacin y Mensaje.

Acua

Programacin en C

Ing. Leonel Antonio Quijano


Unidad II

Lenguajes de Programacin
Es un conjunto de smbolos, caracteres y reglas (programas) que le permiten a las personas
comunicarse con la computadora.
Los lenguajes de programacin tienen un conjunto de instrucciones que nos permiten realizar
operaciones de entrada/salida, calculo, manipulacin de textos, lgica/comparacin y
almacenamiento/recuperacin.
Los lenguajes de programacin se clasifican en:
Lenguaje Maquina: Son aquellos cuyas instrucciones son directamente entendibles por la
computadora y no necesitan traduccin posterior para que la CPU pueda comprender y ejecutar el
programa. Las instrucciones en lenguaje maquina se expresan en trminos de la unidad de memoria mas
pequea el bit (dgito binario 0 o 1).
Lenguaje de Bajo Nivel (Ensamblador): En este lenguaje las instrucciones se escriben en cdigos
alfabticos conocidos como mnemotcnicos para las operaciones y direcciones simblicas.
Lenguaje de Alto Nivel: Los lenguajes de programacin 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 comprensin del
programa.

Definicin de Algoritmo
La palabra algoritmo se deriva de la traduccin al latn de la palabra rabe alkhowarizmi, nombre
de un matemtico y astrnomo rabe que escribi un tratado sobre manipulacin de nmeros y ecuaciones
en el siglo IX.
Un algoritmo es una serie de pasos organizados que describe el proceso que se debe seguir, para
dar solucin a un problema especifico.

Lenguajes algortmicos
Es una serie de smbolos y reglas que se utilizan para describir de manera explcita un proceso.
Tipos de Lenguajes Algoritmicos
Grficos: Es la representacin grfica de las operaciones que realiza un algoritmo (diagrama de flujo).
No Grficos: Representa en forma descriptiva las operaciones que debe realizar un algoritmo
(pseudocodigo).

30

Acua

Programacin en C

Ing. Leonel Antonio Quijano


Unidad II

Grficos :
Diagrama de Flujo
Un diagrama de flujo es la representacin grfica de un algoritmo. Tambin se puede decir que es
la representacin detallada en forma grfica de como deben realizarse los pasos en la computadora para
producir resultados.
Esta representacin grfica se da cuando varios smbolos (que indican diferentes procesos en la
computadora), se relacionan entre si mediante lneas que indican el orden en que se deben ejecutar los
30
procesos.
Los smbolos utilizados han sido normalizados por el instituto norteamericano de normalizacin (ANSI).
Recomendaciones para el diseo de Diagramas de Flujo
Se deben se usar solamente lneas de flujo horizontales y/o verticales.
Se debe evitar el cruce de lneas utilizando los conectores.
Se deben usar conectores solo cuando sea necesario.
No deben quedar lneas de flujo son conectar.
Se deben trazar los smbolos de manera que se puedan leer de arriba hacia abajo y de izquierda a
derecha.
Todo texto escrito dentro de un smbolo deber ser escrito claramente, evitando el uso de muchas
palabras.

Diagramas estructurados (Nassi-Schneiderman)


El diagrama estructurado N-S tambin conocido como diagrama de chapin es como un diagrama
de flujo en el que se omiten las flechas de unin 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 Grgicos: Pseudocodigo
Mezcla de lenguaje de programacin y espaol (o ingles o cualquier otro idioma) que se emplea,
dentro de la programacin estructurada, para realizar el diseo de un programa. En esencial, el
pseudocodigo se puede definir como un lenguaje de especificaciones de algoritmos.

Acua

Programacin en C

Ing. Leonel Antonio Quijano


Unidad II

Es la representacin narrativa de los pasos que debe seguir un algoritmo para dar solucin a un
problema determinado. El pseudocodigo utiliza palabras que indican el proceso a realizar.
Ventajas de utilizar un Pseudocodigo a un Diagrama de Flujo
Ocupa menos espacio en una hoja de papel
Permite representar en forma fcil operaciones repetitivas complejas
Es muy fcil pasar de pseudocodigo a un programa en algn lenguaje de programacin.
Si se siguen las reglas se puede observar claramente los niveles que tiene cada operacin.
30

Modelo:
Accion1
Accion2
.
.
AccionN
Fin

Ejemplos de Algoritmos
Identificador:Es el carcter alfabtico o grupo de caracteres alfabticos o alfanumricos que se
emplean para representar algo en la solucin de un problema.

SUMA

IDENTIFICADOR

OPERADOR

IDENTIFICADOR

+
OPERADOR

3
CONSTANTE

Redactar el algoritmo para leer 2 nmeros

Calcular el rea de envoltura de papel de

cualesquiera y calcular la suma de ambos.

una lata cilndrica que tiene una altura H y


un dimetro D. Redactar el algoritmo para

Paso 1. inicio
Paso 2. leer N1

leer la H y el dimetro D y calcular el rea


IDENTIFICADOR

solicitada.

Paso 3. leer N2

Paso 1. inicio

Paso 4. total = N1 + N2

Paso 2. leer D

Paso 5. fin.

Paso 3. leer H

IDENTIFICADOR

Paso 4. PC = 3.1416 * (D/2)


Paso 5. Area = PC*H
Paso 6. Fin

Acua

Programacin en C

Ing. Leonel Antonio Quijano


Unidad 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 c
5. Cos_A = b2 + c2 + a2/2bc
6. Cos_B = a2 + c2 b2/2ac
7. Cos_C = b2 + a2 c2/2ab
8. Imprimir el coseno del ngulo que es : cos_A
9. Imprimir el coseno del ngulo que es : cos_B
10. imprimir el coseno del ngulo que es : cos_C
11. Fin.

Figura: Tringulo ABC


Formula:
Cos A = b2 + c2 + a2/2bc
Cos B = a2 + c2 b2/2ac

30

Cos C = b2 + a2 c2/2ab
C

a
b
A

Estructuras Algoritmicas
Las estructuras de operacin de programas son un grupo de formas de trabajo, que permiten,
mediante la manipulacin de variables, realizar ciertos procesos especficos que nos lleven a la solucin
de problemas. Estas estructuras se clasifican de acuerdo con su complejidad en:

Secuenciales

- Asignacin
- Entrada
- Salida
- Simples

Estructuras Condicionales
Algoritmicas

Cclicas

- Mltiples
- Hacer para
- Hacer mientras
- Repetir hasta

Acua

Programacin en C

Ing. Leonel Antonio Quijano


Unidad II

Estructuras Secuenciales
La estructura secuencial es aquella en la que una accin (instruccin) 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:
Inicio
Accion1
Accion2
.
.
30
AccionN
Fin
- Asignacin: La asignacin 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 asignacin 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 operacin matemtica 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
operacin se representa en un pseudocodigo como sigue:
Leer a, b
Donde a y b son las variables que recibirn 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 comparacin, se siga un curso de accin dentro del programa. Cabe mencionar que la
comparacin se puede hacer contra otra variable o contra una constante, segn se necesite. Existen dos
tipos bsicos, las simples y las mltiples.

Acua

Programacin en C

Ing. Leonel Antonio Quijano


Unidad II

Simples: Las estructuras condicionales simples se les conoce como Tomas de decisin. Estas
tomas de decisin tienen la siguiente forma:

Si <condicin> entonces
Accin(es)
Fin-si
Decisin: Es una comparacin o relacin existente entre 2 identificadores y un valor. Es decir, dados los
valores A y B se puede tener de ellas la siguiente relacin:
A>B A es mayor que B.
30

A=B A es igual que B.


A<B A es menor que B.
Ejemplo: Dados 2 nmeros 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. multiplicacin = A*B
6. imprimir (el valor de multiplicacin es, multiplicacin) 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 funcin del cumplimiento o no de una determinada condicin. Se representa de la
siguiente forma:
Si <condicin> entonces
Accin(es)
si no
Accin(es)
Fin-si

Donde:
Si Indica el comando de comparacin

Acua

Programacin en C

Ing. Leonel Antonio Quijano


Unidad II

Condicin
entonces..
accin(es)
si no

Indica la condicin a evaluar


Precede a las acciones a realizar cuando se cumple la condicin
Son las acciones a realizar cuando se cumple o no la condicin
Precede a las acciones a realizar cuando no se cumple la condicin

Dependiendo de si la comparacin es cierta o falsa, se pueden realizar una o mas acciones.

Mltiples: Las estructuras de comparacin mltiples, son tomas de decisin especializadas que
permiten comparar una variable contra distintos posibles resultados, ejecutando para cada caso una
serie de instrucciones especificas. La forma comn es la siguiente:
30
Si <condicin> entonces
Accin(es)
si no
Si <condicin> entonces
Accin(es)
si no
.
.
Varias condiciones
.

Forma General
Casos Variable
Op1: Accin(es)
Op2: Accin(es)
.
.
OpN: accin
Fin-casos

Acua

Programacin en C

Ing. Leonel Antonio Quijano


Unidad II

Diagramas de Flujo (D.F.)


Diagrama de Flujo o Organigrama. Representacin semigrfica del algoritmo en cuestin y representa la 30
solucin de un problema por medio de smbolos estandarizados, que se colocan en una secuencia
adecuada para indicar las fases lgicas de la solucin de un problema.
Esto nos facilita la visin descriptiva de la ejecucin del programa, as como la generacin de la traza
del algoritmo o del Diagrama de Flujo . Se denomina traza de un algoritmo o Diagrama de Flujo, a la
ejecucin manual de un programa obteniendo para cada paso un resultado.
El sentido de la ejecucin de un D.F. es de arriba hacia abajo y de izquierda a derecha. El D.F.,
proporciona algo ms que una descripcin detallada del flujo o procesamiento de informacin, sirve
tambin como:

Medio de comunicacin eficiente.

Herramienta de anlisis.

Forma concisa de documentacin.

Smbolos generales:

Inicio y fin de un programa.

Operaciones de I/O , aritmticas y lgico-aritmticas.

Decisiones lgicas.

Flujo de la ejecucin.

Los D.F., slo tienen una entrada y una salida, es decir, que es la representacin grfica de un algoritmo
estructurado (subalgoritmo).

Traza de un Diagrama de Flujo.

Acua

Programacin en C

Ing. Leonel Antonio Quijano


Unidad II

La traza (tambin conocido como: Prueba de Escritorio) de un Algoritmo o Diagrama de Flujo, se


puede definir como la ejecucin 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.
T R AZ A

+-

Diagrama de Flujo
Inicio
a=0, b=0

Comentario
Leemos a:
Leemos b:
Calcula c:
Escribe c:

Valores
a <- 4
b <- 5
c <- a+b <- 9
c <- 9

a,b
c = a + b
c

terminar

La funcin principal que posee realizar la traza de un algoritmo es la de comprobar que ste funciona
correctamente o para realizar la etapa de depuracin en la que se intenta corregir errores, simplificar
el algoritmo al mximo e incrementar su eficacia y velocidad.
Simbologa bsica del los Diagrama de Flujo
Todos los smbolos se unen mediante lneas que tiene un solo sentido, y se les conoce como lneas de
flujo, las cuales indican el sentido de la ejecucin 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 lgico del D.F.)

Inicio

30

Acua

Programacin en C

Ing. Leonel Antonio Quijano


Unidad II

Smbolo de lectura. Se encierra lo que ser ledo.


N

Smbolo de impresin. Empleado para la impresin de los valores que tienen los indentificadores o
30

citar mensajes.
Resultado

Bloque de procesamiento. Se usan para representar: asignaciones o para realizar clculos.


A=B+C

Conectores. Empleados para indicar hacia donde continua el D.F.


Instruccin

Colectores. Son para recibir dos lneas de flujo y tener una lnea resultante.
No

Si

A=B

Smbolo de Condicin o Decisin.

No

Condicin

Si

No
Instruccin

A=B

Si
Instruccin

Decisin: Se utiliza para buscar una comparacin o relacin lgica entre dos valores. Si la condicin se
cumple,

la direccin lgica tamar el camino del

si y ejecutar la instruccin o instrucciones

correspondientes; en caso contrario, tomar el camino del no (si no ).

Al tomar la alternativa del

Acua

Programacin en C

Ing. Leonel Antonio Quijano


Unidad II

no, podra ser necesario no realizar una instruccin o grupos de instrucciones, ya que puede ser deseable
que por las condiciones del problema, no se necesite realizar ninguna instruccin.

Simbolo de decisin anidados.

Esta simbologa, es semejante a la anterior. Al implantar una

simbologa de condicin y agregar inmediatamente otro smbolo igual al anterior (en lugar de una
instruccin) independientemente de la posicin lgica si o si no, en ese momento se puede decir
30

que se est utilizando simbologa de decisin anidada.

No
No

Condicin
Si

Condicin

No

Si
Si

Condicin
No

Instruccin

Instruccin

Instruccin

Si

Condicin
No

Instruccin

Condicin

Si

Instruccin

Cabe mencionar, que mientras ms condiciones anidadas se implanten, ms complejidad de interpretacin


o confusin se presentar al analizar el diagrama de flujo. Para tal caso, se crea simbologa que sigue a
continuacin.
Instruccin Segnhacer (case)
Es una instruccin de seleccin mltiple de opciones. En esta simbologa de multiples caminos, solamente
Segn Valor

uno es el que se ejecutar (de acuerdo al deseado) e inmediatamente terminar el mdulo del flujo lgico.
Instruccin

Instruccin

Instruccin

Instruccin
Fin Segn

Instruccin

Instruccin

Instruccin

Acua

Programacin en C

Ing. Leonel Antonio Quijano


Unidad II

Otros smbolos:
30
Smbolo

Uso
Ejemplo
Expresa, la tomar la parte entera A = 3.567
de un identificador
Expresa, tomar el mdulo a

A = 3
A = 20

residuo de una divisin entera


A/ 2
Expresa, El valor absoluto de que A= -55
tine un identificador.

=0

A = 55

Ejemplos resueltos:
Diagrama de Flujo. (Utilizando simbologa bsica) Lee dos nmeros cualesquiera y calcula la suma de
ambos.

INICIO
A,B
SUMA = A + B

SUM
A
TERMINAR

Ejercicio utilizando (if-else).-Hacer un D.F. paraInicio


leer las coordenadas de un punto y las coordenadas del
centro de una circunferencia con radio R, determinar la posicin del punto (dentro, sobre, fuera de la
R,Xc,Yc,Xp,Yp
INICIO

circunferencia).

D= (Xc-Xp) 2 + (Yc-Yp)2
R>D
Fuera

R=D

Sobre

Terminar

Dentro

Acua

Programacin en C

Ing. Leonel Antonio Quijano


Unidad II

Realizar un diagrama de flujo para leer una calificacin que debe ser entera y legal. Determinar si la
calificacin es reprobatoria, si saco 70, si saco 80, si saco 90, o excelente.
INICIO

30

CAL

CAL >= 0
And Cal <=100
Segn CAL

Reprobado

Saco 70

Saco 80

Saco 90

Excelente

Terminar Segn

Terminar

Problemas Secuenciales para Diagramar


1) Suponga que un individuo desea invertir su capital en un banco y desea saber cuanto dinero ganara
despus de un mes si el banco paga a razn de 2% mensual.
Inicio

Leer cap_inv
gan = cap_inv * 0.02
Imprimir gan
Fin
2) Un vendedor recibe un sueldo base mas un 10% extra por comisin 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

Acua

Programacin en C

Ing. Leonel Antonio Quijano


Unidad II

tpag = sb + com
Imprimir tpag, com
Fin
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.
Inicio
Leer tc
d = tc * 0.15
tp = tc - d
Imprimir tp
30
Fin
4) Un alumno desea saber cual ser su calificacin final en la materia de Algoritmos. Dicha calificacin se
compone de los siguientes porcentajes:
55% del promedio de sus tres calificaciones parciales.
30% de la calificacin del examen final.
15% de la calificacin 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 cf
Fin
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, pm
Fin

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
inversin 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

Acua

Programacin en C

Ing. Leonel Antonio Quijano


Unidad II

int = cap * p_int


si int > 7000 entonces
cap = cap + int
fin-si
Imprimir capf
fin
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
30
prom = (calif1 + calif2 + calif3)/3
Si prom >= 70 entonces
Imprimir alumno aprobado
si no
Imprimir alumno reprobado
Fin-si
Fin
3) En un almacn 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_pag
fin.

Problemas Selectivos Compuestos para diagramar


1) Leer 2 nmeros; 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 entonces
resul = num1 - num2
si no
resul = num1 + num2
-fin-si
* fin-si
fin

Acua

Programacin en C

Ing. Leonel Antonio Quijano


Unidad II

2) Leer tres nmeros diferentes e imprimir el numero mayor de los tres.


Inicio
Leer num1, num2, num3
Si (num1 > num2) and (num1 > num3) entonces
mayor = num1
si no
Si (num2 > num1) and (num2 > num3) entonces
mayor = num2
si no
mayor = num3
fin-si
fin-si
Imprimir mayor
fin
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 - 40
Si he < = 8 entonces
pe = he * pph * 2
si no
pd = 8 * pph * 2
pt = (he - 8) * pph * 3
pe = pd + pt
fin-si
tp = 40 * pph + pe
fin-si
Imprimir tp
fin
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 antigedad en la empresa de acuerdo con la sig.
tabla:
Tiempo
Utilidad
Menos de 1 ao
5 % del salario
1 ao o mas y menos de 2 aos
7% del salario
2 aos o mas y menos de 5 aos
10% del salario
5 aos o mas y menos de 10 aos
15% del salario
10 aos o mas
20% del salario
Inicio

30

Acua

Programacin en C

Ing. Leonel Antonio Quijano


Unidad II

Leer sm, antig


Si antig < 1 entonces
util = sm * 0.05
si no
Si (antig > = 1) and (antig < 2) entonces
util = sm * 0.07
si no
Si (antig > = 2) and (antig < 5) entonces
util = sm * 0.10
si no
Si (antig > = 5) and (antig < 10) entonces
util = sm * 0.15
si no
util = sm * 0.20
fin-si
fin-si
fin-si
fin-si
Imprimir util
fin
5) En una tienda de descuento se efecta una promocin en la cual se hace un descuento sobre el valor de
la compra total segn 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

Acua

Programacin en C

Ing. Leonel Antonio Quijano


Unidad II

Estructuras Cclicas

30

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 cclicas, son controladas
(abortadas, canceladas o terminadas)

mediante el cumplimiento de una condicin o a travs de un

contador automtico.
Por lo tanto, Se llaman problemas repetitivos o cclicos a aquellos en cuya solucin 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
funcin de algn 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 condicin dada sea verdadera, salindose del ciclo en el
momento que la condicin sea falsa.

Simbologa General :

Simbologa ejemplo:
N

Condicin

No
N<0

Si
Instrucciones

Si
I

No

Acua

Programacin en C

Ing. Leonel Antonio Quijano


Unidad II

Ejercicio.- Diagrama de flujo para leer un nmero entero que debe ser no negativo. Calcular el factorial de
30

dicho nmero. (Ejemplo: Factorial 5! =5x4x3x2x1 =120)


Inicio
N

N<0

No

Si
I

Fact = 1
Aux = N

No
Aux > 1
Si
Fact, N
Fact = Fact * Aux
Aux = Aux -1

Terminar

Observacin importante. Si al iniciar el ciclo repetitivo, la concicin 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 condicin es falsa. Es necesario que un componente de la
condicin se altere para evitar caer en un ciclo repetitivo infinito.
Simbologa General

Simbologa de ejemplo: N tiene que ser mayor que cero.

Instruccin

No

Condicin
Si

No

N>0
Si

Acua

Programacin en C

Ing. Leonel Antonio Quijano


Unidad II

Ejercicio - Realizar un D.F. para calcular la suma de los primeros 10 nmeros impares.
30
Inicio
Genimp=1
Cont=1
Sumimp = 1

Genimp = Genimp + 2
Cont = cont+ 1
Sumimp = sumimp + Genimp

No

Cont = 10
Si
Sumimp
Terminar

C)Desde-hasta-hacer-fin desde (For)


Realiza repetitivamente un ciclo de instruccin(es) hasta cumplir con el nmero de veces previamente
conocido. Existen dos variantes de este ciclo de control.
To
For
I = 1 to N

El For to:
Intrucciones

Downto

I = N Downto 1

El For Downto(forma inversa):


Intrucciones

Acua

Programacin en C

Ing. Leonel Antonio Quijano


Unidad II

El identificador I (pudo ser cualquiera). Es un auxiliar que se utiliza para llevar el control cclico
30

automtico.
Caso for to; el identificador variable I, tendr el valor numrico uno (1) cuando el flujo lgico pase la
primera vez. Mientras no salga de la primera vuelta I siempre tendr el valor nurico uno (1).
El ciclo lgico terminar cuando I alcance el valor de N (nmero mximo de vueltas previamente
conocido).
Caso for downto; el identificador variable I, tendr el valor numrico N (nmero mximo de vueltas
previamente conocido) y cada vez que pase por el flujo lgico decrementar de manera automtica, 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 nmerico de uno ( pasa por ltima vez), de tal forma que cuando I tenga como
valor numrico cero (0), el flujo saldr del ciclo.
Ejemplo:
I = 10 Downto 1
I

Se imprimir en la pantalla como


resultado los valores numricos del 10 al
1 en forma descendente.
Si se deseara realizar el en forma
ascendente se tendra que utilizar el
ciclo repetitivo For To

Problemas ( Hacer para )


1) Calcular el promedio de un alumno que tiene 7 calificaciones en la materia de Diseo 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 prom
Fin.

Acua

Programacin en C

Ing. Leonel Antonio Quijano


Unidad II

2) Leer 10 nmeros y obtener su cubo y su cuarta.


Inicio
Hacer para n = 1 a 10
Leer num
cubo = num * num * num
cuarta = cubo * num
Imprimir cubo, cuarta
Fin-para
Ejercicio. Realizar un Diagrama de Flujo para calcular hasta el n-simo termino (al menos uno ) de la
siguiente serie.
Serie = X1
2

X2
4

X3
6

X4
8

+ ...

El valor de X, tendr que estar en un intervalo cerrado de 1 a 20


Inicio
Serie=0, Term=0
Par = 0
PotX=1,N=0

No
N >0
Si

No

X>0 and X <21


Si
I=1ToN

Par = Par + 2
PotX = Potx * X
Term = PotX/ Par
serie = serie + term

XN
( N par)

30

Acua

Programacin en C

Ing. Leonel Antonio Quijano


Unidad II

serie
Terminar

30

Arreglos
Arreglo:Es un conjunto o coleccin de variables del mismo tipo, donde cada elemento ocupa una posicin
determinada, nica y que se referencian utilizando un nmbre comn.
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.

Notacin del arreglo:

Identificador [subndice]

Los subndices indican la posicin del elemento dentro del arreglo y son variables ordinales (enteros o
caracteres).
Tipos de arreglos de acuerdo a su dimensin:

Unidimensionales O VECTORES

Bidimensionales O MATRICES

Tridimensionales O MATRICES

Arreglos Multidimensionales: Segn el Lenguaje de Programacin que se utilice, ser el


nmero 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
mximo.

Arreglo de una dimensin:

Acua

Programacin en C

Ing. Leonel Antonio Quijano


Unidad II

Numeros
25
1

Nombre del Arreglo


1
2

8
3

Dato de las posiciones


5
4

Posicin de los elementos

34
5

1256
6

0
7

Acceso al quinto elemento: Numero[5] = 34

30

Vectores
Es un arreglo de N elementos organizados en una dimensin donde N recibe el nombre de
longitud o tamao 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 posicin en particular del vector. Por ejemplo:
Vec[x]
Donde:
Vec Nombre del arreglo
x Numero de datos que constituyen el arreglo
Representacin grfica de un vector
Vec[1]
Vec[2]
Vec[3]
Vec[4]

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=1
Repetir
Leer vec[I]

7
8
9
1
0

Acua

Programacin en C

Ing. Leonel Antonio Quijano


Unidad II

I=I+1
Hasta-que I>10

30
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=0
Par = 0
Impar = 0

No

N>2

I = 1 to N
X[ I ]

No

X[ I ]/2 = 0

X[ impar ]= X[ I ]

Si

X[ par ]= X[ I ]

Terminar

Acua

Programacin en C

Ing. Leonel Antonio Quijano


Unidad II

30

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
acompaado de dos ndices.
Mat [R,C]
Donde R indica el rengln y C indica la columna, donde se encuentra almacenado el dato.
Representacin grfica de una matriz
Mat [R,C]

Fila o Renglon
[R]

1,1
2,1
3,1
4,1

1,2
2,2
3,2
4,2

1,3
2,3
3,3
4,3

1,4
2.4
3,4
4,4
Columna
[C]

Acceso a la matriz
Matriz_letras

Acceso a la letra C: Matriz_letras[2,2]


1
A
h
L

2
P
C
z

3
F
u
H

1
2
3

Acua

Programacin en C

Ing. Leonel Antonio Quijano


Unidad II

Llenado de una matriz

Por renglones
Hacer para R = 1 a 5
Hacer para C = 1 a 5
Leer Mat [R,C]
Fin-para
Fin-para

Por columnas
Hacer para C = 1 a 5
Hacer para R = 1 a 5
Leer Mat [R,C]
Fin-para
Fin-para

30

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 matrz cuadrada de MxN, desarrollar la lgica en D.F., para leer dicha matrz.
M
2

67

346

-9

10

32

-6

1 to
MM
==
1 to
44
N =N1=to1 4to 4

Acua

Programacin en C

Ing. Leonel Antonio Quijano


Unidad II

EJERCICIOS DE LA UNIDAD
30

Ejercicio 1: Redactar un algoritmo para ir a la escuela.

Ejercicio 2: Disear un diagrama de flujo para calcular el promedio de las tres calificaciones de un
alumno.

Ejercicio 3: Disear un diagrama de flujo para calcular la suma de los 10 primeros nmeros impares.

Ejercicio 4: Dado dos nmeros cualesquiera, disear 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 nmeros enteros y calcular el promedio de los pares, contar la cantidad de impares
y calcular el promedio de los nmeros proporcionados.

Ejercicio 6: Se tiene las calificaciones de un grupo de 10 alumnos, se necesita saber, cuntos


alumnos tienen una calificacin 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 nmeros 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 nmeros (1 y 2) la generacin de cada nuevo trmino se pueden encontrar sumando los dos
trminos predecentes.

Ejercicio 8: Realizar D.F. para simular una calculadora que realice las operaciones bsicas (+,-,*,-).
Mientras el usuario, no presione el smbolo de =, se introducirn valores y estos se acumularan
aritmticamente segn corresponda, de otro modo, si el usuario desea dar una slo 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 operacin deseada. (Valor = Valor1 Oper_Arit Valor2)

Ejercicio 9: Se proporciona un grupo de N nmeros, 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.

Acua

Programacin en C

Ing. Leonel Antonio Quijano


Unidad II

Ejercicio 10: Se proporciona un grupo de N nmeros 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 posicin
en la cual se proporcion.

Ejercicio 11: Realizar la siguientes series, hasta el N-simo trmino.


a)

Serie = 5 - x2 + x4 - x6 + x8 - x10 ... N


x+1
x+3 x+5
x+7
x+9

b)

Serie = -1 + x1
x+1!

- x2
x+3!

+ x3 - x5 + x8 ... N
x+5! x+7! x+9!

Ejercicio 12: Grafique, como se representara 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 adems cuntos 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 posicin y el valor del elemento mayor
almacenado en el vector. Suponga que todos los elementos del vector son diferentes.

Ejercicio 16: Almacenar 500 nmeros 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, cuntos
alumnos tienen una calificacin 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 posicin que ocupa; y formar un vector con
los elementos que sean mayores al promedio del arreglo ledo. 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 nmeros en una matriz de 5 * 6. Imprimir la suma de
los nmeros almacenados en la matriz.

Ejercicio 20: Hacer un algoritmo que llene una matriz de 10 * 10 y determine la posicin
[renglon,columna] del numero mayor almacenado en la matriz. Los nmeros son diferentes.

Ejercicio 21: Hacer un algoritmo que llene una matriz de 7 * 7. Calcular la suma de cada rengln y
almacenarla en un vector, la suma de cada columna y almacenarla en otro vector.

30

Acua

Programacin en C

Ing. Leonel Antonio Quijano


Unidad II

30