Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Apuntes Programacion 2
Apuntes Programacion 2
Programacin I
ALGORITMOS
Introduccin.
El desarrollo de algoritmos es un tema fundamental en el diseo de programas o soluciones. Por
lo cual el alumno debe tener buenas bases que le sirvan para poder desarrollar de manera fcil y
rpida sus programas.
Qu es un algoritmo?
La palabra algoritmo se deriva de la traduccin al latn de la palabra rabe alkhowarizmi, nombre
de un matemtico y astrnomo rabe que escribi un tratado sobre manipulacin de nmeros y
ecuaciones en el siglo IX.
Un algoritmo es una serie de pasos organizados que describe el proceso que se debe
seguir, para dar solucin a un problema especfico.
Formas de representar algoritmos.
Los algoritmos pueden ser expresados de muchas maneras, incluyendo al lenguaje natural,
pseudocdigo, diagramas de flujo y lenguajes de programacin entre otros. Ms adelante se
vern los diagramas de flujo y pseudocdigo.
Pasos a seguir para resolver un problema mediante un algoritmo.
1. Anlisis del problema.
Una vez que se ha comprendido lo que se desea hacer, es necesario definir:
- Datos de entrada.
- Datos de salida
- El proceso que se debe realizar para obtener la salida.
Datos de
Entrada
Proceso
Datos de
Salida
Ingeniera de Sistemas
Programacin I
Ejemplo 1:
Problema: Sumar dos nmeros introducidos por teclado.
Anlisis:
Datos de Entrada: -> 2 nmeros - (variables A y B)
Datos de Salida: -> 1 nmero - (variable C)
Proceso: -> sumar los 2 nmeros y asignrselo a un tercero - (C=A+B)
DIAGRAMA DE FLUJO
PRUEBA DE ESCRITORIO
Variables
A
B
C
Pantalla
6
7
13
13
INICIO
A,B
C=A+B
FIN
Ingeniera de Sistemas
Programacin I
Ejemplo 2:
Problema: Calcular el promedio de 3 nmeros introducidos por teclado.
Ejemplo:
Entrada
Salida
6 7 2
5
Anlisis:
Datos de Entrada: -> 3 nmeros - (variables x, y, z)
Datos de Salida: -> 1 nmero - (variable prom)
Proceso: -> obtener el promedio de 3 nmeros (prom=(x+y+z)/3)
DIAGRAMA DE FLUJO
PRUEBA DE ESCRITORIO
Variables
INICIO
x y z prom Pantalla
6 7 2 5
5
x,y,z
prom=(x+y+z)/3
prom
FIN
Ejemplo 3:
Problema: Dado una distancia en metros convertir a sus correspondientes en centmetros y
milmetros.
Ejemplo:
Entrada
Salida
6
600 6000
Anlisis:
Datos de Entrada: -> 1 nmero - (variable m)
Datos de Salida: -> 2 nmeros - (variables cm , mm)
Proceso: -> para el proceso es necesario analizar la relacin
1 metro = 100 centmetros
1 centmetro = 10 milmetros
DIAGRAMA DE FLUJO
PRUEBA DE ESCRITORIO
variables
INICIO
m cm mm pantalla
6 600 6000 600 6000
m
cm = m * 100
mm = cm *10
cm , mm
FIN
3
Ingeniera de Sistemas
Programacin I
Expresiones Lgicas
Una expresin lgica nicamente puede tomar dos valores Falso (false) o verdadero (true)
Operadores de Relacin
Operador
>
<
>=
<=
==
!=
Significado
Mayor que
Menor que
Mayor o igual que
Menor o igual que
Igual que
Diferente que
Ejemplo
6>5
6<5
6 >= 5
6 <= 5
6 == 5
6 != 5
Resultado
Verdadero
Falso
Verdadero
Falso
Falso
Verdadero
Operadores Lgicos
Existen 3 operadores lgicos: y o - negacin
&
||
Tablas de verdad
P
V
V
F
F
Q
V
F
V
F
&
V
F
F
F
P
V
V
F
F
Q
V
F
V
F
Ejemplos:
Expresin
Resultado
(3>2)&(2==2)
Verdadero
(2<=4)&(4!=5)
Verdadero
(4==5)||(4>5)
Falso
(4>=4)||(5==6)
Verdadero
(9<=8)&(6>5)
Falso
SI
CONDICIN ?
NO
||
V
V
V
F
Ingeniera de Sistemas
Programacin I
9
8 2
8
inicio
A,B
si
A>=B
no
B
fin
Problema: Dado 1 nmero por teclado, visualizar si es par o impar
Ejemplos: Entrada
Salida
6
par
9
impar
Problema: Dos Nmero son aceptables si la suma de ambos es menor que 10 o mayor que 20.
Realice un algoritmo que dado 2 nmeros por teclado determinar si son aceptables o no
aceptables
Ejemplos: Entrada
5 2
12 5
25 1
Salida
Aceptables
No Aceptables
Aceptables
inicio
M,N
R=M+N
si
(R<10)||(R>20)
No aceptables
Aceptables
no
fin
Ingeniera de Sistemas
Programacin I
Entrada
7
0
-6
Salida
positivo
cero
negativo
PROBLEMA: Algoritmo que dado un nmero por teclado, segn sea el nmero mostrar: malo si
el nmero es menor que 50, bueno si el nmero es mayor que 50 y menor que 75, y excelente
si el nmero es mayor que 75
Ejemplos:
Entrada
60
40
82
Salida
bueno
malo
excelente
PROBLEMA: Algoritmo que permite insertar 3 nmeros por teclado y visualiza el mayor
Ejemplos:
Entrada
6 5 8
7 9 2
4 3 1
Salida
8
9
4
Ingeniera de Sistemas
Programacin I
PROBLEMA: Algoritmo que visualice divisibles si de dos nmeros introducidos por teclado uno
le divide al otro, y no divisibles si ninguno le divide al otro.
Ejemplos: Entrada
6 3
4 8
3 7
Salida
divisibles
divisibles
no divisibles
Ingeniera de Sistemas
Programacin I
Si cumple la condicin
entra al bucle
Ejemplos:
Algoritmo que permite visualizar en pantalla los
primeros N nmeros naturales
Ejemplo: Entrada
Salida
7
1234567
Ingeniera de Sistemas
Programacin I
Ingeniera de Sistemas
Programacin I
Qu es C++?
C++ es un lenguaje de programacin creado a mediados de los aos 1980 por BJarne Stroustrup. La intencin de su
creacin fue extender al exitoso lenguaje de programacin C con mecanismos que permitan la manipulacin de
objetos.
Qu es un compilador?
Un compilador es un programa que permite traducir el cdigo fuente de un programa en lenguaje mquina. De
esta manera un programador puede disear un programa en un lenguaje mucho ms cercano a cmo piensa un ser
humano, para luego compilarlo a un programa ms manejable por una computadora.
CODIGO FUENTE
LENGUAJE MAQUINA
#include<iostream.h>
void main()
{
cout<<hola mundo;
}
COMPILAR
000010101010100011110010
101100101010010100101010
101010101010010101010101
010010101010000101010100
010101010101010100101010
+
*
/
%
VARIABLES
Una variable se define como un identificador que se utiliza para almacenar todos los datos generados durante la
ejecucin de un programa, por ejemplo con, sum, A, B, C, con2, con3, etc.
Existen ciertas reglas en cuanto a variables.
- Las variables deben ser claras y con referencia directa al problema.
- No debe tener espacios blancos, ni smbolos extraos en ellas (por ejemplo: con 1, sum A, &e, %r, etc.)
- No deben ser palabras reservadas del lenguaje (por ejemplo: cin, if, while, void, switch, else, etc.)
10
Ingeniera de Sistemas
Programacin I
#include<iostream.h>
Declaracin de libreras
void main()
Declaracin de la funcin principal (main)
{
Inicio de bloque
// cuerpo del programa
}
fin de bloque
De diagramas de flujo a C++
Para aprender a programar es recomendable primeramente aprender a realizar algoritmos mediante Diagramas de
Flujo, como nosotros ya sabemos realizar diagramas de flujo el siguiente paso ser codificar al lenguaje C++ los
algoritmos realizados mediante diagramas de flujo, para lo cual, primero veremos la representacin en C++ de los
smbolos de los diagramas de flujo:
DIAGRAMA DE FLUJO
A,B
A,B
si
A>=B
no
B
con<N
no
PSEUDOCODIGO
leer A,B
C++
cin>>A>>B;
mostrar A,B
cout<<A<<B;
si(A>=B)
mostrar A
sino
mostrar B
if(A>=B)
cout<<A;
else
cout<<B;
mientras(con<N)
con=con+1
while(con<N)
con=con+1
si
con=con+1
Ejemplos:
11
Ingeniera de Sistemas
Programacin I
PSEUDOCODIGO
inicio
#include<iostream.h>
void main()
{
int A;
int B;
A=4;
B=7;
C=A+B;
cout<<C;
}
A=4
B=7
C=A+B
C
C++
Inicio
A=4
B=7
C=A+B
mostrar C
fin
fin
Ejemplo 2. Algoritmo que suma dos nmeros introducidos por teclado
DIAGRAMA DE FLUJO
PSEUDOCODIGO
inicio
#include<iostream.h>
void main()
{
int A;
int B;
cin>>A;
cin>>B;
C=A+B;
cout<<C;
}
A
B
C=A+B
C
C++
Inicio
leer A
leer B
C=A+B
mostrar C
fin
fin
12
Ingeniera de Sistemas
Programacin I
Ejemplo 3. Algoritmo que permite introducir 2 nmeros por teclado y visualiza el mayor
DIAGRAMA DE FLUJO
PSEUDOCODIGO
inicio
A,B
si
A>=B
Inicio
leer A,B
si(A>=B)
mostrar A
sino
mostrar B
fin
no
B
fin
C++
#include<iostream.h>
void main()
{
int A;
int B;
cin>>A>>B;
if(A>=B)
cout<<A;
else
cout<<B;
}
Ejemplo 4. Algoritmo que permite introducir 2 nmeros por teclado, visualiza iguales si ambos son iguales caso
contrario visualiza el mayor
DIAGRAMA DE FLUJO
C++
inicio
A,B
si
iguales
A==B
si
A
fin
no
A>B
no
B
#include<iostream.h>
void main()
{
int A;
int B;
cin>>A>>B;
if(A==B)
cout<<iguales;
else
if(A>B)
cout<<A;
else
cout<<B;
}
Ejemplo 5. Algoritmo que dado un nmero por teclado (un nmero entre 1 y 100) segn sea el nmero mostrar
malo si el nmero es menor a 50, bueno si el nmero es mayor que 50 y menor que 75, y excelente si el
nmero es mayor que 75.
13
Ingeniera de Sistemas
Programacin I
DIAGRAMA DE FLUJO
C++
#include<iostream.h>
void main()
{
int A;
cin>>A;
if(A<50)
cout<<malo;
else
if(A<75)
cout<<bueno;
else
cout<<excelente;
}
Ejemplo 6. Programa que permite visualizar en pantalla los primeros N nmeros naturales
DIAGRAMA DE FLUJO
inicio
N
con=1
con<=N
si
con
con=con+1
no
fin
PSEUDOCODIGO
C++
#include<iostream.h>
void main()
{
int N;
Inicio
int con;
leer N
cin>>N;
con=1
con=1;
mientras(con<=N)
while(con<=N)
mostrar con
{
con=con+1
cout<<con;
fin
con=con+1;
}
}
Nota.- cuando hay ms de una accin en if, else y while se debe empezar y
terminar el bloque con llaves { }
14
Ingeniera de Sistemas
Programacin I
Ejemplo 7. Programa que visualiza la cantidad de nmeros pares, de N nmeros introducidos por teclado.
DIAGRAMA DE FLUJO
C++
#include<iostream.h>
void main()
{
int N,con,p,num;
cin>>N;
con=0;
p=0;
while(con<N)
{
cin>>num;
if(num%2==0)
p=p+1;
con=con+1;
}
cout<<p;
}
Ejemplo 8. Programa que dado un nmero por teclado visualiza si es primo o no es primo
DIAGRAMA DE FLUJO
C++
#include<iostream.h>
void main()
{
int num,con,c;
cin>>num;
con=1;
c=0;
while(con<=num)
{
if(num%con==0)
c=c+1;
con=con+1;
}
if(c<=2)
cout<<primo;
else
cout<<no primo;
}
15
Ingeniera de Sistemas
Programacin I
Ejemplo 9. Programa que dado un nmero por teclado, visualiza la sumatoria de sus dgitos
DIAGRAMA DE FLUJO
C++
#include<iostream.h>
void main()
{
int A,sum;
cin>>A;
sum=0;
while(A>0)
{
dig=A%10
sum=sum+dig
A=A/10
}
cout<<sum;
}
Ejemplo 10.Programa que permite insertar N nmeros por teclado, posteriormente visualiza cuntos son menores
que 10, cuntos estn entre 10 y 20, y cuntos son mayores que 20
DIAGRAMA DE FLUJO
C++
#include<iostream.h>
void main()
{
int N,con,may,men,entre,num;
cin>>N;
con=1;
may=0;
men=0;
entre=0;
while(con<=N)
{
cin>>num;
if(num<10)
men=men+1;
else
if(num<20)
entre=entre+1;
else
may=may+1;
con=con+1;
}
cout<<men<<entre<<may;
}
16
Ingeniera de Sistemas
Programacin I
C++
SALTO DE LNEA.- el salto de lnea es cuando la lnea de impresin en pantalla salta a la siguiente
lnea de la pantalla. Se puede saltar de lnea de 2 formas
-
COMENTARIOS .- cuando se escriben programas es muy til agregar comentarios que ayuden a
explicar lo que realiza un programa. En C++ se pueden utilizar dos tipos de comentarios:
Por bloque /* comentario por bloque */
Por lnea // comentario por lnea
Condicion1
NO
SI
Condicion2
SI
Acciones
NO
while(condicion1)
{
while(condicion2)
{
Acciones
}
}
Ejemplos:
1. Programa que visualiza en pantalla segn sea N por teclado
Ejemplo
Salida
4
1
1 2
1 2 3
1 2 3 4
17
Ingeniera de Sistemas
Programacin I
DIAGRAMA DE FLUJO
Inicio del
while
C++
/* ejemplo 1
De bucles anidados */
#include<iostream.h>
void main()
{
int N,a,b;
cin>>N; //lee N por teclado
a=1;
while(a<=N)
{
b=1;
while(b<=a)
{
cout<<b<< ;
b=b+1;
}
cout<<endl; //salta de lnea
a=a+1;
}
}
NO
SI
Inicio del
while
NO
SI
fin del
while
Fin del
while
18
Ingeniera de Sistemas
Programacin I
C++
/* ejemplo 2
De bucles anidados */
#include<iostream.h>
{
int N,num,cant,con,c;
num=1;
cant=0;
while(cant<N)
{
con=1;
c=0;
while(con<=num)
{
If(num%con==0)
c=c+1;
con=con+1;
}
If(c<=2)
{
cout<<num;
cant=cant+1;
}
num=num+1;
}
}
19
Ingeniera de Sistemas
Programacin I
do
acciones
si
acciones
no
while(condicin)
condicin
A continuacin veremos un ejemplo con while y con do-while para ver las pequeas diferencias:
Algoritmo que visualiza en pantalla los primeros N nmeros naturales
WHILE
DO WHILE
inicio
inicio
#include<iostream.h>
void main()
{
int N,con;
cin>>N;
con=1;
do
{
cout<<con;
con=con+1;
}
while(con<=N);
}
con=1
con<=N
si
con
C++
con=1
no
con
fin
con=con+1
con=con+1
si
con<=N
no
fin
Nota.- Slo en la estructura do-while se debe colocar ; (punto y coma) despus de la condicin
20
Ingeniera de Sistemas
Programacin I
Salida
5
6
2
3
#include <iostream.h>
void main()
{
int A,dig;
cin>>A;
do
{
dig=A%10;
cout<<dig<<endl;
A=A/10;
}
while(A>0);
}
2. Programa que permite insertar N nmeros por teclado y posteriormente visualiza cuntos son pares
Ejemplo:
Entrada
5
5 6 4 7 9
Salida
2
#include <iostream.h>
void main()
{
int N,con,num,par;
cin>>N;
con=1;
par=0;
do
{
cin>>num;
if(num%2==0)
par=par+1;
con=con+1;
}
while(con<=N);
cout<<par;
}
21
Ingeniera de Sistemas
Programacin I
Variable con
condicin inicial
Condicin
i
Fin del bucle
inicio
#include<iostream.h>
void main()
{
int i;
for(i=1;i<5;i=i+1)
cout<<I<<endl;
}
inicio
1. Programa que permite insertar N nmeros por teclado y visualiza cuntos son pares.
#include <iostream.h>
void main()
{
int N,i,num,par;
cin>>N;
par=0;
for(i=0;i<N;i++)
{
cin>>num;
if(num%2==0)
par=par+1;
}
cout<<par;
}
22
Ingeniera de Sistemas
Programacin I
2. Programa que permite insertar N nmeros por teclado, y posteriormente visualiza el nmero ms grande.
Ejemplo: Entrada
6
7 2 5 9 1 4
Salida
9
#include <iostream.h>
void main()
{
int N,i,num,may;
cin>>N;
may=0;
for(i=0;i<N;i++)
{
cin>>num;
if(num>may)
may=num;
}
cout<<may;
}
3. Programa que visualiza en pantalla la serie que se muestra en el ejemplo, segn N introducido por teclado
Ejemplo:
Entrada
4
Salida
1
12
123
1234
#include <iostream.h>
void main()
{
int N,i,j;
cin>>N;
for(i=1;i<=N;i++)
{
for(j=1;j<=i;j++)
cout<<j<<" ";
cout<<endl;
}
}
23
Ingeniera de Sistemas
Programacin I
CASTELLANO
Statement missing ;
Compound statement missing }
ERRORES DE LGICA.Ocurre cuando una aplicacin no realiza lo esperado, este tipo de errores son difciles de encontrar porque
sintcticamente puede ser cdigo vlido y ejecutarse sin realizar ninguna operacin invlida pero puede producir
resultados incorrectos, la nica forma de verificar su funcionamiento es probar y analizar los resultados.
24
Ingeniera de Sistemas
Programacin I
ESPACIO EN MEMORIA
RANGO
Char
Short
8 bits (1 byte)
16 bits (2 bytes)
unsigned short
16 bits (2 bytes)
int
32 bits (4 bytes)
unsigned int
long (int)
unsigned long
Float
Double
long doubl
32 bits (4 bytes)
64 bits (4 bytes)
64 bits (4 bytes)
32 bits (4 bytes)
64 bits (8 bytes)
80 bits (10 bytes)
float c=a/b;
cout<<c;
}
Nota.- Aunque la variable c es de tipo float el resultado ser 3, un valor entero, esto es debido a
que el numerador de la divisin es de tipo entero
#include <iostream.h>
void main()
{
float a=7;
int b=2;
float c=a/b;
cout<<c;
}
25
Ingeniera de Sistemas
Programacin I
Ahora el resultado ser 3.5, un valor de tipo float (nmero real), esto es debido a que el
numerador ahora es de tipo float
#include <iostream.h>
void main()
{
int a=7,b=2;
float c=(float) a / b;
cout<<c;
}
Un nmero o una variable de tipo int, se puede convertir a tipo float antecediendo al mismo la
sentencia (float), como se muestra en el programa anterior. El resultado del programa ser 3.5,
debido a que el numerador ahora es de tipo float.
EJERCICIOS
1. Programa que permite insertar 3 nmeros enteros por teclado y visualiza el promedio.
Ejemplo: Entrada
Salida
2
4,33333
8
3
#include <iostream.h>
void main()
{
int a,b,c;
float prom;
cin>>a>>b>>c;
prom=(float)(a+b+c)/3;
cout<<prom;
}
2. Programa que permite insertar 3 nmeros reales por teclado y visualiza el promedio.
Ejemplo: Entrada
Salida
2.0
4,33333
8.0
3.0
#include <iostream.h>
void main()
{
float a,b,c;
float prom;
cin>>a>>b>>c;
prom=(a+b+c)/3;
cout<<prom;
26
Ingeniera de Sistemas
Programacin I
}
3. Programa que permite insertar N nmeros enteros por teclado y visualiza el promedio.
Ejemplo: Entrada
Salida
5
3,2
2 2 3 4 5
#include <iostream.h>
void main()
{
int N,con,num,sum;
float prom;
cin>>N;
sum=0;
con=0;
while(con<N)
{
cin>>num;
sum=sum+num;
con++; //esto es igual que con=con+1
}
prom=(float)(sum)/N;
cout<<prom;
}
4. Programa que permite visualizar la sumatoria de los primeros n elementos de la siguiente serie:
Ejemplos: Entrada
1
2
Salida
0,5
1,166
#include <iostream.h>
void main()
{
int n,con=0;
float nume=1,deno=2,sum=0;
cin>>n;
while(con<n)
{
sum=sum+(nume/deno);
nume++;
deno++;
con++;
}
cout<<sum;
}
27
Ingeniera de Sistemas
Programacin I
LIBRERAS
Una librera o biblioteca es un conjunto de funciones prefabricadas que pueden ser utilizados por el programador
para realizar determinadas operaciones, las mismas deben ser declaradas al inicio del programa (en la cabecera con la
sentencia include). Como ejemplo citaremos algunas libreras.
iostream.h esta librera contiene funciones que permiten la entrada y salida de datos de un programa, es decir
gracias a esta librera podemos utilizar las sentencias cin y cout.
math.h contiene funciones matemticas
string.h contiene funciones que permiten trabajar con cadenas.
time.h contiene funciones que ayudan en la manipulacin de la fecha y hora
stdlib.h
conio.h
LIBRERA math.h
La librera math.h nos proporciona funciones y constantes matemticas, a continuacin detallamos las ms utilizadas.
double pow(double x, double y) Devuelve el valor de x elevado a y.
double sin(double x) Devuelve el seno de x.
double cos(double x) devuelve el coseno de x
double acos(double x) Calcula el arco coseno de x.
double asin(double x) Calcula el arco seno de x.
double atan(double x) Devuelve el arco tangente en radianes.
double exp(double x) Devuelve el valor de e (la base de los logaritmos naturales) elevado a la potencia x.
double floor(double x) Redondea x hacia abajo al entero ms cercano.
int abs(int j) Calcula el valor absoluto de un entero.
double log(double x); Devuelve el logaritmo neperiano de x.
double log10(double x) Devuelve el logaritmo decimal de x.
double sqrt(double x) Devuelve la raz cuadrada no negativa de x.
double tan(double x) Devuelve la tangente de x.
Nota.- Los datos que reciben las funciones trigonomtricas son en radianes
Constantes matemticas
M_E La base de los logaritmos naturales e.
M_LOG2E El logaritmo de e de base 2.
M_LOG10E El logaritmo de e de base 10.
M_PI
M_PI_2
28
Ingeniera de Sistemas
Programacin I
x
1 x3
#include <iostream.h>
#include <math.h>
void main()
{
double y,x;
cin>>x;
y=x/(1-pow(x,3));
cout<<y;
}
2. Programa que calcula el valor de y.
sen( x)
ex
#include <iostream.h>
#include <math.h>
void main()
{
double y,x;
cin>>x;
y=(sqrt(sin(x)))/exp(x);
cout<<y;
}
29
Ingeniera de Sistemas
Programacin I
break;
cout<<num<<" ";
num=num+1;
}
}
Segn la condicin del while (mientras num<=10) la variable num debera llegar hasta el valor 10, es decir, la salida
del programa debera ser:
1 2 3 4 5 6 7 8 9 10
Pero no tendr esa salida, la salida ser:
1 2 3 4
Porque cuando la variable num llegue a 5 la sentencia break rompe el bloque del ciclo while
Ejemplo 2.
Programa que permite insertar nmeros por teclado indefinidamente, de cada nmero introducido se mostrar si es
par o impar, el programa terminar cuando el nmero introducido sea 0.
Ejemplo
Entrada
Salida
3
impar
2
par
7
impar
9
impar
10
par
13
impar
0
#include <iostream.h>
void main()
{
int num;
while(1==1)
{
30
Ingeniera de Sistemas
Programacin I
cin>>num;
if(num==0)
break;
if(num%2==0)
cout<<"par"<<endl;
else
cout<<"impar"<<endl;
}
}
Ejemplo 3.
La sentencia break tambin es muy til para mejorar la eficiencia de los algoritmos, sobre todo para evitar ciclos
innecesarios, como veremos a continuacin.
Un nmero trial es cuando en sus dgitos existe por lo menos un 3, por ejemplo 234, 1353 y 5423 son nmeros
trial.
Realice un programa que dado un nmero por teclado visualice si es o no es trial.
Solucin:
#include <iostream.h>
void main()
{
int num,dig,tri;
tri=0;
cin>>num;
while(num>0)
{
dig=num%10;
if(dig==3)
{
tri=1;
break;
}
num=num/10;
}
if(tri==0)
cout<<"NO es trial";
else
cout<<"es trial";
}
El algoritmo consiste en utilizar una variable tri que inicializa en 0, si el nmero tiene algn digito 3 esta variable
toma el valor de 1 lo cual nos indica que el nmero si es trial. La sentencia break nos sirve para saltar el bucle while
cuando encuentra un dgito 3 ya que sera innecesario seguir consultando los dems dgitos porque es suficiente que
en el nmero haya un dgito 3.
31
Ingeniera de Sistemas
Programacin I
SENTENCIA SWITCH
La sentencia switch da una alternativa mucho ms refinada a la necesidad de utilizar o implementar mltiples
sentencias condicionales if cuando deseamos que una determinada variable tome diferentes valores para cada
condicin.
Dentro de la sentencia switch es necesario la implementacin de , - (abrir/cerrar el ciclo); tambin para cada case
(en espaol caso), es necesario que al final de cada case se rompa la misma con la sentencia break; la palabra default
se utiliza para realizar algunas acciones en caso de que no cumpla ninguna de los anteriores casos.
A continuacin veremos algunos ejemplos:
Ejemplo 1.
Programa que dado un nmero por teclado visualiza su correspondiente da de la semana.
#include <iostream.h>
void main()
{
int dia;
cout<<"introduzca un numero";
cin>>dia;
switch(dia)
{
case 1: cout<<"lunes";
break;
case 2: cout<<"martes";
break;
case 3: cout<<"miercoles";
break;
case 4: cout<<"jueves";
break;
case 5: cout<<"viernes";
break;
case 6: cout<<"sabado";
break;
case 7: cout<<"domingo";
break;
default: cout<<"no es dia de la semana";
32
Ingeniera de Sistemas
Programacin I
}
}
Ejemplo2.
Programa que permite introducir 2 nmeros y posteriormente nos pide una operacin matemtica (+ , - , * , / ) y
segn la operacin matemtica que se introduzca visualiza el resultado correspondiente.
#include <iostream.h>
void main()
{
int A,B,D;
char ope;
cout<<"introduzca dos numeros";
cin>>A>>B;
cout<<"introduzca una operacion matematica";
cin>>ope;
switch(ope)
{
case '+': D=A+B;
cout<<D;
break;
case '-': D=A-B;
cout<<D;
break;
case '*': D=A*B;
cout<<D;
break;
case '/': D=A/B;
cout<<D;
break;
default: cout<<"no es operacion matematica";
}
}
33
Ingeniera de Sistemas
Programacin I
ARREGLOS (ARRAYS)
Los arreglos son estructuras de datos que consisten en elementos de informacin del mismo tipo relacionados entre
s. Los arreglos son estructuras de datos estticas porque su tamao no cambia una vez que han sido creadas.
Un arreglo es un grupo de posiciones contiguas de memoria, las cuales tienen el mismo nombre y el mismo tipo.
Los arreglos pueden ser unidimensionales (vectores) bidimensionales (matrices).
Ejemplo:
MATRIZ
VECTOR
12 14 17 8
10
19
13
92
24
10 4
VECTORES
8
Todos los datos de un vector deben ser del mismo tipo de dato.
Cmo algunos ejemplos de vectores podramos tener:
Vector de Enteros
12 14 17 8
10
19
Vector de Reales
1.3 0.05
4.0
Vector de Caracteres
13
92
Bolivia Argentina
Vector de Cadenas
Per
%
Uruguay Brasil
12 14 17 8
10
19
13
92
Cada elemento de un vector tiene una posicin, la misma que empieza en cero
vec =
POSICIONES
12
vec[0]
14
17
19
13
vec[1]
vec[2]
vec[3]
vec[4]
vec[5]
vec[6]
34
vec[7] vec[8]
92
vec[9]
Ingeniera de Sistemas
Programacin I
Entonces podemos ver que cada elemento de un vector tiene una posicin y un dato
Por ejemplo:
vec[0] tiene el dato
12
vec[3] tiene el dato
8
vec[8] tiene el dato
6
..
Cada elemento del vector puede ser manejado como cualquier variable. Por ejemplo:
int A = vec[0] + vec[8];
int B = 2 + vec[3];
vec[0] = A + B;
// A = 12 + 6 = 18
// B = 2 + 8 = 10
// vec[0] = 18 + 10 = 28
int vec[10]
Tipo de elementos
del vector
Nota. Un ERROR muy comn al programar con vectores es manejar posiciones que no existen en el
vector. Por ejemplo en el vector vec no se podra utilizar el elemento vec[10] vec[11], porque no
existen las posiciones 10 y 11, lo cual generar un error. Entonces es mejor declarar vectores con
tamaos ms grandes.
EJERCICIOS
1.- Realizar un programa para visualizar los datos de un vector
#include <iostream.h>
void main()
{
int vec[]={1,3,5,6,2};
for(int i=0;i<5;i++)
cout<<vec[i]<<" ";
}
35
Ingeniera de Sistemas
Programacin I
Ingeniera de Sistemas
Programacin I
}
ultimo=A[N-1];
for(int j=0;j<N;j++)
if(A[j]>ultimo)
cant++;
cout<<cant;
}
5. Realice un programa que permita insertar 10 nmeros por teclado en un vector A,
posteriormente copie los nmeros pares a un vector B y visualice los datos del vector B.
#include <iostream>
void main()
{
int N,num;
int A[10],B[10];
for(int i=0;i<10;i++)
{
cin>>num;
A[i]=num;
}
int con=0;
for(int j=0;j<10;j++)
if(A[j]%2==0)
{
B[con]=A[j];
con++;
}
for(int k=0;k<con;k++)
cout<<B[k]<<" ";
}
37
Ingeniera de Sistemas
Programacin I
CARCTER (char)
char (character) es un tipo de dato que puede almacenar cualquier carcter del cdigo ascii.
Un carcter siempre debe estar entre comillas simples (apstrofes)
Ejemplos: 1 , f , F , & , % , ) , a , A , 3 , - , . , w , 6 , /
CODIGO ASCII
38
Ingeniera de Sistemas
Programacin I
Programa permite introducir dos nmeros y un signo (operacin matemtica), si el signo es suma los nmeros
deben sumarse y si el signo es resta los nmeros deben restarse.
int num1,num2,num3;
char signo;
cin>>num1>>num2;
cin>>signo;
if(signo=='+')
{
num3=num1+num2;
cout<<num3;
}
else
{
if(signo=='-')
{
num3=num1-num2;
cout<<num3;
}
else
cout<<"no es suma ni resta";
}
Programa que dado un carcter por teclado visualiza su correspondiente nmero decimal asociado.
char car;
int num;
cin>>car;
num=(int)(car);
cout<<"su valor decimal es: "<<num;
Programa que dado un nmero por teclado visualiza su correspondiente caracter asociado.
char car;
int num;
cin>>num;
car=(char)(num);
cout<<"su valor decimal es: "<<car;
39
Ingeniera de Sistemas
Programacin I
CADENAS
Una cadena es un vector de caracteres, una cadena debe estar encerrada entre comillas dobles.
Por ejemplo una cadena seria: cad=Hola mundo
La cadena hola mundo est formado por 10 caracteres.
H o l a m u n d o
Posiciones de cada carcter
2 3
A cada posicin de la cadena se la maneja como si fuera una variable de tipo char.
Por ejemplo:
char c;
c=cad[0];
c=cad[3];
c=cad[4];
c tomar el valor de H
c tomar el valor de a
c tomar el valor de (espacio)
CADENAS EN C++
El manejo de cadenas en C++ se la realiza mediante un vector de caracteres como se muestra a continuacin:
char cad*11+=Hola mundo;
Tambin se puede manejar cadenas con punteros de cadenas, por ejemplo:
char *cad=Hola mundo;
Pero, en este tutorial el manejo de cadenas se realizar mediante la clase string que evita muchos problemas que
existen al manejar cadenas.
Nota.- la clase string no es soportado por cualquier compilador, por ejemplo el compilador de borland
Turbo c++ no soporta.
Pero, si soporta el compilador del CodeBlock o el compilador DevC++
A continuacin y mediante algunos ejemplos iremos viendo algunas funciones de las cadenas.
1. Insertar una palabra por teclado. Se utiliza la funcin cin>>
#include <cstdlib>
#include <iostream>
using namespace std;
int main(int argc, char *argv[])
{
string cad;
cin>>cad;
cout<<cad;
system("PAUSE"); //detiene el programa caso contrario no visualizara nada
return EXIT_SUCCESS; //retorna el valor 0, ya que main es de tipo int
}
40
Ingeniera de Sistemas
Programacin I
2. Visualizar la longitud de una cadena. Se utiliza la funcin length(), la misma retorna un valor entero
#include <cstdlib>
#include <iostream>
using namespace std;
int main(int argc, char *argv[])
{
string cad;
cin>>cad;
int tam=cad.length();
cout<<tam;
system("PAUSE");
return EXIT_SUCCESS;
}
3. Visualizar inversamente una cadena insertada por teclado
string cad;
cin>>cad;
int tam=cad.length();
for(int i=tam-1;i>=0;i--)
cout<<cad[i];
4. Concatenar (unir) tres cadenas
string cad1,cad2,cad3,cad4;
cad1="Ingenieria";
cad2="de";
cad3="Sistemas";
cad4=cad1+cad2+cad3;
cout<<cad4<<endl;
5. Cuntas vocales a hay en una palabra introducida por teclado.
int cant=0;
string cad;
cin>>cad;
int t=cad.length();
for(int i=0;i<t;i++)
if(cad[i]=='a')
cant++;
cout<<cant;
6. Adicin de un carcter al final de una cadena.
Se puede generar una nueva cadena a partir de otra como se muestra en el siguiente ejemplo:
string A,B;
A="alberto";
B=""; //una cadena puede tener el valor de vaco (dos comillas sin nada en medio)
int tam=A.length();
for(int i=0;i<tam;i++)
41
Ingeniera de Sistemas
Programacin I
getline(cin,cad);
int tam=cad.length();
for(int i=0;i<tam;i++)
if(cad[i]==' ')
pal++;
pal++;
cout <<"hay "<<pal<<" palabras";
Funcin
Compara 2 cadenas
Tipo
int
Find
int
length
substr
int
string
8.
string A,B;
A="oruro";
B="Oruro";
if(A.compare(B)==0) //devuelve mayor a 0, menor a 0 o igual a 0
cout<<"iguales";
else
if(A.compare(B)>0)
cout<<"el mayor es"<<A;
else
cout<<"el mayor es"<<B;
42
Ingeniera de Sistemas
Programacin I
string A,B;
A="Tortuga";
B=A.substr(3,2); //B tomar el valor de tu, a partir de la posicin 3, 2 caracteres
cout<<B;
10. Programa que visualiza esta contenida si una cadena esta dentro de otra
string A="mariposa";
string B="oso";
int p=A.find(B);
if(p==-1)
cout<<"no esta contenida";
else
cout<<"esta contenida";
43
Ingeniera de Sistemas
Programacin I
Nombre de la funcin
Tipo de dato que
devuelve la
funcin
}
La anterior funcin tiene como nombre suma, esta funcin recibe dos parmetros de tipo entero y retorna (devuelve)
un valor de tipo entero (int)
La funcin anterior se puede utilizar en una funcin o programa principal de la siguiente manera:
#include <iostream.h>
int suma(int A,int B)
{
int C=A+B;
return (C);
}
Funcin suma
void main()
{
int num1=4;
int num2=20;
int num3=suma(num1,num2);
cout<<(num3);
}
Nota.- Todas las funciones deben estar antes que la funcin principal
Ejercicios
44
Ingeniera de Sistemas
Programacin I
1. Funcin que reciba como parmetros 3 nmeros y devuelva el mayor de los nmeros.
#include <iostream>
int mayor(int a,int b,int c)
{
if(a>b)
if(a>c)
return a;
else
return c;
else
if(b>c)
return b;
else
return c;
}
void main()
{
int R,x,y,z;
cin>>x>>y>>z;
R=mayor(x,y,z);
cout<<R;
}
2. Funcin que reciba como parmetro un nmero y devuelva el promedio de sus dgitos.
#include <iostream.h>
float promedio(int num)
{
int dig,sum,cant;
sum=0;
cant=0;
float p;
while(num>0)
{
dig=num%10;
sum=sum+dig;
cant++;
num=num/10;
}
p=(float)(sum)/cant;
return p;
}
void main()
{
int n;
cin>>n;
float prom=promedio(n);
cout<<prom;
}
3. Funcin que reciba como parmetro un nmero y devuelva su factorial.
#include <iostream.h>
45
Ingeniera de Sistemas
Programacin I
#include <iostream.h>
int decimal(int bin)
{
int dig,dec=0,pa=1;
while(bin>0)
{
dig=bin%10;
dec=(dig*pa)+dec;
pa=pa*2;
bin=bin/10;
}
return dec;
}
void main()
{
int n,d;
cin>>n;
d=decimal(n);
cout<<d;
}
5. Realice una funcin que reciba como parmetro un nmero y devuelva 1 si el nmero es primo y 0 si el nmero
no es primo. Posteriormente utilizando la funcin primo, realice un programa que permita visualizar los primeros
N nmeros primos.
#include <iostream.h>
int primo(int num)
{
int con=1,c=0;
while(con<=num)
{
if(num%con==0)
c++;
con++;
46
Ingeniera de Sistemas
Programacin I
}
if(c<=2)
return 1;
else
return 0;
}
void main()
{
int n,con=0,num=1;
cin>>n;
while(con<n)
{
if(primo(num)==1)
{
cout<<num<<endl;
con++;
}
num++;
}
}
47
Ingeniera de Sistemas
Programacin I
void nombre_Funcion(parmetros)
{
Variables locales
PROGRAMA INTERNO
}
Variables Locales. Este tipo de variables son las que pueden ser utilizadas slo dentro la funcin, no son vlidas para
otras funciones
Tambin existen las Variables Globales, ests si pueden ser utilizadas en cualquier funcin del programa, pero, deben
ser declaradas slo una vez al inicio del programa.
Ejercicios.
1. Realice un programa que visualice la suma de dos nmeros introducidos por teclado. Utilizando los siguientes
subprogramas:
- leerNumeros()
- calcularSuma()
- verSuma()
#include <iostream.h>
Variables globales
int A,B,C;
void leerNumeros()
{
cin>>A>>B;
}
void calcularSuma()
{
C=A+B;
}
void verSuma()
{
cout<<C;
48
Ingeniera de Sistemas
}
void main()
{
leerNumeros();
calcularSuma();
verSuma();
}
Programacin I
2. Realice un programa que dado un nmero por teclado visualice la cantidad de dgitos que tiene. Utilizando los
siguientes subprogramas.
- leerNumero()
- contarDigitos()
- mostrarCantidad()
#include <iostream.h>
int A,res=0;
void leerNumero()
{
cin>>A;
}
void contarDigitos()
{
int num=A;
while(num>0)
{
res++;
num=num/10;
}
}
void mostrarCantidad()
{
cout<<res;
}
void main()
{
leerNumero();
contarDigitos();
mostrarCantidad();
}
3. Realice un programa que permita insertar N nmeros ledos desde teclado posteriormente visualice cuntos son
mayores a 5. Utilizando los siguientes subprogramas.
- LeerN()
49
Ingeniera de Sistemas
-
Programacin I
insertarNumeros()
mostrarMayores()
#include <iostream.h>
int N,mayores=0;
void leerN()
{
cin>>N;
}
void insertarNumeros()
{
int num,con=0;
while(con<N)
{
cin>>num;
if(num>5)
mayores++;
con++;
}
}
void mostrarMayores()
{
cout<<mayores;
}
void main()
{
leerN();
insertarNumeros();
mostrarMayores();
}
50