Está en la página 1de 122

UNIVERSIDAD AUTONOMA DEL CARMEN

Departamento reas Ciencias de la informacin


Cuerpo Acadmico Tecnologas de Informacin

CUADERNO DE EJERCICIOS
Algoritmos modularizados con
lenguaje C
LABORATORIO DE PROGRAMACIN

Desarrollado y aprobado por el Grupo Disciplinario de


Sistemas Informticos

ABRIL 2010
Versin 1.1

Universidad Autnoma del Carmen


Grupo Disciplinario de Sistemas Informticos

INTEGRANTES DEL GRUPO DISCIPLINARIO

Patricia Zavaleta Carrillo


Damaris Prez Cruz
Jos ngel Prez Rejn
Juan Carlos Canto Rodrguez

Universidad Autnoma del Carmen


Grupo Disciplinario de Sistemas Informticos

ndice de ejercicios
INTRODUCCIN .................................................................................................... 6
OBJETIVO .............................................................................................................. 7
PARTE I. ENUCIADOS DE EJERCICIOS .............................................................. 7
TEMA 1. CONCEPTOS BSICOS ............................................................................................................... 7
Actividad 1. IDENTIFICADORES ...............................................................................................................15

1.1. Ejemplos de construccin de identificadores............................................ 15


1.2. Ejercicios de construccin de identificadores ........................................... 15
1.3. Ejercicios de escritura de identificadores ................................................. 16
1.4. Ejercicios: escribir sentencias de declaracin de variables ...................... 16
1.5. Ejercicios variables declaradas ................................................................ 17
1.4. Ejercicios variables declaradas y sentencias de asignacin .................... 17
Actividad 2. EXPRESIONES ........................................................................................................................18

2.1. Ejemplos evaluacin de expresiones ....................................................... 18


2.1 ejercicios evaluacin de expresiones ........................................................ 19
2.2. Ejemplos expresiones algebraicas vs expresiones computaconales ....... 25
2.3. Ejercicios expresiones algebraicas vs expresiones computaconales ....... 26
TEMA 2. ESTRUCTURAS SECUENCIALES ............................................................................................29

Actividad 1. PROGRAMA CON ESTRUCTURA SECUENCIAL ..................... 45


Ejercicio 1. ....................................................................................................... 47
Ejercicio 2. ....................................................................................................... 47
Ejercicio 3. ....................................................................................................... 47
Ejercicio 4. ....................................................................................................... 47
Ejercicio 5. ....................................................................................................... 47
Ejercicio 6. ....................................................................................................... 47
Ejercicio 7. ....................................................................................................... 47
Ejercicio 8. ....................................................................................................... 47
Ejercicio 9. ....................................................................................................... 48
Ejercicio 10. ..................................................................................................... 48
TEMA 3. ESTRUCTURAS DE SELECCIN (IF, IF-ELSE, SWITCH).....................................................49

Actividad 1. PROGRAMA CON ESTRUCTURA SELECTIVA ......................... 56


Ejercicio 1. ....................................................................................................... 57
Ejercicio 2. ....................................................................................................... 57
Ejercicio 3. ....................................................................................................... 58
Ejercicio 4. ....................................................................................................... 58
Ejercicio 5. ....................................................................................................... 58
Ejercicio 6. ....................................................................................................... 58
2

Universidad Autnoma del Carmen


Grupo Disciplinario de Sistemas Informticos
Ejercicio 7. ....................................................................................................... 58
Ejercicio 8. ....................................................................................................... 58
Ejercicio 9. ....................................................................................................... 59
Ejercicio 10. ..................................................................................................... 59
Ejercicio 11. ..................................................................................................... 60
Ejercicio 12. ..................................................................................................... 60
Ejercicio 13. ..................................................................................................... 60
Ejercicio 14. ..................................................................................................... 60
Ejercicio 15. ..................................................................................................... 61
Ejercicio 16. ..................................................................................................... 61
Ejercicio 17. ..................................................................................................... 61
TEMA 4. ESTRUCTURA REPETITIVA (WHILE, DO - WHILE, FOR) ...................................................62

Actividad 1. PROGRAMA CON ESTRUCTURA REPETITIVA ........................ 67


Ejercicio 1. ....................................................................................................... 67
Ejercicio 2. ....................................................................................................... 67
Ejercicio 3. ....................................................................................................... 67
Ejercicio 4. ....................................................................................................... 68
Ejercicio 5. ....................................................................................................... 68
Ejercicio 6. ....................................................................................................... 68
Ejercicio 7. ....................................................................................................... 68
Ejercicio 8. ....................................................................................................... 68
Ejercicio 9. ....................................................................................................... 68
Ejercicio 10. ..................................................................................................... 68
Ejercicio 11. ..................................................................................................... 68
Ejercicio 12. ..................................................................................................... 68
Ejercicio 13. ..................................................................................................... 68
Ejercicio 14. ..................................................................................................... 68
Ejercicio 15. ..................................................................................................... 69
Ejercicio 16. ..................................................................................................... 69
Ejercicio 17. ..................................................................................................... 69
Ejercicio 18. ..................................................................................................... 69
Ejercicio 19. ..................................................................................................... 69
Ejercicio 20. ..................................................................................................... 69
Ejercicio 21. ..................................................................................................... 69
PARTE II. SOLUCIONES...................................................................................... 70
SOLUCIN EJERCICIOS TEMA 1 ............................................................................................................70

Solucin ejercicios 1.1. (construccin de identificadores) ............................... 70


Solucin ejercicios actividad 1.2. (escritura de identificadores)....................... 71
Solucin ejercicios actividad 1.3. (escribir sentencias de declaracin de
variables) ......................................................................................................... 71
Solucin ejercicios actividad 1.4. (declaracin de variables) ........................... 71
1.4. Ejercicios declaracin de variables y sentencias de asignacin ............... 72
3

Universidad Autnoma del Carmen


Grupo Disciplinario de Sistemas Informticos
SOLUCIN EJERCICIOS TEMA 2 ............................................................................................................78

Solucin ejercicio 1. ........................................................................................ 78


Solucin ejercicio 2. ........................................................................................ 79
Solucin ejercicio 3. ........................................................................................ 79
Solucin ejercicio 4. ........................................................................................ 80
Solucin ejercicio 5. ........................................................................................ 81
Solucin ejercicio 6. ........................................................................................ 82
Solucin ejercicio 7. ........................................................................................ 82
Solucin ejercicio 8. ........................................................................................ 84
Solucin ejercicio 9. ........................................................................................ 85
Solucin ejercicio 10. ...................................................................................... 86
SOLUCIN EJERCICIOS TEMA 3 ............................................................................................................88

Solucin ejercicio 1. ........................................................................................ 88


Solucin ejercicio 2. ........................................................................................ 89
Solucin ejercicio 3. ........................................................................................ 90
Solucin ejercicio 4. ........................................................................................ 90
Solucin ejercicio 5. ........................................................................................ 92
Solucin ejercicio 6. ........................................................................................ 93
Solucin ejercicio 7. ........................................................................................ 93
Solucin ejercicio 8. ........................................................................................ 94
Solucin ejercicio 9. ........................................................................................ 96
Solucin ejercicio 10. ...................................................................................... 97
Solucin ejercicio 11. ...................................................................................... 99
Solucin ejercicio 12. .................................................................................... 100
Solucin ejercicio 13. .................................................................................... 101
Solucin ejercicio 14. .................................................................................... 102
Solucin ejercicio 15. .................................................................................... 103
Solucin ejercicio 16. .................................................................................... 104
Solucin ejercicio 17. .................................................................................... 105
SOLUCIONES EJERCICIOS TEMA 4 ......................................................................................................106

Solucin ejercicio 1. ...................................................................................... 106


Solucin ejercicio 2. ...................................................................................... 107
Solucin ejercicio 3. ...................................................................................... 107
Solucin ejercicio 4. ...................................................................................... 108
Solucin ejercicio 5. ...................................................................................... 109
Solucin ejercicio 6. ...................................................................................... 109
Solucin ejercicio 7. ...................................................................................... 110
Solucin ejercicio 8. ...................................................................................... 110
Solucin ejercicio 9. ...................................................................................... 111
Solucin ejercicio 10. .................................................................................... 112
Solucin ejercicio 11. .................................................................................... 112
Solucin ejercicio 12. .................................................................................... 112
Solucin ejercicio 13. .................................................................................... 113
Solucin ejercicio 14. .................................................................................... 114
4

Universidad Autnoma del Carmen


Grupo Disciplinario de Sistemas Informticos
Solucin ejercicio 15. .................................................................................... 115
Solucin ejercicio 16. .................................................................................... 115
Solucin ejercicio 17. .................................................................................... 116
Solucin ejercicio 18. .................................................................................... 116
Solucin ejercicio 19. .................................................................................... 117
Solucin ejercicio 20. .................................................................................... 118
Solucin ejercicio 21. .................................................................................... 119
FUENTES CONSULTADAS ............................................................................... 121

Universidad Autnoma del Carmen


Grupo Disciplinario de Sistemas Informticos

INTRODUCCIN
Este cuaderno es una revisin de cuadernos de ejercicios
realizados en aos pasados, en este cuaderno se incluyen
ejercicios relacionados con temas introductorios a la
computacin con el fin de que el alumno comprenda los
conceptos bsicos manejados en la programacin como son
variables, constantes, sentencias, operadores, identificadores,
expresiones, etc.
Se muestra la estructura de un programa mnimo en lenguaje C,
en el que se implementar la solucin de cada problema en un
solo bloque, que es la funcin principal del programa.
Este cuaderno servir de apoyo a los profesores, en su labor
cotidiana de enseanza y al estudiante le proporcionar
ejemplos de implementacin en lenguaje C, as mismo tendr
diferentes ejercicios con sulucin, con los que podr realizar una
retroalimentacin de los conocimiento que reqiere tener para
desarrollar programas para la solucin de diferentes problemas,
que tendr que desarrollar a lo largo de su carrera.
En la primer parte de este cuaderno se plantea una serie de
ejercicio clasificados por temas manejados en el curso y en la
segunda parte las soluciones para cada uno de los problemas
planteados, haciendo para esto, por un lado la implementacin
en un solo bloque y por el otro con procedimientos y funciones.
Se recomienda a los estudiantes leer, analizar y resolver los
ejercicios, posteriormente, comparar con las soluciones de los
problemas y analizar posibles errores, mejoras o diferencias en
la lgica utilizada en la solucin del problema, esto con el fin de
desarrollar su capacidad analtica y creadora.

Universidad Autnoma del Carmen


Grupo Disciplinario de Sistemas Informticos

OBJETIVO

Este cuaderno esta dirigido a los estudiantes que toman el curso


de Laboratorio de programacin del tronco comn que forma los
tres programas educativos ofrecidos por la DES-DACI, tiene el
fin de proporcionarles una herramienta que los apoye en la
prctica que requieren de realizar para afirmar los conocimiento
adquiridos durante el desarrollo del curso. El contenido tiene
como objetivo principal lograr que el alumno desarrolle la
habilidad de plantear programas modularizados que den
solucin a solucin a diferentes problemas.

PARTE I. ENUCIADOS DE EJERCICIOS


TEMA 1. CONCEPTOS BSICOS
Objetivo: El alumno ser capaz de identificar y manejar adecuadamente
conceptos relacionados con la elaboracin de programas computacionales.
Lectura:
Algoritmo: Es un Mtodo para resolver un problema mediante una serie de pasos
precisos, definidos y finitos.
Caractersticas:
Preciso (debe indicar el orden de realizacin en cada paso y no puede tener
ambigedad), definido (si se sigue dos veces, obtiene el mismo resultado cada
vez), finito (tiene fin; un nmero determinado de pasos), debe ser Sencillo, legible,
modular, eficiente y efectivo, se ha de desarrollar en el menor tiempo posible,
correcto, todo Algoritmo debe tener cero mas entradas, debe tener al menos una
salida y sta debe ser tangible.
Constantes: Es un dato cuyo valor no puede cambiar durante la ejecucin del
programa. Recibe un valor dentro de las instrucciones del algoritmo y este
permanece inalterado durante todo el algoritmo. Tienen varios usos: ser miembro
en una expresin, en una comparacin, asignar su valor a una variable, etc.
Se pueden clasificar las constantes en:
o Constantes literales (sin nombre): 4, 24, 3.1416, 9.81, Hola, f, etc.
7

Universidad Autnoma del Carmen


Grupo Disciplinario de Sistemas Informticos
o Constantes declaradas (con nombre): Declaradas con alguna de las formas
que proporcione para constantes un lenguaje de programacin, se asocia
un nombre a un valor dado, dentro del algoritmo se usa el nombre, por
ejemplo: PI con el valor de 3.1416.
Las variables almacenan valores de un tipo especificado. En ellas se
almacenaran los datos de nuestro problema, se denominan variables porque su
valor puede cambiar a lo largo del programa.
IDENTIFICADORES: un identificador es un nombre dado a un elemento de
programa, tal como una constante, una variable, un procedimiento, un programa,
una funcin, una librera, un campo de registro, etc.
CARACTERSTICAS DE LOS IDENTIFICADORES:
Secuencia de caracteres de cualquier longitud, slo los 63 primeros son
significativos.
Debe comenzar por una letra (A Z) y no puede contener blancos.
Despus del primer carcter se aceptan letras, dgitos y subrayado ( _ ).
No se pueden usar palabras reservadas.
Es aconsejable que los nombres sean auto explicativos para que resulte
ms sencillo leer y entender el programa.
Ejemplos de identificadores vlidos: NOMBRE_APELLIDO, IMPUESTO, NOTA2,
H346, contador.
Ejemplos de identificadores no vlidos: NOMBRE APELLIDO, EJ?AB, 23ALX,
4NOM, &NOM, #cuenta.
PALABRAS RESERVADAS: son palabras que tienen un significado especial y
que no se pueden utilizar para otros propsitos. Las palabras reservadas no se
pueden usar como identificador.
Ejemplo de palabras reservadas: void, int, float, cos, if, else, while, do, switch,
main, double, sin, include, define, printf, scanf, typedef, struct, FILE, char, case,
for, enum, etc.
NOTA: El lenguaje C es sensitivo a minsculas y maysculas, por lo tanto existe
diferencia de acuerdo a las letras maysculas minsculas usadas en los
identificadores. Ejemplo: EDAD - edad - Edad son identificadores vlidos pero
diferentes.
Toda variable pertenece a un tipo de dato concreto. En la declaracin de una
variable se debe indicar el tipo al que pertenece. As tendremos variables enteras,
reales, booleanas, etc.
8

Universidad Autnoma del Carmen


Grupo Disciplinario de Sistemas Informticos
Cada lenguaje de programacin tiene sus propios tipos de datos, algunos de estos
son comunes a todos, entre los tipos de datos comunes estn: entero, real,
carcter, lgico, fecha / hora y cadena (nota: para el tipo lgico en lenguaje C, se
utiliza el valor cero para denotar falso y cualquier valor mayor a cero para denotar
verdadero).
En el lenguaje C los tipos de datos simples son: int (para valores enteros), float
(para valores fraccionarios con precisin simple), doubl (para valores
fraccionarios con doble precisin y char (para valores de tipo carcter).
Posibles combinaciones de los tipos bsicos de datos en lenguaje C y los
modificadores con los tamaos y rango de bits comunes se muestran en la
siguiente tabla. Los tipos bsicos de datos en lenguaje son: Char, int, float, double
bool y void. Algunos de ellos pueden ser modificados por los Modificadores Short,
signed, unsigned, long.
TABLA CON LOS TIPOS DE DATOS PREDEFINIDOS EN C
ENTEROS: nmeros completos y sus negativos
Palabra reservada: Ejemplo Tamao (byte)
Int

-850

Rango de valores

-32767 a 32767

VARIANTES DE ENTEROS
short int
unsigned int
long int

-10

-128 a 127

45689

0 a 65535

588458

unsigned long

20000

4 -2147483648 a 2147483647
4

0 a 4294967295

REALES: nmeros con decimales o punto flotante


Palabra reservada: Ejemplo Tamao (byte)

Rango de valores

Float

3.4x10

85

-38

a 3.4x10

38

-308

a 1.7x10

308

-4932

a 1.1x10

4932

VARIANTES DE LOS REALES


Double
long double

0.0058

1.00E-07

10

1.7x10
3.4x10

CARCTER: letras, dgitos, smbolos, signos de puntuacin.


Palabra reservada: Ejemplo Tamao (byte)
Char

'O'

Rango de valores
0 ......255

Declaracin de variables. Esta es la primera fase en la vida de cualquier


variable. Aqu se debe especificar el tipo que va a tener el valor referenciado por la
variable.
Ejemplos de declaracin de variables:
int i, j, contador, suma;
float x, precio;
9

Universidad Autnoma del Carmen


Grupo Disciplinario de Sistemas Informticos
Char sexo;
Char *nombre, domicilio[30];
unsigned short int k,a;
long double y;
int w=10;

Aqui las variables i, j, contador y suma contendrn valores de tipo entero. Las
variables x y precio son de tipo fraccionario. La variable sexo contendr valores de
tipo carcter y las variables nombre y domicilio son espacios en memoria que
guardarn cadenas de texto. El valor contenido en las variables puede ser
modificado varias veces en cualquier parte del algoritmo.
Algunas variables pueden inicializarse, es decir, tomar algun valor especfico al
momento de declararlas (en los ejemplos w se inicializa con el valor 10), para
evitar posibles errores durante la ejecucin del algoritmo (programa) en la
computadora.
Las reglas que se deben considerar en una buena programacin son:
1. Disear algoritmos en etapas yendo de lo general a lo particular (mtodo
descendente)
2. Dividir el algoritmo en partes independientes -mdulos- y tratar cada mdulo
independientemente.
3. Establecer y utilizar la solucin de problemas tcnicas de programacin
estructuradas
4. Dar especial importancia a las estructuras de datos
5. Describir completamente cada algoritmo
6. Verificar o realizar la prueba de escritorio a cada algoritmo desarrollado.
El teorema de Bohm y Jacopini establece que un programa propio puede ser
escrito utilizando solo tres tipos de estructuras de control:
Secuencial
Selectiva
Repetitiva
Un programa propio puede ser escrito utilizando lo siguiente:
Declaraciones:
o Libreras de inclusin
o Declaracin de funciones y/o procedimientos
o Definicin de constantes y/o variables
Estructuras de programacin:
o Asignacin
o Decisin
o Cclicas
o De seleccin mltiple
Estructuras de datos:
10

Universidad Autnoma del Carmen


Grupo Disciplinario de Sistemas Informticos
o Estticas simples
o Dinmicas
o Registros
o Arreglos
o Archivos
Funciones:
o Predefinidas por el lenguaje
o Definidas por el usuario.
ESTRUCTURA DE ASIGNACIN
Una estructura de este tipo consiste en la asignacin de una expresin a un
identificador (comnmente llamado variable). La parte izquierda de esta
estructura solamente puede estar ocupada por una variable. En la parte derecha
de la expresin puede estar una variable, literal o constante.
Variable = Expresin
Expresiones simples
La expresin ms simple consiste
en un solo concepto: una simple
variable, constante literal, constante
numrica o constante simblica
Ejemplos: contador, 20, hola,
3.1416, PI, etc.

Expresiones complejas
Las
complejas
consisten
en
expresiones simples conectadas o
relacionadas con operadores bien sean
matemticos o relacionales.
Ejemplos: A + B
(A + B) * (C + B)

Operadores
Un operador es un smbolo que le da instrucciones al lenguaje de programacin
para que ejecute alguna operacin, o accin, en uno o ms operandos. Un
operando es algo sobre lo cual acta un operador (podra considerarse como una
expresin)
El operador de asignacin
Permite evaluar una expresin y calculado su valor, guardarlo en una posicin de
memoria asignando dicho valor al nombre de una variable.
La forma general de uso es:
Variable = Expresin lenguaje C
X = Y;
En un programa en lenguaje C, la estructura de asignacin del ejemplo anterior no
significa que X es igual a Y. En cambio significa "asigne el valor de Y a X".
Sentencia de asignacin mltiple: Se usa cuando se desea asignar el mismo
valor a varias variables.
Ejemplo:
A = B = C = D = 1;
// asigna a las variables A, B, C y D el valor de 1
11

Universidad Autnoma del Carmen


Grupo Disciplinario de Sistemas Informticos

Sentencia de asignacin combinada con operaciones aritmticas:


Operador
+=
-=
*=
/=
%=

Expresin
A = A + 2;
X=XY
Z=Z*5
A=A/3
MES = MES % 2

Expresin abreviada
A += 2
X -= Y
Z *= 5
A /= 3
MES %= 2

OPERADORES Y SU PRECEDENCIA
Operadores Aritmeticos
Devuelven el valor numrico correspondiente del clculo a realizar en el que usa el
operando a la derecha y el de la izquierda del operador.
Operador
Suma
Resta
Multiplicacin
Divisin
Residuo

Smbolo
+
*
/
%

Incremento unitario
Decremento unitario

Ejemplos:
A
B
11
2
16
4
15
3
13
2
123.12
2.5
2.4

1.3

++
--

Accin
Suma los dos operandos
Resta el segundo operando al primero
Multiplica los dos operandos
Divide el primer operando entre el segundo
Devuelve el residuo de dividir el primer
operando entre el segundo
Incrementa en uno el valor asociado
Decrementa en uno el valor asociado

A+B
13
20
18
15
125.62

A-B
9
12
12
11
120.62

A*B
22
64
45
26
307.8

A/B
5
4
5
6
429.24

3.7

1.1

3.12

1.846

A%B
1
0
0
1
No aplica
con fracc.
No aplica
con fracc.

Ejemplo
Op1 + Op2
Op1 - Op2
Op1 * Op2
Op1 / Op2
Op1 % Op2
X++
X--

A++
12
17
16
14
124.12

B-1
3
2
1
1.5

3.4

0.3

Operadores Relacionales
Devuelven un valor de cierto falso dependiendo del resultado de la comparacin
del operando de la derecha con el de la izquierda del operador.
Operador
Mayor que
Mayor o igual que

Smbolo

<
<=

Accin
Devuelve cierto si el primer operando es menor
que el segundo operando
Devuelve cierto si el primer operando es menor o
igual que el segundo operando

Ejemplo
Op1 < Op2
Op1 <= Op2

12

Universidad Autnoma del Carmen


Grupo Disciplinario de Sistemas Informticos
Smbolo

Operador
Menor que
Menor o
que
Igual que

>

igual

>=
==

Diferente que

!=

Accin
Devuelve cierto si el primer operando es mayor
que el segundo operando
Devuelve cierto si el primer operando es mayor o
igual que el segundo operando
Devuelve cierto si el primer operando es igual que
el segundo operando
Devuelve cierto si el primer operando es diferente
que el segundo operando

Ejemplo
Op1 > Op2
Op1 >= Op2
Op1 == Op2
Op1 != Op2

Ejemplos:
(a + b) < c
a != (x*x + b*x + c)

Operadores Lgicos
Devuelven un valor de cierto falso dependiendo del valor de los operandos al
unirse por el operador.
Operador
And (y)

Smbolo
&&

Or (o)

||

Negacin

Accin
Devuelve cierto si ambos operadores son ciertos, en
cualquier otro caso devuelve falso
Devuelve cierto con que ambos o cualquiera de los
operandos es cierto, solo en caso de que ambos sean
falsos, devuelve falso
Devuelve el valor contrario al del operando

Ejemplo
P && Q
P || Q

!P

Ejemplos:
P
15>5 (V)
78 != 89 (V)
90 == 78 (F)
!V (F)

Q
45==45 (V)
34 < 34 (F)
34 <= 34 (V)
4 >= 3 (F)

P && Q
V
F
F
F

P || Q
V
V
V
F

!P
F
F
V
V
13

Universidad Autnoma del Carmen


Grupo Disciplinario de Sistemas Informticos
a =10
b =12
c =13
d =10

Precedencia de Operadores
En una expresin que contiene ms de un operador aritmtico diferente el
computador evala dicha expresin de acuerdo a la siguiente jerarqua de
operadores.
( )
Exponenciacin
++, -*, /, %
+, <, <=, >, >=
==, !=
&&
||
= += -= *= /= %=

Mayor nivel en la Jerarqua

Menor nivel en la Jerarqua

Si en una expresin se encuentran parntesis (agrupadores de operaciones) se


van resolviendo las operaciones de los parntesis ms internos hasta los ms
externos hasta obtener el resultado final.
La tabla anterior indica que la primera operacin aritmtica que se realiza, sera la
exponenciacin, luego las operaciones unarias del lenguaje C, luego la
multiplicacin y/o la divisin, luego las sumas y las restas y por ltimo la
asignacin quien tiene la jerarqua mas baja, es decir que seria la ultima operacin
que realizara la computadora.
Cuando en una expresin existen operadores de igual jerarqua la computadora
los resuelve de izquierda a derecha.

14

Universidad Autnoma del Carmen


Grupo Disciplinario de Sistemas Informticos

Actividad 1. IDENTIFICADORES
1.1. Ejemplos de construccin de identificadores
Concepto
Importe total de la factura

Ident. correcto
Tot_fact
TotalFactura
Tfact
total_factura

Ident. Incorrecto
Total factura
Imp.Tot.Fact
Total-fact

Nombre de alumno

Nom_alum
NomAlum
nombre_alumno
Num_asig
NumAsig
NasigCurs
numero_asig
Fecha_nac
FechaNac
Fnacimiento
f_nac

Nombre alumno
Nom-alum

Nmero de asignaturas cursadas

Fecha de nacimiento

NAsignaturaC
Num asign
#asignatura
Fecha nac
f.nac.

1.2. Ejercicios de construccin de identificadores


Escribe en la columna de la derecha el identificador que usaras para el concepto
especficado a la izquierda, considera aplicar las reglas para la construccin de
estos identificadores.
Concepto
Fecha actual

Identificador(es)

Recaudacin de la quiniela
Nmero de recibos pendientes
en ejecutiva
I.V.A. a aplicar
Cdigo de cliente
Direccin de correo electrnico
Nmero de hijos
15

Universidad Autnoma del Carmen


Grupo Disciplinario de Sistemas Informticos
Concepto
Pasos de un contador de agua

Identificador(es)

Hora actual
Tablero de ajedrez

Aforo mximo
Nmero de pliza de seguro
Total de euros
Contador
repetitiva

de

una

estructura

Fila de una matriz


Columna de una matriz

1.3. Ejercicios de escritura de identificadores


Marca con una C los nombres de identifcadores correctos y con una X los que
estn errneos de acuerdo a las caractersticas de los identificadores.
Candidato1
3VCand
Votos Favor
CalcularTotal
Tot$VElecc
Porcentaje_Candidato

Nombre
Main
+apuntador
nuevoNombre_2
Aos
Km*Litro

1.4. Ejercicios: escribir sentencias de declaracin de variables


Escribe la declaracin de las variables que se requieren en cada uno de los
enunciados siguientes, en algunos casos elegir el nombre (identficador), para la
variable de acuerdo al dato para el que se requiera.
1. Declarar una variable entera llamada numero:

16

Universidad Autnoma del Carmen


Grupo Disciplinario de Sistemas Informticos
2. Declarar una variable fraccionaria para guardar el dato de sueldo de un
empleado:

3. Declarar una variable de tipo carcter llamada tipo1

4. Declarar una variable de tipo cadena de texto para guardar el nombre de un


alumno

5. Puesto que C hace caso omiso de los comentarios, es vlida la siguiente


declaracin? Advierta la posicin del punto y coma.
int x = 3 // 0, 1 y 2 no estn permitidos;

1.5. Ejercicios variables declaradas


Describe que valores guardarn las variables declaradas a continuacin, indica si
es correcto el tipo declarado con respecto al dato que se supone guardara la
variable (de acuerdo al nombre).
Declaracin
int contador;

Valores que guardar

float precio;
float numero_Hijos;
char Tipo;
char nombre[30];
int suma = 0;

1.4. Ejercicios variables declaradas y sentencias de asignacin


a) Dadas las declaraciones:
float w;
int i, j = 2, k = 4;
Determinar el valor de las variables i, w y k despus de la ejecucin de las
siguientes sentencias de asignacin:
17

Universidad Autnoma del Carmen


Grupo Disciplinario de Sistemas Informticos
Sentencia
i = j / k;
w = i / j;
k = i % j;
w = 8.0 / j;
i++;

Valor de variable

b) Suponer que I y J son variables enteras cuyos valores son 6 y 12


respectivamente. Coloca el valor de verdadero o falso a las siguientes
condiciones, segn corresponda.
Condicin

Resultado

(2 * I) <= J
(2 * I 1) < J
(I > 0) && (I <= 10)
(I > 25) || (I < 50 && J < 50)
(I < 4) || (J > 5)
!( I > 6)

Actividad 2. EXPRESIONES
2.1. Ejemplos evaluacin de expresiones
En las siguientes expresiones (aritmticas, relacionales lgicas) se describe el
orden en el que se ejecutaran cada una de las operaciones que las conforman y
que resultado se obtendr de cada una de ellas.

1. Evaluar la expresin: A += (B * C) + (A * D)
Para los valores A=2, B=4, C=5, D=3
R1 = B * C
R1 = 4 * 5 = 20
Resultado
R2 = A * D
R2 = 2 * 3 = 6
A = 28
R3 = R1 + R2
R3 = 20 + 6 = 26
R4 = A + R3
R4 = 2 + 26 = 28
A = R4
A = 28
2. Evaluar la expresin: (a + b + c + d + e) % 5
Para los valores a=3, b=2, c=1, d=8, e=4
R1 = a + b
R1 = 3 + 2 = 5
Resultado
R2 = R1 + c
R2 = 5 + 1 = 6
3
R3 = R2 + d
R3 = 6 + 8 = 14
R4 = R3 + e
R4 = 14 + 4 = 18
R5 = R4 % 5
R5 = 18 % 5 = 3
18

Universidad Autnoma del Carmen


Grupo Disciplinario de Sistemas Informticos
3. Evaluar la expresin: a * (b + c) + c* (d + e)
Para los valores a=3, b=2, c=1, d=8, e=4
R1 = b + c
R1 = 2 + 1 = 3
Resultado
R2 = a * R1
R2 = 3 * 3 = 9
21
R3 = d + e
R3 = 8 + 4 = 12
R4 = c * R3
R4 = 1 * 12 = 12
R5 = R2 + R4
R5 = 9 + 12 = 21

4. Evaluar la expresin: (a * (b + c)) - 2 * a + (4 * d - f)


Para los valores a=3, b=2, c=1, d=8, f=4
R1 = b + c
R1 = 2 + 1 = 3
Resultado
R2 = a* R1
R2 = 3 * 3 = 9
31
R3 = 2 * a
R3 = 2 * 3 = 6
R4 = R2 R3
R4 = 9 6 = 3
R5 = 4 * d
R5 = 4 * 8 = 32
R6 = R5 f
R6 = 32 4 = 28
R7 = R4 + R6
R7 = 3 + 28 = 31

2.2. Ejercicios evaluacin de expresiones


1. Evaluar la siguiente expresin: a % 2 / b - c * a * y + 18 / c 3 * h
Para los valores a=3, b=2, c=1, h=8, y=4
R1 = a % 2
R1 = 3 % 2 = 1
Resultado
R2 = R1 / b
R2 = 1 / 2 = 0
-18
R3 = c * a
R3 = 1 * 3 = 3
R4 = R3 * y
R4 = 3 * 4 = 12
R5 = R2 R4
R5 = 0 12 = -12
R6 = 18 / c
R6 = 18 / 1 = 18
R7 = R5 + R6
R7 = -12 + 18 = 6
R8 = 3 * h
R8 = 3 * 8 = 24
R9 = R7 - R8
R9 = 6 24
2. Evaluar la siguiente expresin: x >= (y+z)
Para los valores x = 3, y = 4, z = 1
R1 = y + z
R1= 4 + 1 = 5
Resultado
R2 = x >= R1
R2= 3 >= 5
Falso

19

Universidad Autnoma del Carmen


Grupo Disciplinario de Sistemas Informticos
3. Evaluar la siguiente expresin: (a + b -1) < (x * y)
Para los valores a = 31, b = -1, x = 3, y = 2
R1 = a + b
R1 = 31 + (-1) = 30
Resultado
R2 = R1 -1
R2 = 30 -1 = 29
Falso
R3 = x * y
R3 = 3 * 2 = 6
R4 = R2 < R3 R4 = 29 < 6

4. Evaluar la siguiente expresin: !(x < 5) && !(y >= 7)


Suponga x = 3 y = 6
R1 = x < 5
R1 = 3 < 5 cierto
R2 = y >= 7
R2 = 6 >= 7falso
R3 = !R2
R3 = !falsocierto
R4 = !R1
R4 = !ciertofalso
R5 = R4 && R3
R5 = falso && cierto

Resultado
Falso

5. Evaluar la siguiente expresin: !((i > 4) ||(j <= 6))


Suponga i = 22 y j = 3
R1 = i > 4
R1 = 22 > 4cierto
R2 = j <= 6
R2 = 3 <= 6cierto
R3 = R1 || R2
R3 = cierto || ciertocierto
R4 = !R3
R4 = !cierto

Resultado
Falso

6. Evaluar la expresin: A * B / C * D
Suponga A = 34, B = 12, C = 8 y D = 4
R1 = A * B
R1 = 34 * 12
R2 = R1 / C
R2 = 408 / 8
R3 = R2 * D
R3 = 51 * 4

7. Evaluar la expresin: !(a + b == c) ||(c != 0) && (b -c > = 19)


Suponga a = 34, b = 12 y c = 8
R1 = a + b
R1 = 34 + 12 = 46
R2 = R1 == c
R2 = 46 == 8falso
R3 = c != 0
R3 = 8 != 0cierto
R4 = b - c
R4 = 12 8 = 4
R5 = R4 >= 19
R5 = 4 >= 19 falso

Resultado
204

Resultado
Cierto

20

Universidad Autnoma del Carmen


Grupo Disciplinario de Sistemas Informticos
R6 = !R2
R7 = R3 && R5
R8 = R6 || R7

R6 = !falsocierto
R7 = cierto && falso falso
R8 = cierto || falsocierto

8. Evaluar la expresin: (a + b) * c
Suponga a = 34, b = 12 y c = 8
R1 = a + b
R1 = 34 + 12
R2 = R1 * c
R2 = 46 * 8

9. Evaluar la expresin:a + x * x + b * (x + c)
Suponga a = 34, b = 12, c = 8 y x = 3
R1 = x + c
R1 = 3 + 8
R2 = x * x
R2 = 3 * 3
R3 = b * R1
R3 = 12 * 11
R4 = a + R2
R4 = 34 + 9
R5 = R4 + R3
R5 = 43 + 132

Resultado
368

Resultado
175

10. Evaluar la expresin: (horas * 3600) + (minutos * 60 + segundos)


Suponga horas = 34, minutos = 12 y segundos = 3
R1 = horas * 3600
R1 = 34 * 3600
Resultado
R2 = minutos * 60
R2 = 12 * 60
123123
R3 = R2 + segundos R3 = 720 + 3
R4 = R1 + R3
R4 = 122400 + 723

11. Evaluar la expresin:4 + 2 * 5


R1 = 2 * 5
R1 = 2 * 5
R2 = 4 + R1
R2 = 4 + 10

Resultado
14

12. Evaluar la expresin:23 *2 / 5


R1 = 23 * 2
R1 = 23 * 2
R2 = R1 / 5
R2 = 46 / 5

Resultado
9.2

13. Evaluar la expresin:3 + 5 * (10 6)


R1 = 10 - 6
R1 = 10 - 6
R2 = 5 * R1
R2 = 5 * 4
R3 = 3 + R2
R3 = 3 + 20

Resultado
23

21

Universidad Autnoma del Carmen


Grupo Disciplinario de Sistemas Informticos
14. Evaluar la expresin:3 + 5 * (10 (2+4))
R1 = 2 + 4
R1 = 2 + 4
R2 = 10 R1
R2 = 10 6
R3 = 5 * R2
R3 = 5 * 4
R4 = 3 + R3
R4 = 3 + 20

Resultado
23

15. Evaluar la expresin:3.5 + 5.09 14.0 / 40


R1 = 14.0 / 40
R1 = 14.0 / 40
R2 = 3.5 + 5.09
R2 = 3.5 + 5.09
R3 = R2 R1
R3 = 8.59 0.35

Resultado
8.24

16. Evaluar la expresin:2.1 * (1.5 + 3.0 * 4.1)


R1 = 3.0 * 4.1
R1 = 3.0 * 4.1
R2 = 1.5 + R1
R2 = 1.5 + 12.3
R3 = 2.1 * R2
R3 = 2.1 * 13.8

Resultado
28.98

17. Evaluar la expresin:2.1 * (1.5 + 12.3)


R1 = 1.5 + 12.3
R1 = 1.5 + 12.3
R2 = 2.1 * R1
R2 = 2.1 * 13.8

Resultado
28.98

18. Evaluar la expresin:3.5 + 5.09 + 3.5


R1 = 3.5 + 5.09
R1 = 3.5 + 5.09
R2 = R1 + 3.5
R2 = 8.59 + 3.5

Resultado
12.09

19. Evaluar la expresin: (horas*3600) >= (minutos*60 + segundos)


Suponga: horas = 8, minutos = 12 y segundos = 4
R1 = 8 * 3600
R1 = 8 * 3600
Resultado
R2 = 12 * 60
R2 = 12 * 60
Verdad
R3 = R2 + 4
R3 = 720 + 4
R4 = R1 >= R3
R4 = 28800 >= 724

20. Evaluar la expresin:!( p && q ) || s


Suponga: p = Verdad, q = Falso y s = Verdad
R1 = p && q
R1 = Verdad && Falso
Resultado
R2 = !R1
R2 = !Falso
Verdad
R3 = R2 || s
R3 = Verdad || Verdad
22

Universidad Autnoma del Carmen


Grupo Disciplinario de Sistemas Informticos

21. Evaluar la expresin:p && q && s


Suponga: p = Verdad, q = Falso y s = Verdad
R1 = p && q
R1 = Verdad && Falso
Resultado
R2 = R1 && s
R2 = Falso && Verdad
Falso
22. Evaluar la expresin: ( a || b ) && ( c || d )
Suponga: p = Verdad, q = Falso y s = Verdad
R1 = p && q
R1 = Verdad && Falso
Resultado
R2 = R1 && s
R2 = Falso && Verdad
Falso
23. Evaluar la expresin:a > 5 && !( b < c ) || 3 <= d
Suponga: p = Verdad, q = Falso y s = Verdad
R1 = p && q
R1 = Verdad && Falso
Resultado
R2 = R1 && s
R2 = Falso && Verdad
Falso

24. Evaluar la expresin: ( op< min ) || ( op> max)


Suponga: p = Verdad, q = Falso y s = Verdad
R1 = p && q
R1 = Verdad && Falso
Resultado
R2 = R1 && s
R2 = Falso && Verdad
Falso

25. Evaluar la expresin: (edad >= 18) && (edad <= 60)
Suponga: edad = 33
R1 = edad >= 18
R1 = 33 >= 18
R2 = edad <= 60
R2 = 33 <= 60
R3 = R1 && R2
R3 = Verdad && Verdad
26. Evaluar la expresin: A % B + C / D 6
Suponga A = 34, B = 12, C = 8 y D = 4
R1 = A % B
R1 = 34 % 12
R2 = C / D
R2 = 8 / 4
R3 = R1 + R2
R3 = 10 + 2
R4 = R3 - 6
R4 = 12 - 6

Resultado
Verdad

Resultado
6

27. Evaluar la expresin: A + 2 * (3 + B)


Suponga A = 4 y B = 12

23

Universidad Autnoma del Carmen


Grupo Disciplinario de Sistemas Informticos
R1 = 3 + B
R2 = 2 * R1
R3 = A + R2

R1 = 3 + 12
R2 = 2 * 15
R3 = 4 + 30

28. Evaluar la expresin: 3 * (A % (B / C)) + 5


Suponga A = 3, B = 25 y C = 6
R1 = B / C
R1 = 25 / 6
R2 = A % R1
R2 = 3 % 4
R3 = 3 * R2
R3 = 3 * 3
R4 = R3 + 5
R4 = 9 + 5

29. Evaluar la expresin: 6 * 5 / 10 * 2 + 10


R1 = 6 * 5
R1 = 6 * 5
R2 = R1 / 10
R2 = 30 / 10
R3 = R2 * 2
R3 = 3 * 2
R4 = R3 + 10
R4 = 6 + 10
30. Evaluar la expresin: (6 * 5) / (10 * 2) + 10
R1 = 6 * 5
R1 = 6 * 5
R2 = 10 * 2
R2 = 10 * 2
R3 = R1 / R2
R3 = 30 / 20
R4 = R3 + 10
R4 = 1.5 + 10

31. Evaluar la expresin: (6 * 5) / (10 * 2 + 10)


R1 = 6 * 5
R1 = 6 * 5
R2 = 10 * 2
R2 = 10 * 2
R3 = R2 + 10
R3 = 20 + 10
R4 = R1 / R3
R4 = 30 / 30

32. Evaluar la expresin: (6 * 5) / (10 * (2 + 10))


R1 = 6 * 5
R1 = 6 * 5
R2 = 2 + 10
R2 = 2 + 10
R3 = 10 * R2
R3 = 10 * 12
R4 = R1 / R3
R4 = 30 / 120

33. Evaluar la expresin: 4 / 2 * 3 / 6 + 6 / 2 / 1 / 5 % 2 / 4 * 2


R1 = 4 / 2
R1 = 4 / 2
R2 = R1 * 3
R2 = 2 * 3
R3 = R2 / 6
R3 = 6 / 6

Resultado
34

Resultado
14

Resultado
16

Resultado
11.5

Resultado
1

Resultado
0.25

Resultado
Error

24

Universidad Autnoma del Carmen


Grupo Disciplinario de Sistemas Informticos
R4 = 6 / 2
R5 = R4 / 1
R6 = R5 / 5
R7 = R6 % 2
R8 = R7 / 4
R9 = R8 * 2
R10 = R3 + R9

R4 = 6 / 2
R5 = 3 / 1
R6 = 3 / 5
R7 = 0.6 % 2 (no se aplica
El operador residuo a los
Fraccionarios)

34. Evaluar la expresin: 8 * 5 * (7+2 - (4 + 4))


R1 = 4 + 4
R2 = 7 + 2
R3 = R1 R2
R4 = 8 * 5
R5 = R4 * R3

R1 = 4 + 4
R2 = 7 + 2
R3 = 8 9
R4 = 8 * 5
R5 = 40 * -1

Resultado
-40

2.3. Ejemplos expresiones algebraicas vs expresiones computaconales


Las expresiones algebraicas pueden representarse como expresiones
computacionales en lenguaje C, usando como operandos variables o constantes y
operadores aritmticos o lgicos segn se requiera.
Formula

ab
cd

Expresin

X = (a + b) / (c d)
(y2 - y1) / (x2 x1)
(a + b) / (c + d)
(3 * x + 2 * y) / (2 * z)
((x + y) / x) (3 * x / 5)
A + (b / (c * c))

25

Universidad Autnoma del Carmen


Grupo Disciplinario de Sistemas Informticos

2.3.
Ejercicios
computaconales

expresiones

algebraicas

vs

expresiones

Escribe la expresin computacional para cada una de las siguientes formulas.


Formula
Expresin

26

Universidad Autnoma del Carmen


Grupo Disciplinario de Sistemas Informticos
Formula

Expresin

27

Universidad Autnoma del Carmen


Grupo Disciplinario de Sistemas Informticos
Formula

Expresin

4x -2y + 7

Referencias: [monografias] pag. 9, 13, [Cerquera2001] pag. 22-30, [Joyanes2003]


pag. 132 136, [Rivas1985] pag. 87-99.

28

Universidad Autnoma del Carmen


Grupo Disciplinario de Sistemas Informticos

TEMA 2. ESTRUCTURAS SECUENCIALES


Objetivo: El alumno ser capaz de elaborar programas de solucin a problemas
en los que se requiere el uso de instrucciones secuenciales (entrada, salida,
sentencia de asignacin).
Lectura:
Estructura de un programa
Un programa debe ser claro, estar bien organizado y que sea fcil de leer y
entender. Casi todos los lenguajes de programacin son de formato libre, de
manera que los espacios no importan, y podemos organizar el cdigo del
programa como ms nos interese.
Para aumentar la claridad no se deben escribir lneas muy largas que se salgan de
la pantalla y funciones con muchas lneas de cdigo (especialmente la funcin
principal). Una funcin demasiado grande demuestra, en general, una
programacin descuidada y un anlisis del problema poco estudiado. Se deber,
en tal caso, dividir el bloque en varias llamadas a otras funciones ms simples,
para que su lectura sea ms agradable. En general se debe modularizar siempre
que se pueda, de forma que el programa principal llame a las funciones ms
generales, y estas vayan llamando a otras, hasta llegar a las funciones primitivas
ms simples. Esto sigue el principio de divide y vencers, mediante el cual es ms
fcil solucionar un problema dividindolo en subproblemas (funciones) ms
simples.
A veces, es conveniente usar parntesis en las expresiones, aunque no sean
necesarios, para aumentar la claridad.
Cada bloque de especial importancia o significacin, y cada funcin debe
separarse de la siguiente con una lnea en blanco. A veces, entre cada funcin se
aaden una linea de asteriscos o guiones, como comentario, para destacar que
empieza la implementacin de otra funcin (aparte de los comentarios explicativos
de dicha funcin).
El uso de la sentencia GOTO debe ser restringido al mximo, pues la los
programas y los hace ilegibles. Como dicen Kerninghan y Ritchie en su libro de C,
su utilizacin slo est justificada en casos muy especiales, como salir de una
estructura profundamente anidada, aunque para ello podemos, a veces, usar los
comandos break, continue, return o la funcin exit(). Igualmente, esos recursos,
para salir de bucles anidados deben usarse lo menos posible y slo en casos que
quede bien clara su finalidad. Si no queda clara su finalidad, ser mejor que nos
29

Universidad Autnoma del Carmen


Grupo Disciplinario de Sistemas Informticos
planteemos de nuevo el problema y estudiemos otra posible solucin que seguro
que la hay.
Normalmente, un programa en C se suele estructurar de la siguiente forma:
1. Primero los comentarios de presentacin, como ya hemos indicado.
2. Despus, la inclusin de bibliotecas del sistema, los ficheros .h con el
#include y entre ngulos (<...>) el nombre del fichero. Quizs la ms tpica
sea:
3.

#include <stdio.h>

4. Bibliotecas propias de la aplicacin. Normalmente, en grandes


aplicaciones, se suelen realizar varias libreras con funciones, separadas por
su semntica. Los nombres de fichero se ponen entre comillas (para que no
las busque en el directorio de las bibliotecas o libreras estndar) y se puede
incluir un comentario aclarativo:
5.
6.

#include "rata.h" /* Rutinas para control del ratn


*/
#include "cola.h" /* Primitivas para el manejo de una cola */

7. Variables globales, usadas en el mdulo y declaradas en otro mdulo


distinto, con la palabra reservada extern.
8. Constantes simblicas y definiciones de macros, con #define.
9. Definicin de tipos, con typedef.
10. Declaracin de funciones del mdulo: Se escribir slo el prototipo de la
funcin, no su implementacin. De esta forma, el programa (y el programador)
sabr el nmero y el tipo de cada parmetro y cada funcin.
11. Declaracin de variables globales del mdulo: Se trata de las variables
globales declaradas aqu, y que si se usan en otro mdulo debern llevar, en
el otro mdulo, la palabra extern.
12. Implementacin de funciones: Aqu se programarn las acciones de cada
funcin, incluida la funcin principal. Normalmente, si el mdulo incluye la
funcin principal, la funcin main(), sta se pone la primera, aunque a veces
se pone al final y nunca en medio. El resto de funciones, se suelen ordenar
por orden de aparicin en la funcin principal y poner juntas las funciones que
son llamadas desde otras. Es una buena medida, que aparezcan en el mismo
orden que sus prototipos, ya que as puede ser ms fcil localizarlas.
Naturalmente, este orden no es estricto y pueden cambiarse algunos puntos por
otros, pero debemos ser coherentes, y usar el mismo orden en todos los mdulos.
Por ejemplo, es frecuente saltarse la declaracin de los prototipos de las funciones
poniendo en su lugar la implementacin y, por supuesto, dejando para el final la
funcin main ().
30

Universidad Autnoma del Carmen


Grupo Disciplinario de Sistemas Informticos
Otro punto muy importante es el referente a variables globales. En general es
mejor no usar nunca variables globales, salvo que sean variables que se usen
en gran parte de las funciones (y mdulos) y est bien definida y controlada su
utilidad. El uso de estas variables puede dar lugar a los llamados efectos laterales,
que provienen de la modificacin indebida de una de estas variables en algn
mdulo desconocido. Lo mejor es no usar nunca variables globales y pasar su
valor por parmetros a las funciones que estrictamente lo necesiten, viendo as las
funciones como cajas negras, a las que se le pasan unos determinados datos y
nos devuelve otros, perfectamente conocidos y expresados en sus parmetros.
Por la misma razn que no debemos usar variables globales, no se deben usar
pasos de parmetros por referencia (o por variable), cuando no sea necesario.
Indentacin o sangrado
La indentacin o sangrado consiste en marginar hacia la derecha todas las
sentencias de una misma funcin o bloque, de forma que se vea rpidamente
cuales pertenecen al bloque y cuales no. Algunos estudios indican que el
indentado debe hacerse con 2, 3 4 espacios. Usar ms espacios no aumenta la
claridad y puede originar que las lneas se salgan de la pantalla, complicando su
lectura.
La indentacin es muy importante para que el lector/programador no pierda la
estructura del programa debido a los posibles anidamientos.
Normalmente, la llave de comienzo de una estructura de control ({) se pone al final
de la linea y la que lo cierra (}) justo debajo de donde comienza -como veremos
ms adelante- pero algunos programadores prefieren poner la llave { en la misma
columna que la llave }, quedando una encima de otra. Eso suele hacerse as, en la
implementacin de funciones, donde la llave de apertura de la funcin se suele
poner en la primera columna.
Sin embargo, poner la llave de apertura { al final de la lnea que da comienzo a
ese bloque es lo preferido por los programadores, pues uno puede "olvidarse" de
ella sabiendo que el bloque empieza en esa lnea y termina en el carcter } que
haya justo debajo de ella. Adems, poner el { al principio de la lnea puede
estorbar al hacer modificaciones.
Veamos, a continuacin, la indentacin tpica en las estructuras de control:
Sentencia if-else
if (condicin) {
sentencia1;
sentencia2;
...
}
else {
31

Universidad Autnoma del Carmen


Grupo Disciplinario de Sistemas Informticos
sentencia1;
sentencia2;
...
}
Sentencia swith
switch (expresin) {
case expresin1: sentencia1;
sentencia2;
...
break;
case expresin2: sentencia1;
sentencia2;
...
break;
.
.
.
case default : sentencia1;
sentencia2;
...
}
Sentencia for
for (exp1;exp2;exp3) {
sentencia1;
sentencia2;
...
}
Sentencia while
while (condicin) {
sentencia1;
sentencia2;
...
}
Sentencia do-while
do {
sentencia1;
sentencia2;
...
} while (condicin);
32

Universidad Autnoma del Carmen


Grupo Disciplinario de Sistemas Informticos
Aunque estos formatos no son en absoluto fijos, lo que es muy importante es que
queden bien claro las sentencias que pertenecen a cada bloque, En bloques con
muchas lineas de cdigo y/o con muchos anidamientos, se recomienda aadir un
comentario al final de cada llave de cierre del bloque, indicando a qu sentencia
cierra. Por ejemplo:
for (exp1;exp2;exp3) {
sentencia1;
sentencia2;
...
while (condicin_1) {
sentencia1;
sentencia2;
...
if (condicin) {
sentencia1;
sentencia2;
...
while (condicin_2) {
sentencia1;
sentencia2;
...
} /*while (condicin_2)*/
} /*if*/
else {
sentencia1;
sentencia2;
...
if (condicin) {
sentencia1;
sentencia2;
...
}
else {
sentencia1;
sentencia2;
...
}
} /*else*/
} /*while (condicin_1)*/
} /*for*/
33

Universidad Autnoma del Carmen


Grupo Disciplinario de Sistemas Informticos
El siguiente cdigo representa el programa ms simple en C:
1. void main ()
2. {
3. }
La palabra main es muy importante y debe aparecer solo una vez en todo
programa C. Este es el punto donde inicia la ejecucin del programa. Siguiendo a
la palabra main esta un par de parntesis que le indican al compilador la
existencia de una funcin.
Las llaves que siguen en las lneas 2 y 3 se utilizan para definir los lmites del
programa. Los diferentes enunciados del programa van colocados dentro de estas
llaves. El cdigo que actualmente estamos estudiando representa un programa
que no hace absolutamente nada y por lo tanto no tiene ningn enunciado
ejecutable, sin embargo es posible compilar y correr este programa

OPERACIONES DE ENTRADA/SALIDA

Una operacin de entrada tiene por objeto el obtener datos de los diferentes
dispositivos de entrada; generalmente del teclado, y los almacena en memoria
principal.

Una operacin de salida tiene por objeto el obtener datos de memoria


principal y sacarlos a los dispositivos de salida, generalmente la pantalla.

En C no existen palabras reservadas para realizar entradas y salidas. Para


ello, el programador puede hacer uso de las funciones de entrada y salida
estndar proporcionadas por la biblioteca estndar de C, como son printf
y scanf, cout y cin de biblioteca de C++, entre otras que estudiaremos ms
adelante.
SENTENCIAS DE SALIDA EN LENGUAJE C (printf, cout)
Las instrucciones de salida de datos, envan a la salida estndar lo que el usuario
desee, la instruccin printf esta definida en la librera stdio.h y la instruccin cout
en la iostream.h, ambas son instrucciones de salida.
Sintaxis de sentencia printf:
printf (cadena de control, lista_variables);

Donde:
Cadena de control: Cadena de texto que se ver en pantalla, dentro de la cual
pueden incluirse cdigos de formato, en caso de que se desee mostrar el
contenido de variables del programa. Se usar un cdigo por cada una de las
variables que se desee ver su contenido. La siguiente tabla muestra los cdigos
de formato ms comunes.

34

Universidad Autnoma del Carmen


Grupo Disciplinario de Sistemas Informticos
Cdigo

Formato

%d

Un entero

%i

Un entero

%c

Una carcter

%s

Una cadena

%f

Un real

%ld

Entero largo

%u

Decimal sin signo

%lf

Doble posicin

%h

Entero corto

%o

Octal

%x

Hexadecimal

%e

Notacin Cientfica

%p

Puntero

%%

Imprime Porcentaje

Lista de variables: Nombre de una o ms variables separadas con coma, de las


que se desea mostrar su contenido en pantalla, por cada variable listada debe
haber un codigo de formato en la cadena de control.
Secuencias de escape
Una secuencia de escape siempre representa a un carcter del ASCII. Dichos
caracteres se pueden clasificar en:

Grficos (se corresponden con los smbolos ms usados para escribir por
los humanos).

No grficos (representan a acciones, como por ejemplo, mover el cursor de


la pantalla al principio de la lnea siguiente).

La forma ms sencilla de escribir una secuencia de escape es con el carcter \


(barra invertida), seguido de un carcter especial. Por tanto, cuando en la cadena
de control de la funcin printf se escriba una secuencia de escape, o bien se
mostrar un carcter grfico por pantalla, o bien se realizar una accin. Algunas
de las ms utilizadas son:
Secuencia
\t

\n
\

Carcter
Descripcin
Tabulador horizontal Mueve el cursor a la posicin
siguiente
del
tabulador
horizontal.
Nueva lnea
Mueve el cursor al principio de
la lnea siguiente
Comilla doble
Muestra el carcter comilla
doble ()

Valor ASCII
009

010
034

35

Universidad Autnoma del Carmen


Grupo Disciplinario de Sistemas Informticos
Ejemplos: Dadas las definiciones de x=5, w=3.4, c=g.
printf (Bienvenido a la programacin\n);
printf (Contenido de variable x = %d\n, x);
printf (Variables x = %d, w = %f, c= %c\n, x, w, c);

PANTALLA
Bienvenido a la programacin
Contenido de variable x = 5
Variables x = 5, w = 3.4, c=g

Sintaxis de sentencia cout:


cout<<texto1<<var1<<texto2<<var2<<texto3<< ;

En la instruccin se separa cada cadena de texto de nombres de variables de las


que se quiera ver su contenido con el smbolo <<.
Ejemplos: Dadas las definiciones de x=5, w=3.4, c=g.
cout<<Bienvenido a la programacin\n;
cout<<Contenido de variable x = << x;
cout<<Variables x = << x << , w = << w << , c= << c;

PANTALLA
Bienvenido a la programacin
Contenido de variable x = 5
Variables x = 5, w = 3.4, c=g

SENTENCIAS DE ENTRADA EN LENGUAJE C (scanf, cin)


Las instrucciones de permiten leer datos desde la entrada estndar, la instruccin
scanf esta definida en la librera stdio.h y la instruccin cin en la iostream.h, ambas
son instrucciones de lectura.
Sintaxis de sentencia scanf:
scanf (cadena de control, lista_variables);

Donde:
Cadena de control: Contendr los cdigos de formato corrspondientes al formato
de las variables a leer un cdigo por cada variable que se vaya a leer.
Lista de variables: Nombre de una o ms variables separadas con coma, donde
se guardar los valores ledos, el nombre de cada variable debe ir antecedido por
un &.
Ejemplos: Dadas las definiciones
int x;
float w;
char c;
// Las instrucciones de lectura para cada variable pueden ser
36

Universidad Autnoma del Carmen


Grupo Disciplinario de Sistemas Informticos
scanf
scanf
scanf
scanf

(%d, &x);
(%f, &w);
(%c, &c);
(%d %f %c, &x, &w, &c);

Con cada ejecucin del programa se guardar en cada variable el


valor que el usuario teclee.

Sintaxis de sentencia cin:


Cin>>var1>>var2>>var3 ;

Donde:
En la instruccin se separa el nombre de cada variable en la que se quiera
guardar el valor ledo con dos smbolos > juntos (>>).
Ejemplos: Dadas las definiciones
int x;
float w;
char c;
// Las instrucciones de lectura para cada variable pueden ser
Cin>>x;
Cin>>w;
Cin>>c;
Cin>>x>>w>>c;
Funciona igual que la iinstruccin scanf, con cada ejecucin del
programa se guardar en cada variable el valor que el usuario
teclee.

Ejemplo 1. Programa sencillo de la instruccin printf


#include <stdio.h>
int main()
{
printf( "Hola mundo" );
return 0;
}

Dar la siguiente salida en pantalla:


Hola mundo_

Ejemplo 2. Programa instruccin printf


#include<iostream>
// Comienzo del programa principal
void main()
37

Universidad Autnoma del Carmen


Grupo Disciplinario de Sistemas Informticos
{
cout<< **** << endl;
cout<< * * << endl;
cout<< * * << endl;
cout<< **** << endl;
} // Fin del programa principal

Programa que dibuja un cuadrado de * en pantall, la salida en pantalla ser:


****
* *
* *
****

Ejemplo 3. Programa con ms instruccin printf


#include <stdio.h>
int main()
{
char nombre[8] = "Timoteo";
int hermanos = 2, sobrinos = 4;
printf( "%s tiene %d hermanos y %d sobrinos.",
nombre, hermanos, sobrinos );
return 0;
}

Dar la siguiente salida en pantalla:


Timoteo tiene 2 hermanos y 4 sobrinos.

Ejemplo 4. Programa con printf y scanf


#include <stdio.h>
int main()
{
int numero;
printf( "\n
Introduzca un numero entero: " );
scanf( "%d", &numero );
return 0;
}

En la memoria se reservar espacio para la variable numero. Y si el usuario


teclea, por ejemplo, un 5, ese valor se guardar en el espacio de memoria de
38

Universidad Autnoma del Carmen


Grupo Disciplinario de Sistemas Informticos
la variable.
En pantalla se ver:
Introduzca un numero entero: 5
Ejemplo 5. Ahora, estudiemos el siguiente programa
#include <math.h>
#include <stdio.h>
#define PI 3.141592
int main()
{
float area, radio;
printf( "\n
Introduzca radio: " );
scanf( "%f", &radio );
area = PI * pow( radio, 2 );
printf( "\n
El area de la circunferencia es: %f", area );
return 0;
}

Inicialmente, en la memoria se reservar espacio para las dos variables del


programa.

Si el usuario teclea, por ejemplo, el valor 3.8 para el radio, en ese espacio se
guardar el valor 3.800000.
En pantalla se visualizar:

39

Universidad Autnoma del Carmen


Grupo Disciplinario de Sistemas Informticos
Introduzca radio: 3.8
El area de la circunferencia es: 45.364588

La variable radio es de tipo real y, por tanto, en la cadena de control de la


funcin scanf se tiene que escribir el especificador de formato asociado a la
entrada de un nmero real (%f). Y, puesto que, en la funcin printf, el
resultado de evaluar la expresin area tambin es de tipo real, en su cadena
de control hay que escribir, de igual forma, el especificador de formato
asociado a la salida de un nmero real (%f).
Para que el rea se muestre slo con dos cifras decimales, es decir, 45.36 en
vez de 45.364588, en la cadena de control de la funcin printf se debe
escribir %.2f en vez de %f. Con esto solo se mostrarn dos cifras decimales,
aunque en memoria sigue guardado el valor 45.364588
printf( "\n El area de la circunferencia es: %.2f", area );
En pantalla se ver:

Introduzca radio: 3.8


El area de la circunferencia es: 45.36

MTODO DE DESARROLLO DE PROGRAMAS

40

Universidad Autnoma del Carmen


Grupo Disciplinario de Sistemas Informticos

Anlisis del problema (Anlisis E - P - S)


* Identificar y comprender el problema
- (E) Describir los datos de entrada o especificacin de entrada, informacin
necesaria para resolver el problema.
Qu datos se requieren de antemano o entrada?
Cuntos datos se introducirn o pedirn?
Cules datos de entrada son vlidos?
- (P) Definicin del proceso, operaciones o clculos necesarios para
encontrar la solucin del problema.
Qu tipo de clculo es necesario? Ecuaciones?
Cuntas ecuaciones?
- (S) Especificaciones de salida, resultados finales de los clculos
Cules son los datos de salida?
Cuntos datos de salida se producirn?
Qu precisin tendrn los resultados?
Se debe imprimir un encabezado?

41

Universidad Autnoma del Carmen


Grupo Disciplinario de Sistemas Informticos

Diseo de la solucin del problema con un algoritmo (Secuencia finita y


ordenada de pasos, sin ambigedades, que conducen a la solucin de un
problema dado, debe ser preciso e indicar el orden de realizacin de cada paso,
debe estar definido, si se sigue un algoritmo dos veces, se debe obtener el mismo
resultado cada vez, debe ser finito, si se sigue un algoritmo, se debe terminar en
algn momento, es decir tiene un nmero finito de pasos)
Algoritmo = Pseudocdigo
X1,...,Xn= valor suministrado
DespliegueX1,...,Xn
X1,...,Xn= E1,...,En

Algoritmo

Entradas

1. Inicio
2. Leer l
3. Leer a
4. area=l*a
5. Escribir (Area del rectangulo, area)
6. Fin

Proceso
Salida

42

Universidad Autnoma del Carmen


Grupo Disciplinario de Sistemas Informticos
Codificacin: es la traduccin del diseo de la solucin del problema (algoritmo) a
un programa escrito en un lenguaje de programacin (El programa se puede
escribir en un editor de texto)
Ejecucin o corrida del programa: invocacin del programa objeto obtenido
luego de la compilacin del programa fuente.
Programa: secuencia de sentencias, cada una expresa las operaciones que debe
ejecutar la computadora (hecho en algn lenguaje de programacin como C/C++)

Entradas

Programa

void main(){
float a, l, area;
cin>> l;
cin>> a;
area = l * a;
cout<< Area del rectangulo= << area;
}

Proceso
Salida

Corrida en fro del programa: Prueba manual del programa


Seleccin de un conjunto de datos de entrada
Ejecucin manual de cada sentencia del programa fuente
Verificacin de los resultados obtenidos en comparacin con los resultados
esperados segn los datos de entrada
El conjunto de datos de entrada debe permitir la prueba de todos los
caminos de ejecucin posibles dentro del programa
Ejemplo:
I
0
4.1

a
0
5.3

Area
0
21.73

I
0
5

A
4
0

Area
0
0

Depuracin del programa: Identificacin y eliminacin de errores una vez que el


programa ha sido compilado
Errores de sintaxis (Violan las reglas del lenguaje de programacin, el
compilador localizar e identificar la mayora de estos automticamente)
Errores lgicos (Equivocaciones que causan que el programa se ejecute
de forma inesperada o incorrecta)
43

Universidad Autnoma del Carmen


Grupo Disciplinario de Sistemas Informticos

Ejemplo de errores de sintaxis


cout<< Areadel rectangulo= << area// falta el ; al final
Una vez editado y corregido el error, el programa fuente debe ser compilado
nuevamente, es decir traducido a lenguaje de mquina (cdigo objeto)
Si el programa fuente tiene errores de sintaxis, no se genera el programa objeto
Cuando el programa est sintcticamente correcto, el cdigo objeto se encadena
con las funciones en las libreras incluidas usando un encadenador
El cdigo objeto compilado y encadenado es cargado en la memoria principal para
su ejecucin por un software denominado cargador
El cdigo objeto compilado y encadenado y cargado (cdigo ejecutable) es
ejecutado o corrido en el procesador, haciendo uso de los datos de entrada
Comprobacin del programa: Verificacin de los resultados obtenidos despus
de la ejecucin del programa, los cuales deben corresponder con los resultados
esperados
Comprobar que el programa realiza las tareas para las cuales, ha sido diseado y
produce el resultado correcto y esperado.
Si el programa tiene errores de lgica (errores en el mtodo de solucin), ellos
deben ser corregidos en el programa fuente usando el editor de texto.
Ejemplo:
B=0
C = 5 / B; OJO ----- divisin entre cero!

44

Universidad Autnoma del Carmen


Grupo Disciplinario de Sistemas Informticos

Puesta en operacin del programa: Instalacin del hardware y software


Capacitacin
Mantenimiento del programa: Comienza tan pronto como el producto es puesto
en operacin
Permite corregir defectos menores o
Aadir una mayor funcionalidad, bien sea por peticiones del usuario o
cliente o por demanda del mercado

Actividad 1. PROGRAMA CON ESTRUCTURA SECUENCIAL


En unas elecciones se presentan tres candidatos, hacer un programa para calcular
estadsticas elementales de la eleccin. Se tienen en cuenta los votos en blanco y
la poblacin electoral total.
DATOS DE ENTRADA:
Nombre de los 3 candidatos (Candidato1, Candidato2, Candidato3 caracter[15])
Votos de los 3 candidatos (VCand1, VCand2, VCand3 entero)
Votos en blanco (VEnBco entero)
PROCESO:
Leer Candidato1, Candidato2, Candidato3, VCand1, VCand2, VCand3, VEnBco
Calcular TotVElecc, PorcCand1, PorcCand2, PorcCand3, PorcVEnBco
Calcular PorcCiudadanosResponsables, PorcCiudadanosInconcientes
Mostrar TotVElecc, PorcCand1, PorcCand2, PorcCand3, PorcVEnBco
45

Universidad Autnoma del Carmen


Grupo Disciplinario de Sistemas Informticos

Mostrar PorcCiudadanosResponsables, PorcCiudadanosInconcientes

DATOS DE SALIDA:
Porcentaje
Porcentaje
Porcentaje
Porcentaje

de candidatos (PorcCand1, PorcCand2, PorcCand3 fraccionario)


de votos en blanco (PorcCand1, PorcCand2, PorcCand3 fraccionario)
de votos ciudadanos responsables (PorcCResp fraccionario)
de votos ciudadanos inconcientes (PorcCInc fraccionario)

PROGRAMA:

void main(){
char Candidato1[15], Candidato2[15], Candidato3[15]
int VCand1, VCand2, VCand3, VEnBco, TotalVElecc;
float PorcCand1, PorcCand2, PorcCand3,PorcVEnBco;
float PorcCiudadanosResp, PorcCiudadanosInc;
cout<<"Dar Nombre candidato 1: ";
cin>> Candidato1;
cout<<"Dar Nombre candidato 2: ";
cin>> Candidato2;
cout<<"Dar Nombre candidato 3: ";
cin>> Candidato3;
cout<<"Dar votacin de "<<Candidato1<<": ";
cin>> VCand1;
cout<<"Dar votacin de "<<Candidato2<<": ";
cin>> VCand2;
cout<<"Dar votacin de "<<Candidato3<<": ";
cin>> VCand3;
cout<<"Dar votacin en blanco: ";
cin>> VEnBco;
TotalVElecc = VCand1 + VCand2 + VCand3 + VEnBco;
PorcCand1 = ( VCand1 / TotalVElecc ) * 100;
PorcCand2 = ( VCand2 / TotalVElecc ) * 100;
PorcCand3 = ( VCand3 / TotalVElecc ) * 100;
PorcVEnBco = ( VEnBlanco / TotalVElecc ) * 100;
PorcCResp = (TotalVElecc/TotElectores)*100;
PorcCInc = 100 PorcCResp;
cout<<"Porcentaje "<<Candidato1<<" = "<<PorcCand1;
cout<<"Porcentaje "<<Candidato2<<" = "<<PorcCand2;
cout<<"Porcentaje "<<Candidato3<<" = "<<PorcCand3;
cout<<"Porcentaje de votos en blanco = "<<PorcVEnBco;
cout<<"Si votaron = "<<PorcCResp<<"%";
cout<<"NO votaron = "<<PorcCInc<<"%";
getch();
}

EJERCICIOS PROPUESTOS
Analizar problemas y proponer algoritmos de solucin. Considerar el uso de
procedimientos y funciones para cada una de las soluciones planteadas
conforme sea pertinente.
46

Universidad Autnoma del Carmen


Grupo Disciplinario de Sistemas Informticos

Ejercicio 1.
Leer 3 variables decimales. Sumarlas, multiplicarlas y dividirlas.

Ejercicio 2.
Disear un programa que permita ingresar un valor inicial y un valor final. Calcular
el valor central de los nmeros.

Ejercicio 3.
Construir un programa que calcule e imprima el nmero de segundos que hay en
un determinado nmero de das.

Ejercicio 4.
Dada una cantidad en pesos, obtener la equivalencia en dlares, asumiendo que
la unidad cambiaria es un dato desconocido.

Ejercicio 5.
Tres personas deciden invertir su dinero para fundar una empresa. Cada una de
ellas invierte una cantidad distinta. Obtener el porcentaje que cada quien invierte
con respecto a la cantidad invertida.

Ejercicio 6.
Hacer un programa que lea 3 calificaciones y calcule su promedio. Mostrar el
resultado de la siguiente manera:
Utiliza un escribir para cada calificacin y en uno el promedio.

Ejercicio 7.
En un hospital existen 4 reas. Ginecologa, pediatra, urologa, y traumatologa. El
presupuesto anual del hospital se reparte conforme a la siguiente tabla:
rea % del presupuesto
G
25
T
15
U
13
P
47
Obtener la cantidad del dinero que recibir cada rea para cualquier monto
presupuestal.

Ejercicio 8.
Un alumno desea saber cual ser su promedio en las 3 materias mas bonitas que
cursa y cual ser el promedio de cada una de ellas estas materias se evalan
como se muestra a continuacin.
47

Universidad Autnoma del Carmen


Grupo Disciplinario de Sistemas Informticos

Matematicas % Lab. de programacin %


Examen
45
Examen
70
3 tareas
55
2 tareas
30

Ingles
Examen oral
Quiz
Examen escrito
2 tareas

%
15
30
40
15

Ejercicio 9.
Calcule el nuevo salario de un trabajador si ha obtenido un porcentaje de
incremento desconocido sobre su salario anterior. Leer el nombre del trabajador.

Ejercicio 10.
La fuerza de atraccin entre dos cuerpos es igual al producto de una constante k
por el cociente que resulta de dividir el producto de las masas de los cuerpos por
el cuadrado de su distancia.
Referencias: [Pastrana2003] pag. 23-40, [Besembel2010]
[Joyanes2003] pag. 132 136, [Rivas1985] pag. 87-99.

pag.

7-20,

48

Universidad Autnoma del Carmen


Grupo Disciplinario de Sistemas Informticos

TEMA 3. ESTRUCTURAS DE SELECCIN (IF, IF-ELSE, SWITCH)


Objetivo: El alumno ser capaz de elaborar programas de solucin a problemas
en los que se requiere el uso de las estructuras de seleccin o condicionales.
Lectura:
Estructura selectiva. Se utilizan para tomar decisiones lgicas. En stas se
evala una condicin y en funcin del resultado de la misma se realiza una cosa u
otra. Las condiciones se especifican usando expresiones lgicas. Las estructuras
selectivas pueden ser: simples, dobles o mltiples.
Selectivas simples (if). Ejecuta una determinada accin cuando se cumple
una determinada condicin. La instruccin evala la condicin y si es
verdadera ejecuta la accin de lo contrario no har nada.
Sintaxis de la sentencia:
if (condicin)
Bloque de sentencias

Donde:
Condicin: Es una expresin relacional (expresin formada por variables o
constantes unidos por operadores relacionales) o lgica (formada por expresiones
relacionales unidas por operadores lgicos), que darn un resultado de verdadero
o falso.
Bloque de sentencias: Puede ser una o ms instrucciones a ejecutarse cuando
la condicin sea verdadera. Si es ms de una instruccin se usarn llaves {} que
encierren a todas las instrucciones que se ejecuarn, en caso de que solo sea una
instruccin no son necesarias las llaves.
Ejemplo 1. Programa con if simple
#include <iostream.h>
using namespace std;
#define falso 0
#define cierto 1
int main () {
int miPrimeraLogica, miSegundaLogica;
miPrimeraLogica = cierto;
miSegundaLogica = !miPrimeraLogica;
if ( miSegundaLogica == cierto){
cout<<"miSegundaLogica debe tener cierto";
cout<<endl;
}
49

Universidad Autnoma del Carmen


Grupo Disciplinario de Sistemas Informticos
if ( !miSegundaLogica == cierto)
cout<<"miSegundaLogica debe tener falso"<<endl;
return 0;
}

En
la
memoria
se
reservar
espacio
para
las
variables miPrimeraLogica y miSegundaLogica. Luego se asigna el
valor 1 (cierto) en miPrimeraLogica y el de 0 (falso no cierto) en
miSegundaLogica.
La condicin de la primer instruccin condicional va dar falso ya que
compara el valor de miPrimeraLogica con cierto (si son iguales) como
no es asi no se ejecutra la salida a pantalla que tiene esa instruccin.
La condicin de la siguiente instruccin if si va a dar verdad, ya que
se trata de la negacin de falso (que es resultado de la coomparacin
de si es igual el contenido de la variable miSegundaLogica con
cierto).
En pantalla se ver:
miSegundaLogica debe tener falso
_
Ejemplo 2. Programa con dos if simples
Enunciado del problema:
Dados tres nmeros enteros, determinar si la suma de cualquier pareja de
ellos es igual al tercer nmero. Si se cumple esta condicin, escribir
Iguales y, en caso contrario, escribir Distintos
Anlisis: Entrada - Proceso - Salida

#include <iostream.h>
using namespace std;
50

Universidad Autnoma del Carmen


Grupo Disciplinario de Sistemas Informticos
int main () {
int X, Y, Z;
cout << "Introduzca tres nmeros enteros" << endl;
cin >> X >> Y >> Z;
if ((X + Y == Z) || (X + Z == Y) || (Y + Z == X))
cout << "Iguales" << endl;
if ((X + Y != Z) && (X + Z != Y) && (Y + Z != X))
cout << "Distintos" << endl;
return 0;
}

En la memoria se reservar espacio para las variables X, Y, Z.


Luego se pide y se lee el valor de cada una de ellas.
En los if se evalua una condicin compuesta por 3 expresiones relacionales
unidas por el operador lgico (or), en cada expresin relacional se
compara el contenido de cada variable con la suma de las otras dos
variables.
Dependiendo del valor de las variables se ver en pantalla el mensaje:
Iguales

Distintos
Selectiva doble (if - else). Permite elegir entre dos opciones posibles en
funcin del cumplimiento o no de una determinada condicin. Si la
condicin es verdadera, se ejecuta el bloque de sentencias 1, si es falsa, se
ejecuta el bloque de sentencias 2.
Sintaxis de la sentencia:
if (condicin)
Bloque de sentencias 1
else
Bloque de sentencias 2

Donde:
Condicin.- Expresin relacional.
Bloques de sentencias.- El bloque de sentencias 1 se ejecutara cuando la
condicin se cumpla (sea verdadera) y el bloque de sentencias 2 se ejecutara en
caso de que la condicin sea falsa. Para cada bloque, en caso de que sean ms
de una sentencia, es necesario encerrar entre llaves { } estas sentencias.
Ejemplo 3. Programa con if doble
Enunciado del problema:
51

Universidad Autnoma del Carmen


Grupo Disciplinario de Sistemas Informticos
Dados un nmero entero, determinar si es positivo negativo
Entrada

Variable
Numero

Descripcin
Valor entero

Tipo de dato
Entero

Proceso

Comparar si el contenido de numero es mayor a cero


Si es asi mensaje Es par
Sino mensaje Es impar

Salida

Ninguna

Desplegar el mensaje:
Es positivo Es
negativo

NA

Rango Vlido
Rango de enteros en
la computadora

NA

Anlisis: Entrada - Proceso - Salida


#include <iostream.h>
using namespace std;
int main () {
int numero;
cout << "Dar un valor entero diferente de 0: " << endl;
cin >> numero;
if (numero > 0)
cout << numero << "Es positivo" << endl;
else
cout << numero << "Es negativo" << endl;
return 0;
}

En la memoria se reservar espacio para la variable numero, luego se


pide y se lee su valor.
En el if se evalua compara el contenido de la variable numero con el valor
0 ( si es mayor), enva el mensaje es positivo si se cumple y es
negativo si no se cumple.
Es positivo

Es negativo
Selectivas mltiples (if-elses anidados). Existen diferentes formas de
implementacin para esta estructura aqu se debe seleccionar una de
varias acciones a ejecutar dependiendo de una condicin, una de ellas es
realizar anidamiento de sentencias if-else.
Sintaxis de la sentencia:
if (condicin1)
Bloque de sentencias 1
52

Universidad Autnoma del Carmen


Grupo Disciplinario de Sistemas Informticos
else if (condicin2)
Bloque de sentencias 2
else if (condicin3)
Bloque de sentencias 3
else ....

Donde:
Condicin.- es una expresin relacional (expresin formada variables o
constantes y operadores relacionales).
Bloque de sentencias.- puede ser una sola instruccin o varias instrucciones y en
tal caso, es necesario encerrar entre llaves { } estas instrucciones.
Ejemplo 4. Programa con if-else multiple
Enunciado del problema:
Dado un valor entero del 1 al 5 que corresponde al orden de las vocales,
escribir en pantalla la vocal respectiva.
Anlisis: Entrada - Proceso - Salida
Entrada

Variable
Letra

Descripcin
Valor de vocal respectiva

Proceso

Comparar letra con cada uno de los valores del 1 al 5

Salida

Ninguna

Desplegar el mensaje:
Vocal a, Vocal e, Vocal
u, segn sea el valor de la
variable letra

Tipo de dato
Entero

NA

Rango Vlido
Rango de enteros en
la computadora

NA

#include <iostream.h>
using namespace std;
int main () {
int letra;
cout << "Introduzca un nmero del 1 al 5: ";
cin >> letra;
if (letra == 1)
cout << "La primer vocal es la a" << endl;
else if (letra == 2)
cout << "La segunda vocal es la e" << endl;
else if (letra == 3)
cout << "La tercer vocal es la i" << endl;
else if (letra == 4)
cout << "La cuarta vocal es la o" << endl;
else if (letra == 5)
cout << "La quinta vocal es la u" << endl;
else cout << Debes dar un valor del 1 al 5 << endl;
53

Universidad Autnoma del Carmen


Grupo Disciplinario de Sistemas Informticos
return 0;
}

En la memoria se reservar espacio para la variable letra, luego se pide y


se lee su valor.
En el primer if se evalua el contenido de la variable letra con el valor 1, en
caso de que sea igual mostrara el mensaje La primer vocal es la a, sino
es asi viene otro if con la condicin de comparacin de letra con el valor 2
si se cunmple mostrara el mensaje La segunda vocal es la e, en caso de
que no se cumpla se evalua el siguiente valor y asi sucesivamente hasta la
ltima vocal, incluso considera como ltima opcin (ultimo else), que se de
un valor diferente a los valores del 1 al 5.
Dependiendo del valor de las variables se ver en pantalla el mensaje:
La primer vocal es la a

La segunda vocal es la e

La tercer vocal es la i

La cuarta vocal es la o

La quinta vocal es la u

Debes dar un valor del 1 al 5

Selectivas mltiples (switch). Es otra forma de seleccin mltiple, en ella


se evaluar el contenido de una variable con respecto a N valores distintos,
que pueden ser de tipo carcter o entero, como por ejemplo 1, 2, 3, . N,
segn sea el valor en la variable, se realizar una de las N acciones.
Sintaxis de la sentencia:
switch (variable) {
case constante1:
accin 1
break;
case constante2:
accin 2
break;
...
case constanteN:
accin N
break;
54

Universidad Autnoma del Carmen


Grupo Disciplinario de Sistemas Informticos
default:
accion para cualquier otro caso
}

Donde:
Para cada uno de los casos puede haber una o ms instrucciones que ejecutar y
la instruccin break es opcional y esta hace que se rompa el flujo de ejecucin de
la instruccin switch.
El uso de la opcin default es opcional, se usar a para especificar la accin(es) a
ejecutar en caso de que la variable evaluada tenga un valor diferente a los
comparados en cada uno de los cases.
Ejemplo 5. Programa con switch
Enunciado del problema:
Dado un valor entero del 1 al 5 que corresponde al orden de las vocales,
escribir en pantalla la vocal respectiva.
Anlisis: Entrada - Proceso - Salida
Entrada

Variable
Letra

Descripcin
Valor de vocal respectiva

Proceso

Comparar letra con cada uno de los valores del 1 al 5

Salida

Ninguna

Desplegar el mensaje:
Vocal a, Vocal e, Vocal
u, segn sea el valor de la
variable letra

Tipo de dato
Entero

NA

Rango Vlido
Rango de enteros en
la computadora

NA

#include <iostream.h>
using namespace std;
int main () {
int letra;
cout << "Introduzca un nmero del 1 al 5: ";
cin >> letra;
switch (letra){
case 1:
cout << "La primer vocal es la a" << endl;
break;
case 2:
cout << "La segunda vocal es la e" << endl;
break;
case 3:
cout << "La tercer vocal es la i" << endl;
break;
case 4:
cout << "La cuarta vocal es la o" << endl;
break;
case 5:
cout << "La quinta vocal es la u" << endl;
55

Universidad Autnoma del Carmen


Grupo Disciplinario de Sistemas Informticos
break;
default: cout << Debes dar un valor del 1 al 5 << endl;
} //fin de switch
return 0;
}

En la memoria se reservar espacio para la variable letra, luego se pide y


se lee su valor.
En el switch se evalua el contenido de la variable letra con respecto alos
valores especificados en los cases (1 al 5), para cada caso mostrara el
mensaje correspondiente. Considera como ltima opcin (default), que se
de un valor diferente a los valores del 1 al 5, mandando el mensaje
correspondiente.
Dependiendo del valor de las variables se ver en pantalla el mensaje:
La primer vocal es la a

La segunda vocal es la e

La tercer vocal es la i

La cuarta vocal es la o

La quinta vocal es la u

Debes dar un valor del 1 al 5

Actividad 1. PROGRAMA CON ESTRUCTURA SELECTIVA


Realizar un programa para determinar la cantidad a pagar por un estreo, el
vendedor ofrece un descuento del 10% sobre el precio sin IVA, de algn aparato si
este cuesta $2000 o mas. Adems independientemente de esto ofrece un 5% de
descuento si la marca es NOSY. El pago total debe incluir el IVA.
DATOS DE ENTRADA:
Valor de aparato (cs fraccionario)
Marca de aparato ( ms cadena de texto)
PROCESO:
Leer cs, ms
cscs-(cs*0.10).
cscs-(cs*0.05).
costocs+(costo*0.15).
Mostrar costo
DATOS DE SALIDA:
56

Universidad Autnoma del Carmen


Grupo Disciplinario de Sistemas Informticos

Cantidad a pagar(costo fraccionario)

PROGRAMA:

#include <iostream.h>
#include <iostream.h>
void main(){
float cs, ms, costo;
cout<<"introducir costo del stereo;
cin>>cs;
cout<<"si la marca del stereo es nosy teclee 1";
cin>>ms;
if(cs>=2000)
cs=cs-(cs*0.10);
if(ms==1)
cs=cs-(cs*0.05);
costo=cs+(costo*0.15);
cout<<"el costo del stereo es de "<<costo;
}

Analizar problemas y proponer algoritmos de solucin. Considerar el uso de


procedimientos y funciones para cada una de las soluciones planteadas
conforme sea pertinente.

Ejercicio 1.
Una persona desea iniciar un negocio, para lo cual piensa verificar cuanto de
dinero le prestara el banco por hipotecar su casa. Tiene una cuenta bancaria pero
no puede disponer de ella a menos que el monto por hipotecar su casa sea muy
pequeo. Si el monto de la hipoteca es menor que 1 milln entonces invertir el
50% de la inversin total y un socio invertir el otro 50%. Si el monto de la
hipoteca es de mas de 1 milln, entonces invertir el monto total de la hipoteca y
el resto del dinero que necesite para cubrir la inversin total se repartir a partes
iguales entre el socio y l.

Ejercicio 2.
Una persona debe determinar la etapa de la vida de las personas que existen en
su zona habitacional. Se determinan las categoras con base en la siguiente tabla:
CATEGORIA
Nios
Jvenes
Adultos
Viejos

EDAD
0-12
13-29
30-59
60 en adelante

57

Universidad Autnoma del Carmen


Grupo Disciplinario de Sistemas Informticos

Ejercicio 3.
Una compaa de seguros esta abriendo un departamento de finanzas y
estableci un programa para captar clientes que consiste en lo siguiente: si el
monto por el que se efecta la fianza es menor que $50000, la cuota a pagar es el
3% del monto, si el monto es mayor que $50000 la cuota a pagar ser el 2% del
monto. La afianzadora desea determinar cual ser la cuota que debe pagar un
cliente.

Ejercicio 4.
Una frutera ofrece peras con descuento segn la siguiente tabla:
N0 de kilos comprados % de descuento
0.2
0
2.01 5
10
5.01 10
15
10.01 en adelante
20
Determina cuanto pagara una persona que compre peras en esa frutera.

Ejercicio 5.
Realizar un programa que lea dos valores numricos y uno de tipo carcter
calcular el resultado de un clculo, dependiendo el carcter. El carcter puede
tener los valores de +, --, /,*, %.

Ejercicio 6.
Realizar un programa que lea un carcter y dependiendo del carcter, determine
el estado civil de una persona. El carcter puede tener como valores U, C, S, V, D,
O (Unin libre, Casado, Divorciado, Otro).

Ejercicio 7.
En una llantera se ha establecido una promocin
de las llantas marca
MORIRAS, dicha promocin consiste en lo siguiente: Si se compran menos de 5
llantas el precio es de $300 c/u, de $250 c/u si se compran de 5 a 10 y de $200 c/u
si se compran mas de 10 llantas, obtener la cantidad de dinero que una persona
tiene que pagar por cada una de las llantas que compra y lo que tiene que pagar
por el total de la compra.

Ejercicio 8.
El dueo de una empresa desea planificar las decisiones financieras que tomara
durante el ao la manera de planificar depende de lo siguiente: Si actualmente su
capital se encuentra con saldo negativo, pedir un prstamo bancario para que su
nuevo saldo sea de $10000. Si su capital tiene un saldo actual positivo pedir un
prstamo bancario para tener un nuevo saldo de $20000, pero si su capital
actualmente es arriba de los $20000, no pedir ningn prstamo.
5000 para equipo de computo.
58

Universidad Autnoma del Carmen


Grupo Disciplinario de Sistemas Informticos
2000 para mobiliario.
Resto la mitad ser insumo y la otra mitad para entregar incentivos para el
personal.
Desplegar que cantidades destinaran para la compra de insumos y la entrega de
incentivos, en caso que fuera necesario a cuanto ascendera la cantidad que
pedira al banco.

Ejercicio 9.
Tomando como base los resultados obtenidos en un laboratorio de anlisis
clnicos, un medico determina si tiene anemia o no, lo cual depende de su nivel de
hemoglobina en la sangre, su edad y de su sexo. Si el nivel de hemoglobina que
tiene una persona es menor que el rango que le corresponde, se determina su
resultado como positivo y en caso contrario como negativo. La tabla en la que el
medico se basa es la siguiente:
Edad
Nivel de hemoglobina (8 %)
0 1 mes
13 26
>1 y <=6 meses
10 18
>6 y <=12 meses
11 15
>1 y <=5 aos
11.5 15
>5 y <= 10 aos
12.6 15.5
>10 y <=15 aos
13 15.5
Mujeres > 15 aos
12 16
Hombres > 15 aos
14 18

Ejercicio 10.
Una institucin educativa estableci un programa para estimular a los alumnos
con buen rendimiento acadmico y que cosiste en lo siguiente:
Si el promedio es de 9.5 o mas y el alumno es de preparatoria, entonces
este podr cursar 55 unidades y se le har un 25% de descuento.
Si el promedio es mayor o igual a 9 pero menor que 9.5 y el alumno es de
preparatoria, entonces este podr cursar 50 unidades y se le har un 10%
de descuento.
Si el promedio es mayor que 7 y menor que 9 y el alumno es de
preparatoria, este podr cursar 50 unidades y no tendr ningn descuento.
Si el promedio de 7 o menor, el nmero de materias reprobadas es de 0 a 3
y el alumno es de preparatorio, entonces podr cursar 45 unidades y no
tendr descuento.
Si el promedio es de 7 o menor, el nmero de materias reprobadas es de 4
o ms y el alumno es de preparatoria, entonces podr cursar 40 unidades y
no tendr ni un descuento.
Si el promedio es mayor o igual a 9.5 y el alumno es de profesional,
entonces podr cursar 55 unidades y se le har un 20% de descuento.
59

Universidad Autnoma del Carmen


Grupo Disciplinario de Sistemas Informticos

Si el promedio es menor de 9.5 y el alumno es de profesional, entonces


podr cursar 55 unidades y no tendr descuento.
Si el promedio es mayor o igual a 9.5 y el alumno es de profesional,
entonces podr cursar 55 unidades y tendr descuento del 25%.
Obtener el total que tendr que pagar un alumno si la colegiatura para alumnos de
profesional es de 300 por cada 5 unidades y para alumnos de preparatoria es de
180 por cada 5 unidades.

Ejercicio 11.
En una empresa se requiere calcular el salario semanal de un obrero que labora
en ella. Suponiendo que el pago por hora es de $20.00, obtener el salario de la
siguiente manera:

Las 40 horas de trabajo base, se le pagan $20 por hora.


Si trabaja entre 30 y 40 horas se le hace un descuento del 15% del
calculo total.
Si el trabajador realiz horas extra y estas no exceden de 8, su pago
es al doble por cada hora de trabajo.
Cuando las horas extras exceden de 8, las primeras 8 se le pagan al
doble y el resto al triple, sabiendo que no podrn ser ms de 10
horas.
Si trabaja menos de 30 horas, no se le paga nada.

Ejercicio 12.
El Departamento de Seguridad Pblica y Trnsito del D.F. desea saber, para cada
auto de la ciudad de Mxico, qu color de calcomana le corresponde. Conociendo
el ltimo dgito de la placa de cada automvil se puede determinar el color de la
calcomana utilizando la siguiente relacin:
Dgito
1o2
3o4
5o6
7o8
9o0

Color
Amarilla
Rosa
Roja
Verde
Azul

Ejercicio 13.
Hacer un programa en casos donde reciba la inicial de un color y se describa ese
color.

Ejercicio 14.
Cambiar a Casos el programa del estado civil de una persona (ejercicio 7)

60

Universidad Autnoma del Carmen


Grupo Disciplinario de Sistemas Informticos

Ejercicio 15.
Dada la letra inicial de alguna figura geomtrica (cubo, crculo, triangulo y
rectngulo), realizar el clculo correspondiente al rea de la misma.

Ejercicio 16.
Utilizando el programa colores en casos de (ejercicio 14), convertirlo para retornar
una cadena.

Ejercicio 17.
Utilizando el programa colores en casos de (ejercicio 15), convertirlo para retornar
una cadena.

Referencia: [Joyanes2003] pag. 152 168, [Oviedo2003] pag. 150-155

61

Universidad Autnoma del Carmen


Grupo Disciplinario de Sistemas Informticos

TEMA 4. ESTRUCTURA REPETITIVA (WHILE, DO - WHILE, FOR)


Objetivo: El alumno ser capaz de elaborar algoritmos de solucin a problemas
en los que se requiere el uso de las estructuras repetitivas.
Lectura:
Estructuras repetitivas. Las estructuras repetitivas o ciclos permiten la ejecucin
repetida de bloques de sentencias. Existen diferentes tipos de sentencias
repetitivas en los lenguajes de programacin, en este cuaderno se implementarn
en PROGRAMA las del lenguaje C: para (for), mientras (while) y hacer... mientras
(do...while). Los ciclos de tipo para y mientras comprueban si deben continuar
repitiendo la sentencia o bloque de sentencias que forman el cuerpo del ciclo
antes de que el cuerpo del ciclo se ejecute, en tanto que el ciclo hacer...mientras
lo hace despus de haberlo ejecutado.
Otra consideracin a hacer es que se debe utilizar un ciclo para cuando se sabe el
nmero de veces que se ha de repetir la ejecucin del cuerpo del ciclo, en tanto
que los ciclos mientras y hacer...mientras ser ms adecuado cuando el control de
la repeticin del cuerpo del ciclo recae en una condicin y no se sabe el nmero
de veces que se repetir o es un nmero indeterminado.
Ciclo mientras. La estructura repetitiva mientras es aquella en que la
accin o grupo de acciones se repetir mientras se cumpla la condicin y
en el momento en que no se cumpla se saldr del ciclo. Cuando se ejecuta
esta instruccin, la primera cosa que sucede es que se evala la condicin,
de manera que si esta condicin es falsa el ciclo no se ejecutar ni una vez.
Sintaxis de la sentencia:
while (condicin)
Bloque de sentencias

Donde:
El ciclo inicia evaluando la condicin si esta es falsa no se ejecutan las
instrucciones que conforman el ciclo y si es verdadera si se ejecutan, de manera
que este ciclo puede ejecutarse 0 o N veces.
Si se va a ejecutar ms de una instruccin dentro del ciclo se debe encerrar entre
llaves ({ }) el bloque de instrucciones a ejecutar.
Ejemplo 6. Programa con while
Enunciado del problema:
Realizar un programa que promedie una lista indeterminada de nmeros
reales, hasta que se introduzca un cero.
62

Universidad Autnoma del Carmen


Grupo Disciplinario de Sistemas Informticos
Anlisis: Entrada - Proceso Salida
Entrada

Proceso

Salida

Variable
numero
1.
2.
3.

4.
5.
6.
Prom

Descripcin
Valor real

Tipo de dato
Real
(fraccionario)
Pedir y leer numero diferente de cero
Suma =0 y cont=0
Mientras numero sea mayor de cero
a. Acumular el valor de numero en Suma
b. Pedir y leer numero
Fin de mientras
Calcular promedio
Mostrar promedio
Valor resultante
NA

Rango Vlido
Rango de reales en la
computadora

NA

#include <iostream.h>
using namespace std;
int main () {
float numero, suma, cont, prom;
suma = 0; cont = 0;
cout << "Dar un nmero fraccionario (0 para terminar): ";
cin >> numero;
while(numero != 0){
suma = suma + numero;
cont++;
cout << "Dar un nmero fraccionario (0 para terminar): ";
cin >> numero;
} //fin de while
Prom = suma / cont;
cout << promedio = << prom;
return 0;
}

En la memoria se reservar espacio para las variables numero, suma, cont


y prom, luego se piden y se leen sus valores.
Se inicializan los valores de las variables suma y cont a 0, ya que son
variables de tipo acumulativas.
Se pide y se lee el valor de numero.
En el ciclo se acumularan los valores (sumados) en la variable suma, la
variable cont se incrementar en uno y se vuelve a pedir y leer el valor del
numero, todo esto mientras lo que se de en nmero sea diferente de cero.
Despues de ciclo se calcula y se muestra promedio. De un ejemplo de
ejecucin se podra ver en pantalla:
Dar un numero fraccionario (0 para terminar): 3.5
Dar un numero fraccionario (0 para terminar): 3.5
Dar un numero fraccionario (0 para terminar): 8.5
63

Universidad Autnoma del Carmen


Grupo Disciplinario de Sistemas Informticos
Dar un numero fraccionario (0 para terminar): 9.2
Dar un numero fraccionario (0 para terminar): 7.8
Dar un numero fraccionario (0 para terminar): 0
Promedio = 7.250000

Ciclo hacer ... mientras. Se ejecuta la primer iteracin y la condicin


determinada se comprueba al final del bucle, esto permite que la iteracin
se ejecute al menos una vez antes de que la condicin sea evaluada.
Sintaxis de la sentencia:
do {
Bloque de sentencias
} while (condicin);

Donde:
El ciclo inicia ejecutando las instrucciones que conforman el ciclo despus de eso
llega a evaluar la condicin si esta es falsa termina el ciclo y si es verdadera
regresa a ejecutar nuevamente las instrucciones del ciclo, de manera que este
ciclo puede ejecutarse de 1 a N veces.
Ejemplo 7. Programa con do - while
Enunciado del problema:
Realizar un programa que calcule La suma de dos nmeros ledos mientras el
usuario quiera estar realizando el calculo.
Anlisis: Entrada - Proceso Salida
Entrada

Proceso

Salida

Variable
Num1

Descripcin
Valor entero 1

Tipo de dato
Entero

Num2

Valor entero 2

Entero

Resp

Para recibir la respuesta


del usuario para continuar
(S=si y N=no)

Caracter

Rango Vlido
Rango de enteros en
la computadora

Rango de caracteres
de la computadora

1. Ciclo que har


a. Pedir y leer valor de Num1 y de Num2
b. Realizar suma
c. Mostrar resultado
d. Pedir y leer letra de respuesta (continuar S=si N=no?)
2. Fin de ciclo mientras resp sea diferente de N
Suma

Valor resultante de la
suma de los nmeros
ledos, en cada vuelta del
ciclo

Entero

Rango de enteros en
la computadora

#include <iostream.h>
64

Universidad Autnoma del Carmen


Grupo Disciplinario de Sistemas Informticos
using namespace std;
int main () {
int num1, num2, suma;
char resp;
do {
cout << "Dar dos nmeros: ";
cin >> num1 >> num2;
suma = num1 + num2;
cout << num1 << + << num2 << = << suma << endl;
cout << Quieres hacer otra suma (S=si y N=no): ;
cin >> resp;
} while(resp != N || resp != n);
getch();
return 0;
}

En la memoria se reservarn espacios para las variables num1, num2,


suma y resp.
En el ciclo se piden y se leen los valores de los dos nmeros, se suman y
se muestra el resultado, luego se pregunta si quiere continuar y se lee la
respuesta, todo esto mientras lo que se de en resp sea diferente de N o n.
De un ejemplo de ejecucin se podra ver en pantalla:
Dar dos numeros: 9
7
9 + 7 = 16
Quieres hacer otra suma (S=si y N=no): s
Dar dos numeros: 6
3
6+3=9
Quieres hacer otra suma (S=si y N=no): s
Dar dos numeros: 65
38
65 + 38 = 103
Quieres hacer otra suma (S=si y N=no): N

Ciclo para. Se utilizan el ciclo para cuando se conoce con certeza el


nmero de veces que se desea repetir un bucle.
Sintaxis de la sentencia:
for ( VarCtl = Valor_Inicial; CondicinCierre;
Bloque de sentencias

incremento)

Donde:
65

Universidad Autnoma del Carmen


Grupo Disciplinario de Sistemas Informticos
VarCtl es la variable de control del ciclo, que toma como valor de inicio del ciclo el
valor especificado con Valor_Inicial y con cada iteracin se incrementa con el
valor especificado en incremento, regresando a comprobar si ya llego hasta
donde debe llegar evaluando la CondicionCierre) que consiste en una expresin
en la que se evalua la variable de control del ciclo contra un valor determinado.
Si el bloque de sentencias contiene ms de una sentencia tiene que usarse
llaves ({}) para encerrar todas las sentencias a ejecutarse en el ciclo, no son
necesarias las llaves si solo es una sentencia.
Ejemplo 8. Programa con for
Enunciado del problema:
Realizar un programa que calcule La suma de los nmeros del 1 al 20.
Anlisis: Entrada - Proceso Salida
Entrada

Proceso

Salida

Variable
Ninguna

Descripcin

Tipo de dato

Rango Vlido

1. Suma = 0
2. Ciclo con variable de control inicializada en 1 hasta que llegue a 20
a. Suma = suma + valor de variable de control
b. Fin de ciclo
3. Mostrar suma
Suma

Valor resultante de la
suma de los nmeros del
1 al 20

Entero

Rango de enteros en
la computadora

#include <iostream.h>
#include <conio.h>
using namespace std; //directiva usada en Dev C++
int main () {
int i, suma=0;
for (i=1; i<=20; i++)
suma = suma + i;
cout << "Suma = " << suma << endl;
getch();
return 0;
}

En la memoria se reservarn espacios para las variables i y suma.


Se inicializa la variable suma con el valor 0.
En el ciclo la variable de control del ciclo (i) inicia con el valor 1 y mientras
sea menor o igual a cero, va a estar acumulndose sumada a la variable
suma, incrementadonse en uno hasta que llegue al valor de 20.
De la ejecucin se podr ver en pantalla:
66

Universidad Autnoma del Carmen


Grupo Disciplinario de Sistemas Informticos

Suma = 210

Actividad 1. PROGRAMA CON ESTRUCTURA REPETITIVA


Mostrar en pantalla 10 veces la lnea de texto Ring....
DATOS DE ENTRADA:
Ninguno.
PROCESO:
Ninguno.
DATOS DE SALIDA:
10 veces la lnez: Ring...
PROGRAMA:

#include <iostream.h>
#include <conio.h>
void main(){
int i=1;
while(i<=10) {
cout << "Ring...;
i++;
} //de mientras
getch();
} //fin de principal

Analizar problemas y proponer algoritmos de solucin. Considerar el uso de


procedimientos y funciones para cada una de las soluciones planteadas
conforme sea pertinente.

Ejercicio 1.
Realizar un programa con el ciclo mientras, que muestre los primeros nmeros
del 1 al 10 y retorne la suma de ellos.

Ejercicio 2.
Hacer un programa con el ciclo mientras, que dado un numero entero decimal me
muestre los siguientes 20 nmeros pares o impares del numero proporcionado.

Ejercicio 3.
Implemente el ciclo mientras para leer caracteres y finalic cuando se introduzca
un *.
67

Universidad Autnoma del Carmen


Grupo Disciplinario de Sistemas Informticos

Ejercicio 4.
Hacer un programa con un ciclo mientras en el se que calcule el total de la
compra, imprima el iva, con cuanto paga y el cambio.

Ejercicio 5.
Mostrar en pantalla 10 veces la lnea de texto Ring.... utilizando un ciclo hacer mientras.

Ejercicio 6.
Hacer un programa en el ciclo hacer mientras,
nmeros del 1 al 10 y retorne la suma de ellos.

que muestre los primeros

Ejercicio 7.
Hacer un programa con el ciclo hacer - mientras, que dado un numero entero
decimal me muestre los siguientes 20 nmeros pares o impares del numero
proporcionado.

Ejercicio 8.
Utilizar un ciclo hacer mientras, que
introduzca un * .

lea caracteres y finalic cuando se

Ejercicio 9.
Realizar un algoritmo que utilice un ciclo mientras en un programa que calcule el
total de la compra, imprima el IVA, con cuanto paga y el cambio.

Ejercicio 10.
Hacer un programa que imprima los nmeros impares comprendidos entre el 400
y 1100.

Ejercicio 11.
Escribir los pares de 100 nmeros proporcionados por el teclado.

Ejercicio 12.
Hacer un programa que lea N edades y retorne el promedio de ellas.

Ejercicio 13.
Hacer un programa que lea N cantidad de artculos vendidos y calcule la venta
total del impuesto, y las ganancias sabiendo que a cada producto se le gana un
35%.

Ejercicio 14.
Un entrenador ha propuesto a un atleta recorrer una ruta de 5 Km. Durante 10
das, para determinar si es apto para la prueba de 5 Km. O debe buscar otra
68

Universidad Autnoma del Carmen


Grupo Disciplinario de Sistemas Informticos
especialidad. Para considerarlo apto debe cumplir por lo menos una de las
siguientes condiciones:
Que en ninguna de las pruebas haga un tiempo menor a 15 minutos.
Que al menos en una de las pruebas realice un tiempo mayor a 16 minutos.
Que su promedio de tiempos sea mayor o igual a 15 minutos.

Ejercicio 15.
Una persona desea invertir su dinero en un banco, el cual le otorga un 2% de
inters Cul ser la cantidad de dinero que esta persona tendr al cabo de un
ao si la ganancia de cada mes es reinvertida?

Ejercicio 16.
Calcule la suma siguiente: 100+99+98+97+96+95+.................+5+4+3+2+1+0.

Ejercicio 17.

Hacer un programa que calcule P = Xy.

Ejercicio 18.
Hacer un programa que calcule S = f/x1 + f/x2 + - - - - - - - + f/xn. Utilic la
funcin del problema (P = X y).

Ejercicio 19.
Hacer un algoritmo que lea 50 consumos en una cafetera si el consumo ingresado
excede los 100, se har un descuento de 7%, mostrar todos los pagos
desglosados (sobtotal, descuento y total de cada uno) y el pago total o acumulado.

Ejercicio 20.
Dada N notas calcular el promedio de las notas aprobadas y el promedio de las
notas desaprobadas.

Ejercicio 21.
A una fiesta asistieron personas de diferentes edades y sexos. Construir un
algoritmo dadas las edades y sexos de las personas. Calcular :
-Cuantas personas asistieron a la fiesta
-Cuantos hombres y cuantas mujeres
-Promedio de edades por sexo
-La edad de la persona ms joven que asisti
-No se permiten menores de edad a la fiesta
-Ingresar datos hasta que se ingrese una edad a cero
[Joyanes2003], pag. 160 225

69

Universidad Autnoma del Carmen


Grupo Disciplinario de Sistemas Informticos

PARTE II. SOLUCIONES


SOLUCIN EJERCICIOS TEMA 1
Solucin Ejercicios 1.2. (construccin de identificadores)
Escribe en la columna de la derecha el identificador que usaras para el concepto
especficado a la izquierda, considera aplicar las reglas para la construccin de
estos identificadores.
Concepto
Identificador(es)
Fecha actual
Fecha_actual, fActual, F_actual,
Fecha_act, FechaAct, Factual
Recaudacin de la quiniela
RecaudaQuiniela, rec_quiniela,
recaudacionQuiniela, Recaud_quin,
Rquin, recaudacion_quiniela
Nmero de recibos pendientes en
Num_recibos_pend, NoRecPend,
ejecutiva
numeroRecibosPend, Rec_pend,
RecibosPendiente,
recibos_pendientes
I.V.A. a aplicar
IVA, ivaAplicar
Cdigo de cliente
codigoCliente, cod_cliente,
cdigo_cliente, codigo_cliente,
CodCli, cod_cli
Direccin de correo electrnico
dirCorrElect, eMail, mail, e_mail,
Email
Nmero de hijos
numHijos, numero_hijos, NoHijos,
NumHijos, num_hijos
Pasos de un contador de agua
contAgua, contadorAgua, cont_agua,
contador_agua, ContAgua
Hora actual
horaActual, hora_actual, h_actual,
HoraAct, hora_act,H_Actual
Tablero de ajedrez
Tablero_Ajedrez, tabAjedrez,
tab_ajed, T_Ajedrez
Aforo mximo
aforoMaximo, aforo_maximo, a_max,
AforoMax, Af_max
Nmero de pliza de seguro
numeroPolizaSeguro, NumPoliza,
num_pol, num_poliza_seg, NoPoliza
Total de euros
Total_euros, totalEuros, t_euros,
totEuros, total_euros, t_Euros,
totalEu
Contador de una estructura repetitiva
Cont, contador, cont
Fila de una matriz
Fila, f
Columna de una matriz
Columna, col, c
70

Universidad Autnoma del Carmen


Grupo Disciplinario de Sistemas Informticos

Solucin ejercicios actividad 1.2. (escritura de identificadores)


Marca con una C los nombres de identifcadores correctos y con una X los que
estn errneos de acuerdo a las caractersticas de los identificadores.
Candidato1
3VCand
Votos Favor
CalcularTotal
Tot$VElecc
Porcentaje_Candidato

C
X
X
C
X
C

Nombre
Main
+apuntador
nuevoNombre_2
Aos
Km*Litro

C
X
X
C
X
X

Solucin ejercicios actividad 1.3. (escribir sentencias de declaracin


de variables)
Escribe la declaracin de las variables que se requieren en cada uno de los
enunciados siguientes, en algunos casos elegir el nombre (identficador), para la
variable de acuerdo al dato para el que se requiera.
1. Declarar una variable entera llamada numero:
int numero;
2. Declarar una variable fraccionaria para guardar el dato de sueldo de un
empleado:
float sueldo;
3. Declarar una variable de tipo carcter llamada tipo1
char tipo1;
4. Puesto que C hace caso omiso de los comentarios, es vlida la siguiente
declaracin? Advierta la posicin del punto y coma.
Int x = 3 // 0, 1 y 2 no estn permitidos;
No es vlida

Solucin ejercicios actividad 1.4. (declaracin de variables)


Describe que valores guardarn las variables declaradas a continuacin, indica si
es correcto el tipo declarado con respecto al dato que se supone guardara la
variable (de acuerdo al nombre).
Declaracin
int contador;
float precio;
float numero_Hijos;
char Tipo;

Valores que guardar


Enteros (correcto)
Fraccionarios (correcto)
Fraccionarios (incorrecto, debe ser de tipo entero, ya que se
puede tener 0, 1, 2, 3, 4, N hijos)
Carcter (correcto)
71

Universidad Autnoma del Carmen


Grupo Disciplinario de Sistemas Informticos
Declaracin
char nombre[30];
int suma = 0;

Valores que guardar


Cadena de 30 caracteres (correcto)
Enteros (correcto)

1.4. Ejercicios declaracin de variables y sentencias de asignacin


a) Dadas las declaraciones:
float w;
int i, j = 2, k = 4;
Determinar el valor de las variables i, w y k despus de la ejecucin de las
siguientes sentencias de asignacin:
Sentencia
i = j / k;
w = i / j;
k = i % j;
w = 8.0 / j;
i++;

Valor de variable

b) Suponer que I y J son variables enteras cuyos valores son 6 y 12


respectivamente. Coloca el valor de verdadero o falso a las siguientes
condiciones, segn corresponda.
Condicin
Resultado
(2 * I) <= J
(2 * I 1) < J
(I > 0) && (I <= 10)
(I > 25) || (I < 50 && J < 50)
(I < 4) || (J > 5)
!( I > 6)

=====================================
1. Evaluar la siguiente expresin: a % 2 / b - c * a * y + 18 / c 3 * h
Para los valores a=3, b=2, c=1, h=8, y=4
R1 = a % 2
R1 = 3 % 2 = 1
Resultado
R2 = R1 / b
R2 = 1 / 2 = 0
-18
R3 = c * a
R3 = 1 * 3 = 3
R4 = R3 * y
R4 = 3 * 4 = 12
R5 = R2 R4
R5 = 0 12 = -12
R6 = 18 / c
R6 = 18 / 1 = 18
R7 = R5 + R6
R7 = -12 + 18 = 6
R8 = 3 * h
R8 = 3 * 8 = 24
R9 = R7 - R8
R9 = 6 24
72

Universidad Autnoma del Carmen


Grupo Disciplinario de Sistemas Informticos
2. Evaluar la siguiente expresin: x >= (y+z)
Para los valores x = 3, y = 4, z = 1
R1 = y + z
R2 = x >= R1

R1= 4 + 1 = 5
R2= 3 >= 5

Resultado
Falso

3. Evaluar la siguiente expresin: (a + b -1) < (x * y)


Para los valores a = 31, b = -1, x = 3, y = 2
R1 = a + b
R2 = R1 -1
R3 = x * y
R4 = R2 < R3

R1 = 31 + (-1) = 30
R2 = 30 -1 = 29
R3 = 3 * 2 = 6
R4 = 29 < 6

Resultado
Falso

4. Evaluar la siguiente expresin: !(x < 5) && !(y >= 7)


Suponga x = 3 y = 6
R1 = x < 5
R2 = y >= 7
R3 = !R2
R4 = !R1
R5 = R4 && R3

R1 = 3 < 5 cierto
R2 = 6 >= 7falso
R3 = !falsocierto
R4 = !ciertofalso
R5 = falso && cierto

Resultado
Falso

5. Evaluar la siguiente expresin: !((i > 4) ||(j <= 6))


Suponga i = 22 y j = 3
R1 = i > 4
R2 = j <= 6
R3 = R1 ||R2
R4 = !R3

R1 = 22 > 4cierto
R2 = 3 <= 6cierto
R3 = cierto || ciertocierto
R4 = !cierto

Resultado
Falso

6. Evaluar la siguiente expresin: !(a + b == c) ||(c != 0) && (b -c > = 19)


Suponga a = 34, b = 12 y c = 8
R1 = a + b
R2 = R1 == c
R3 = c != 0
R4 = b - c
R5 = R4 >= 19
R6 = !R2

R1 = 34 + 12 = 46
R2 = 46 == 8falso
R3 = 8 != 0cierto
R4 = 12 8 = 4
R5 = 4 >= 19 falso
R6 = !falsocierto

Resultado
Cierto

73

Universidad Autnoma del Carmen


Grupo Disciplinario de Sistemas Informticos
R7 = R3 && R5
R8 = R6 ||R7

R7 = cierto && falso falso


R8 = cierto || falsocierto

7. Evaluar la expresin: !(a + b == c) ||(c != 0) && (b -c > = 19)


Suponga a = 34, b = 12 y c = 8
R1 = a + b
R1 = 34 + 12 = 46
R2 = R1 == c
R2 = 46 == 8falso
R3 = c != 0
R3 = 8 != 0cierto
R4 = b - c
R4 = 12 8 = 4
R5 = R4 >= 19
R5 = 4 >= 19 falso
R6 = !R2
R6 = !falsocierto
R7 = R3 && R5
R7 = cierto && falso falso
R8 = R6 || R7
R8 = cierto || falsocierto

8. Evaluar la expresin: (a + b) * c
Suponga a = 34, b = 12 y c = 8
R1 = a + b
R1 = 34 + 12
R2 = R1 * c
R2 = 46 * 8
9. Evaluar la expresin:a + x * x + b * (x + c)
Suponga a = 34, b = 12, c = 8 y x = 3
R1 = x + c
R1 = 3 + 8
R2 = x * x
R2 = 3 * 3
R3 = b * R1
R3 = 12 * 11
R4 = a + R2
R4 = 34 + 9
R5 = R4 + R3
R5 = 43 + 132

Resultado
Cierto

Resultado
368

Resultado
175

10. Evaluar la expresin: (horas * 3600) + (minutos * 60 + segundos)


Suponga horas = 34, minutos = 12 y segundos = 3
R1 = horas * 3600
R1 = 34 * 3600
Resultado
R2 = minutos * 60
R2 = 12 * 60
123123
R3 = R2 + segundos R3 = 720 + 3
R4 = R1 + R3
R4 = 122400 + 723

11. Evaluar la expresin:4 + 2 * 5


R1 = 2 * 5
R1 = 2 * 5
R2 = 4 + R1
R2 = 4 + 10

Resultado
14

12. Evaluar la expresin:23 *2 / 5


74

Universidad Autnoma del Carmen


Grupo Disciplinario de Sistemas Informticos
R1 = 23 * 2
R2 = R1 / 5

R1 = 23 * 2
R2 = 46 / 5

Resultado
9.2

13. Evaluar la expresin:3 + 5 * (10 6)


R1 = 10 - 6
R1 = 10 - 6
R2 = 5 * R1
R2 = 5 * 4
R3 = 3 + R2
R3 = 3 + 20

Resultado
23

14. Evaluar la expresin:3 + 5 * (10 (2+4))


R1 = 2 + 4
R1 = 2 + 4
R2 = 10 R1
R2 = 10 6
R3 = 5 * R2
R3 = 5 * 4
R4 = 3 + R3
R4 = 3 + 20

Resultado
23

15. Evaluar la expresin:3.5 + 5.09 14.0 / 40


R1 = 14.0 / 40
R2 = 3.5 + 5.09
R3 = R2 R1

R1 = 14.0 / 40
R2 = 3.5 + 5.09
R3 = 8.59 0.35

16. Evaluar la expresin:2.1 * (1.5 + 3.0 * 4.1)


R1 = 3.0 * 4.1
R1 = 3.0 * 4.1
R2 = 1.5 + R1
R2 = 1.5 + 12.3
R3 = 2.1 * R2
R3 = 2.1 * 13.8

Resultado
8.24

Resultado
28.98

17. Evaluar la expresin:2.1 * (1.5 + 12.3)


R1 = 1.5 + 12.3
R1 = 1.5 + 12.3
R2 = 2.1 * R1
R2 = 2.1 * 13.8

Resultado
28.98

18. Evaluar la expresin:3.5 + 5.09 + 3.5


R1 = 3.5 + 5.09
R1 = 3.5 + 5.09
R2 = R1 + 3.5
R2 = 8.59 + 3.5

Resultado
12.09

19. Evaluar la expresin: (horas*3600) >= (minutos*60 + segundos)


Suponga: horas = 8, minutos = 12 y segundos = 4
R1 = 8 * 3600
R1 = 8 * 3600
Resultado
R2 = 12 * 60
R2 = 12 * 60
Verdad
R3 = R2 + 4
R3 = 720 + 4
R4 = R1 >= R3
R4 = 28800 >= 724

75

Universidad Autnoma del Carmen


Grupo Disciplinario de Sistemas Informticos
20. Evaluar la expresin:!( p && q ) || s
Suponga: p = Verdad, q = Falso y s = Verdad
R1 = p && q
R1 = Verdad && Falso
Resultado
R2 = !R1
R2 = !Falso
Verdad
R3 = R2 || s
R3 = Verdad || Verdad

21. Evaluar la expresin:p && q && s


Suponga: p = Verdad, q = Falso y s = Verdad
R1 = p && q
R1 = Verdad && Falso
Resultado
R2 = R1 && s
R2 = Falso && Verdad
Falso
22. Evaluar la expresin: ( a || b ) && ( c || d )
Suponga: p = Verdad, q = Falso y s = Verdad
R1 = p && q
R1 = Verdad && Falso
Resultado
R2 = R1 && s
R2 = Falso && Verdad
Falso
23. Evaluar la expresin:a > 5 && !( b < c ) || 3 <= d
Suponga: p = Verdad, q = Falso y s = Verdad
R1 = p && q
R1 = Verdad && Falso
Resultado
R2 = R1 && s
R2 = Falso && Verdad
Falso
24. Evaluar la expresin: ( op< min ) || ( op> max)
Suponga: p = Verdad, q = Falso y s = Verdad
R1 = p && q
R1 = Verdad && Falso
Resultado
R2 = R1 && s
R2 = Falso && Verdad
Falso
25. Evaluar la expresin: (edad >= 18) && (edad <= 60)
Suponga: edad = 33
R1 = edad >= 18
R1 = 33 >= 18
R2 = edad <= 60
R2 = 33 <= 60
R3 = R1 && R2
R3 = Verdad && Verdad
26. Evaluar la expresin: A % B + C / D 6
Suponga A = 34, B = 12, C = 8 y D = 4
R1 = A % B
R1 = 34 % 12
R2 = C / D
R2 = 8 / 4
R3 = R1 + R2
R3 = 10 + 2
R4 = R3 - 6
R4 = 12 - 6

Resultado
Verdad

Resultado
6

76

Universidad Autnoma del Carmen


Grupo Disciplinario de Sistemas Informticos

27. Evaluar la expresin: A + 2 * (3 + B)


Suponga A = 4 y B = 12
R1 = 3 + B
R1 = 3 + 12
R2 = 2 * R1
R2 = 2 * 15
R3 = A + R2
R3 = 4 + 30

28. Evaluar la expresin: 3 * (A % (B / C)) + 5


Suponga A = 3, B = 25 y C = 6
R1 = B / C
R1 = 25 / 6
R2 = A % R1
R2 = 3 % 4
R3 = 3 * R2
R3 = 3 * 3
R4 = R3 + 5
R4 = 9 + 5

29. Evaluar la expresin: 6 * 5 / 10 * 2 + 10


R1 = 6 * 5
R1 = 6 * 5
R2 = R1 / 10
R2 = 30 / 10
R3 = R2 * 2
R3 = 3 * 2
R4 = R3 + 10
R4 = 6 + 10
30. Evaluar la expresin: (6 * 5) / (10 * 2) + 10
R1 = 6 * 5
R1 = 6 * 5
R2 = 10 * 2
R2 = 10 * 2
R3 = R1 / R2
R3 = 30 / 20
R4 = R3 + 10
R4 = 1.5 + 10
31. Evaluar la expresin: (6 * 5) / (10 * 2 + 10)
R1 = 6 * 5
R1 = 6 * 5
R2 = 10 * 2
R2 = 10 * 2
R3 = R2 + 10
R3 = 20 + 10
R4 = R1 / R3
R4 = 30 / 30
32. Evaluar la expresin: (6 * 5) / (10 * (2 + 10))
R1 = 6 * 5
R1 = 6 * 5
R2 = 2 + 10
R2 = 2 + 10
R3 = 10 * R2
R3 = 10 * 12
R4 = R1 / R3
R4 = 30 / 120

Resultado
34

Resultado
14

Resultado
16

Resultado
11.5

Resultado
1

Resultado
0.25

33. Evaluar la expresin: A * B / C * D


Suponga A = 34, B = 12, C = 8 y D = 4

77

Universidad Autnoma del Carmen


Grupo Disciplinario de Sistemas Informticos
R1 = A * B
R2 = R1 / C
R3 = R2 * D

R1 = 34 * 12
R2 = 408 / 8
R3 = 51 * 4

34. Evaluar la expresin: 4 / 2 * 3 / 6 + 6 / 2 / 1 / 5 % 2 / 4 * 2


R1 = 4 / 2
R1 = 4 / 2
R2 = R1 * 3
R2 = 2 * 3
R3 = R2 / 6
R3 = 6 / 6
R4 = 6 / 2
R4 = 6 / 2
R5 = R4 / 1
R5 = 3 / 1
R6 = R5 / 5
R6 = 3 / 5
R7 = R6 % 2
R7 = 0.6 % 2 (no se aplica
R8 = R7 / 4
El operador residuo a los
R9 = R8 * 2
Fraccionarios)
R10 = R3 + R9

Resultado
204

Resultado
Error

SOLUCIN EJERCICIOS TEMA 2


Solucin ejercicio 1.
Leer 3 variables decimales. Sumarlas, multiplicarlas y dividirlas.
DATOS DE ENTRADA:
Valor numero 1 (valor1 - entero)
Valor numero 2 (valor2 entero)
Valor numero 3 (valor3 entero)
PROCESO:
Leer valor1, valor2, valor3
suma valor1 + valor2 + valor3.
multip valor1 * valor2 * valor3.
divis valor1 / valor2 / valor3.
Mostrar resultado
DATOS DE SALIDA:
Valor de la suma (suma - entero)
Valor de la multiplicacin (multip entero)
Valor de la divisin (divis - fraccionario)
PROGRAMA:

#include <iostream.h>
#include <conio.h>
void main(){
int valor1, valor2, valor3, suma, multiplicacin;
float division;
78

Universidad Autnoma del Carmen


Grupo Disciplinario de Sistemas Informticos
cout<<"Introducir valor1";
cin>>valor1;
cout<<"Introducir valor2"
cin>>valor2;
cout<<"Introducir valor3";
cin>>valor3;
suma = valor1 + valor2 + valor3;
multiplicacion = valor1 * valor2 * valor3;
division = valor1 / valor2 / valor3;
cout<<"La suma es "<<suma;
cout<<"La multiplicacion es "<<multiplicacin;
cout<<La division es "<<divisin;
getch();
}

Solucin ejercicio 2.
Disear un algoritmo que permita ingresar un valor inicial y un valor final. Calcular
el valor central de los nmeros.
DATOS DE ENTRADA:
Valor inicial (vi entero)
Valor final (vf entero)
PROCESO:
Leer vi, vf
Calcular vc
Mostrar vc
DATOS DE SALIDA:
Valor central (vc fraccionario)
PROGRAMA:

#include <iostream.h>
#include <conio.h>
void main(){
int vi, vf;
float vc;
cout<<"Introducir valor inicial";
cin>>vi;
cout<<"Introducir valor final";
cin>>vf;
vc = (v + vf) / 2;
cout<<"ValorCentral es igual a " << vc;
}

Solucin ejercicio 3.
Construir un algoritmo que calcule e imprima el nmero de segundos que hay en
un determinado nmero de das.
79

Universidad Autnoma del Carmen


Grupo Disciplinario de Sistemas Informticos

DATOS DE ENTRADA:
Valor de numero de das (nd entero)
PROCESO:
Leer nd
ns nd * (24 *60 * 60).
Mostrar ns
DATOS DE SALIDA:
Nmero de segundos (ns entero)
PROGRAMA:

#include <iostream.h>
#include <conio.h>
void main(){
int nd, ns;
cout<<"Introducir valor flotante 1";
cin>>valor1;
cout<<"Introducir valor flotante 2";
cin>>valor2;
cout<<"Introducir valor3";
cin>>valor3;
s = valor1 + valor2 + valor3;
m = valor1 * valor2 * valor3;
d = valor1 / valor2 / valor3;
cout<<"La suma total es de "<<s;
cout<<"La multiplicacion total es de "<<m;
cout<<"La division total es de "<<d;
}

Solucin ejercicio 4.
Dada una cantidad en pesos, obtener la equivalencia en dlares, asumiendo que
la unidad cambiaria es un dato desconocido.
DATOS DE ENTRADA:
Cantidad en pesos (cp fraccionarios)
equivalencia en dlares (cd - fraccionarios)
PROCESO:
Leer cd
ecp/cd
Mostrar e
DATOS DE SALIDA:
Cantidad en dlares (e fraccionario)
PROGRAMA:

#include <iostream.h>
80

Universidad Autnoma del Carmen


Grupo Disciplinario de Sistemas Informticos
#include <conio.h>
void main(){
float cp, cd, e;
cout<<"Introducir cantidad en pesos";
cin>>cp;
cout<<Introducir valor del dolar";
cin>>cd;
e = cp / cd;
cout<<El total en dolar es de ", e;
}

Solucin ejercicio 5.
Tres personas deciden invertir su dinero para fundar una empresa. Cada una de
ellas invierte una cantidad distinta. Obtener el porcentaje que cada quien invierte
con respecto a la cantidad invertida.
DATOS DE ENTRADA:
Inversin persona 1 (c1 fraccionario)
Inversin persona 2 (c2 fraccionario)
Inversin persona 3 (c3 fraccionario)
PROCESO:
Leer c1, c2, c3
s c1 + c2 + c3.
P1 c1 / s * 100.
P2 c2 / s * 100.
P3 c3 / s * 100.
Mostrar p1, p2, p3
DATOS DE SALIDA:
Porcentaje de inversin persona 1 (p1 fraccionario)
Porcentaje de inversin persona 2 (p2 fraccionario)
Porcentaje de inversin persona 3 (p3 fraccionario)
PROGRAMA:

#include <iostream.h>
#include <conio.h>
void main(){
float c1, c2, c3, p1, p2, p3;
Cout<<Introducir primera cantidad a invertir";
cin>>c1;
cout<<Introducir segunda cantidad a invertir";
cin>>c2;
cout<<Introducir tercera cantidad a invertir";
cin>>c3;
s = c1 + c2 + c3;
p1 = c1 / s * 100;
p2 = c2 / s * 100;
p3 = c3 / s * 100;
81

Universidad Autnoma del Carmen


Grupo Disciplinario de Sistemas Informticos
cout<<El porcentaje de la persona 1 es de " << p1;
cout<<El porcentaje de la persona 2 es de " << p2;
cout<<El porcentaje de la persona 3 es de " << p3;
}

Solucin ejercicio 6.
Hacer un programa que lea 3 calificaciones y calcule su promedio. Mostrar el
resultado de la siguiente manera:
Utiliza un cout<<para cada calificacin y uno para el promedio.
DATOS DE ENTRADA:
Calificacin 1 (c1 fraccionario)
Calificacin 2 (c2 fraccionario)
Calificacin 3 (c3 fraccionario)
PROCESO:
Leer c1, c2, c3
prom ( c1 + c2 + c3 ) / 3.
Mostrar c1,c2,c3, prom
DATOS DE SALIDA:
C1, c2, c3
Valor del promedio (prom fraccionario)
PROGRAMA:

#include <iostream.h>
#include <conio.h>
void main(){
float c1, c2, c3, prom;
cout<<Introducir primera calificacin
cin>>c1;
cout<<Introducir segunda calificacin
cin>>c2;
cout<<Introducir tercera calificacin
cin>>c3;
prom = ( c1 + c2 + c3 ) / 3;
cout<<La primera calificacin es " <<
cout<<La segunda calificacin es " <<
cout<<La tercera calificacin es " <<
cout<<El promedio es ", prom;
}

1";
b";
c";
c1;
c2;
c3;

Solucin ejercicio 7.
En un hospital existen 4 reas. Ginecologa, pediatra, urologa, y traumatologa. El
presupuesto anual del hospital se reparte conforme a la siguiente tabla:

82

Universidad Autnoma del Carmen


Grupo Disciplinario de Sistemas Informticos
rea % del presupuesto
G
25
T
15
U
13
P
47
Obtener la cantidad del dinero que recibir cada rea para cualquier monto
presupuestal.
DATOS DE ENTRADA:
Valor de presupuesto anual (pa fraccionario)
PROCESO:
Leer pa
dg pa * 0.25.
dt pa * 0.15.
du pa * 0.13.
dp pa * 0.47.
Mostrar dg, dt, du, dp
DATOS DE SALIDA:
Cantidad de dinero para ginecologa (Dg fraccionario)
Cantidad de dinero para traumatologa (dt fraccionario)
Cantidad de dinero para urologa (du fraccionario)
Cantidad de dinero para pediatra (dp fraccionario)
PROGRAMA:

#include <iostream.h>
#include <conio.h>
void main(){
float pa, dg, dt, du, dp;
cout<<Introducir presupuesto anual";
cin>>pa;
dg = pa * 0.25;
dt = pa * 0.15;
du = pa * 0.13;
dp = pa * 0.47;
cout<<Ginecologia recibira " << dg;
cout<<Traumatologia recibira " << dt;
cout<<Urologia recibira " << du;
cout<<Pediatria recibira " << dp;
}

83

Universidad Autnoma del Carmen


Grupo Disciplinario de Sistemas Informticos

Solucin ejercicio 8.
Un alumno desea saber cual ser su promedio en las 3 materias mas bonitas que
cursa y cual ser el promedio de cada una de ellas estas materias se evalan
como se muestra a continuacin.
Matematicas % Lab. de programacin %
Examen
45
Examen
70
3 tareas
55
2 tareas
30

Ingles
Examen oral
Quiz
Examen escrito
2 tareas

%
15
30
40
15

DATOS DE ENTRADA:
Calificacin de cada rubro de matemticas (me, a, b, c - fraccionarios)
Calificacin de cada rubro de laboratorio de programacin (pe, d, e - fraccionarios)
Calificacin de cada rubro de ingles (io, iq, ie, f, g - fraccionarios)
PROCESO:
Leer me, a, b, c, pe, d, e, io, iq, ie, f, g
m1 me * 0.45.
m2 (a + b + c) / 3 * 0.55.
m m1 + m2.
p1 pe * 0.70.
p2 (d + e) / 2 * 0.30.
p p1 + p2.
i1 io * 0.15.
i2 iq * 0.30.
i3 ie * 0.40.
i4 (f + g) / 2 * 0.15.
i i1 + i2 + i3 + i4.
pg (m + p + i) / 3.
Mostrar pg
DATOS DE SALIDA:
Promedio de matemticas (m fraccionario)
Promedio de laboratorio de programacin (p fraccionario)
Promedio de ingls (I fraccionario)
Promedio general (pg fraccionario)
PROGRAMA:

#include <iostream.h>
#include <conio.h>
void main(){
float me, a, b, c, m1, m2,m, pe, d,
float io, iq, ie, f, e, i1, i2, i3,
cout<<Introducir calificacin
cin>>me;
cout<<Introducir calificacin
cin>>a;
cout<<Introducir calificacin
cin>>b;

e, p1, p2, p;
i4, i, pg;
examen de matematicas";
tarea 1 de matematicas";
tarea 2 de matematicas";
84

Universidad Autnoma del Carmen


Grupo Disciplinario de Sistemas Informticos
cout<<Introducir calificacin tarea 3 de matematicas";
cin>>c;
m1 = me * 0.45;
m2 = (a + b + c) / 3 * 0.55;
m = m1 + m2;
cout<<Introducir calificacin examen de programacion";
cin>>pe;
cout<<Introducir calificacin tarea 1 de programacion";
cin>>d;
cout<<Introducir calificacin tarea 2 de programacion";
cin>>e;
p1 = pe * 0.70;
p2 = (d + e) / 2 * 0.30;
p = p1 + p2;
cout<<Introducir calificacin examen oral de ingles";
cin>>io;
cout<<Introducir calificacin quiz de ingles";
cin>>iq;
cout<<Introducir calificacin examen escrito de ingles";
cin>>ie;
cout<<Introducir calificacin tarea 1 de ingles";
cin>>f;
cout<<Introducir calificacin tarea 2 de ingles";
cin>>e;
i1 = io * 0.15;
i2 = iq * 0.30;
i3 = ie * 0.40;
i4 = (f + g) / 2 * 0.15;
i = i1 + i2 + i3 + i4;
pg = (m + p + i) / 3;
cout<<El promedio de matematicas es de " << m;
cout<<El promedio de programacion es de " << p;
cout<<El promedio de ingles es de " << i;
cout<<El promedio general de las materias es de " << pg;
}

Solucin ejercicio 9.
Calcule el nuevo salario de un trabajador si ha obtenido un porcentaje de
incremento desconocido sobre su salario anterior. Leer el nombre del trabajador.
DATOS DE ENTRADA:
Nombre del trabajador (nt cadena de caracteres)
Valor de salario anterior (sa fraccionario)
Porcentaje de incremento (pi entero)
PROCESO:
Leer nt, sa, pi
inpi*sa/100.
snsa+(sa*pi/100).
Mostrar nt, sa, pi, sn
85

Universidad Autnoma del Carmen


Grupo Disciplinario de Sistemas Informticos
DATOS DE SALIDA:
Nt
Nuevo salario (sn fraccionario)
PROGRAMA:

#include <iostream.h>
#include <conio.h>
void main(){
char *nt;
float sa;
int pi;
cout<<Introducir nombre del trabajador";
cin>>nt;
cout<<Introducir salario anterior";
cin>>sa;
cout<<Introducir porcentaje de incremento";
cin>>pi ;
in = pi*sa/100 ;
sn = sa+(sa*pi)/100
cout<<nt<<Tiene un incremento de <<in<< su salario nuevo
es de "<<sn;
}

Solucin ejercicio 10.


La fuerza de atraccin entre dos cuerpos es igual al producto de una constante k
por el cociente que resulta de dividir el producto de las masas de los cuerpos por
el cuadrado de su distancia.
DATOS DE ENTRADA:
Masa del cuerpo 1 (m1 entero)
Masa del cuerpo 2 (m2 entero)
Valor de constante (K entero)
Distancia entre los dos cuerpos (D entero)
PROCESO:
Leer m1, m2, k, D
FAK*((m1*m2) / (D *D))
Mostrar FA
DATOS DE SALIDA:
Valor de fuerza de atraccin (FA fraccionario)
PROGRAMA:

#include <iostream.h>
#include <conio.h>
void main(){
char * nt;
86

Universidad Autnoma del Carmen


Grupo Disciplinario de Sistemas Informticos
float sa;
int pi;
cout<<Introducir nombre del trabajador";
cin>>nt;
cout<<Introducir salario anterior";
cin>>sa;
cout<<Introducir porcentaje de incremento";
cin>>pi ;
in = pi*sa/100 ;
sn = sa+(sa*pi)/100;
cout<<nt<<Tiene un incremento de <<in<< su salario nuevo
es de "<<sn;
}

87

Universidad Autnoma del Carmen


Grupo Disciplinario de Sistemas Informticos

SOLUCIN EJERCICIOS TEMA 3


Solucin ejercicio 1.
Una persona desea iniciar un negocio, para lo cual piensa verificar cuanto de
dinero le prestara el banco por hipotecar su casa. Tiene una cuenta bancaria pero
no puede disponer de ella a menos que el monto por hipotecar su casa sea muy
pequeo. Si el monto de la hipoteca es menor que 1 milln entonces invertir el
50% de la inversin total y un socio invertir el otro 50%. Si el monto de la
hipoteca es de mas de 1 milln, entonces invertir el monto total de la hipoteca y
el resto del dinero que necesite para cubrir la inversin total se repartir a partes
iguales entre el socio y l.
DATOS DE ENTRADA:
Monto total de la inversion (mt fraccionario)
Monto del banco (mb fraccionario)
Monto de la hipoteca (mh fraccionario)
PROCESO:
Leer mt, mb, mh
amt/2.
pbmt-mh.
rmpb/2.
Mostrar a, pb, rm
DATOS DE SALIDA:
Monto de inversin de nuevos socios (a fraccionario)
Prstamo al banco (pb fraccionario)
Resto de inversion socios (rm fraccionario)
mt.
PROGRAMA:

#include <iostream.h>
#include <conio.h>
void main(){
float mt, mb, mh, a, pb, rm;
cout<<"introducir monto total de la inversion";
cin>>mt;
cout<<"introducir monto en el banco";
cin>>mb;
cout<<"introducir monto de la hipoteca";
cin>>mh;
if(mh<1000000){
a = mt/2;
cout<<"necesita un socio y c/socio invertira "<<a;
}
88

Universidad Autnoma del Carmen


Grupo Disciplinario de Sistemas Informticos
else
if(mh<mt){
pb = t - mh;
rm = pb / 2;
cout<<"Hacer un prestamo al banco de ", pb
cout<<"el resto cada socio invertira " , rm
}
else
if(mh>=mt)
cout<<"Se cubre la inversion total de"<<mt;
cout<<"FELICIDADES ya puede iniciar su negocio";
}

Solucin ejercicio 2.
Una persona debe determinar la etapa de la vida de las personas que existen en
su zona habitacional. Se determinan las categoras con base en la siguiente tabla:
CATEGORIA
Nios
Jvenes
Adultos
Viejos

EDAD
0-12
13-29
30-59
60 en adelante

DATOS DE ENTRADA:
Edad (e entero)
PROCESO:
Leer e
Determinar categora comparando e con rangos
Mostrar categora
DATOS DE SALIDA:
Mensaje nio, joven, adulto o viejo
PROGRAMA:

void main(){
int e;
cout<<"teclee la edad";
cin>>e;
if(e<=12)
cout<<"Es un nino";
else
if(e<=29)
cout<<"Es un joven";
else
if(e<=59)
cout<<"Es un adulto";
89

Universidad Autnoma del Carmen


Grupo Disciplinario de Sistemas Informticos
else
cout<<"Es un viejo";
}

Solucin ejercicio 3.
Una compaa de seguros esta abriendo un departamento de finanzas y
estableci un programa para captar clientes que consiste en lo siguiente: si el
monto por el que se efecta la fianza es menor que $50000, la cuota a pagar es el
3% del monto, si el monto es mayor que $50000 la cuota a pagar ser el 2% del
monto. La afianzadora desea determinar cual ser la cuota que debe pagar un
cliente.
DATOS DE ENTRADA:
Monto de la fianza (mf fraccionario)
PROCESO:
Leer mf
Si mf<50000)
o entonces csmf*.03.
o sino csmf*.02.
Mostrar cs
DATOS DE SALIDA:
Cuota a pagar (cs fraccionario)
PROGRAMA:

#include <iostream.h>
#include <conio.h>
void main(){
float mf, cs;
cout<<"introducir el monto de la fianza";
cin>>mf;
if(mf<=50000)
cs = mf*0.03;
else
cs = mf*0.02;
cout<<"la cuota a pagar el cliente es de "<<cs;
}

Solucin ejercicio 4.
Una frutera ofrece peras con descuento segn la siguiente tabla:
N0 de kilos comprados % de descuento
0.2
0
2.01 5
10
5.01 10
15
90

Universidad Autnoma del Carmen


Grupo Disciplinario de Sistemas Informticos
10.01 en adelante

20

Determina cuanto pagara una persona que compre peras en esa frutera.
DATOS DE ENTRADA:
Kilos y precio de peras (p, k fraccionario)
PROCESO:
Leer p, k
tpk
tp*k
tpt-(t/100*10)
tp*k
tpt-(t/100*15)
tp*k
tpt-(t/100*20
Mostrar tp
DATOS DE SALIDA:
Total a pagar (tp fraccionario)
PROGRAMA:

#include <iostream.h>
#include <conio.h>
void main(){
float cfruta, p, k, t, desc, tp;
cout<<"introducir los kilos de peras p";
cin>>p;
cout<<"introducir el precio por kilo de la pera k";
cin>>k;
t = p * k;
if(p<=2)
desc = 0;
else
if(p<=5)
desc = t/100*10;
else
if(p<=10)
desc = t/100*15;
else
if(p>10)
desc = t/100*20 ;
tp = t desc ;
cout<<"el pago total de las peras es "<<tp;
}

91

Universidad Autnoma del Carmen


Grupo Disciplinario de Sistemas Informticos

Solucin ejercicio 5.
Realizar una funcin que reciba como parmetros dos valores numricos y uno de
tipo carcter la funcin debe retornar el resultado de un clculo, dependiendo el
carcter. El carcter puede tener los valores de +, --, /,*, %.
DATOS DE ENTRADA:
Carcter de operacin (ca carcter)
2 valores numricos (v1, v2 fraccionarios)
PROCESO:
Leer ca, v1, v2
Ca+ retorna (v1+v2).
Ca- retorna (v1-v2).
Ca* retorna (v1*v2).
Ca/ retorna (v1/v2).
Ca% retorna (v1%v2).
DATOS DE SALIDA:
Valor resultante (resul fraccionario)
PROGRAMA:

#include <iostream.h>
#include <conio.h>
void main(){
float v1, v2, resul;
char ca;
cout<<"teclee carcter de operacion a realizar";
cin>>ca;
cout<<"teclee primer valor a calcular";
cin>>v1;
cout<<"teclee segundo valor a calcular";
cin>>v2;
if(ca == '+')
resul v1+v2;
else
if(ca == '-')
resul v1-v2;
else
if(ca == '*')
resul = v1*v2;
else
if(ca == '/')
resul v1/v2
else
if(ca == '%')
resul = v1%v2;
cout<<"el resultado de la operacion es"<<resul;
} // principal

92

Universidad Autnoma del Carmen


Grupo Disciplinario de Sistemas Informticos

Solucin ejercicio 6.
Realizar una funcin que reciba como parmetro un carcter y dependiendo del
carcter, determine el estado civil de una persona. El carcter puede tener como
valores U, C, S, V, D, O.
DATOS DE ENTRADA:
Estado civil (e carcter)
PROCESO:
Leer e
Mostrar mensaje comparando e
DATOS DE SALIDA:
Mensaje unin libre, casado, soltero, viudo, divorciado, otro
PROGRAMA:

#include <iostream.h>
#include <conio.h>
void main(){
char e;
cout<<"teclee u, c, s, v, d, o, segun su estado civil";
cin>>e;
cout<<"Su estado civil es ;
if(e == 'u')
cout<<"union libre";
else
if(e == 'c')
cout<<"casado";
else
if(e == 's')
cout<<"soltero";
else
if(e == 'v')
cout<<"viudo";:
else
if(e == 'd')
cout<<"divorciado";
else
if(e == 'o')
cout<<"otro";
else cout<<"no valido";
} // principal

Solucin ejercicio 7.
En una llantera se ha establecido una promocin
de las llantas marca
MORIRAS, dicha promocin consiste en lo siguiente: Si se compran menos de 5
llantas el precio es de $300 c/u, de $250 c/u si se compran de 5 a 10 y de $200 c/u
93

Universidad Autnoma del Carmen


Grupo Disciplinario de Sistemas Informticos
si se compran mas de 10 llantas, obtener la cantidad de dinero que una persona
tiene que pagar por cada una de las llantas que compra y lo que tiene que pagar
por el total de la compra.
DATOS DE ENTRADA:
Total de llantas (y entero)
PROCESO:
Leer y
ty*300.
ty*250.
ty*200.
Mostrar t
DATOS DE SALIDA:
Total a pagar (total fraccionario)
PROGRAMA:

#include <iostream.h>
#include <conio.h>
void main(){
int y, t, t ;
escribir("teclee cuantas llantas va a comprar";
cin>>y;
if(y<5){
t = y * 300;
cout<<"cada llanta cuesta 300 pesos";
}
else
if(y<=10){
cout<<"cada llanta cuesta 250 pesos";
t = y*250;
}
else
if(y>10){
cout<<"cada llanta cuesta 200 pesos";
t = y*200;
}
cout<<" su pago total es de "<<t;
} //principal

Solucin ejercicio 8.
El dueo de una empresa desea planificar las decisiones financieras que tomara
durante el ao la manera de planificar depende de lo siguiente: Si actualmente su
capital se encuentra con saldo negativo, pedir un prstamo bancario para que su
nuevo saldo sea de $10000. Si su capital tiene un saldo actual positivo pedir un
94

Universidad Autnoma del Carmen


Grupo Disciplinario de Sistemas Informticos
prstamo bancario para tener un nuevo saldo de $20000, pero si su capital
actualmente es arriba de los $20000, no pedir ningn prstamo.
5000 para equipo de computo.
2000 para mobiliario.
Resto la mitad ser para insumo y la otra mitad para entregar incentivos
para el personal.
Desplegar que cantidades destinaran para la compra de insumos y la entrega de
incentivos, en caso que fuera necesario a cuanto ascendera la cantidad que
pedira al banco.
DATOS DE ENTRADA:
Monto de capital (ca fraccionario)
PROCESO:
Leer ca
pb10000-ca.
pb20000-ca.
ii13000/2.
ii13000/2.
DATOS DE SALIDA:
insumos
incentivos
PROGRAMA:

#include <iostream.h>
#include <conio.h>
void main(){
float ca, resto, pb, insumos, incentivos;
cout<<"cual es su capital";
cin>>ca;
if(ca<=0){
pb = 10000-ca;
Resto = 7000;
cout<<"prestamo al banco de <<pb;
}
else
if(ca<20000){
pb = 20000-ca;
resto = 13000;
cout<<"prestamo al banco de <<pb;
}
else
if(ca>=20000)
resto = ca 7000;
insumos = resto/2;
incentivos = resto/2;
cout<<"para la compra de insumos "<<insumos;
cout<<"para la entrega de incentivos "<<incentivos;
getch();
95

Universidad Autnoma del Carmen


Grupo Disciplinario de Sistemas Informticos
} // principal

Solucin ejercicio 9.
Tomando como base los resultados obtenidos en un laboratorio de anlisis
clnicos, un medico determina si tiene anemia o no, lo cual depende de su nivel de
hemoglobina en la sangre, su edad y de su sexo. Si el nivel de hemoglobina que
tiene una persona es menor que el rango que le corresponde, se determina su
resultado como positivo y en caso contrario como negativo. La tabla en la que el
medico se basa es la siguiente:
Edad
Nivel de hemoglobina (8 %)
0 1 mes
13 26
>1 y <=6 meses
10 18
>6 y <=12 meses
11 15
>1 y <=5 aos
11.5 15
>5 y <= 10 aos
12.6 15.5
>10 y <=15 aos
13 15.5
Mujeres > 15 aos
12 16
Hombres > 15 aos
14 18
DATOS DE ENTRADA:
Sexo (s carcter)
Edad (e entero)
Nivel de hemoglobina (he entero)
PROCESO:
Leer s, e, he
Comparar s, e, he: Mostrar mensaje no tiene anemia o tiene anemia
DATOS DE SALIDA:
Mensaje no tiene anemia o tiene anemia
PROGRAMA:

#include <iostream.h>
#include <conio.h>
void main(){
char s;
int e;
float he;
cout<<"dar sexo m=mujeres,h=hombres";
cin>>s;
cout<<"teclee la edad";
cin>>e;
cout<<"teclee el nivel de hemoglobina";
cin>>he;
if (e>15)
if ((s==m && he>12) || (s==h && he>14))
96

Universidad Autnoma del Carmen


Grupo Disciplinario de Sistemas Informticos
cout<<"no tiene anemia";
else cout<<"tiene anemia";
else
if ((e>0 && e<=0.1 && he>13) || (e>0.1 && e<=0.6 && he>10)
|| (e>0.6 && e<=1 && he>11) || (e>1 && e<=5 && he>11.5) ||
(e>5 && e<=10 && he>12.6) || (e>10 && e<=15 && he>13))
cout<<"No tiene anemia";
else
cout<<"Tiene anemia";
} //principal

Solucin ejercicio 10.


Una institucin educativa estableci un programa para estimular a los alumnos
con buen rendimiento acadmico y que cosiste en lo siguiente:
Si el promedio es de 9.5 o mas y el alumno es de preparatoria, entonces
este podr cursar 55 unidades y se le har un 25% de descuento.
Si el promedio es mayor o igual a 9 pero menor que 9.5 y el alumno es de
preparatoria, entonces este podr cursar 50 unidades y se le har un 10%
de descuento.
Si el promedio es mayor que 7 y menor que 9 y el alumno es de
preparatoria, este podr cursar 50 unidades y no tendr ningn descuento.
Si el promedio de 7 o menor, el nmero de materias reprobadas es de 0 a 3
y el alumno es de preparatorio, entonces podr cursar 45 unidades y no
tendr descuento.
Si el promedio es de 7 o menor, el nmero de materias reprobadas es de 4
o ms y el alumno es de preparatoria, entonces podr cursar 40 unidades y
no tendr ni un descuento.
Si el promedio es mayor o igual a 9.5 y el alumno es de profesional,
entonces podr cursar 55 unidades y se le har un 20% de descuento.
Si el promedio es menor de 9.5 y el alumno es de profesional, entonces
podr cursar 55 unidades y no tendr descuento.
Si el promedio es mayor o igual a 9.5 y el alumno es de profesional,
entonces podr cursar 55 unidades y tendr descuento del 25%.
Obtener el total que tendr que pagar un alumno si la colegiatura para alumnos de
profesional es de 300 por cada 5 unidades y para alumnos de preparatoria es de
180 por cada 5 unidades.
DATOS DE ENTRADA:
Promedio del alumno (Prom fraccionario)
Nmero de materias reprobadas (Mr entero)
Nivel actual (Nivel caracter)
PROCESO:
Leer prom, mr, nivel
Calcular col comparando prom, mr, nivel
col (55/5)180*0.25
col(55/5)*180*0.10
97

Universidad Autnoma del Carmen


Grupo Disciplinario de Sistemas Informticos

col(50/5)*180
col(45/5)*180
col(40/5)*180
col(55/5)*300*0.20
col(55/5)*300
Mostrar col

DATOS DE SALIDA:
Colegiatura a pagar (ine fraccionario)
PROGRAMA:

#include <iostream.h>
#include <conio.h>
void main(){
int mr;
char nivel;
float prom, coleg;
cout<<"teclee el promedio del alumno";
cin>>prom;
cout<<"teclee cuantas materias reprobo";
cin>>mr;
cout<<"Nivel del alumno p=preparatoria u= profesional";
cin>>nivel;
if(nivel=='p')
if (prom>=9.5) {
cout<<"Cursara 55 unid. desc. 25%";
pago = (55/5) * 180;
desc = pago *0.25;
coleg = pago desc;
}
else
if (prom>=9 && prom<9.5) {
cout<<"Cursara 50 unid. desc. 10%";
pago = (50/5) * 180;
desc = pago *0.10;
coleg = pago desc;
}
else
if(prom>7 && prom<9) {
cout<<"Cursara 50 unid.";
coleg = (50/5) * 180;
}
else
if(nr<3) {
cout<<"Cursara 45 unid.";
coleg = (45/5) * 180;
}
else {
cout<<"Cursara 40 unid.";
98

Universidad Autnoma del Carmen


Grupo Disciplinario de Sistemas Informticos
coleg (40/5) * 180;
}
else
if (p>=9.5) {
cout<<"Cursara 55 unid. desc. 25%";
pago = (55/5) * 300;
desc = pago *0.25;
coleg = pago desc;
}
else
coleg = (55/5) * 300;
cout<<"Pagara de colegiatura ", coleg;
}

Solucin ejercicio 11.


En una empresa se requiere calcular el salario semanal de un obrero que labora
en ella. Suponiendo que el pago por hora es de $20.00, obtener el salario de la
siguiente manera:

Las 40 horas de trabajo base, se le pagan $20 por hora.


Si trabaja entre 30 y 40 horas se le hace un descuento del 15% del
calculo total.
Si el trabajador realiz horas extra y estas no exceden de 8, su pago
es al doble por cada hora de trabajo.
Cuando las horas extras exceden de 8, las primeras 8 se le pagan al
doble y el resto al triple, sabiendo que no podrn ser ms de 10
horas.
Si trabaja menos de 30 horas, no se le paga nada.

DATOS DE ENTRADA:
Total de horas trabajadas (h entero)
PROCESO:
Leer h
Segn sea h
salarioh*20.
salario(h*20)-((h*20)*0.15).
heh-40
salario(40*20)+(he*40
heh-48
salario(40*20)+(8*40)+(he*60
mostrar salario
DATOS DE SALIDA:
salario semanal (ss- fraccionario)
PROGRAMA:
99

Universidad Autnoma del Carmen


Grupo Disciplinario de Sistemas Informticos
#include <iostream.h>
#include <conio.h>
void main(){
int h;
float ss;
cout<<"cuantas horas trabajo a la semana";
cin>>h;
if(h==40)
salario = h*20;
else
if(h>=30 && h<40)
salario = (h*20)-((h*20)*0.15);
else
if(h>40 && h<=48) {
he = h-40;
salario = (40*20)+(he*40);
}
else
if(h>48 && h<=50) {
he = h-48;
salario = (40*20)+(8*40)+(he*60);
}
else
if(h<30)
salario = 0;
cout<<"Salario del trabajador es "<<salario;
} //principal

Solucin ejercicio 12.


El Departamento de Seguridad Pblica y Trnsito del D.F. desea saber, para cada
auto de la ciudad de Mxico, qu color de calcomana le corresponde. Conociendo
el ltimo dgito de la placa de cada automvil se puede determinar el color de la
calcomana utilizando la siguiente relacin:
Dgito
1o2
3o4
5o6
7o8
9o0

Color
Amarilla
Rosa
Roja
Verde
Azul

DATOS DE ENTRADA:
Nmero de placa (placa arreglo de caracteres)
100

Universidad Autnoma del Carmen


Grupo Disciplinario de Sistemas Informticos
PROCESO:
Leer placa
Determinar ltimo dgito de placa mostrar color correspondiente
DATOS DE SALIDA:
Mensaje amarilla, rosa, roja, verde o azul
PROGRAMA:

void main(){
char placa[7];
cout<<"teclee los digitos de la placa del automovil";
cin>>placa;
switch (placa[6]) {
case '1':
case '2': cout<<"Color de calcomania amarilla";
break;
case '3':
case '4': cout<<"Color de calcomania rosa";
break;
case '5':
case '6': cout<<"Color de calcomania roja";
break;
case '7':
case '8': cout<<"el color de calcomania verde";
break;
case '9':
case '0': cout<<"Color de calcomania azul";
break;
} //fin de switvh
}

Solucin ejercicio 13.


Hacer una funcin en casos donde reciba la inicial de un color y se describa ese
color.
DATOS DE ENTRADA:
Inicial del color (color- carcter)
PROCESO:
Leer color
Mostrar mensaje comparando color
DATOS DE SALIDA:
Mensaje amarillo, naranja, verde, blanco, rojo o ERROR_letra no valida.
PROGRAMA:

void main(){
char color;
cout<<"teclee letra para color";
cin>>color;
101

Universidad Autnoma del Carmen


Grupo Disciplinario de Sistemas Informticos
switch (color) {
case 'a':
case 'A': cout<<"su color favorito es
break;
case 'n':
case 'N': cout<<"su color favorito es
break;
case 'v':
case 'V': cout<<"su color favorito es
break;
case 'b':
case 'B': cout<<"su color favorito es
break;
case 'r':
case 'R': cout<<"su color favorito es
break;
default: cout<<"ERROR_letra
}// fin swtch
} //principal

amarillo";
naranja";
verde";
blanco";
rojo";
no valida";

Solucin ejercicio 14.


Cambiar a Casos el programa del estado civil de una persona (ejercicio 7)
DATOS DE ENTRADA:
Estado civil (e carcter)
PROCESO:
Leer e
Mostrar mensaje comparando e
DATOS DE SALIDA:
Mensaje unin libre, casado, soltero, viudo, divorciado, otro
PROGRAMA:

void main(){
char e;
cout<<"teclee u, c, s, v, d, o, segun estado civil";
cin>>e;
switch (e){
case 'u':
case 'U': cout<<"union libre es su estado civil";
break;
case 'c':
case 'C': cout<<"casado es su estado civil";
break;
case 's':
case 'S': cout<<"soltero es su estado civil";
break;
case 'v':
case 'V': cout<<"viudo es su estado civil";
102

Universidad Autnoma del Carmen


Grupo Disciplinario de Sistemas Informticos
break;
case 'd':
case 'D': cout<<"divorciado es su estado civil";
break;
case 'o':
case 'O': cout<<"otro es su estado civil";
break;
default: cout<<"ERROR_letra no valida";
}// fin de switch
} //fin de principal

Solucin ejercicio 15.


Dada la letra inicial de alguna figura geomtrica (cubo, crculo, triangulo y
rectngulo), realizar el clculo correspondiente al rea de la misma.
DATOS DE ENTRADA:
Inicial de la figura geomtrica (lo carcter)
PROCESO:
Leer lo
Determinar calculo a realizar de acuerdo a lo
bl*l*l.
t(b*h)/2.
c3.1416*(r*r).
rb*h
mostrar area resultante
DATOS DE SALIDA:
rea de la figura elegida (b, t, c, r fraccionario)
PROGRAMA:

void main(){
char lo;
float l, b, h, t, r, c;
cout<<"teclee inicial de la figura geometrica";
cin>>lo;
switch (lo){
case 'B':
case 'b':
cout<<"teclee medida del lado";
cin>>l ;
b = l*l*l ;
cout<<"el area del cubo es "<<b;
break;
case 'T':
case 't':
cout<<"teclee medida de la base";
cin>>b;
cout<<"teclee medida de la altura";
cin>>h ;
t = (b*h)/2 ;
103

Universidad Autnoma del Carmen


Grupo Disciplinario de Sistemas Informticos
cout<<"el area del triangulo es <<t;
break;
case 'C':
case 'c':

cout<<"teclee el radio";
cin>>r;
c = 3.1416*(r*r);
cout<<"el area del circulo es "<<c;
break;

case 'R':
case 'r':

cout<<"teclee medida de la base";


cin>>b;
cout<<"teclee medida de la altura";
cin>>h;
r = b*h;
cout<<"el area del rectangulo es "<<r;
break;
default:
cout<<"ERROR_letra no valida";
} //fin de switch
}

Solucin ejercicio 16.


Utilizando el programa colores en casos de (ejercicio 15), convertirlo para retornar
una cadena.
DATOS DE ENTRADA:
Estado civil (e carcter)
PROCESO:
Leer e
Mostrar mensaje comparando e
DATOS DE SALIDA:
Mensaje unin libre, casado, soltero, viudo, divorciado, otro
PROGRAMA:

void main(){
char color;
cout<<"teclee letra para
cin>>color;
switch (color) {
case 'a':
case 'A': cout<<" su
break;
case 'n':
case 'N': cout<<" su
break;
case 'v':
case 'V': cout<<" su
break;
case 'b':

el color deseado";

color favorito es amarillo";


color favorito es naranja";
color favorito es verde";

104

Universidad Autnoma del Carmen


Grupo Disciplinario de Sistemas Informticos
case 'B': cout<<" su color favorito es blanco";
break;
case 'r':
case 'R': cout<<" su color favorito es rojo";
break;
default: cout<<"ERROR_letra no valida"
}// fin de switch
}

Solucin ejercicio 17.


utilizando el programa estado civil en casos de (ejercicio 14), convertirlo para
retornar una cadena.
DATOS DE ENTRADA:
Estado civil (e carcter)
PROCESO:
Leer e
Mostrar mensaje comparando e
DATOS DE SALIDA:
Mensaje unin libre, casado, soltero, viudo, divorciado, otro
PROGRAMA:

void main(){
char e;
cout<<"teclee u, c, s, v, d, o segn su estado civil";
cin>>e;
switch (e){
case 'u':
case 'U': cout<<"su estado civil es union libre";
break
case 'c':
case 'C': cout<<"su estado civil es casado";
break
case 's':
case 'S': cout<<"su estado civil es soltero";
break;
case 'v':
case 'V': cout<<"su estado civil es viudo";
break;
case 'd':
case 'D': cout<<"su estado civil es divorciado";
break;
case 'o':
case 'O': cout<<"su estado civil es otro";
break;
default: cout<<"ERROR_letra no valida";
}// fin de switch
105

Universidad Autnoma del Carmen


Grupo Disciplinario de Sistemas Informticos
} //fin de principal

SOLUCIONES EJERCICIOS TEMA 4


Solucin ejercicio 1.
Realizar una funcin con el ciclo mientras, que muestre los primeros nmeros del
1 al 10 y retorne la suma de ellos.
DATOS DE ENTRADA:
Ninguno.
PROCESO:
Mostrar los nmeros del 1 al 10, ir sumando nmeros
Mostrar suma
DATOS DE SALIDA:
Suma total (Sumat entero)
PROGRAMA:

void main(){
int suma=0;
int n=1;
while(n<=10){
cout<<"numero "<<n;
suma = suma+n;
n = n+1;
} //fin de mientras
cout<<"Suma total es de " << sumat;
} //fin de principal
PROGRAMA USANDO PROCEDIMIENTOS Y FUNCIONES:

/* Funcin que muestra los nmeros del 1 al 10 y retorna la suma


de los mismos. */
int suma() {
int sum=0;
int n=1;
while(n<=10){
cout<<"numero "<<n;
sum = sum+n;
n = n+1;
} //fin de mientras
return sum;
} //fin de funcin suma
/* Parte principal, llama a la funcin suma y luego muestra el
total de la suma */
void main(){
106

Universidad Autnoma del Carmen


Grupo Disciplinario de Sistemas Informticos
int sumat;
sumat = suma();
cout<<"Suma total es de " << sumat;
} //fin de principal

Solucin ejercicio 2.
Hacer una funcin con el ciclo mientras, que dado un numero entero decimal me
muestre los siguientes 20 nmeros pares o impares del numero proporcionado.
DATOS DE ENTRADA:
Nmero (n entero)
PROCESO:
Leer n
Mostrar 20 nmeros pares o impares despus de nmero.
DATOS DE SALIDA:
20 nmeros pares o impares despus de nmero.
PROGRAMA:

void main(){
int h=1;
int n;
cout<<"ingresar numero";
cin>>n;
while(h<=20){
n = n+2;
cout<<" numero " << n;
h++;
} //fin de mientras
} //fin de principal

Solucin ejercicio 3.
Implemente el ciclo mientras para leer caracteres y finalic cuando se introduzca
un *.
DATOS DE ENTRADA:
Carcter ledo (cad carcter)
PROCESO:
Mientras cad sea dif. De * leer cad.
DATOS DE SALIDA:
ninguno.
PROGRAMA:

void main(){
char cad = x;
while(cad != '*'){
cout<<"teclee caracter " ;
107

Universidad Autnoma del Carmen


Grupo Disciplinario de Sistemas Informticos
cin>>cad ;
} //fin de mientras
}

Solucin ejercicio 4.
Hacer en un ciclo mientras una funcin que calcule el total de la compra, imprima
el iva, con cuanto paga y el cambio.
DATOS DE ENTRADA:
Respuesta continuar (cad carcter)
monto de la venta (m fraccionario)
Cantidad de pago (cp fraccionario)
PROCESO:
Leer m, cp
ivam*0.15.
tpm+iva.
cambiocp-tp.
cajacaja+tp.
Mostrar iva, cp, cambio, caja
DATOS DE SALIDA:
Monto del IVA (iva fraccionario)
Cantidad de cambio (cambio - fraccionario)
Cantidad acumulada en caja (caja fraccionario)
PROGRAMA:

void main(){
float caja=0;
float m, iva, tp, cp, cambio;
char cad;
cout<<"desea realizar venta s=si, n=no;
cin>>cad;
while(cad=='s' || cad=='S'){
cout<<" teclee el monto de la venta";
cin>>m ;
iva = m*0.15;
cout<<" el iva es de "<<iva;
tp = m+iva;
cout<<" el total a pagar es de "<<tp;
cout<<" teclee cantidad con que paga el cliente";
cin>>cp;
cambio = cp tp;
cout<<" el cambio es de "<<cambio;
caja = caja + tp;
cout<<" desea realizar venta s=si, n=no";
cin>>cad;
} //fin de mientras
cout<<" el monto total de la caja es de "<<caja;
} //fin de principal
108

Universidad Autnoma del Carmen


Grupo Disciplinario de Sistemas Informticos

Solucin ejercicio 5.
Mostrar en pantalla 10 veces la lnea de texto Ring.... utilizando un ciclo hacer mientras.
DATOS DE ENTRADA:
Ninguno.
PROCESO:
Ninguno.
DATOS DE SALIDA:
10 veces el mensaje Ring....
PROGRAMA:

Void main(){
int i5
hacer
cout<<"ring..."
i i+1
mientras(i<=10)
retorna
} //fin de principal

Solucin ejercicio 6.
Hacer una funcin en el ciclo hacer mientras,
nmeros del 1 al 10 y retorne la suma de ellos.

que muestre los primeros

DATOS DE ENTRADA:
Ninguno.
PROCESO:
Mostrar los nmero del 1 al 10
Mostrar sumat
DATOS DE SALIDA:
Nmeros del 1 al 10
Suma de los primeros 10 nmeros (sumat entero)
PROGRAMA:

void main(){
int suma=0;
int n=1;
do{
suma = suma+n;
cout<<"numero "<<n;
n = n+1;
}while(n<=10);
cout<<"la suma total es de "<<suma;
} //fin de principal
109

Universidad Autnoma del Carmen


Grupo Disciplinario de Sistemas Informticos

Solucin ejercicio 7.
Hacer una funcin con el ciclo hacer - mientras, que dado un numero entero
decimal me muestre los siguientes 20 nmeros pares o impares del numero
proporcionado.
DATOS DE ENTRADA:
Nmero entero decimal (n entero)
PROCESO:
Leer n
Mostrar 20 nmero pares o impares
DATOS DE SALIDA:
20 nmeros pares o impares.
PROGRAMA:

void main(){
int h=1;
int n;
cout<<"ingresar numero";
cin>>n;
do{
n = n+2;
cout<<" numero "<<n;
h = h+1;
} while(h<=20);
} //fin de principal

Solucin ejercicio 8.
Utilizar un ciclo hacer mientras, que
introduzca un * .

lea caracteres y finalic cuando se

DATOS DE ENTRADA:
Carcter ledo (cad carcter)
PROCESO:
Hacer leer cad Mientras cad sea dif. De * .
DATOS DE SALIDA:
ninguno.
PROGRAMA:

void main(){
char cad;
do{
cout<<"teclee caracter ;
cin>>cad;
} while(cad != '*');
110

Universidad Autnoma del Carmen


Grupo Disciplinario de Sistemas Informticos
} //fin de principal

Solucin ejercicio 9.
Realizar un algoritmo que utilice un ciclo mientras en una funcin que calcule el
total de la compra, imprima el IVA, con cuanto paga y el cambio.
DATOS DE ENTRADA:
Respuesta para continuar (cad carcter)
Monto de venta (m fraccionario)
Cantidad pagada (cp fraccionario)
PROCESO:
Leer cad, m, cp
ivam*0.15.
tpm+iva.
cambiocp-tp.
cajacaja+tp.
Mostrar iva, tp, cambio, caja
DATOS DE SALIDA:
Cantidad de IVA (iva fraccionario)
Total a pagar (tp fraccionario)
Cantidad de cambio (cambio fraccionario)
Respuesta de salida (cad carcter)
Monto total en caja (caja faccionario)
PROGRAMA:

Void main(){
float caja=0;
float m, iva, tp, cp, cambio;
char cad;
cout<<"desea realizar venta s/n";
cin>>cad;
do{
cout<<" teclee el monto de la venta";
cin>>m ;
iva = m*0.15;
cout<<" el iva es de ", iva;
tp = m+iva;
cout<<" el total a pagar es de "<<tp;
cout<<" teclee cantidad con que paga el cliente";
cin>>cp;
cambio = cp-tp;
cout<<" el cambio es de "<<cambio;
cout<<" desea realizar venta s/n ";
cin>>cad;
caja = caja+tp;
} while(cad=='s');
cout<<" el monto total de la caja es de <<caja;
} //fin de principal
111

Universidad Autnoma del Carmen


Grupo Disciplinario de Sistemas Informticos

Solucin ejercicio 10.


Hacer una funcin que imprima los nmeros impares comprendidos entre el 400 y
1100.
DATOS DE ENTRADA:
Ninguno.
PROCESO:
Ninguno.
DATOS DE SALIDA:
Nmeros impares que hay entre 400 y 1100.
PROGRAMA:

void main(){
int i;
for(i=401; i<=1100; i+=2)
cout<< i<<" ";
} //fin de principal

Solucin ejercicio 11.


Escribir los pares de 100 nmeros proporcionados por el teclado.
DATOS DE ENTRADA:
Nmero dado (n entero)
PROCESO:
ninguno.
DATOS DE SALIDA:
Mostrar pares (n entero)
PROGRAMA:

void main(){
int n, i;
for(i=1; i<=100; i++){
cout<< i<<" ";
cout<<"ingresar numero"<<i<<: ;
cin>>n;
if (n % 2!= 1)
cout<<n<<" es numero par";
}//fin para
} //fin de principal

Solucin ejercicio 12.


Hacer una funcin que lea N edades y retorne el promedio de ellas.
112

Universidad Autnoma del Carmen


Grupo Disciplinario de Sistemas Informticos
DATOS DE ENTRADA:
Total de edades (e entero)
Edad de cads uno (ed entero)
PROCESO:
Leer e
Desde 1 hasta e
Leer ed
sumasuma+ed
promsuma/e
Mostrar prom
DATOS DE SALIDA:
tedades.
PROGRAMA:

void mani(){
float prom;
int e, suma=0;
int i, ed;
cout<<"cuantas edades a calcular ";
cin>>e;
for (i=a; i<=e; i++){
cout<<"ingresar edad";
cin>>ed;
suma = suma+ed;
}
prom = suma/e;
cout<<"el promedio de las edades es de "<<prom;
} //fin de principal

Solucin ejercicio 13.


Hacer una funcin que lea N cantidad de artculos vendidos y calcule la venta total
del impuesto, y las ganancias sabiendo que a cada producto se le gana un 35%.
DATOS DE ENTRADA:
total de artculos (N entero)
Costo de cada producto (cp fraccionario)
PROCESO:
Leer a
Desde 1 hasta N
o Leer cp
o sumasuma+cp
ventaim(suma*0.35)+suma
gananciaventaim-suma
Mostrar ventaim, ganancia
DATOS DE SALIDA:
Total de venta menos impuestos (ventaim fraccionario)
Total de ganancia (ganancia fraccionario)
PROGRAMA:
113

Universidad Autnoma del Carmen


Grupo Disciplinario de Sistemas Informticos
void main(){
int suma=0;
float cp, ventaim, ganancia;
int i, N;
cout<<"cuantos articulos vendidos";
cin>>N;
for (i=1; i<= N; i++){
cout<<"teclee costo del producto";
cin>>cp;
suma = suma+cp;
}
ventaim =(suma*0.35)+suma;
ganancia = ventaim-suma;
cout<<"Venta total con el impuesto es de "<<ventaim;
cout<<"la ganancia total es de "<<ganancia;
} //fin de principal

Solucin ejercicio 14.


Un entrenador ha propuesto a un atleta recorrer una ruta de 5 Km. Durante 10
das, para determinar si es apto para la prueba de 5 Km. O debe buscar otra
especialidad. Para considerarlo apto debe cumplir por lo menos una de las
siguientes condiciones:
Que en ninguna de las pruebas haga un tiempo menor a 15 minutos.
Que al menos en una de las pruebas realice un tiempo mayor a 16 minutos.
Que su promedio de tiempos sea mayor o igual a 15 minutos.
DATOS DE ENTRADA:
Tiempo en cada uno de los das (t entero)
PROCESO:
Desde 1 hasta 10
Leer t
menormenor+1.
Mayor mayor + 1
Pt pt + t
promediopt/10
Mostrar mensaje
DATOS DE SALIDA:
Mensaje es apto para la prueba o no es apto para la prueba
PROGRAMA:

Void main(){
int t, i, pt;
int menor=0;
int mayor=0;
int promedio=0;
for (i=1; i<=10; i++){
114

Universidad Autnoma del Carmen


Grupo Disciplinario de Sistemas Informticos
cout<<"en que tiempo realizo la prueba";
cin>>t;
menor = t;
if(t<15)
break;
else
if(t>16)
mayor = mayor + 1;
pt = pt + t;
}//fin de para
promedio = pt/10;
if(mayor>=1 && pt>=15 && menor<15)
cout<<es apto para la prueba
else
cout<<No es apto para la prueba
} //fin de principal

Solucin ejercicio 15.


Una persona desea invertir su dinero en un banco, el cual le otorga un 2% de
inters Cul ser la cantidad de dinero que esta persona tendr al cabo de un
ao si la ganancia de cada mes es reinvertida?
DATOS DE ENTRADA:
Cantidad de dinero inicial (c fraccionario)
PROCESO:
Leer c
Desde 0 hasta 12 hacer
cc*0.02+c.
Mostrar c
DATOS DE SALIDA:
Cantidad de dinero final (c fraccionario)
PROGRAMA:

void main(){
float i, c=0;
cout<<"que cantidad va a invertir";
cin>>c;
for (i=0; i<=12; i++)
c = c*0.02+c;
cout<<"obtendra la cantidad de "<<c;
} //fin de principal

Solucin ejercicio 16.


Calcule la suma siguiente: 100+99+98+97+96+95+.................+5+4+3+2+1+0.
115

Universidad Autnoma del Carmen


Grupo Disciplinario de Sistemas Informticos
DATOS DE ENTRADA:
ninguno.
PROCESO:
para i desde 100 hasta 0, dec en 1
sumasuma+i.
Mostrar suma
DATOS DE SALIDA:
Valor de la suma (suma entero)
PROGRAMA:

void main(){
int i;
int sum=0;
for (i=100; i<=0; i--)
suma = suma+i;
cout<<"la suma es de "<<suma;
} //fin de principal

Solucin ejercicio 17.


Hacer un programa que calcule P = XY.
DATOS DE ENTRADA:
Valores de base y exponente( x, y enteros)
PROCESO:
Leer x, y
Desde 1 hasta y hacer: popo*x
mostrar po
DATOS DE SALIDA:
Potencia (p entero)
PROGRAMA:

void main(){
int x, y, i, po=1;
cout<<Introduzca numero para x: ";
cin>>x;
cout<<"introduzca numero para y: ";
cin>>y;
for (i=1; i<=y; i++)
po = po * x;
cout<<"el resultado es "<<po;
} //fin de principal

Solucin ejercicio 18.


Hacer un programa que calcule S = f/x1 + f/x2 + - - - - - - - + f/xn. Utilice la
solucin del problema (P = X y).
116

Universidad Autnoma del Carmen


Grupo Disciplinario de Sistemas Informticos
DATOS DE ENTRADA:
Valores de ( x, y entero)
Valor de f (f fraccionario)
PROCESO:
Leer f, x, y
Desde 1 hasta Y hacer
o po =po *y
o s s + f/po
Mostrar suma
DATOS DE SALIDA:
Suma total (s fraccionario)
PROGRAMA:

void main(){
int x, y, po=1, i;
float f, s=0;
cout<<"introduzca numero para f: ";
cin>>f;
cout<<"introduzca numero para x: ";
cin>>x;
cout<<"introduzca numero para y: ";
cin>>y;
for (i=1; i<=y; i++){
po = po *y;
s = s + (f / po);
}
cout<<"el resultado es "<<s;
} //fin de principal

Solucin ejercicio 19.


Hacer un algoritmo que lea 50 consumos en una cafetera si el consumo ingresado
excede los 100, se har un descuento de 7%, mostrar todos los pagos
desglosados (sobtotal, descuento y total de cada uno) y el pago total o acumulado.
DATOS DE ENTRADA:
Cada uno de los consumos (consumo fraccionario)
PROCESO:
Desde 1 hasta 50 hacer
i. Leer consumo
ii. Si consumo>100
1. desc desc * 0.07
2. tot consumo desc
3. PagoT pagoT + tot
4. Mostrar consumo, desc, tot
Mostrar PagoT
DATOS DE SALIDA:
117

Universidad Autnoma del Carmen


Grupo Disciplinario de Sistemas Informticos

Consumo
desc
tot
PagoT

PROGRAMA:

void main(){
int i;
float consumo, desc, tot, PagoT = 0.0;
for(i=1; i<=50; i++){
cout<<"teclee consumo: ";
cin>>consumo;
if(consumo > 100.00)
desc = consumo * 0.07;
else
desc = 0.0;
tot = consumo desc;
PagoT PagoT + tot;
cout<<Subtotal = <<consumo<<endl;
cout<<Descuento = <<desc<<endl;
cout<<Total = <<tot<<endl;
} //fin para
cout<<\nPago Total: <<PagoT;
} //fin de principal

Solucin ejercicio 20.


Dada N notas calcular el promedio de las notas aprobadas y el promedio de las
notas desaprobadas.
DATOS DE ENTRADA:
Total de notas (N entero)
Cada una de las notas (nota fraccionario)
PROCESO:
Leer N
Desde 1 hasta N hacer
Leer nota
Segn sea nota
Acumular nota en: suma1 o suma2
Incrementar 1 en: C o S
Calcular pa, pd
Mostrar pa, pd
DATOS DE SALIDA:
Promedio de aprobadas (pa fraccionario)
Promedio de desaprobadas (pd fraccionario)
PROGRAMA:

void main(){
int N, i, CA=0, CR=0;
float nota, suma1=0, suma2=0, Pa, Pr;
118

Universidad Autnoma del Carmen


Grupo Disciplinario de Sistemas Informticos
cout<<Cuantas notas son?;
cin>>N;
for(i=1; i<=N; i++){
cout<<dar nota:;
cin>>nota;
if (nota>=70){
Suma1 = Suma1+nota;
CA = CA+1;
}
else{
Suma2 = Suma2+nota;
CR = CR+1;
}
} //fin para
Pa = suma1\CA;
Pr = suma2\CR;
cout<<Promedio de aprobadas: <<Pa;
cout<<Promedio de desaprobadas: <<pr;
}

Solucin ejercicio 21.


A una fiesta asistieron personas de diferentes edades y sexos. Construir un
algoritmo dadas las edades y sexos de las personas. Calcular :
-Cuantas personas asistieron a la fiesta
-Cuantos hombres y cuantas mujeres
-Promedio de edades por sexo
-La edad de la persona ms joven que asisti
-No se permiten menores de edad a la fiesta
-Ingresar datos hasta que se ingrese una edad a cero
DATOS DE ENTRADA:
suma de edades de varones (sev entero)
suma de edades de mujeres (sem entero)
asistentes (A entero)
varones (V entero)
mujeres (M entero)
edad (e entero)
sexo (s carcter)
PROCESO:
Leer e
Mientras e <> 0 hacer
Si e>= 18
Leer S
Acumular e en sumaE
Acumular 1 en A
Segn sea S
Acumular 1 en V o M
Acumular e en sev o sem
Segn sea e
119

Universidad Autnoma del Carmen


Grupo Disciplinario de Sistemas Informticos

Menor e
Incrementar 1 en: C o S
Sino
Mensaje Menor de edad
Calcular pm, pv
Mostrar pm, pv,menor,a,m,v

DATOS DE SALIDA:
Promedios: mujeres, varones (pm, pv fraccionario)
Asistentes, contadores (A, menor, m, v enteros)
PROGRAMA:

void main(){
int e, Sev=0, Sem=0, A=0, V=0;
float pm, pv;
cout<<Teclea la edad: ;
cin>>e;
Menor = e;
while (e<>0){
if (e>=18){
a = a+1;
if (s == "m"){
m = m+1;
sem = sem+e;
else {
v = v+1;
sev = sev+e;
}
if (e<menor)
menor = e;
}
else
cout<<"No puede entrar menor de edad\n";
cout<<Teclea la edad: ;
cin>>e;
} //fin mientras
pm = sem\m;
pv = sev\v;
cout<<\nPromedio de edad de mujeres <<pm;
cout<<\n Promedio de edad de varones: <<pv;
cout<<\n Edad del menor: <<menor;
cout<<\n Total de asistentes: <<a;
cout<<\n Total de mujeres: <<m;
cout<<\n Total de varones: <<v;
}

120

Universidad Autnoma del Carmen


Grupo Disciplinario de Sistemas Informticos

FUENTES CONSULTADAS
[monog]

Ortez, Manuel Antonio Ortez, Manual de programacin en el


lenguaje C, http://www.monografias.com/trabajos33/programacionlenguaje-c/programacion-lenguaje-c.shtml

[Gottfried2005] Byron Gottfried, Byron. Programacin en C, McGrawHill, 2


ediccin, 2005.
[Cerquera2001]
Cerquera Rojas, Yamil Armando (Docente Universidad
Surcolombiana), Algoritmica para programacin, Neiva Huila
Colombia, 2001.
[Rivas1985] Rivas, Dolores y Salas Rgulo, (1985) Introduccin a la
Computacin. Tercera Edicin Esprosistemas
[Joyanes2003] Joyanes Aguilar, Luis (2003) Fundamentos de la programacin.
Ed. McGrawHill. Espaa. 1004 pgs.
[Oviedo2003] Oviedo Regino, Efrain (2003) Lgica de programacin. Ed.
Ecoediciones. Espaa. 213 pgs.
[Pastrana2003] Pastrana Brincones, Jos Luis. Elementos de Programacin. 1A
E.T.S.I. Informtica Gestin, 2003.
[Besembel2010] Besembel. Apuntes UNIDAD 1.-La computadora digital y
desarrollo de programas, del curso de Programacin I, Universidad
del los Andes, Julio 2010.
[deitel2005] H.M Deitel & PJ Deitel,Como programar en C++. Editorial Pearson,
2 edicin, ISBN: 978-9702602545, 2004.

121

También podría gustarte