Documente Academic
Documente Profesional
Documente Cultură
Figura 1.1
La CPU (Unidad de Procesamiento y Control) es, como su nombre lo indica, la parte
que procesa la informacin haciendo operaciones aritmticas y lgicas, y realiza
operaciones de control, como indicar si se lee informacin del teclado, ratn, discos
duros, la RAM as como indicar si se escribe la informacin a alguno de estos
dispositivos si es que soporta la escritura. Ejemplos de CPU son Icore, Core i3, i5 e i7
de INTEL y A3, A5 A8 y A10 de AMD.
Los perifricos son los dispositivos conectados a la CPU a travs de un puerto o
interface, por ejemplo el ratn puede ser conectado a travs de un puerto PS/2 o un
puerto USB, as como el teclado. Los discos duros se conectan a travs de ranuras o
interfaces que estn en la tarjeta madre donde reside la CPU. Esta tarjeta madre tiene
toda la electrnica para conectar los perifricos y memoria a la CPU. Hay perifricos
que son de entrada, es decir, mandan informacin a la CPU por ejemplo el ratn y el
teclado, otros son perifricos de salida, es decir, la CPU manda informacin al
perifrico como por ejemplo un monitor o una impresora y hay perifricos que son de
Entrada y Salida (E/S), es decir, la CPU puede leer o escribir informacin a dicho
perifrico, como es el caso del Disco Duro y memorias USB.
La memoria RAM es el lugar donde estn las instrucciones que dirigen las
operaciones que realiza la CPU y los datos que usa en sus operaciones. Para que un
programa sea ejecutado, se debe cargar en la memoria RAM. Las instrucciones son
rdenes que debe realizar o ejecutar una CPU por ejemplo hay una instruccin que
indica que la CPU debe hacer una suma, una resta, o realizar una ecuacin muy
compleja. Los datos es la informacin que utiliza la CPU al ejecutar sus
instrucciones, por ejemplo el 5 y 6 son datos que se pueden usar en una suma u otra
operacin.
Sistema
Operativo
Programa
1
Programa
2
...
Programa
Figura 1.2 Memoria RAM
n
Cuando se prende una computadora, la CPU tiene un comportamiento por default que
es ir a Disco Duro y leer una posicin por default y ejecutar la instruccin que
encuentre all. Esta instruccin es la que permite la carga del Sistema Operativo (que
tambin est en el disco duro) a la memoria RAM. Ya cargado el sistema operativo,
ste toma el control de la CPU, perifricos y memoria RAM. Hay muchos procesos y
funciones que se podran explicar en este momento para tratar de dar a entender
cmo es que el SO orquesta estos tres componentes pero es para un curso de SOs.
Lo que nos interesa en este momento es que ejecutaremos o mejor dicho cargaremos
a memoria RAM un programa que nos permite el uso de un lenguaje de programacin
que llamaremos editor y compilador, en el primero crearemos nuestro programa y el
compilador cargara dicho programa en un rea de la memoria RAM asignada por el
SO para ejecutarlo. El SO estar al pendiente de nuestro programa para que no se
salga del rea o segmento que le asigno. Qu significa esto? Que el programa est
en un rea o segmento de memoria RAM debidamente organizada por lo menos
en otras 3 reas o segmentos: un rea de instrucciones, otra de datos y otra
rea de pila. En la figura 1.2 muestra como una parte de la memoria RAM est
ocupada por el Sistema Operativo y el resto por los dems programas. Realmente hay
ms reas identificables en la memoria RAM como es el rea de video, el rea de
controladores para perifricos, etc pero para nuestro curso es suficiente con la
organizacin de la figura 1.2
.
A: 1,001
Num: 1,002
1,003
RAM
20
Figura 1.3
En la figura 1.3 son variables A y Num. Ellas nos representan una direccin de
memoria. La direccin de memoria 1,001 para el caso de la variable A, localidad
donde est el dato a; y la variable Num nos representa la direccin de memoria 1,002
pero el dato que est en dicha direccin en un nmero entero, el 20 y estos nmeros
ocupan siempre dos bytes por lo tanto se toma el byte siguiente que es el 1,003.
Usted como programador no requiere saber las direcciones reales, simplemente use
las variables para manipular datos por ejemplo:
Dat1 = 10;
Dat2= 20;
Dat3 = Dat1 +Dat2;
Las operaciones de arriba son fcilmente entendibles; la variable Dat1 y Dat2 se les
asigna los valores 10 y 20 respectivamente y Dat3 vale 30 porque recibe como dato el
resultado de los valores de las variables Dat1 y Dat2. Vea como es fcil hacer
operaciones y asignar valores a variables sin necesidad de saber en qu direccin de
Tabla 1.1
A continuacin mostramos un ejemplo de un diagrama de flujo:
Figura 1.4
El diagrama de flujo de la figura 1.4 muestra 3 partes que debe tener siempre un
diagrama de flujo:
-
Si volvemos a ver el diagrama de la figura 1.4, veremos que el primer y ltimo smbolo es
el mismo y se utilizar para indicar inicio y fin de un diagrama de flujo. Este diagrama
muestra que es lo que se debe hacer para sumar dos nmeros. Despus del inicio del
diagrama de flujo, el siguiente smbolo, y de acuerdo a la tabla 1.1 indica entrada de datos
desde el teclado, esto quiere decir que el usuario de una computadora usar el teclado
para indicar dos valores a sumar, por ejemplo 5 y 7, y cada una de ellas sern asignadas
a las variables A y B. El tercer smbolo indica una operacin y la operacin es que la
variable Suma se le asignar el valor de A+B, es decir la variable Suma ser igual 11. El
cuarto smbolo indica que el valor asignado a la variable Suma ser mostrado en la
pantalla de la computadora.
Ejercicios
Ahora hagamos otros ejercicios para entender los diagramas de flujo ilustrando procesos
que llevamos a cabo en la vida diaria.
Ejercicio 1. Suponga que va a cambiar el foco de su casa, alcanzable con una silla.
Describa los pasos que debe realizar en un diagrama de flujo. El diagrama debe
considerar que en su casa puede o no haber un foco de repuesto.
Ejercicio 2. Realice un diagrama de flujo donde muestre los pasos a seguir para cruzar
una calle que no tiene semforo.
Ejercicio 3. Suponga que va a preparar una impresora para imprimir y lo que va a revisar
es: que est conectada (si no lo est, hay que conectarla), tenga tinta (sino tiene hay que
ponerle), papel (si no tiene hay que ponerle) y al final prenderla. Considere que se tiene
papel y tinta en caso de que se requiera.
Ejercicio 4. Suponga que un mesero, va a servir tres copas de vino de la nica botella de
una marca que queda en el restaurant. La botella solo tiene vino para esas tres copas. El
mesero debe llenar las copas de tal forma que queden llenas de igual forma. No se puede
pasar el vino de una copa a otra si es que se llega a pasar. Realice un diagrama de flujo
que muestre las acciones a seguir desde el momento de tomar las copas del estante y
abrir la botella hasta el momento en que se termina de llenar las copas.
Ejercicio 5. En un hospital hay enfermeros que apuntan los signos vitales que toman de
los pacientes de una sala de espera, los deben atender hasta terminar con los que tengan
en dicha sala. Los signos vitales son peso y altura, tomadas de una bscula, y presin
arterial. Solo hay dos enfermeros, uno para tomar el peso y la altura de la bscula, y el
otro para la presin arterial. Muestre en un diagrama de flujo el proceso de tomar los
signos vitales.
Ejercicio 6. A veces a las empresas de paquetera se les solicita entregar un paquete
exclusivamente al destinatario, en caso de que no est el destinatario realizan otros dos
intentos ms. Si en alguno de los intentos encuentran al destinatario, entregan el paquete,
llenan una ficha y la firma el destinatario. Muestre en un diagrama de flujo de este
proceso.
1.3 Estructura bsica de un programa de un programa en lenguaje C.
El cdigo 1.1 muestra la estructura bsica de un programa en lenguaje C. El nmero de
lnea que pusimos al principio es para ayudar a la explicacin y realmente no es
parte de la estructura bsica. Definamos la palabra cdigo: es un conjunto de
instrucciones, libreras, definiciones de variables, directivas y funciones. Las libreras son
archivos que se instalan junto con el programa compilador y definen una serie de
procesos o funciones que pueden ser utilizadas por el programador, esas funciones se
pueden invocar bajo un nombre. La funcin es un proceso especfico, por ejemplo hay
una funcin que se llama cos(x) el cual calcula el coseno del ngulo x y a su vez para
poderla utilizar en el programa se debe insertar la lnea #include <cmath> al principio de
este.
#include <iostream>
//Librerias
3
4
5
6
7
8
9
10
El cdigo 1.1 contiene comentarios, estos estn resaltados en rojo. Los comentarios
empiezan con // y solo se puede poner el comentario en dicha lnea. Si se requiere que
comentar en ms de una lnea use /* ponga el comentario ocupando las lneas que
requiera y termine con */, vea el ejemplo de lnea 9 y 10. Los comentarios como su
nombre lo indica son solo para documentar lo que hace el programa o el cdigo.
La lnea 1 del cdigo 1.1 indica donde se ponen las libraras, como dijimos se debe usar el
nombre de la librera entre < > y precedida por el #include. En este caso la librera que se
est usando es iostream.
La lnea 2 del cdigo 1.1 indica el uso de un objeto, el objeto std. El uso de los objetos es
muy comn en la programacin orientada a objetos, tema que se ver en el siguiente
curso de programacin. Nosotros usaremos el objeto std y ahondaremos en esto un poco
ms adelante.
La lnea 3 del cdigo 1.1 declara la funcin principal. Lenguaje C trabaja creando
funciones pero la funcin principal es main(). Es principal porque est funcin se ejecuta
por default cuando se ejecuta un programa C, es el punto de inicio de cualquier programa,
desde este podemos ejecutar otras funciones como cos(x).
La lnea 4 del cdigo 1.1 muestra un {, esta llave tiene su par en la lnea 8, }, este par de
llaves forma un bloque de cdigo perteneciente a la funcin main(). Todo el cdigo que se
ponga entre estas llaves es de la funcin main().
La lnea 7 del cdigo 1.1, es la instruccin return, se usa frecuentemente para finalizar
una funcin, puede ponrsele un valor a continuacin de esta instruccin, esto nos servir
para dar a una funcin la facultad de asignacin de valor a una variable al momento en
que finaliza la funcin, caso que veremos en el captulo de funciones. En este caso la
funcin main() est siendo ejecutada por el Sistema Operativo (SO), por ello el valor que
se le ponga a return, se le dar a ste. Qu hace el SO con ste valor? Lo usa para
mandar mensajes de error o lo ignora. Depende de las implementaciones del SO. El
return se le puso el valor 0, el cual indica al SO que el programa finalizo bien. Si
regresamos a la lnea 3, antes de la palabra main(), est la palabra int, que significa
integer (entero), est palabra est relacionado directamente con el valor que se le pone al
return, por ser el 0 un nmero entero, se pone int antes de la declaracin main().
La estructura bsica de un programa en C, siempre debe aparecer en nuestros
programas. La estructura bsica de un programa C no hace nada, requerimos aadir
nuestro cdigo.
1.3.1 Ejemplos de diagramas de flujo y programas en C.
Realicemos un programa que sume dos nmeros. El diagrama de flujo ser el de la figura
1.5.
Inicio
A= 5+6
Fin
Figura 1.5
Como dijimos el diagrama de flujo empieza y termina con el mismo smbolo y el resto de
los smbolos nos dice las instrucciones a implementar.
El rectngulo nos indica una operacin, es este caso es la sumatoria 5+6 (5 y 6 son los
datos) el resultado se asigna a la variable A (la variable nos representa una direccin de
memoria RAM para mantener datos).
El siguiente smbolo, despus del rectngulo, nos simboliza una impresin del resultado
en pantalla. Vea que hay una frase entre dobles comillas, a esto lo llamamos cadena de
caracteres, las cuales se imprimirn en pantalla tal como este escrito, en este caso: La
suma de 5+6 es. Fuera de las llaves sigue la variable A, indicando que posterior a la
impresin de la cadena de caracteres se imprimir el valor asignado a la variable A (dicho
de otra forma el valor que est en la direccin de memoria RAM representada por la
variable A).
Por lo tanto se imprimir: La suma de 5+6 es 11. El cdigo 1.2 es el de la figura 1.5
1
#include <iostream>
//Librerias
3
4
5
6
7
8
9
10
Para ilustrar un poco ms lo que se dijo en los dos prrafos anteriores, usaremos el
mismo programa pero con algunos cambios. Vea el diagrama de flujo de la figura 1.6 y su
correspondiente cdigo 1.3
Inicio
B=5
C=6
A= B+C
La suma de, B,+,C,es: , A
Fin
Figura 1.6
El diagrama de flujo de la figura 1.6 hace lo mismo que el de la figura 1.5 solo que de
forma distinta, ahora los datos 5 y 6 estn cada una en una variable y la suma se realiza
usando las variables.
1
#include <iostream>
//Librerias
3
int main() //Nombre de la funcin principal: main
4
{
//Inicio del bloque de cdigo de la funcin main
5
int A,B,C; //Declaracin de variables
6
B=5;
7
C=6;
8
A = B+C; //Intrucciones o bloques de cdigo
9
cout<<La suma de <<B<<+<<C<< es <<A; //Intrucciones o bloques de
cdigo
10
return 0;
11
}
//Fin del bloque de cdigo de la funcin principal main
12
Cdigo 1.3
El cdigo 1.3 es igual pero ilustra la declaracin y uso de mltiples variables. Tambin
vemos como usar el cout<< cuando se requiere imprimir varias cadenas de caracteres y
variables.
Ejercicios
Ejercicio 7: Usando el cout<< imprima en pantalla sus datos personales como se
muestra:
Nombre
Calle
Colonia
Delegacin o municipio
Ciudad y CP.
Para que cada dato aparezca en una lnea diferente realice un salto de lnea con
cout<<end;
Ejercicio 8: Suponga que un objeto recorre una distancia de 10 mts en 2 seg, Realice el
diagrama de flujo y su programa que calcule su velocidad.
Ejercicio 9: Suponga que un objeto recorre una distancia de 10 mts en 2 seg,
posteriormente el mismo objeto recorreo 10 mts en 1 seg. Realice el diagrama de flujo y
su programa que calcule la primera velocidad, la segunda y la aceleracin. Recuerde que
la velocidad es la diferencia entre dos velocidades entre las diferencias de tiempo.
Ejercicio 10: Si un auto gasta 1 litro de gasolina cada 13Km, cunta gasolina requiere
para recorrer 234 Km? Si la gasolina cuesta $13.96 pesos el litro, cunto costar el viaje
de 234Km? Realice el diagrama de flujo que resuelva el problema y el programa
correspondiente.
Instruccin cin>>
Como se comento anteriormente, hay perifricos que son de entrada por donde el usuario
da informacin a la computadora y el ms usual es el teclado. La instruccin cin>> obtiene
est informacin y se la asigna a una variable.
Es raro que a un programa no se le d informacin. En los ejercicios anteriores no se dio
pero sera ms til el programa si el usuario diera datos diversos para realizar los mismos
clculos, estos datos seran dados por el teclado y almacenados en variables para ser
usadas en operaciones diversas.
A continuacin haremos el programa de sumar dos nmeros pero estos nmeros sern
los asignados por el usuario. Vn los asignados por el usuario. Vea el diagrama de flujo
de la figura 1.7 y el cdigo 1.4.
Vea en la figura 1.7 que despus del smbolo de inicio hay un smbolo de impresin en
pantalla con el mensaje: Sumando 1, esto dar a entender al usuario que deber dar el
primer valor a sumar; el siguiente smbolo es la de dar a la variable B el valor que el
usuario de a travs del teclado. El usuario podr teclear cualquier valor. Se vuelven a
repetir los smbolos para solicitar el sumando 2 y ser asignado a la variable C a travs del
teclado. El resto del proceso es el mismo que en la figura 1.6
Inicio
Sumando 1
Sumando 2
A= B+C
Fin
Figura 1.7
El cdigo 1.4, la lnea 6 muestra el cout<< para el mensaje: Sumando 1 y la lnea 7 y 9
muestra el uso del cin>>, el cual se pone para el smbolo 3 y 5 del diagrama de flujo de la
figura 1.7 y como se menciono, el cin>>, se usa para que la informacin dada por el
#include <iostream>
//Librerias
3
4
5
6
7
8
9
11
cdigo
12
return 0;
13
}
//Fin del bloque de cdigo de la funcin principal main
12
Cdigo 1.4
En este momento debemos definir una metodologa en la programacin que nos
ayudara para crear nuestros programas:
Todo programa tiene 3 partes:
a) La entrada de datos.
b) Operaciones o tratamiento de los datos.
c) Mostrar resultados.
El diagrama de flujo lo realizaremos con esta metodologa, realizaremos primeramente la
parte de pedir datos, posteriormente ya teniendo los datos en variables, realizaremos
clculos, operaciones, comparaciones, bsquedas, ordenamientos, etc y por ltimo
mostraremos resultados.
Todos los programas que hagamos en este curso, se realizaran a partir de un diagrama
de flujo, primero identificaremos todas las variables que se usan en ese diagrama:
variables para datos de entrada y para datos de salida. El tipo que usaremos para definir
variables depende del dato y de los resultados que esperamos y para ello debemos de
conocer el problema, habr veces que trabajemos datos del tipo nmeros enteros o
nmeros con decimales o caracteres y dependiendo de esto definiremos nuestras
variables para dichos datos. Despus de definir nuestras variables empezamos a
programar el diagrama de flujo, recuerde respetar el orden en que aparecen las
instrucciones a partir del smbolo de INICIO, para ello siga las flechas ya que marcan
que instruccin va a poner primeramente y posteriormente en su programa.
Tipo
int
float
doubl
e
char
Uso
Rango
-32,768 a 32,767
Nmero de
bytes que
ocupa.
2
1.2E-38 a 3.4E+38
2.3E-308
1.7E+308
Los caracteres
definidos en la
tabla de cdigo
ASCCI.
Cada carcter est
relacionado con un
nmero entre el 0 y
255
Tabla 1.2
La tabla 1.2 muestra los tipos ms importantes, existe el tipo unsigned, la cual se usa
antes de los tipos que define la tabla 1.2, esto hara que la variable del tipo nmero entero
solo soporte decimales y su rango cambiara de 0 a 65,536 . Aunque la tabla no muestra
nmeros negativos al declarar variables tipo float o doubl si los hay.
Ejercicios.
Ejercicio 11: La frmula para calcular la resistencia total de resistencias en paralelo es:
Rt =
1
1 1
1
+ +
R1 R2
Rn
Suponga que tiene 4 resistencias en paralelo, realice el diagrama de flujo que solicite los
cuatro valores de resistencia y calcule la RT. Posteriormente realice el programa en C.
Ejercicio 12: Suponga que un objeto recorre una distancia de X mts en T segundos.
Realice el diagrama de flujo y su programa que pida la distancia y velocidad y calcule su
velocidad.
Ejercicio 13: Suponga que un objeto recorre una distancia de X1 mts en T1 seg,
posteriormente el mismo objeto recorre X2 mts en T2 seg. Realice el diagrama de flujo y
su programa que pida las distancias y tiempos y calcule la primera velocidad, la segunda
y la aceleracin. Recuerde que la velocidad es la diferencia entre dos velocidades entre
las diferencias de tiempo.
Ejercicio 14: Si un auto gasta 1 litro de gasolina cada Y Kms, cunta gasolina requiere
para recorrer Z Km? Si la gasolina cuesta $13.96 pesos el litro, cunto costar el viaje
de Z Km? Realice el diagrama de flujo que solicite al usuario que cantidad de kilmetros
recorre el auto por litro, la cantidad de Km a recorrer en el viaje, calcule e imprima los
valores que solicitan las preguntas. Haga el programa correspondiente.
Ejercicio 15: Realice un diagrama de flujo que solicite los valores a, b y c para calcular
las soluciones de acuerdo a la ecuacin general cuadrtica:
2
b 4 ac
b
r 1,2=
Realice los clculos correspondientes e imprima los resultados.
Significado
Iguales?
!=
Diferentes?
>
Es mayor?
<
Es menor?
>=
Es mayor o igual?
<=
Es menor o igual?
Ejemplo
Si A= 3 y B=3 entonces
A==B es verdadero
Si A = 3 y B=3 entonces
A!=B es Falso
Si Num = 15 y Val = 20 entonces
Num > Val es falso
Si Num = 15 y Val = 20 entonces
Num < Val es verdadero
Si Num = 15 y Val = 15 entonces
Num >= Val es Verdadero
Si Num = 15 y Val = 15 entonces
Num <= Val es Verdadero
Tabla 2.1
Todas las instrucciones de control usan condiciones y si la condicin es verdadera
ejecutar un bloque de cdigo y cuando la condicin es falsa se ejecuta la instruccin
que continua despus de la llave que finaliza el bloque de cdigo. El bloque de cdigo
es el conjunto de instrucciones que se encuentran entre un par de llaves, { }; normalmente
este par de llaves est a continuacin de la instruccin de control. Slo el if ( ) - else tiene
dos bloques de cdigo una para cuando la condicin es verdadera y otro para cuando la
condicin resulta ser falsa. Recuerde que la definicin
de bloque de cdigo la discutimos
F
cuando hablamos de la funcin main( ), toda funcin tambin tiene un bloque de cdigo
y lo forma el par de llaves que le siguen al main( ) o al nombre de la funcin.
Condicin
Instruccin 1
Instruccin 2
.
.
.
Instruccin n
Figura 2.1
En la figura 2.1, el bloque de cdigo lo formara la instruccin 1, la instruccin 2, hasta la
instruccin n. El diagrama de flujo muestra una flecha en la parte superior que llega al
smbolo de decisin entonces la condicin se evala. S es verdadera empezar a
Figura 2.2
En la figura 2.2 hay 3 while( ), la primera marcada con lnea verde y punteada y con
punto, la segunda marcada con lnea azul y punteada y la tercera marcada con lnea roja
y continua. Vea que todas empiezan con una condicin, cuando esta es verdadera se
entra al bloque de cdigo del while ( ) ejecutando las instrucciones; al final de las
instrucciones, la lnea de flujo regresa a la condicin y cuando finaliza el while( ) (la
condicin es falsa), se termina su bloque de cdigo y continua con la siguiente instruccin.
Si compara el while( ) 1 y el while () 2de la figura 2.2 con el de la figura 2.1 se ver que se
asemejan mucho y es fcil de identificar el estos while( ) pero puede que tenga problemas
para identificar el while ( ) 2. Vea la figura 2.3
Figura 2.3
La figura 2.3 muestra ahora que el while( ) 1 y 2 se pueden sustituir por un smbolo de
proceso y sustituirlo, dejamos las etiquetas de F en la sustitucin para que el lector vea
como la conexin de un proceso se realiza cuando el while ( ) a finalizado tal como se ve
en la figura 2.2 y al final de la ltima instruccin se regresa la lnea de flujo a smbolo de
condicin 1.
Ejercicio. Resalte los while ( ) existentes de los ejercicios 1 y 2 siguientes.
Ejercicio 1
Ejercicio 2
Ejercicio 3: para elaborar diagramas de flujo, todos los siguientes ejercicios solo
requieren el uso de un while( ) :
- Realice un diagrama de flujo de imprima del 1 al 10
- Realice un diagrama de flujo que solicite al usuario un nmero N, calcule 1xN,
2xN, 3xN hasta 10xN e imprima cada resultado.
- Un profesor para evaluar a un alumno suma sus tres calificaciones parciales y
obtiene su promedio. Realice un diagrama de flujo que pida estas tres
calificaciones, los sume, saque el promedio e imprima el resultado; suponiendo
que tiene 5 alumnos, este proceso debe repetirse 5 veces.
- Realice otra vez el programa anterior pero en el diagrama de flujo se debe
preguntar si se evaluar otro alumno, encaso de que el usuario responda con un
s se volver a repetir la solicitud de las calificaciones, sumarlas, obtener el
promedio e imprimirlas. Si responde con otra letra termina el proceso.
2.1.1 La sintaxis de la instruccin while( )
La sintaxis nos dice como se usa el while( ) al momento de programarlo en lenguaje C;
en este caso la sintaxis del while( ) es
while(condicin)
{
Instruccin 1;
Intruccin 2;
.
.
.
Instruccin n;
}
Como ejercicio realizaremos el cdigo del diagrama de flujo de la figura 2.2 que
pasaremos a la figura 2.4.
#include <iostream>
using namespace std;
int main()
{
INSTR 1;
while( COND 1)
{
INSTR 2;
while(COND 2 )
{
INSTR 3
}
while(COND 3 )
{
INSTR 4;
}
}
return 0;
}
Figura 2.4
Vea en la figura 2.4 como se usa el while( ) a partir del diagrama de flujo de la sintaxis
dada. Vea tambin los sangrados que nos permite identificar los diagramas de bloques de
cdigo que controla cada while( ); esto nos ayuda mucho a encontrar problemas de
parntesis en la compilacin.
Variable B
1
2
3
4
5
6
7
8
9
10
10
15
20
15
5
10
12
8
5
6
Valor de
variable A inicial
0
10
25
45
60
65
70
72
80
85
Tabla 2.1
Operacin
A=A+ B
A=A+ B
A=A+ B
A=A+ B
A=A+ B
A=A+ B
A=A+ B
A=A+ B
A=A+ B
A=A+ B
Valor de
variable A final
10
25
45
60
65
70
72
80
85
91
La tabla 2.1 muestra un acumulador de suma, el valor neutro de la suma es 0, este ser
el valor inicial de A, los valores de B son valores propuestos que podra ingresar el usuario
al programa. Para la repeticin 1 empezamos con el valor inicial A = 0 y el valor de B = 10
si se suman dar 10 pero, como se muestra en la operacin, la variable que se le asigna
este resultado es la variable A, as que con este nuevo valor se hace la repeticin 2, con
B=15 y A = 10, por lo que la suma es 25 y este valor se da nuevamente a la variable A.
Este proceso se repite 10 veces.
Ejercicio 6: Realice un acumulador de multiplicacin de 5 valores usando la tabla 2.2
Repeticin
1
2
3
4
Variable X
Valor de
variable Y inicial
Operacin
Valor de
variable Y final
5
Tabla 2.2
Ahora realicemos el diagrama de flujo que implementa el acumulador de suma de la tabla
2.1. El diagrama lo mostramos en la figura 2.5.
Figura 2.5
Observando la figura 2.5 resalamos tres partes en rojo, la inicializacin de la variable
que se usar en la condicin del while( ), que en este caso es i =1, la misma condicin
que en este caso es i<=10 y la instruccin de fin de while() la cual altera el valor de i
asegurando que en un momento dado el while( ) terminar. Esta forma de manejar el
while( ) se llama por contador porque a travs de un conteo o incremento constante de la
variable i, se define el nmero de veces que el while( ) se repetir.
Tambin existe la opcin de controlar el while( ) por bandera hasta que se d un evento
dentro del ciclo while( ), ste terminar. Por ejemplo la figura 2.6 es un while( ) controlado
por bandera. Esto es porque la variable que controla el while( ) cambiara de valor en un
evento que no puede predecirse cuando va a ocurrir, en este es caso este evento est
condicionado por la necesidad del usuario de los datos a sumar.
Figura 2.6
Ejercicio 7:
a) Clculo de un factorial. El factorial de un nmero se define como n! = 1*2*3*4 n.
Realice un diagrama de flujo que solicite al usuario un nmero, se calcule el
factorial y se imprima el resultado. Realice el programa.
b) Clculo de una potencia. La potencia de un nmero se define como
Nx =N*N*Nx veces.
Realice un diagrama de flujo que solicite al usuario la base y el exponente, se
calcule la potencia y se imprima el resultado. Realice el programa.
c) El encargado de una obra para construir un edificio recibe diariamente 7
suministros de arena, los camiones que traen la arena son de diferentes
capacidades (m3), adems cada da tiene un valor inicial de arena al que le
sumar los suministros de arena. Realice un diagrama de flujo que solicite al
usuario la cantidad de arena inicial, la cantidad de arena que llega en cada
suministro, sume estos suministros e imprima la cantidad de arena que tiene al
final del da. Realice el programa.
d) Un almacenista vende bloques a $10.50 pesos c/u, tiene una existencia inicial al
empezar el da, cada vez que vende cierta cantidad de bloques, actualiza su
existencia, registra la venta de tal forma que al final del da indica a su jefe la
cantidad de bloques que quedan y el monto de venta del da. Realice un diagrama
de flujo que solicite al usuario la existencia inicial de bloques, cada vez que vaya a
hacer una venta, solicite la cantidad de bloques vendidos, realice las operaciones
de actualizar existencias de bloques y llevar el registro del monto de las ventas e
Figura 2.7
Indique cul es la inicializacin, condicin y la instruccin fin del while( )
Qu valores se imprimen en el while ( ) y cuntas veces se ejecutar el while( ).
Cambie la inicializacin condicin e instruccin de fin del while( ) de la figura 2.7
para que se impriman nmeros nones entre el 80 y el 100
Figura 2.8.
Escriba las instrucciones que son la inicializacin, condicin y el fin de while( ).
Qu variables son acumuladores? Indique si son acumuladores de +, -, * o /.
Por qu es importante inicializar a B y C en 0 y 1 respectivamente?
Si quisiera calcular la potencia de XY que tipo de acumulador usara? Escriba el
diagrama de flujo.
Si quisiera calcular la serie F(x) = 1/(100-x)+1/(100-2x)+1/(100-3x)+ +1/(100-nx)
que tipo de acumuladores usara?
Diga si la figura 2.7 y 2.8 son controladas por bandera o por contador.
Ejercicio 10: Indique los errores del diagrama de flujo de la figura 2.9.
Figura 2.9
Figura 2.6
Ejercicio 8
a) Realice un diagrama de flujo que imprima del 1 al 10, del 51 al 60, del 101 al 110 y
del 151 al 160. Progrmelo.
b) Realice el programa de flujo del profesor que tiene UN grupo con 5 alumnos, pide
tres calificaciones, la suma, saca promedio y lo imprime pero en lugar de tener 3
variables para las calificaciones use 2 donde una sea un sumador y adems
obtenga el promedio general del grupo.
c) Realice un diagrama de flujo que imprima la tabla de multiplicacin del 2, del 3, del
4, del 5, del 6 y del 7. Progrmelo.
d) Crea una aplicacin que dibuje una escalera de asteriscos. Nosotros le pasamos
la altura de la escalera por teclado. Este es un ejemplo si insertaras un 5 de altura:
4
8
12
16
20
5
10
15
20
25
h) Crea una aplicacin que dibuje una escalera de nmeros, siendo cada lnea un
nmero. Nosotros le pasamos la altura de la escalera por teclado.
i) Imprima la serie de nmeros pares del 2 al 10, del 52 al 62 y del 102 al 110.
j) Crea una aplicacin que dibuje una escalera de nmeros, siendo cada lnea
nmeros empezando en uno y acabando en el nmero de la lnea. Este es un
ejemplo, si introducimos un 5 como altura:
Figura 2.7
Vea, en la figura 2.7, la trayectoria de las flechas; empieza con una flecha llegando a la
condicin, si la condicin es verdadera realizara el bloque de cdigo del lado izquierdo,
empezando con la instruccin 1, despus la 2 y as hasta la N para terminar el bloque de
cdigo en un conector; s la condicin es falsa se ejecuta el bloque de cdigo de la
derecha, empezando con la instruccin A, despus de la B, hasta la Z y terminando el
bloque de cdigo en el mismo conector que en el caso verdadero. Vea que ya no
regresan a la condicin, simplemente el if( ) ha terminado y se continuar con la
instruccin que este despus de los bloques de cdigo. El bloque de cdigo para el
caso falso es opcional, es decir, lo puede omitir.
Los if( ) tambin se pueden anidar vea la figura 2.8.
Figura 2.8
En la figura 2.8 se observa varios if ( ) anidados, estos if( ) anidados se resaltan con
lneas punteadas, todos estn anidados al if ( ) de la COND 1, y particularmente el if ( )
con COND 5 e INSTR 7 esta anidado al if de COND 4, esto lo resaltamos con el cambio
de lnea punteada. Como se dijo, el bloque de cdigo para el caso falso de la condicin es
opcional y esto lo muestra los if ( ) de la COND 3 y 5, la lnea del bloque de cdigo falso
est vaca.
Es importante hacer nfasis de que cada if ( ) encontrado en la figura 2.8 se ajusta al
diagrama de flujo del if ( ) mostrado en la figura 2.7. Para resaltar el if ( ) de la COND 1 de
la figura 2.8, se puede representar todos los if ( ) anidados con un smbolo de instruccin
compleja como se muestra en la figura 2.9, de esta forma vemos ms claramente el if( )
de la COND 1.
Figura 2.8
Ejercicio 9.
A continuacin se muestran diversos diagramas de flujo donde hay if( ) y en algunos
casos tambin estn combinados con while( ). Indique en los diagramas los if( ) y while( )
que encuentre.
Figura a)
Figura b)
Figura c)
2.2.1 Instruccin if( ), sintaxis.
La sintaxis del if( ) se muestra a continuacin:
If(condicin)
{ //Bloque de cdigo para el caso verdadero
Instr1;
Instr2;
instrN;
} //Fin del bloque de cdigo del caso verdadero de la condicin
else //Bloque de cdigo para el caso falso. Este bloque es opcional
{
Instr1;
Instr2;
instrM;
}//Fin del bloque de cdigo del caso falso de la condicin
Como ejercicio realizaremos el cdigo del diagrama de flujo de la figura 2.9.
Figura 2.9
Cdigo de la figura 2.9
#include <iostream>
using namespace std;
int main()
{
If(COND1)
{
INSTR 1;
if( COND 2)
{
INSTR 2;
}
else
{
INSTR 3;
}
INSTR 4;
}
else
{
If(COND3)
{
INSTR5;
}
If(COND4)
{
INSTR6;
}
else
{
If(COND5)
{
INSTR7;
}
}
}
return 0;
}
Vea como las llaves se van sangrando y poniendo al mismo nivel la que abre y
cierra y un bloque de cdigo.
Ejercicio 10. Escriba el cdigo de los diagramas de flujo del ejercicio 10.
Ejercicio 11. Programe los siguientes problemas.
Con un if():
a) Realice un diagrama de flujo donde se pida un nmero y se indica si es
par o impar.
b) Realice un diagrama de flujo que indique si el nmero es divisible entre 2
o es divisible entre 3 o divisible entre 7 o divisible entre 5 y si no fue
divisible entre ninguno de los nmeros anteriores mande un mensaje
indicndolo.
c) Realice un diagrama de flujo que indique si un nmero es divisible entre
2 y s lo es, entonces indique si es divisible entre 5. En otro caso,
indique si es divisible entre 3 y s lo es, entonces indique si es divisible
entre 7. En otro caso indique que no hubo divisibilidad entre ninguno de
los nmeros anterior.
d) Realice un diagrama donde se Imprima el siguiente men:
a) rea de un tringulo a partir de los lados.
b) Clculo de las soluciones de una ecuacin de 2do grado.
Si el usuario oprime la a, entonces se pedirn los tres lados y se aplicar
la frmula:
A= p ( pa )( pb ) ( pc )
Donde
r 1,2=(b b 24 ac)/(2 a)
El discriminante es la raz de la ecuacin y este si es negativo indicar
que la ecuacin cuadrtica no tiene solucin.
Realice un diagrama de flujo donde se pida los valores de a, b y c,
verifique que el discriminante es positivo para continuar con los clculos
y poder dar las dos posibles raices. En caso de que el discriminante
fuese negativo se imprimir el mensaje No se tiene solucin.
c) Suponga que en una carrera de relevos, participan dos equipos de dos
personas. Para determinar qu equipo gana la carrera, se pide realizar el
diagrama de flujo y el programa correspondiente que registre el tiempo
de cada competidor al realizar la prueba, as el programa indicar el
equipo con menor tiempo y de los dos competidores del equipo ganador
quien tuvo el mejor tiempo.
2.2.2 Operadores lgicos.
La condicin que se usa en las instrucciones de control de lenguaje C,
admiten tambin los operadores lgicos. Los operadores lgicos son la O, Y
y el NO. Vea la tabla 2.3
Operador
Tabla de verdad
B
F
V
B
F
V
F
F
V
V
F
AoB
Equivalente en
lenguaje C
||
V
AoB
&&
Ejemplo
If(a>10 || a==5)
{
a=b+C;
}
V
V
Y
A
F
F
F
If(a>10 &&
b==5)
{
a=b+C;
}
V
NO
V
NO A
A
F
V
V
!
V
F
If(!a>10)
{
a=b+c;
}
Tabla 2.3
La tabla de verdad nos dice cmo funcionan los operadores lgicos pero antes
de revisarla nosotros debemos entender que el operador Y y O tienen el mismo
significado que en la vida cotidiana cuando las empleamos al momento de
hablar. Por ejemplo, Qu diferencia hay en las dos siguientes oraciones?:
Miguel va ir al cine o va ir a jugar futboll
Miguel va ir al cine y a jugar fuboll
En la primera oracin basta con que Miguel realiza una de las dos actividades
para que la oracin se considere verdadera, incluso si hace las dos premisas
que estn en la primer oracin tambin se considera verdadera. Esto es lo que
nos dice la tabla de verdad de la O en la tabla 2.3.
Por otro lado la segunda oracin al usar la Y, indica que para que se considere
que Migule dijo la verdad o la oracin sea verdadera se debern realizar las dos
cosas: ir al cine e ir a jugar futboll y esto es lo que nos dice la tabla de
verdad de la Y en la tabla 2.3.
El operador NO, cambia el valor de verdad que tenga, es decir de verdadero a
falso y de falso a verdadero.
Como muestra en cada ejemplo de la tabla 2.3 nos sirve para unir condiciones
realizadas con los operadores relacionales. Por ejemplo si requerimos saber si
el valor de la variable N es divisible entre 5 y 2, podemos escribir el siguiente
if( )
Figura 2.10
Ejercicio 12.
a) Suponga que un empleado para justificar una falta debe cumplir con
cualquiera de las siguientes condiciones.
a.1 No debe tener faltas en un mes y tener permiso del jefe inmediato
a.2 Traer comprobante mdico y visto bueno del director de rea.
a.3 Haber cubierto horas extras y traer permiso del jefe inmediato
a.4 Tener permiso del director de rea.
Realice un diagrama de flujo donde se pregunte y se conteste con una S o una
N si se tiene o no las condiciones antes citadas, se evalen y se de cmo
resultado un mensaje indicando si se justifica o no la falta.
b) Para que un ao sea bisiesto debe cumplir una de las siguientes condiciones:
b.1 Debe ser divisible entre 4 y no entre 100
b.2 Debe ser divisible entre 4, 100 y 400
Realice un diagrama de flujo donde se d un nmero, se evalu el nmero
dado de acuerdo a las condiciones citadas y mande un mensaje diciendo si es
bisiesto o no.
c) Un investigador para tener derecho a beca, debe cumplir con alguno de las
siguientes bases:
c.1 Haber publicado mnimo 2 artculos y haber dirigido mnimo 5 tesis de
licenciatura o una de maestra.
c.2 Haber dirigido mnimo una tesis de doctorado.
c.3 Haber revisado libros o haber dirigido mnimo 5 tesis de licenciatura y
tener grado de doctor.
Realice un diagrama de flujo donde se pregunte y se conteste con una S o una
N si se tiene o no las condiciones antes citadas, se evalen y se de cmo
resultado un mensaje indicando si tiene derecho a beca.
d) La sangre se divide en 4 grandes grupos: A, B, AB y O. Para que un receptor
pueda recibir sangre de un donador debe cumplirse con las siguientes reglas:
d.1 Si el receptor es tipo A entonces puede recibir de un donador tipo A o O
d.2 Si el receptor es tipo B entonces puede recibir de un donador tipo O o B
d.3 Si el receptor es AB entonces puede recibir de cualquiera
d.4 Si el receptor es O entonces puede recibir de un donador tipo O
Realice un diagrama de flujo donde se pregunte por el tipo de sangre del
receptor y donador, evale las condiciones de donacin y de cmo resultado la
impresin de un mensaje que indique si se puede llevar a cabo la donacin o
no. Para el caso de sangre tipo AB, simbolcela con la letra C.
e) El juego de piedra papel y tijera se puede programar pensando que el
programa lo manejan dos usuarios: U1 y U2. Para que exista un empate el U1
debe tirar lo mismo que le U2, para que el U1 gane entonces debe cumplirse
que:
a)
b)
c)
IMC=
Peso(kg)
Estatura2 ( Mts)