Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Federico Villarreal
GUA ACADMICA
ALGORITMOS
E
Escuela Universitaria
uded
Educacin a distancia
3
Tutoras
Cronograma
semana 3 2 2.5 3
UNIDAD II
semana 4 2 2.5 3
semana 5 2 2.5 3
UNIDAD III
semana 6 2 2.5 3
semana 7 2 2.5 3
UNIDAD IV
semana 8 2 2.5 3
16 20 24
TOTAL
60 HORAS ACADEMICAS
Evaluacin
El Examen parcial ser virtual y se realizar al final de la 4 semana; el examen final ser
presencial y se realizar en la 8 semana y la presentacin de un trabajo monogrfico en la 8
semana del ciclo.
Contenido
TemaN1:Algoritmo.....................................................................................................................................7
1.1DefinicindeAlgoritmo........................................................................................................................7
1.2Caractersticasdeunalgoritmo............................................................................................................8
1.3InstruccionesAlgortmicasBsicas........................................................................................................8
1.4RepresentacindelAlgoritmo...............................................................................................................9
Actividades...............................................................................................................................................10
TemaN2:ProgramacinEstructurada......................................................................................................11
2.1Programa............................................................................................................................................11
2.2LenguajedeProgramacin.................................................................................................................11
2.3 Programas Traductores.................................................................................................................11
2.5ResolucindeunProblema................................................................................................................13
TemaN3:SentenciasBsicasdeProgramacin........................................................................................14
3.1EstructuraBsicaSimpleoSecuencial..............................................................................................14
3.2EstructuraBsicaSelectiva................................................................................................................16
3.3EstructuraBsicaRepetitiva...............................................................................................................25
Actividades...............................................................................................................................................32
TemaN4:ModularizacindeProgramas..................................................................................................33
4.1PasodeParmetros...........................................................................................................................33
4.2Procedimientos..................................................................................................................................34
4.3Funciones..........................................................................................................................................34
Actividades...............................................................................................................................................39
TemaN5:LibrerasdeProgramacincreadasporelusuario....................................................................40
Actividades...............................................................................................................................................42
TemaN6:FuncionesRecursivas................................................................................................................43
Actividades...............................................................................................................................................44
TemaN7:EstructurasdeDatos.................................................................................................................45
7.1DefinicindeEstructuradeDatos......................................................................................................45
7.2ClasificacindeEstructuradeDatos..................................................................................................45
Actividades...............................................................................................................................................45
TemaN8:ArreglosUnidimensionales.......................................................................................................46
8.1ActualizacindeArreglosUnidimensionales.....................................................................................47
8.2BsquedadeArreglosUnidimensionales...........................................................................................50
8.3OrdenacindeArreglosUnidimensionales........................................................................................52
Actividades...............................................................................................................................................55
8.4ArreglosBidimensionales...................................................................................................................56
8.5ActualizacindeArreglosBidimensionales........................................................................................59
8.6AplicacindeArreglosBidimensionales............................................................................................61
Actividades...............................................................................................................................................64
Unidad N 1: Algoritmo
Entrada de datos.
E PROCESO S
Proceso.
Salida de resultados.
Variable:
Es una localizacin o casillero en la memoria principal que almacena un valor que puede cambiar en el
transcurso de la ejecucin del programa. Tiene un nombre, un tipo de dato y un valor. Antes de poder
utilizar una variable es necesario declararla especificando su nombre y su tipo de dato.
Ejemplo 1:
Entero edad
Ejemplo 2:
Real peso, talla
Ser finito: implica que el nmero de pasos de un algoritmo, por grande y complicado que sea el
problema que soluciona, debe ser limitado, es decir debe llegar a un final.
Presentacin formal: para que el algoritmo sea entendido por cualquier persona interesada es
necesario que se exprese en alguna de las formas comnmente aceptadas; si no puede no ser
muy til ya que solo lo entender quien lo dise. Las formas de presentacin de algoritmos
son: el pseudocdigo, diagrama de flujo y diagramas de Nassi/Schneiderman, entre otras.
Correccin: el algoritmo debe ser correcto, debe solucionar el problema para el cual fue
diseado. Para garantizar que el algoritmo logre el objetivo, es necesario ponerlo a prueba:
verificacin o prueba de escritorio.
Eficiencia: es evaluar los recursos que requiere para almacenar datos y para ejecutar
operaciones frente al beneficio que ofrece. En cuanto menos recursos requiere ser ms
eficiente el algoritmo.
INICIO
entero numero1, numero2, resultado
Leer numero1
Leer numero2
resultado numero1 + numero 2
Escribir El resultado de la suma es:
Escribir resultado
FIN
b. Diagrama de Flujo Estructurado: Representacin con flujos entre los procesos a realizar. Los
principales smbolos de representacin para este diagrama son.
Inicio/Fin del algoritmo
Subrutinas en el algoritmo
INICIO
Declaracin de variables
Lectura de Datos
Accin 1
Accin 2
Accin n
Reporte de Datos
FIN
Actividades
Elaborar el algoritmo y su respectiva representacin, identificando los elementos de entrada y los
elementos de salida, para los siguientes casos:
a. El proceso de asistir a clases a un centro de estudios.
b. El proceso de solicitar un libro en la biblioteca de una universidad.
c. El proceso de un punto de ventas de un supermercado.
d. El proceso de intercambiar dos valores numricos.
e. El proceso de calcular la regla de tres simple.
f. El proceso de matrcula para elaborar una lista de contactos digital.
g. El proceso de Matrcula en una universidad.
10
2.1 Programa
Secuencia de instrucciones que especifican las operaciones que debe realizar la computadora, en la
cual cada paso del algoritmo est expresado por medio de una instruccin.
Conjunto de sentencias utilizadas para escribir secuencias de instrucciones que para que ejecute un
programa en una computadora.
a. Lenguaje Mquina: Lenguaje de programacin que la computadora interpreta y ejecuta
directamente, y est compuesto de instrucciones codificadas en binario (0, 1).
b. Lenguaje de Bajo Nivel: tambin llamados lenguajes ensambladores, permiten al programador
escribir instrucciones de un programa usando abreviaturas del lenguaje natural (ingls), tambin
llamadas palabras nemotcnicas (ADD, DIV, SUB, etc).
INTERPRETE
PROGRAMA
EJECUTABLE
11
COMPILADOR
PROGRAMA
OBJETO
COMPILADOR
PROGRAMA
FUENTE
PROGRAMA
OBJETO
PROGRAMA
ENLAZADOR
PROGRAMA
EJECUTABLE
Que hace ?
Como hace?
12
c. Estructuras bsicas
Son estructuras de control para el programa:
Secuenciales
Selectivas
Repetitivas
13
Las sentencias de programacin a utilizar es una las tcnicas de programacin del enfoque
estructurado: Estructuras Bsicas.
Declaracin de Variables
Lectura de Datos
Accin 1
Accin 2
Accin n
Reporte de Datos
FIN
Diagrama N-S:
INICIO
Declaracin de variables
Lectura de Datos
Accin 1
Accin 2
Accin n
Reporte de Datos
FIN
Ejemplo
Calcular el rea de un tringulo. Area = (base * altura) / 2
Solucin
Leyenda de Datos
base: valor de la base del tringulo
altura: valor de la altura del triangulo
Area: valor del resultado del clculo del rea del tringulo
14
Diagrama de Flujo:
INICIO
Leer base
Leer altura
Escribir Area
FIN
Diagrama N-S:
INICIO
real base, altura, Area
Leer base
Leer altura
Area (base * altura) / 2;
Escribir El valor del rea para el tringulo es:
Escribir Area
FIN
Cdigo en C:
#include<iostream>
using namespace std;
void main( )
{ float base, altura, Area; cout<<Ingrese
valor de la base: ; cin>>base;
cout<<\n; //Salto de lnea
cout<<Ingrese valor de la altura: ;
cin>>altura;
cout<<\n;
15
Declaracin de Variables
Lectura de Datos
F V
Cond 1
Accin 1
Accin n
Reporte de Datos
FIN
Diagrama N-S:
INICIO
Declaracin de variables
Lectura de Datos
V Cond 1 F
Accin 1
Accin 2
Accin n
Reporte de Datos
FIN
16
Ejemplo
Diagrama de Flujo:
INICIO
entero a, b, c
Leer a , b
c a+b
FIN
Diagrama N-S:
INICIO
entero a, b, c
Leer a , b
a >0 && b>0
V F
c a+b
Cdigo C:
17
#include<iostream> using
namespace std; int main(
)
{ float a, b, c;
cout<<Ingrese primer nmero: ;
cin>>a; cout<<\n; cout<<Ingrese
segundo nmero: ; cin>>b; cout<<\n;
if (a>0 && b>0)
{ c = a + b;
cout<<El valor la suma es: ;
cout<<c;
cout<<\n;
}
return 0;
}
b. Estructura Bsica Selectiva Compuesta: se tiene un punto de decisin que evala una condicin y si
es Verdadero, ejecuta un conjunto de Acciones, y si es Falsa ejecuta otro conjunto de acciones.
Diagrama de Flujo
INICIO
Declaracin de Variables
Lectura de
Datos
F V
Cond 1
Accin 2 Accin 1
Accin m Accin n
Reporte de
Datos
FIN
18
Diagrama N-S
INICIO
Declaracin de variables
Lectura de Datos
Cond 1
V F
Accin 1 Accin 2
.
Accin n Accin m
Reporte de Datos
FIN
Ejemplo:
Sumar dos nmeros enteros si son positivos, sino multiplicarlos.
Solucin:
Leyenda de Datos
a: valor del primer nmero entero positivo
b: valor del segundo nmero entero positivo
c: valor del resultado la suma o multiplicacin de dos nmeros a y b
Diagrama de Flujo
INICIO
entero a, b, c
Leer a , b
F V
a >0 && b>0
c a*b c a+b
FIN
19
Diagrama N-S
INICIO
entero a, b, c
Leer a , b
a >0 && b>0
V F
c a+b c a*b
Cdigo C:
#include<iostream> using
namespace std; void main(
)
{ int a, b, c;
cout<<Ingrese primer nmero: ;
cin>>a;
cout<<\n;
cout<<Ingrese segundo nmero: ;
cin>>b;
cout<<\n;
if(a>0 && b> 0)
{ c = a + b;
cout<<El valor la suma es:
; cout<<c; cout<<\n;
}
else
{ c = a * b;
cout<<El valor la multiplicacion es: ;
cout<<c; cout<<\n;
}
}
20
Declaracin de Variables
Lectura de Datos
F V
Cond 1
F V
Accin 2 Cond 2
Accin 1
Accin m
Accin n
Reporte de Datos
FIN
Diagrama N-S
INICIO
Declaracin de variables
Lectura de Datos
F Cond 1 V
Accin 2 Cond 2
V F
Accin 1
.
Accin m Accin n
Reporte de Datos
FIN
21
Ejemplo:
Ingresar un nmero entero y si es positivo y diferente de cero, reportar si se encuentra entre los
diez primeros nmeros.
Solucin: Leyenda de Datos
a: valor del numero entero
Diagrama de Flujo
INICIO
Entero a
Leer a
F V
a>0
F V
a>=1 && a>10
FIN
Diagrama N-S
INICIO
entero a
Leer a
a>0
F V
a>=1 && a>10
Escribir No es un nmero mayor F V
que cero
Escribir Son mas de los primeros 10 Escribir Primeros 10
FIN
Cdigo C:
#include<iostream>
using namespace
std; void main( )
{ int a;
cout<<Ingrese nmero:
; cin>>a;
if(a>0)
if(a>=1 && a<10)
cout<<Primeros 10;
else
cout<<Son ms de los primeros 10;
else
cout<<No es un nmero mayor que cero;
}
22
Declaracin de Variables
Lectura de Datos
1
default
Cond 1
2 3
Accin 4
Reporte de Datos
FIN
Diagrama N-S
INICIO
Declaracin de variables
Lectura de Datos
Cond 1
1 2 3 default
Accin 1 Accin 2 Accin 3 Accin 4
Accin n Accin m Accin m Accin m
Reporte de Datos
FIN
Ejemplo
Ingresa cinco nmeros e imprime que vocal es.
Solucin:
Leyenda de Datos
23
Diagrama de Flujo
INICIO
entero num
Leer num
1 default
num
2 4 5
3
FIN
Diagrama N-S
INICIO
entero num
Leer num
num
1 2 3 4 5 default
Escribir Escribir Escribir Escribir Escribir Escribir No
Vocal A Vocal E Vocal I Vocal O Vocal U es Vocal
FIN
Cdigo C:
#include<iostream
> using namespace
std; void main( )
{ int num;
cout<<Ingrese nmero:
; cin>>num;
switch(num)
{ case 1: cout<<Vocal A; break;
case 2: cout<<Vocal E;
break; case 3: cout<<Vocal
I; break; case 4:
cout<<Vocal O; break; case
5: cout<<Vocal U; break;
default: cout<<No es numero para una vocal;
}
}
24
Declaracin de Variables
Lectura de Datos
F
Cond 1
V
Accin 1
Accin n
Accin 2
FIN
Diagrama N-S
INICIO
Declaracin de variables
Lectura de Datos
Cond 1
Accin 1
.
Accin n
Accin 2
Reporte de Datos
FIN
Ejemplo
Imprimir la serie Fibonacci, menor a un lmite dado: 0,1,1,2,3,5,8,13,.
25
Diagrama de Flujo
INICIO
Leer lim
Escribir a
F
b<=lim
V
Escribir b
c a+b
a b
b c
FIN
Diagrama N-S
INICIO
entero lim, a=0, b=1, c
Leer lim
Escribir a
b <= lim
Escribir c
c a +b
a b
b c
FIN
Cdigo C:
#include<iostream>
using nameaspace
std; void main( )
{ int lim, a=0, b=1,c;
cout<<Ingrese lmite:
; cin>>lim;
cout<<a;
26
while(b<=lim)
{
cout<<b;
c=a+b;
a=b;
b=c;
}
}
b. Estructura Bsica Repetitiva Hacer - Mientras: realiza al menos una vez un conjunto de acciones, y
luego evala una expresin condicional, si es Verdadero regresa a repetir el conjunto de acciones, si
no cumple, sale del bucle.
Diagrama de Flujo
INICIO
Declaracin de Variables
Lectura de
Datos
Accin 1
Accin n
V
Cond 1
F
Accin 2
Reporte de
Datos
FIN
Diagrama N-S
INICIO
Declaracin de variables
Lectura de Datos
Accin 1
.
Accin n
Cond 1
Accin 2
Reporte de Datos
FIN
27
Ejemplo
Leer un nmero entero mayor que cero, sino es as, volver a solicitar el nmero con esas
condiciones.
Diagrama de Flujo INICIO
entero num
Leer num
Vnum <= 0
F
FIN
Diagrama N-S
INICIO
entero num
Leer num
num <= 0
FIN
Cdigo C:
#include<iostream>
using namespace
std; void main()
{ int num;
#include<iostream>
using namespace
std; int main()
{ int n,m, cs=0,ci=0, venta=0; char ops,op; cout<<"--
do{
do{
cout<<"Ingrese valor de stock inicial: ";
cin>>n;
}while(n<=0);
28
do{
do{ cout<<"Ingrese venta: ";
cin>>m;
}while(m<=0);
29
INICIO
Declaracin de
Lectura de Datos
F
Variable recorrido es
menor a lmite
Accin 1
Accin n
Incrementar Variable de
Accin 2
Reporte de Datos
FIN
Diagrama N-S
INICIO
Declaracin de variables
Lectura de Datos
i = 0 ; i <= limite ; i++
Accin 1
.
Accin n
Accin 2
Reporte de Datos
FIN
30
Ejemplo:
Calcular el Factorial de un nmero.
Diagrama de Flujo
INICIO
entero , num, p = 1
Leer num
i 1
F
i < = num
p p*i
i ++
Escribir El factorial es , p
FIN
Diagrama N-S
INICIO
entero num, i , p =1
Leer num
i = 1 ; i <= num ; i++
p p * i
Escribir el factorial es:
Escribir p
FIN
Cdigo C:
#include<iostream>
using namespace std;
void main( )
{ int num, i, p=1;
cout<<Ingrese numero para factorial:
; cin>>num;
for(i=1;i<=num; i++)
{ p = p * i;
}
cout<<El factorial de <<n<<es: <<p;
}
31
Actividades
Elaborar el Pseudo cdigo, Diagrama de Flujo y Diagrama N-S, y Cdigo en C respectivo para:
1. La presin, el volumen y la temperatura de una masa de aire se relacionan por la
formula: Masa = (presin * volumen)/(0.37 * (temperatura + 460))
Calcular la masa respectiva.
2. En un hospital existen tres reas: Ginecologa, Pediatra, Traumatologa. El presupuesto anual
del hospital se reparte conforme a la siguiente tabla:
rea Porcentaje del presupuesto
i. Ginecologa 40%
ii. Traumatologa 30%
iii. Pediatra 30%
Obtener la cantidad de dinero que recibir cada rea, para cualquier monto presupuestal.
3. Encuentre el menor de tres nmeros dados.
4. Una fbrica de TV necesita que le ayuden a controlar el manejo de sus inventarios y pedidos
de venta.
Cuando llega un pedido, un programa debe verificar si existe suficiente cantidad de TV en
inventario. Si es as, debe reportar un mensaje PEDIDO COMPLETO y se debe dar la
disminucin del inventario.
Adems se necesita reportar:
El nmero de TV que quedan en el inventario
final. El nmero de pedidos completos.
El nmero de pedidos incompletos.
El nmero de TV vendidos.
El nmero de TV que faltan para completar los pedidos incompletos.
5. Lea un nmero entero e indique cual es su dgito mayor.
6. Suponga que tiene la calificacin final de un grupo de 40 alumnos, calcular la calificacin
promedio y la calificacin mas baja de todo el grupo.
7. Cuantos dgitos pares y cuantos dgitos impares tiene un nmero entero.
8. En una universidad se pueden llevar hasta 22 crditos en un ciclo. Elabora el cdigo que
permita a un alumno matricularse sin pasarse del lmite.
9. Una vendedora de pan tiene n unidades de pan al comenzar el da. Si cada cliente le pide m
panes, cuantos clientes son atendidos completamente, cuantos panes quedan para el ultimo
cliente?
10. Elabore el cdigo para una tienda para leer por cada cliente el monto total de su compra; Al
final del da reportar la cantidad total de ventas y el nmero de clientes atendidos.
11. Un censador recopila datos del ltimo censo nacional, al final de un da desea conocer de las
persona encuestadas el porcentaje que tiene estudios de primaria, el porcentaje que tiene
estudios de secundaria, porcentaje de carrera tcnica, porcentaje de estudios profesionales, y
porcentaje con estudios de post grado.
32
33
4.2 Procedimientos
Se utilizan para imprimir valores a ser utilizados en el programa.
Declaracin:
void NombreProcedimiento( )
void NombreProcedimiento (argumentos)
4.3 Funciones
Se utilizan para retornar un valor a ser utilizado en el programa.
Declaracin:
Tipo_dato NombreFuncin( )
Tipo_dato NombreFuncin(argumentos)
//Programa Simple
#include<iostream>
using namespace std;
void main()
{ int a,b,c;
cout<<"Ingrese valor de a:
\t"; cin>>a;
cout<<"Ingrese valor de b:
\t"; cin>>b;
c=a+b;
cout<<c; cout<<"\n";
}
34
Con Procedimientos:
//Procedimientos con Argumentos: Ejemplo1
#include<iostream>
using namespace std;
void sumar(int a, int b)
{ int c;
c=a+b;
cout<<c; cout<<"\n";
}
void main()
{ int a,b;
cout<<"Ingrese valor de a:
\t"; cin>>a;
cout<<"Ingrese valor de b:
\t"; cin>>b;
sumar(a,b);
}
//Procedimientos sin Argumentos: Ejemplo2
#include<iostream>
using namespace std;
void sumar()
{ int a,b,c;
cout<<"Ingrese valor de a:
\t"; cin>>a;
cout<<"Ingrese valor de b:
\t"; cin>>b;
c=a+b;
cout<<c;
}
void main()
{ sumar( );
}
35
Con Funciones:
//Funciones con Argumentos: Ejemplo1
#include<iostream> using
namespace std; int
sumar(int a, int b)
{ int c;
c=a+b;
return c;
}
void main()
{ int sum,a,b;
cout<<"Ingrese valor de a:
\t"; cin>>a;
cout<<"Ingrese valor de b:
\t"; cin>>b;
sum=sumar(a,b);
#include<iostream>
using namespace
std; int sumar()
{ int a,b,c;
cout<<"Ingrese valor de a:
\t"; cin>>a;
cout<<"Ingrese valor de b:
\t"; cin>>b;
c=a+b;
return c;
}
void main()
{ int sum;
sum=sumar();
cout<<"Valor de la suma de a y b: "<<sum;
cout<<"\n";
}
36
#include<iostream>
using namespace std;
void sumar(int a, int b);
int main()
{ int a,b;
cout<<"Ingrese valor de a: \t"; cin>>a;
cout<<"Ingrese valor de b: \t"; cin>>b;
sumar(a,b);
return 0;
}
void sumar(int a, int b)
{ int c;
c=a+b;
cout<<c;
cout<<"\n";
}
//Funciones con Argumentos
#include<iostream>
using namespace std;
int sumar(int a, int b);
void main()
{ int sum,a,b;
37
Ejemplos:
1. Elaborar un programa para calcular a la funcin de acuerdo a lo sgte.:
y = x2 + 5 si x <= 0
y = 3x - 1 si 0 < x < 2
y =x2 - 4x + 5 si x >= 2
#include<iostream>
using namespace std;
float ecuaciones()
{ float x,y;
cout<<"Ingresar valor de x para calcular funcion f(y)=x <<\t";
cin>>x; if(x<=0)
{ cout<<"Ecuacion a usar es
y=(x^2)+5\n"; y=(x*x)+5;
}
else
if(x>0&&x<2)
{ cout<<"Ecuacion a usar es
y=3x+1\n"; y=(3*x)-1;
}
else
if(x>=2)
{ cout<<"Ecuacion a usar es y=(x^2)-
4x+5\n"; y=(x*x)-(4*x)+5;
}
return y;
}
void main()
{ float res;
res=ecuaciones();
cout<<"Resultado de la funcion es f(y)=\t"<<res; cout<<"\n";
}
2. Para repartir una herencia se tiene en cuenta: Si la cantidad de hijos es menor a 4, se repartir
exactamente entre el nmero de hijos; si son cuatro o ms hijos, la mitad le tocar al hermano mayor
y el resto se dividir entre los dems hermanos.
#include<iostream>
using namespace std;
//procedimientos sin
argumentos void herencia()
{ float her,may;
int num;
cout<<"Ingresar importe de herencia \n"; cin>>her;
cout<<"Ingresar cantidad de hijos \n"; cin>>num;
if(num<4)
{ her=her/num;
cout<<"Herencia a cada hijo es "<<her; }
else
{ may=her/2;
her=may/(num-1);
38
Actividades
Construir los programas usando funciones y procedimientos en Cdigo en C respectivo para:
1. Realizar un programa que tenga un mdulo reciba dos argumentos a, b (enteros) y
que intercambie los valores de dichas variables.
-> Elaborar un mdulo para leer a y b.
2. En un banco, a los clientes que de tipo 1, 2, 3, que aperturan cuentas de Ahorro(A), Corriente
(C), o Valores (V), todos en nuevos soles, se les otorga un bono (dlares), de acuerdo a la sgte.
Tabla:
Cuenta: A C V
Tipo cliente
1 $ 500 $ 400 $ 300
2 $ 400 $ 300 $ 200
3 $ 300 $ 200 $ 100
Promedio 0 10 11 - 16 17 -20
Alumno
A A ++ A+ A-
B B ++ B+ B-
C C ++ C+ C-
A ++ = 5 % A + = 7% A - = 10 %
B ++ = 3 % B+=5% B-=7%
C ++ = 1 % C+ = 3% C-=5%
39
Las libreras estndar del procesador del lenguaje C: iostream.h, math.h, conio.h, stdio.h, etc.,
existen liberas de cabecera (header, de alli la extensin .h) que pueden ser creadas por el
programador, y ser invocadas en diferentes programas fuente (el programa con extensin .cpp)
como parte de la reutilizacin de cdigo.
40
Ejemplo 1:
Leer un nmero entero diferente a cero, y si es positivo, reportar El numero es positivo, caso
contrario es negativo.
Solucin:
- Crear la librera con extensin .h para la funcin de lectura de datos enteros, llamado lecturadato.h.
#include<iostream>
using namespace
std; int leedatoe()
{ int
dato; do{
cout<<Ingrese valor del
dato; cin>>dato;
}while(dato==0);
return dato;
}
- Crear el programa .cpp que invoca a la librera .h , lecturadato.h, creada por el programador.
#include<iostream>
#include c:\programas\lecturadato.h
using namespace std;
void main()
{ int num;
num=leedatoe();
if(num>0)
cout<<El numero es
positivo; else
cout<<El numero es negativo;
}
Ejemplo 2:
x=leedatoe();
a=leedatoe();
if(x>0 && a>0)
{ y=x*((2*x)-a);
cout<<El resultado es:<<y;
}
else
cout<<Con estos valores no se puede calcular;
}
41
Actividades
Construir los programas usando funciones y procedimientos y libreras de programacin:
1. Una empresa categoriza a sus artculos como A, B y C, adems a sus clientes como
Excelente(E), Bueno(B), Regular(R) y Malo(M), estableciendo polticas de descuento (en %)
de acuerdo a la sgte. tabla:
Tipo Artculo
A B C
Tipo Cliente
Excelente (E) 40 30 20
Bueno (B) 30 20 10
Regular (R) 20 10 0
Malo (M) 0 0 0
El cliente Excelente y Bueno puede pagar en Efectivo, Cheque o crdito, el cliente Regular
puede pagar en Efectivo o Cheque y el cliente Malo solo paga en efectivo.
2. En un cajero se puede realizar las operaciones de depsito, saldo, y retiro. Elabore un
programa permitir a un cliente realizar estas operaciones las veces que lo requiera.
42
La funcin factorial:
n! 4! = 4 * 3 * 2 * 1
4! = 4 * 3 * 2 * 1 4 * 3!
4 * 3! Es decir n*(n-1)! 3! = 3 * 2 * 1
3! = 3 * 2 * 1 3 * 2!
3 * 2! Es decir n*(n-1)! 2! = 2 * 1
2! = 2 * 1 2 * 1!
2 * 1! Es decir n*(n-1)! 1! = 1 * 0!
1! = 1 * 0! 0! = 1
0! = 1
int factorial(int n) 1 * 1 * 2 * 3 * 4 = 24
{ if (n == 0)
return 1;
else
return n*factorial(n-1);
}
a*b 3*4=3+3+3+3
3*4=3+3+3+3 3 + (3 * 3)
3 + (3 * 3) 3*3=3+3+3
3*3=3+3+3 3 + (3 * 2)
3 + (3 * 2) 3*2=3+3
3*2=3+3 3 + (3 *1)
3 + (3 *1) 3*1 =3
3 * 1 = 3 3 + 3 + 3 + 3 = 12
int multiplica(int a, int b)
{ if (a == 0 || b == 0)
return 0;
else
if (b == 1)
return a;
else
return a+multiplica(a,b-1);
}
43
Actividades
44
- Arreglos
Estructuras de Datos Estticos - Registros
- Archivos
- Cadenas
- Listas
Estructuras de Datos Lineales - Pilas
- Colas
Compuestos Estructuras de Datos Dinmicos
- Arboles
No Lineales - Grafos
Estructuras de Datos Estticos: Son aquellas en las que la cantidad de memoria que ocupan se
define antes de ejecutar el programa. Durante la ejecucin del mismo este tamao asignado no puede
alterarse.
Estructuras de Datos Dinmicos: Son aquellas en las que no es necesario reservar espacio de
memoria antes de ejecutar el programa, ya que este espacio se puede asignar durante su ejecucin
segn se necesite. As mismo dicho espacio puede ser liberado para poder ser utilizado por otros
datos.
Actividades
Investigar y Exponer cuales son las estructuras de datos:
1. Estndar.
2. Creadas por el Programador.
45
Tambin llamado vectores, es un conjunto finito y ordenado de elementos de un mismo tipo de dato.
La definicin de un arreglo es como sigue:
TipoDato NombreArreglo[tamao]
Ejm. Entero M[10]
#include<iostream>
#define N 5
using namespace std;
void main()
{ double A[N],sum,promed;
leerarre(A); sum=suma(A);
promed=promedio(sum);
46
Aadir
//Aadir un valor en la ltima posicin
#include<iostream>
#define MAX 100
using namespace
std; int leenum()
{ int num;
do{ cout<<"Ingrese numero de elementos para el arreglo:
"; cin>>num; cout<<"\n";
}while(num<=0 ||
num>MAX); return num;
}
47
Insertar
//Insertar un valor en cualquier posicin
#include<iostream>
#define MAX 100
using namespace
std; int leenum()
{ int num;
do{cout<<"Ingrese numero de elementos para el arreglo:
"; cin>>num; cout<<"\n";
}while(num<=0 ||
num>MAX); return num;
}
void ingresadatos(int V[MAX], int n)
{ int i;
cout<<"Ingrese elementos para el arreglo ";
cout<<"\n"; for(i=0;i<=n-1;i++)
{ cout<<"Elemento
["<<i<<"]"<<":"; cin>>V[i];
}
}
48
Eliminar
//Eliminar un valor en cualquier posicin
#include<iostream>
#define MAX 100
using namespace
std; int leenum()
{ int num;
do{ cout<<"Ingrese numero de elementos para el arreglo: ";
cin>>num; cout<<"\n";
}while(num<=0 ||
num>MAX); return num;
}
void ingresadatos(int V[MAX], int n)
{ int i;
cout<<"Ingrese elementos para el arreglo ";
cout<<"\n"; for(i=0;i<n;i++)
{ cout<<"Elemento
["<<i<<"]"<<":"; cin>>V[i];
}
}
49
void main()
{ int A[MAX]; int
num,el;
num=leenum();
ingresadatos(A,num); cout<<"\n";
mostrar(A,num); cout<<"\n";
el=elimina(A,num);
mostrar(A,el);
}
B. Secuencial
//Bsqueda Secuencial 1
#include<iostream>
#define MAX 100 using
namespace std;
//Se entiende que se realizan los procedimientos de lectura de datos
void bsecuencial(int a[MAX], int n)
{ int elem,i;
cout<<"\n Ingrese elemento a buscar en el arreglo "<<":\t";
cin>>elem; for(i=1;i<=n;i++)
if(a[i]==elem)
{ cout<<"\n Encontrado\t Posicion :\t"<<i<<"\t"; cout<<"\n\n";
}
}
void main()
{int A[MAX];
int num;
num=leenum();
50
ingresadatos(A,num);
cout<<"\n"; mostrar(A,num);
cout<<"\n"; bsecuencial(A,num);
}
//Busqueda Secuencial 2
#include<iostream>
#define MAX 100 using
namespace std;
//Se entiende que se realizan los procedimientos de lectura de datos
B. Bsqueda Binaria
#include<iostream>
#define MAX 100
using namespace
std; int leenum()
{ int num;
do{ cout<<"Ingrese numero de elementos para el arreglo: ";
cin>>num; cout<<"\n";
}while(num<=0 ||
num>MAX); return num;
}
void ingresadatos(int V[MAX], int n)
{ int i;
cout<<"Ingrese elementos para el arreglo ";cout<<"\n";
for(i=1;i<=n;i++)
{ cout<<"Elemento ["<<i<<"]"<<":";cin>>V[i]; }
}
void mostrar(int V[MAX], int n)
{ int i;
cout<<"Los elementos del arreglo son";
cout<<"\n"; for(i=1;i<=n;i++)
{ cout<<"Elemento"<<"["<<i<<"]"<<":\t";cout<<V[i]; }
}
51
if(elem==a[CENTRAL])
{ cout<<"\n ENCONTRADO \n";
cout<<"\n a["<<CENTRAL<<"] = "<<a[CENTRAL]; cout<<"\n";
}
else
cout<<"\n NO ENCONTRADO \n ";
}
void main()
{int A[MAX]; int num;
num=leenum();
ingresadatos(A,num);
cout<<"\n"; mostrar(A,num);
cout<<"\n"; bbinaria(A,num);
}
52
Ejemplos:
1. Elaborar un programa que dado dos arreglos numricos A y B de n1 y n2 elementos
respectivamente, guarde en un tercer arreglo C los elementos que estn en A pero no estn
en B. Ejemplo:
A B C
5 15 5
8 9 12
12 8 2
6 6
9 45
2 22
7
Solucin:
#include<iostream>
#define MAX 100 using
namespace std;
void ingresadatos(int V[MAX], int n,char
titu[20]) { int i;
cout<<"Ingrese elementos para el arreglo "<<titu;cout<<"\n";
for(i=0;i<=n-1;i++)
{ cout<<"Elemento ["<<i<<"]"<<":";
cin>>V[i];
}
}
if(ban==0)
{ VC[k]=VA[i];
k++;
}
else
ban=0;
}
return k;
}
void mostrar(int V[MAX], int n, char titu[20])
{ int i;
cout<<"Los elementos del arreglo
"<<titu; cout<<" son:"; cout<<"\n";
53
for(i=0;i<=n-1;i++)
{ cout<<"Elemento"<<"["<<i<<"]"<<":\t";
cout<<V[i]; cout<<"\n";
}
}
void main()
{ int A[MAX],B[MAX],C[MAX];
int na,nb,elem;
na=leenum();
ingresadatos(A,na,"Arreglo
A"); nb=leenum();
ingresadatos(B,nb,"Arreglo B");
cout<<"\n"; mostrar(A,na,"Arreglo A");
cout<<"\n"; mostrar(B,nb,"Arreglo B");
cout<<"\n"; elem=separacion(A,na,B,nb,C);
mostrar(C,elem,"Arreglo C");
}
5 15 8
8 9 6
12 8 9
6 6
9 45
2 22
7
54
Actividades
1. Elaborar un programa dado las notas de 35 alumnos, se debe reportar la nota mas alta,
la nota mas baja y el promedio de notas ingresadas.
2. Elaborar un programa para que se ingresen los sgtes. valores del arreglo mostrado, sume
el valor en la posicin 0 con el valor en la posicin 3 y luego multiplicar por el valor en la
posicin 5.
Posicion 0 1 2 3 4 5
ARRAY 10.6 3.4 9 2.3 5 4.5
55
10. Crear un mdulo de programa donde se eliminen los elementos repetidos en un Arreglo
de n elementos.
11. Buscar un elemento en un arreglo de n elementos, utilizando bsqueda binaria
(previamente ordenado con el mtodo de la burbuja y sin que exista elementos repetidos),
y eliminarlo.
0 1 2 3 4
Filas 0
1
2
3
56
void main()
{ int B[MAX][MAX]; int nf,nc;
cout<<"Ingrese numero de filas ";
nf=leenum();
cout<<"Ingrese numero de columnas ";
nc=leenum();
ingresadatos(B,nf,nc); cout<<"\n";
mostrar(B,nf,nc); cout<<"\n";
}
57
void main()
{ int B[MAX][MAX]; int nf,nc;
ingresadatos(B,nf,nc); cout<<"\n";
mostrar(B,nf,nc); cout<<"\n";
58
mostrar(B,nf,nc); cout<<"\n";
59
for(i=pos;i<=nf-1;i++)
for(j=0;j<=nc-1;j++)
M[i][j]=M[i+1][j];
nf--;
return nf;
}
for(i=0;i<=nf-1;i++)
for(j=pos;j<=nc-1;j++)
M[i][j]=M[i][j+1];
nc--;
return nc;
}
void main()
{
int B[MAX][MAX] nf,nc,fil,col;
mostrar(B,nf,nc); cout<<"\n";
60
1. Imprimir lo nmeros que rodean a un nmero X, la primera vez que se encuentra en la Matriz
incluido el nmero X:
4 3 7 9 3 7 9
M 1 4 5 8 4 5 8
2 5 4 1 5 4 1
7 -6 3 4
Solucin:
.. //Se entiende que se realizan los procedimientos de lectura de datos
cout<<"\n";
}
}
else
cout<<"El numero ingresado no existe";
}
void main()
{int B[MAX][MAX];
int nf,nc,num;
ingresadatos(B,nf,nc); cout<<"\n";
61
2. Ingresa un Numero N y luego imprime fila y columna N de la matriz, si solo existe la fila N, solo
se imprime dicha fila.
0 1 2 3 0 1 2 3
0 3 5 2 1 0 1
6 -5 7 9 1 9
1
8 1 4 -3 N=3,se -3
2 imprimela 2
columna3
0 1 2 3 0 1 2 3
0 3 5 2 1 0 2
6 -5 7 9 1 7
1
8 1 4 -3 N=2,se 8 1 4 -3
2 imprimelafila2 2
ylacolumna2
Solucin:
.. //Se entiende que se realizan los procedimientos de lectura de datos
cout<<"\n\n\n";
for(i=0;i<=nf-1;i++)
{ for(j=0;j<=nc-1;j++)
{
if(i==n || j==n)
cout<<M[i][j]<<"\t";
else
cout<<" ";
}
cout<<"\n";
}
}
void main()
{int B[MAX][MAX];
int nf,nc;
ingresadatos(B,nf,nc);cout<<"\n";
seleccion(B,nf,nc);cout<<"\n";
}
62
6 8 1 4 8 1
M7 2 5 M7 2 5
1 5 4 1 5 6
6 8 4 6 7 1 9
M 7 2 5 M 8 2 5 7
1 5 3 4 5 3 -1
9 7 -1
63
ingresadatos(B,nf,nc); cout<<"\n";
mostrar(B,nf,nc); cout<<"\n";
cout<<"Matriz Transpuesta";
transpuesta(B,nf,nc,T);
ft=nf;
ct=nc;
temp=ft;
ft=ct;
ct=temp;
mostrar(T,ft,ct);
cout<<"\n";
}
Actividades
Elaborar el programa en C ++ para:
1. Dada una matriz de n filas y m columnas, elaborar los mdulos de programa para: indicar
el menor elemento y la(s) posicin(es) en que se encuentra y para hacer rotar a la matriz
3 veces (intercambiar filas y columnas).
2. Realizar el ordenamiento descendente de una fila en un arreglo bidimensional.
3. Realizar el ordenamiento descendente de una columna en un arreglo bidimensional.
64