Separata N 01 (semana 1)
Escuela Profesional: Ing. Informtica
Turno: Maana, Noche
Docente: Ing. Carol Rojas Moreno
PROCESADOR
Datos
S
Informacin
ALGORITMO
Algoritmo
Conjunto de instrucciones que especifican la secuencia de pasos ordenados de operaciones
a realizar, para dar solucin a un problema.
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.
Lenguajes de Programacin- Tipos
a. Lenguaje Mquina
b. Lenguaje de Bajo Nivel
c. Lenguaje de Alto Nivel
Programas Traductores
Traducen los programas fuente de a cdigo mquina. Pueden ser:
TCNICAS DE PROGRAMACIN I
1.
PROGRAMA
FUENTE
INTERPRETE
PROGRAMA
EJECUTABLE
PROGRAMA
FUENTE
COMPILADOR
PROGRAMA
OBJETO
Programacin Estructurada
Conjunto de tcnicas para escribir, verificar, depurar, y mantener los programas, es una
metodologa de desarrollo de programas llamada refinamientos sucesivos: se plantea una
operacin como un todo y se divide en segmentos ms sencillos o de menor complejidad.
Una vez terminado todos los segmentos del programa, se procede a unificar las
aplicaciones, esta integracin debe ser sencilla.
La representacin grafica de la programacin estructurada se realiza a travs de diagramas
de flujo o flow chart, Diagramas N-S, el cual representa el programa con sus entradas,
procesos y salidas.
TCNICAS DE PROGRAMACIN I
El conjunto de tcnicas para este enfoque son:
1. Recursos Abstractos
Descomponer una determinada accin compleja en acciones ms simples, para ser
ejecutadas y que sern instrucciones.
2. Diseo Descendente
El problema se descompone en niveles o pasos sucesivos: que hace? como lo
hace?
Que hace
Como hace
3. Estructuras bsicas
Son estructuras de control para el programa:
-
Secuenciales
Selectivas
Repetitivas
TCNICAS DE PROGRAMACIN I
Separata N 02 (semana 2)
Escuela Profesional: Ing. Informtica
Turno: Maana, Noche
Docente: Ing. Carol Rojas Moreno
ALGORITMO
La palabra algoritmo se di en honor del matemtico persa del siglo IX, Khowrizm.
Es decir con ste trmino se hace referencia a un conjunto de reglas, ordenadas de forma
lgica, para desarrollar un clculo o para solucionar un problema, ya sea de forma manual
o utilizando una mquina.
Caractersticas de un algoritmo
Ser preciso: los pasos del algoritmo deben desarrollarse en un orden estricto, ya que el
desarrollo de cada paso debe obedecer a un orden lgico.
Ser definido. en el rea de programacin, el algoritmo se desarrolla como paso
fundamental para desarrollar un programa. El computador solo desarrollar las tareas
programadas y con los datos suministrados; no puede improvisar el dato que necesite
para realizar un proceso.
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.
TCNICAS DE PROGRAMACIN I
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.
Representacin del Algoritmo
a. Pseudocdigo: es la representacin del algoritmo en lenguaje natural.
Ejemplo: sumar dos nmeros enteros.
INICIO
entero
Leer numero1
Leer numero2
resultado
numero1 + numero 2
Subrutinas en el algoritmo
Conector del algoritmo en la misma hoja
Conector del algoritmo en otra hoja
Recopilado por Ing. Carol Rojas Moreno
TCNICAS DE PROGRAMACIN I
c.
Diagrama N-S: representacin en bloques, es decir cada uno de los procesos como
ingreso/salida de datos, decisiones, acciones, repeticiones; estn representados en
bloques de tareas consecutivos.
INICIO
Declaracin de variables
Lectura de Datos
Accin 1
Accin 2
Accin n
Reporte de Datos
FIN
Tarea de Investigacin :
Describa los sgtes. trminos para el lenguaje de programacin C:
1. Tipos de datos con su respectivo tamao y su rango de valores. Donde se declaran en un
programa en C.
char
int
float
double
signed: signed char , signed int
unsigned: unsigned char , unsigned int
short: short char , short int
long: long int , long double
2. Variables y su declaracin en un programa en C.
3. Constantes y su declaracin en un programa en C.
4. Operadores: Aritmticos y Asignacin. Jeraqua de Operadores.
5. Operadores: Lgicos y Relacionales.
6. Sentencias en C: printf ( ) y scanf ( ). Sentencias en C++: cout<< y cin >> Indicar para
cada uno su declaracin y su uso.
7. Estructura de un programa en el lenguaje C.
Presentacin: Primera Sesin de Clase de la Semana N 03.
Recopilado por Ing. Carol Rojas Moreno
TCNICAS DE PROGRAMACIN I
Separata N 03 (semana 3)
Escuela Profesional: Ing. Informtica
Turno: Maana, Noche
Docente: Ing. Carol Rojas Moreno
SENTENCIAS DE PROGRAMACIN
Las sentencias de programacin a utilizar es una las tcnicas de programacin del enfoque
estructurado: Estructuras Bsicas.
Recordando: son estructuras bsicas de control para el programa:
-
Simples o Secuenciales
Selectivas
Repetitivas
INICIO
Declaracin de Variables
Lectura de Datos
Accin 1
Accin 2
Accin n
Reporte de Datos
FIN
Recopilado por Ing. Carol Rojas Moreno
TCNICAS DE PROGRAMACIN I
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
Diagrama de Flujo
INICIO
real
Leer altura
Area
(base * altura) / 2
Escribir Area
FIN
TCNICAS DE PROGRAMACIN I
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 C:
#include<iostream.h>
main( )
{
//Salto de lnea
TCNICAS DE PROGRAMACIN I
Separata N 04 (semana 4)
Escuela Profesional: Ing. Informtica
Turno: Maana, Noche
Docente: Ing. Carol Rojas Moreno
E. B. Selectiva Simple
E. B. Selectiva Compuesta
E. B. Selectiva Anidada
E. B. Selectiva Mltiple
a. Estructura Bsica Selectiva Simple: se tiene un punto de decisin que evala una
condicin y si es Verdadero, ejecuta un conjunto de Acciones.
Diagrama de Flujo
INICIO
Declaracin de Variables
Lectura de Datos
V
Cond
1
Accin 1
Accin n
Reporte de Datos
FIN
Recopilado por Ing. Carol Rojas Moreno
10
TCNICAS DE PROGRAMACIN I
Diagrama N-S
INICIO
Declaracin de variables
Lectura de Datos
Cond 1
V
Accin 1
Accin 2
Accin n
Reporte de Datos
FIN
Ejemplo:
Sumar dos nmeros enteros positivos c = a + b
Solucin:
Leyenda de Datos
a: valor del primer numero entero positivo
b: valor del segundo numero entero positivo
c: valor del resultado la suma de dos nmeros a y b
Diagrama de Flujo
INICIO
entero
a, b, c
Leer a , b
V
c
a+b
FIN
11
TCNICAS DE PROGRAMACIN I
Diagrama N-S
INICIO
entero
Leer a , b
a, b, c
c
a+b
Escribir El valor la suma es: , c
FIN
Cdigo C:
#include<iostream.h>
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.
Recopilado por Ing. Carol Rojas Moreno
12
TCNICAS DE PROGRAMACIN I
Diagrama de Flujo
INICIO
Declaracin
de Variables
Lectura de
Datos
V
Cond
1
Accin 2
Accin 1
Accin m
Accin n
Reporte de
Datos
FIN
Diagrama N-S
INICIO
Declaracin de variables
Lectura de Datos
V
Accin 1
Accin n
Reporte de Datos
FIN
Cond 1
Accin 2
.
Accin m
13
TCNICAS DE PROGRAMACIN I
Ejemplo:
Sumar dos nmeros enteros si son positivos, sino multiplicarlos.
Solucin:
Leyenda de Datos
a: valor del primer numero entero positivo
b: valor del segundo numero 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
V
a >0 && b>0
a*b
Escribir El valor de la
multiplicacion es , c
a+b
Escribir El valor de la
suma es , c
FIN
Diagrama N-S
INICIO
entero
a, b, c
Leer a , b
a >0 && b>0
V
c
a+b
Escribir El valor la suma es: , c
FIN
Cdigo C:
F
c
a*b
Escribir El valor la multiplicacin es: , c
#include<iostream.h>
main( )
Recopilado por Ing. Carol Rojas Moreno
14
TCNICAS DE PROGRAMACIN I
{
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;
}
return 0;
}
b. Estructura Bsica Selectiva Anidada: se tiene un punto de decisin que evala una
condicin y si es Verdadero, ejecuta un nuevo punto de decisin y as sucesivamente, y si
es Falsa ejecuta otro conjunto de acciones.
Diagrama de Flujo
INICIO
Declaracin de Variables
15
TCNICAS DE PROGRAMACIN I
Lectura de Datos
V
Cond
1
Accin 2
V
Cond
2
Accin 1
Accin m
Accin n
Reporte de Datos
FIN
Diagrama N-S
INICIO
Declaracin de variables
Lectura de Datos
Cond 1
F
Accin 2
V
Cond 2
Accin m
Reporte de Datos
FIN
V
Accin 1
.
Accin n
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
16
TCNICAS DE PROGRAMACIN I
Entero
Leer a
V
a>0
F
Escribir No es un
nmero mayor que
cero
a>=1 &&
a>10
Escribir Son mas de
los primeros 10
Escribir Primeros 10
FIN
Diagrama N-S
INICIO
entero
a
Leer a
a>0
F
Escribir No es un nmero mayor F
a>=1 && a>10
Escribir Son mas de los primeros 10
que cero
FIN
V
V
Escribir Primeros 10
Cdigo C:
#include<iostream.h>
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;
17
TCNICAS DE PROGRAMACIN I
return 0;
}
c. Estructura Bsica Selectiva Mltiple: se tiene un punto de decisin que evala mas de
dos alternativas para realizar un conjunto de acciones.
Diagrama de Flujo
INICIO
Declaracin de Variables
Lectura de Datos
default
Cond
1
Accin 1
Accin 2
Accin 3
Accin n
Accin m
Accin m
Accin 4
Accin m
Accin 4
Reporte de Datos
FIN
Diagrama N-S
INICIO
Declaracin de variables
Lectura de Datos
Cond 1
1
2
3
Accin 1
Accin 2
Accin 3
Accin n
Accin m Accin m
Reporte de Datos
FIN
Recopilado por Ing. Carol Rojas Moreno
default
Accin 4
Accin m
18
TCNICAS DE PROGRAMACIN I
Ejemplo
Ingresa cinco nmeros e imprime que vocal es.
Solucin:
Leyenda de Datos
num: valor del numero entero positivo
Diagrama de Flujo
INICIO
entero
num
Leer num
default
num
2
Escribir
Vocal A
Escribir
Vocal E
Escribir
Vocal I
Escribir
Vocal O
Escribir
Vocal U
Escribir No
es Vocal
FIN
Diagrama N-S
INICIO
entero
num
Leer num
num
1
Escribir
Vocal A
2
Escribir
Vocal E
3
Escribir
Vocal I
4
Escribir
Vocal O
default
Escribir
Vocal U
Escribir No
es Vocal
FIN
Cdigo C:
Ingresa cinco nmeros e imprime que vocal es:
#include<iostream.h>
Recopilado por Ing. Carol Rojas Moreno
19
TCNICAS DE PROGRAMACIN I
main( )
{
int num;
cout<<Ingrese nmero: ;
cin>>num;
swith(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;
}
return 0;
}
20
TCNICAS DE PROGRAMACIN I
Separata N 05 (semana 5)
Escuela Profesional: Ing. Informtica
Turno: Maana, Noche
Docente: Ing. Carol Rojas Moreno
E. B. Repetitiva Mientras
E. B. Repetitiva Hacer-Mientras
E. B. Repetitiva Para
Lectura de Datos
F
Cond
1 V
Accin 1
Accin n
Accin 2
FIN
Recopilado por Ing. Carol Rojas Moreno
21
TCNICAS DE PROGRAMACIN I
Diagrama N-S
INICIO
Declaracin de variables
Lectura de Datos
Cond 1
Accin 1
.
Accin n
Accin 2
Reporte de Datos
FIN
Ejemplo en Cdigo C:
Imprimir la serie Fibonacci, menor a un lmite dado: 0,1,1,2,3,5,8,13,.
#include<iostream.h>
main( )
{ int lim, a=0, b=1,c;
cout<<Ingrese lmite: ;
cin>>lim;
cout<<a;
while(b<lim)
{
cout<<b;
a=b;
b=c;
}
return 0;
}
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.
22
TCNICAS DE PROGRAMACIN I
Diagrama de Flujo
INICIO
Declaracin
de Variables
Lectura de
Datos
Accin 1
Accin n
V
Cond
1
F
Accin 2
Reporte de
Datos
FIN
23
TCNICAS DE PROGRAMACIN I
Diagrama N-S
INICIO
Declaracin de variables
Lectura de Datos
Accin 1
.
Accin n
Cond 2
Accin 2
Reporte de Datos
FIN
Ejemplo en Cdigo C:
Se tiene un Stock inicial, del cual se realizan ventas a n clientes, si la venta supera al stock,
contar a los clientes insatisfechos. Mostrar la cantidad de clientes satisfechos, cantidad de
clientes insatisfechos, Total de ventas, y lo que queda en stock. El usuario debe indicar si
desea continuar o no.
#include<iostream.h>
main()
{ int n,m, cs=0,ci=0, venta=0;
char ops,op;
cout<<"-----Venta de Producto------";
cout<<"\n\n";
do{
do{
cout<<"Ingrese valor de stock inicial: ";
cin>>n;
}while(n<=0);
do{
do{
cout<<"Ingrese venta:
";
cin>>m;
}while(m<=0);
if(n>=m && m>0)
{
n=n-m;
venta=venta+m;
cs++;
if(n>0)
{
cout<<"\n";
cout<<"Desea Continuar?";
cin>>ops; cout<<"\n";
}
else
break;
}
else
Recopilado por Ing. Carol Rojas Moreno
24
TCNICAS DE PROGRAMACIN I
{
ci++;
cout<<"\n";
cout<<"Es mayor q el stock actual ";
cout<<"\n";
cout<<"Clientes Satisfechos: ";
cout<<cs; cout<<"\n";
cout<<"Clientes Insatisfechos:
";
cout<<ci; cout<<"\n";
cout<<"Total de Ventas: ";
cout<<venta;
cout<<"\n";
cout<<"Queda de Stock:
";
cout<<n; cout<<"\n";
cout<<"---------------------------";
cout<<"\n\n";
cout<<"Desea Continuar?";
cin>>ops;
cout<<"\n\n";
}
}while(ops=='S' || ops=='s');
cout<<"------REPORTE FINAL------";
cout<<"\n";
cout<<"Clientes Satisfechos: ";
cout<<cs; cout<<"\n";
cout<<"Clientes Insatisfechos:
";
cout<<ci; cout<<"\n";
cout<<"Total de Ventas: ";
cout<<venta; cout<<"\n";
cout<<"Queda de Stock:
";
cout<<n; cout<<"\n";
cout<<"--------------------------";
cout<<"\n\n";
if(n==0)
{cout<<"Se completo ultimo pedido, su stock actual es CERO";
cout<<"\n";
cs=0;
ci=0;
venta=0;
cout<<"Desea Otro Stock Inicial? (s)";
cin>>op;
}
else
break;
}while(op=='S' || op=='s');
return 0;
}
25
TCNICAS DE PROGRAMACIN I
c. Estructura Bsica Repetitiva Para: permite repetir un conjunto de acciones,
secuencialmente hasta llegar a un lmite dado.
Diagrama de Flujo
INICIO
Declaracin
de Variables
Lectura de
Datos
Definir variable de
recorrido y lmite
Inicializar la variable
de recorrido
Accin 1
Accin n
Incrementar
Variable de
Recorrido
Variable
recorrido es
menor a lmite
Accin 2
Reporte de
Datos
FIN
26
TCNICAS DE PROGRAMACIN I
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
Ejemplo en Cdigo C:
Calcular el Factorial de un nmero.
#include<iostream.h>
main( )
{ int 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;
return 0;
}
27
TCNICAS DE PROGRAMACIN I
Separata N 06 (semana 6)
Escuela Profesional: Ing. Informtica
Turno: Maana, Noche
Docente: Ing. Carol Rojas Moreno
FUNCIONES Y PROCEDIMIENTOS
En algunas ocasiones se debe llamar un bloque de cdigo mas de una vez, una forma de
hacerlo es escribir las instrucciones tantas veces como se necesite, dando programas con
exceso de cdigo y dificultad para descubrir posibles errores.
La otra forma es tener las instrucciones en subprogramas que se invocan cada vez que se
necesiten. Los subprogramas son partes separadas de cdigo que ejecutan tareas pequeas de
un programa principal.
Parmetros de entrada (valor)
La diferencia de pasar parmetros por referencia respecto a parmetros por valor radica en que
en estos ltimos se guarda en memoria una copia temporal de la variable, dentro del
procedimiento solo se utiliza la copia, cuando se modifica el valor del parmetro solo afecta al
almacenamiento temporal, la variable actual fuera del procedimiento nunca se toca.
Ejemplo:
void dibLineas( int anchura, int altura )
{ int nFila;
int nColumna;
for( nFila = 1 ; nFila <= altura; ++nFila )
{
for( nColumna = 1; nColumna <= anchura; ++nColumna )
cout << "-";
cout << endl;
}
}
Parmetros de entrada/salida (referencia)
Cuando se pasa una variable a un procedimiento como parmetro por referencia, los cambios
que se efecten sobre dicha variable dentro del procedimiento se mantienen incluso despus
de que este haya terminado, es decir los cambios afectan al programa principal.
Recopilado por Ing. Carol Rojas Moreno
28
TCNICAS DE PROGRAMACIN I
Ejemplo:
void raices( double a, double b, double c, double &R1, double
&R2 )
{ double DiscriminanteS;
// Se supone un discriminante positivo
DiscriminanteS = sqrt( b*b-4.0*a*c );
R1 = (-b + DiscriminanteS) / (2.0*a);
R2 = (-b - DiscriminanteS) / (2.0*a);
}
1.
PROCEDIMIENTOS
Se utilizan para imprimir valores a ser utilizados en el programa.
Declaracin:
Void NombreProcedimiento( )
Void NombreProcedimiento (argumentos)
2.
FUNCIONES
Si se tiene el siguiente programa simple para sumar dos nmeros, sin utilizar Funciones ni
Procedimientos:
//Programa Simple
#include<iostream.h>
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";
return 0;
}
Recopilado por Ing. Carol Rojas Moreno
29
TCNICAS DE PROGRAMACIN I
Con Procedimientos:
//Procedimientos con Argumentos: Ejemplo1
#include<iostream.h>
void sumar(int a, int b)
{ int c;
c=a+b;
cout<<c;
cout<<"\n";
}
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;
}
30
TCNICAS DE PROGRAMACIN I
Con Funciones:
"<<sum;
"<<sum;
31
TCNICAS DE PROGRAMACIN I
32
TCNICAS DE PROGRAMACIN I
Separata N 07 (semana 7)
Escuela Profesional: Ing. Informtica
Turno: Maana, Noche
Docente: Ing. Carol Rojas Moreno
33
TCNICAS DE PROGRAMACIN I
#include<iostream.h>
#include c:\programas\lecturadato.h
main()
{ int num;
num=leedatoe();
if(num>0)
cout<<El numero es positivo;
else
cout<<El numero es negativo;
return 0;
}
Ejemplo 2:
Desarrollar la sgte. Ecuacin solo si son nmeros positivos y diferentes a cero.
y = x * (2x - a)
Solucin:
- La funcin para la lectura de datos enteros y diferentes a cero ya fue creada para el programa
del ejemplo 1.
- Solo se crear el programa fuente con extensin .cpp para desarrollar la ecuacin.
#include<iostream.h>
#include c:\programas\lecturadato.h
main()
{ int x,a,y;
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;
return 0;
}
34
TCNICAS DE PROGRAMACIN I
Separata N 08 (semana 8)
Escuela Profesional: Ing. Informtica
Turno: Maana, Noche
Docente: Ing. Carol Rojas Moreno
35
TCNICAS DE PROGRAMACIN I
2. Se repartir la herencia entre los hijos de un seor como sigue:
Si la cantidad de hijos es menor a 4, se repartir exactamente entre el nmero de hijos; si son
cuatro o mas hijos, la mitad le tocar al hermano mayor y el resto se dividir entre los dems
hermanos. Se debe reportar cuanto le corresponde a cada hijo. Se debe ingresar la herencia y
el nmero de hijos.
#include<iostream.h>
//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=her/2;
her=her/(num-1);
cout<<"\nHerencia de hermano mayor es"<<may;
cout<<"\nHerencia de cada hijo es "<<her;
}
}
main( )
{
herencia( );
return 0;
}
36
TCNICAS DE PROGRAMACIN I
2.
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
Tipo Cliente
Excelente (E)
Bueno (B)
Regular (R)
Malo (M)
40
30
20
0
30
20
10
0
20
10
0
0
37
TCNICAS DE PROGRAMACIN I
c. El total de nmeros ledos.
No considerar el valor cero.
5.
La tasa de inters sobre un prstamo es del 8% si la cantidad es menor que S/. 200,
pero es de 6% si excede a 200. Ingrese la cantidad y reporte el inters de esa cantidad y
el monto total por devolver.
6.
7.
Escribir un programa el cual permita leer nmeros enteros diferentes a cero, y que
al finalizar reporte:
a. El nmero mayor y el nmero menor.
b. La cantidad de nmeros positivos, y la cantidad de nmeros negativo.
c. El total de nmeros no vlidos ledos.
8.
Elaborar un programa que permita leer las edades de personas y que calcule la
edad mayor, la edad menor, la edad promedio y el nmero de datos ledos.
Solucin al ejercicio 2
#include<iostream.h>
char leecliente()
{char tipoclie;
do{
cout<<"-------------------------------- \n";
cout<<"Ingrese tipo cliente E:Exelente B:Bueno R:
Regular M: Malo";
cin>>tipoclie;
}while(tipoclie!='E' && tipoclie!='B' && tipoclie!='R' &&
tipoclie!='M');
return tipoclie;
}
char leearticulo()
{
char tipoartic;
do{ cout<<"-------------------------------- \n";
cout<<"Ingrese tipo articulo A, B o C
";
cin>>tipoartic;
}while(tipoartic!='A' && tipoartic!='B' && tipoartic!='C');
return tipoartic;
}
Recopilado por Ing. Carol Rojas Moreno
38
TCNICAS DE PROGRAMACIN I
void Muestra()
{
char clie, artic;
clie=leecliente();
artic=leearticulo();
switch(clie)
{
case 'E':{
cout<<"Efectivo, Cheque o Credito";
switch(artic)
{
case 'A': cout<<"Dcto: 40%";break;
case 'B': cout<<"Dcto: 30%";break;
case 'C': cout<<"Dcto: 20%";break;
}
}break;
case 'B':{
case 'R':{
cout<<"Efectivo o Cheque";
switch(artic)
{
case 'A': cout<<"Dcto: 20%";break;
case 'B': cout<<"Dcto: 10%";break;
case 'C': cout<<"Dcto: 0%";break;
}
}break;
case 'M':{
cout<<"Efectivo";
switch(artic)
{
case 'A': cout<<"Dcto:
case 'B': cout<<"Dcto:
case 'C': cout<<"Dcto:
}
}break;
0%";break;
0%";break;
0%";break;
39
TCNICAS DE PROGRAMACIN I
FUNCIONES RECURSIVAS
Se denominan funciones recursivas a aquellas que se invocan a s mismas en un programa.
Hay qye tener algunas cosas en cuenta en las funciones recursivas:
- Toda funcin recursiva debe tener algn punto de finalizacin.
- La funcin debe tender a ese punto de finalizacin.
La funcin factorial:
4! = 4 * 3 * 2 * 1
n!
4 * 3!
4! = 4 * 3 * 2 * 1
4 * 3!
3! = 3 * 2 * 1
Es decir n*(n-1)!
3 * 2!
3! = 3 * 2 * 1
3 * 2!
2! = 2 * 1
Es decir n*(n-1)!
2 * 1!
1! = 1 * 0!
2! = 2 * 1
0! = 1
2 * 1! Es decir n*(n-1)!
1! = 1 * 0!
1 * 1 * 2 * 3 * 4 = 24
0! = 1
int factorial(int n)
{
if (n == 0)
return 1;
else
return n*factorial(n-1);
}
40
TCNICAS DE PROGRAMACIN I
La funcin multiplicacin:
3*4=3+3+3+3
a*b
3 + (3 * 3)
3*4=3+3+3+3
3*3=3+3+3
3 + (3 * 3)
3 + (3 * 2)
3*3=3+3+3
3*2=3+3
3 + (3 * 2)
3 + (3 *1)
3*2=3+3
3*1 =3
3 + (3 *1)
3*1 =3
3 + 3 + 3 + 3 = 12
41
TCNICAS DE PROGRAMACIN I
TipoDato
Entero
NombreArreglo[tamao]
M[10]
42
TCNICAS DE PROGRAMACIN I
//Programa para promediar las alturas de los alumnos
#include<iostream.h>
#define N 5
void leerarre(double array[ ])
{ int i;
for(i=0;i<=N-1;i++)
{cout<<"Ingrese altura alumno A"<<"["<<i<<"]"<<":\t";
cin>>array[i];
cout<<"\n";
}
}
double suma(double array[ ])
{
int i;
double suma=0;
for(i=0;i<=N-1;i++)
{
suma=suma+array[i];
}
return suma;
}
double promedio(double sum)
{ double prom;
prom=sum/N;
return prom;
}
void main()
{ double A[N],sum,promed;
leerarre(A);
sum=suma(A);
promed=promedio(sum);
cout<<"\t\tLa suma es "<<sum;
cout<<"\n\n";
cout<<"\t\tEl promedio es "<<promed;
cout<<"\n\n";
}
43
TCNICAS DE PROGRAMACIN I
El siguiente programa lee un arreglo de nmeros enteros y encuentra el mayor y menor
elemento. El mx de elementos es 100 pero solo ingresa n elementos.
//Programa para hallar el mayor y menor elemento de un arreglo
#include<iostream.h>
#define MAXIMO 100
int leenumelem()
{ int n;
do{
cout<<"\n";
cout<<"Ingrese cantidad de elementos (mayor igual a CERO y menor
que MAXIMO 100): ";
cin>>n;
}while(n<=0 || n>MAXIMO);
return n;
}
void leerarre(int N, int array[])
{
int i;
for(i=0;i<=N-1;i++)
{ cout<<"Ingrese altura alumno A"<<"["<<i<<"]"<<":\t";
cin>>array[i];
cout<<"\n"; }
}
void comparar(int N, int array[])
{ int i, mayor, menor;
mayor=array[0];
menor=array[0];
for(i=0;i<=N-1;i++)
{ if (array[i]>mayor)
mayor=array[i];
if (array[i]<menor)
menor=array[i];
}
cout<<"El mayor es :"<<mayor<<"\n";
cout<<"El menor es :"<<menor<<"\n";
}
void main()
{ int A[MAXIMO];
int n;
n=leenumelem();
leerarre(n,A);
comparar(n,A);
}
44
TCNICAS DE PROGRAMACIN I
A. ACTUALIZACIN DE ARREGLOS
Los Arreglos necesitan actualizarse mientras se efecta algn proceso con ellos. La
actualizacin de arreglos consiste en tres operaciones: Aadir elementos al final del
arreglo (siempre y cuando exista espacio en el arreglo), Insertar elementos en cualquier
posicin del arreglo y Eliminar elementos.
Aadir
//Aadir un valor en la ultima posicin
#include<iostream.h>
#define MAX 100
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];
}
}
void mostrar(int V[MAX], int n)
{
int i;
cout<<"Los elementos del arreglo son"; cout<<"\n";
for(i=0;i<=n-1;i++)
{ cout<<"Elemento"<<"["<<i<<"]"<<":\t";
Recopilado por Ing. Carol Rojas Moreno
45
TCNICAS DE PROGRAMACIN I
cout<<V[i]; cout<<"\n";
}
}
int ultimoelemento(int a[MAX], int n)
{ int i,p = n;
if (p<MAX)
{
for(i=p;i<=n;i++) //ingresa nuevo elemento
{cout<<"\n Ingrese nuevo elemento de arreglo "<<":\t";
cin>>a[i];
}
n=n+1;
return n;
}
}
void main()
{
int A[MAX];
int num,elem;
num=leenum();
ingresadatos(A,num); cout<<"\n";
mostrar(A,num); cout<<"\n";
elem=ultimoelemento(A, num);
mostrar(A,elem);
}
Insertar
//Insertar un valor en cualquier posicin
#include<iostream.h>
#define MAX 100
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];
}
}
void mostrar(int V[MAX], int n)
{
int i;
cout<<"Los elementos del arreglo son"; cout<<"\n";
for(i=0;i<=n-1;i++)
{ cout<<"Elemento"<<"["<<i<<"]"<<":\t";
Recopilado por Ing. Carol Rojas Moreno
46
TCNICAS DE PROGRAMACIN I
cout<<V[i]; cout<<"\n";
}
}
int posicion(int a[MAX], int n)
{int i,p;
cout<<"\n Ingrese posicion a insertar elemento de arreglo
A"<<":\t";
cin>>p;
i=n-1;
while (i>=p)
{
a[i+1]=a[i];
i=i-1;
}
return p;
}
int nuevoelemento(int a[MAX],int p, int n)
{
int elem;
cout<<"\n Ingrese nuevo elemento de arreglo a"<<":\t";
cin>>elem;
a[p]=elem;
n=n+1;
return n;
}
void main()
{
int A[MAX];
int num,pos,elem;
num=leenum();
ingresadatos(A,num);
cout<<"\n";
mostrar(A,num);
cout<<"\n";
pos=posicion(A,num);
elem=nuevoelemento(A,pos, num);
mostrar(A,elem);
}
Eliminar
//Eliminar un valor en cualquier posicin
#include<iostream.h>
#define MAX 100
int leenum()
{
int num;
do{cout<<"Ingrese numero de elementos para el arreglo: ";
cin>>num;
cout<<"\n";
}while(num<=0 || num>MAX);
Recopilado por Ing. Carol Rojas Moreno
47
TCNICAS DE PROGRAMACIN I
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];
}
}
void mostrar(int V[MAX], int n)
{
int i;
cout<<"Los elementos del arreglo son"; cout<<"\n";
for(i=0;i<n;i++)
{ cout<<"Elemento"<<"["<<i<<"]"<<":\t";
cout<<V[i]; cout<<"\n";
}
}
int elimina(int a[MAX], int n)
{int i,p;
cout<<"\n Ingrese posicion a eliminar elemento de arreglo "<<":\t";
cin>>p;
i=p;
while (i<=n)
{
a[i]=a[i+1];
i++;
}
return n-1;
}
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);
}
48
TCNICAS DE PROGRAMACIN I
B. BUSQUEDA DE ARREGLOS
La bsqueda es la recuperacin de la informacin de los elementos de un arreglo. Para ello
se necesita recorrer el arreglo y hacer uso de uno de los mtodos de bsqueda de un
elemento tales como: Bsqueda Secuencial Bsqueda Binaria.
B. Secuencial
//Bsqueda Secuencial 1
#include<iostream.h>
#define MAX 100
//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();
ingresadatos(A,num); cout<<"\n";
mostrar(A,num); cout<<"\n";
bsecuencial(A,num);
}
Recopilado por Ing. Carol Rojas Moreno
49
TCNICAS DE PROGRAMACIN I
//Busqueda Secuencial 2
#include<iostream.h>
#define MAX 100
//Se entiende que se realizan los procedimientos de
lectura de datos
void bsecuencial(int a[MAX], int n)
{int elem,i;
bool Encontrado = false;
cout<<"\n Ingrese elemento a buscar en el arreglo "<<":\t";
cin>>elem;
for(i=1;i<=n;i++)
{
if(a[i]==elem)
{ Encontrado=true;
cout<<"\n Encontrado\t Posicion :\t"<<i<<"\t";
cout<<"\n\n";
}
}
if(Encontrado==false)
{
cout<<"\n No Encontrado\t "; cout<<"\n\n";
}
}
void main()
{
int A[MAX];
int num;
num=leenum();
ingresadatos(A,num); cout<<"\n";
mostrar(A,num); cout<<"\n";
bsecuencial(A,num);
}
B. Binaria
#include<iostream.h>
#define MAX 100
int leenum()
{
int num;
do{ cout<<"Ingrese numero de elementos para el arreglo: ";
cin>>num; cout<<"\n";
}while(num<=0 || num>MAX);
return num;
}
Recopilado por Ing. Carol Rojas Moreno
50
TCNICAS DE PROGRAMACIN I
51
TCNICAS DE PROGRAMACIN I
C. ORDENACIN DE ELEMENTOS
La ordenacin es la clasificacin de un orden particular de los elementos de un arreglo, es
decir ya sea en forma ascendente o descendente. El Mtodo Intercambio permite comparar
elementos e intercambiar posiciones.
//Ordenacion por Burbuja
#include<iostream.h>
#define MAX 100
//Se entiende que se realizan los procedimientos de
lectura de datos
void burbuja(int a[MAX], int n)
{
int i,j,temp;
for(i=0;i<n-1;i++)
for(j=n-1;j>=i+1;j--)
if (a[j]<a[j-1])
{
temp=a[j];
a[j]=a[j-1];
a[j-1]=temp;
}
}
void main()
{
int A[MAX];
int num;
num=leenum();
ingresadatos(A,num); cout<<"\n\n";
burbuja(A,num);
mostrar(A,num);
}
52
TCNICAS DE PROGRAMACIN I
EJERCICIOS
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
5
8
12
6
9
2
n1=6
B
15
9
8
6
45
22
7
n2=7
C
5
12
2
elem=3
B
15
9
8
6
45
22
7
n2=7
C
8
6
9
elem=3
Solucin: Ejercicio 1
//Dados dos arreglos numericos A y B, de n1 y n2 elementos
//Guarde en un tercer arreglo C todos los valores que estan
en A pero no en B
#include<iostream.h>
#define MAX 100
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<<"]"<<":";
Recopilado por Ing. Carol Rojas Moreno
53
TCNICAS DE PROGRAMACIN I
cin>>V[i];
}
}
int separacion(int VA[MAX],int na,int VB[MAX],int nb,int
VC[MAX])
{
int i,j;
int k=0, ban=0;
//busqueda de arreglos
for(i=0;i<na;i++)
{for(j=0;j<nb;j++)
if(VA[i]==VB[j])
{
ban=1;
break;
}
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";
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");
}
Recopilado por Ing. Carol Rojas Moreno
54
TCNICAS DE PROGRAMACIN I
Solucin: Ejercicio 2
//Dados dos arreglos numricos A y B, de n1 y n2 elementos
//Guarde en un tercer arreglo C todos los valores que estn
en A y en B
#include<iostream.h>
#define MAX 100
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];
}
}
int interseccion(int VA[MAX],int na,int VB[MAX],int nb,int
VC[MAX])
{
int i,j;
int k=0, ban=0;
//busqueda de arreglos
for(i=0;i<na;i++)
{
for(j=0;j<nb;j++)
if(VA[i]==VB[j])
{ VC[k]=VA[i];
k++;
}
if(ban==1)
{ ban=1;
break;
}
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";
Recopilado por Ing. Carol Rojas Moreno
55
TCNICAS DE PROGRAMACIN I
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=interseccion(A,na,B,nb,C);
mostrar(C,elem,"Arreglo C");
}
56
TCNICAS DE PROGRAMACIN I
Ejm.
TipoDato
Entero
NombreMatriz[nfilas][ncolumnas]
M[4][5]
57
TCNICAS DE PROGRAMACIN I
void mostrar(int M[MAX][MAX], int nf, int nc)
{int i,j;
cout<<"Los elementos de la matriz son";
cout<<"\n";
for(i=0;i<=nf-1;i++)
for(j=0;j<=nc-1;j++)
{ cout<<"Elemento ["<<i<<"]"<<"["<<j<<"]"<<":";
cout<<M[i][j]; cout<<"\n";
}
}
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";
}
//El mayor elemento de una matriz
..
lectura de datos
void mayor(int M[MAX][MAX], int nf, int nc)
{int i,j,mayor;
mayor =M[0][0];
for(i=0;i<=nf-1;i++)
for(j=0;j<=nc-1;j++)
{
if (M[i][j]>mayor)
mayor=M[i][j];
}
cout<<"\n"; cout<<"El nmero mayor es: "<<mayor;
cout<<"\n";
}
void main()
{ int B[MAX][MAX];
int nf,nc;
cout<<"Ingrese numero de filas
nf=leenum();
Recopilado por Ing. Carol Rojas Moreno
";
58
TCNICAS DE PROGRAMACIN I
";
ingresadatos(B,nf,nc); cout<<"\n";
mostrar(B,nf,nc); cout<<"\n";
mayor(B,nf,nc);
}
//Diagonal Principal y Diagonales de una matriz
.. //Se entiende que se realizan los procedimientos de
lectura de datos
void diagonal_principal(int M[MAX][MAX], int nf, int nc)
{int i,j;
if(nf==nc)
{ for(i=0;i<=nf-1;i++)
{
for(j=0;j<=nc-1;j++)
if(i==j)
{ cout<<"\n"; cout<<M[i][j]<<"\n";
}
else
cout<<" ";
cout<<"\n";
}
}
else
{
cout<<"Para la Diagonal Principal: columnas y filas deben
ser iguales";
cout<<"\n\n";
}
}
void diagonalsecundaria(int M[MAX][MAX], int nf, int nc)
{ int i,j,k;
k=nc-1;
if(nf==nc)
{
for(i=0;i<nf;i++)
{
for(j=0;j<nc;j++)
if(j == k)
{ cout<<M[i][j]; }
else
Recopilado por Ing. Carol Rojas Moreno
59
TCNICAS DE PROGRAMACIN I
cout<<"\t";
k--;
cout<<"\n";
}
}
else
{ cout<<"Para la Diagonales: columnas y filas deben ser
iguales";
cout<<"\n\n";
}
}
void diagonales(int M[MAX][MAX], int nf, int nc)
{ int i,j,k;
k=nc-1;
if(nf==nc)
{
for(i=0;i<=nf-1;i++)
{
for(j=0;j<=nc-1;j++)
if(i==j || j==k)
{ cout<<"\n";
cout<<M[i][j]<<"\n";
}
else
{cout<<" ";}
k--;
cout<<"\n";
}
}
else
{ cout<<"Para la Diagonales: columnas y filas deben ser
iguales"; cout<<"\n\n";
}
}
void main()
{ int B[MAX][MAX];
int nf,nc;
cout<<"Ingrese numero de filas
nf=leenum();
";
";
ingresadatos(B,nf,nc); cout<<"\n";
mostrar(B,nf,nc); cout<<"\n";
cout<<"Los elementos de la diagonal Principal: "<<"\n";
Recopilado por Ing. Carol Rojas Moreno
60
TCNICAS DE PROGRAMACIN I
diagonal_principal(B,nf,nc); cout<<"\n";
cout<<"Los elementos de las diagonales : "<<"\n";
diagonales(B,nf,nc); cout<<"\n";
}
B. ACTUALIZACIN
//Insertar fila y columna de una matriz
//Se entiende que se realizan los procedimientos de
lectura de datos
int insertar_fila(int M[MAX][MAX], int nf, int nc)
{ int i,j,pos;
do{ cout<<"Ingrese posicion para insertar fila: ";
cin>>pos;
}while(pos<0 || pos>nf);
for(i=nf-1;i>=pos;i--)
for(j=0;j<=nc-1;j++)
M[i+1][j]=M[i][j];
for(j=0;j<=nc-1;j++)
{
cout<<"M["<<pos<<"]"<<"["<<j<<"] : ";
cin>>M[pos][j];
}
nf++;
return nf;
}
int insertar_columna(int M[MAX][MAX], int nf, int nc)
{int i,j,pos;
do{ cout<<"Ingrese posicion para insertar columna: ";
cin>>pos;
}while(pos<0 || pos>nc);
for(i=0;i<=nf-1;i++)
for(j=nc-1;j>=pos;j--)
M[i][j+1]=M[i][j];
for(i=0;i<=nf-1;i++)
{ cout<<"M["<<i<<"]"<<"["<<pos<<"] : ";
Recopilado por Ing. Carol Rojas Moreno
61
TCNICAS DE PROGRAMACIN I
cin>>M[i][pos];
}
nc++;
return nc;
}
void main()
{ int B[MAX][MAX];
int nf,nc,fil,col;
cout<<"Ingrese numero de filas
nf=leenum();
";
";
ingresadatos(B,nf,nc); cout<<"\n";
mostrar(B,nf,nc); cout<<"\n";
cout<<"Inserta fila: "<<"\n";
fil=insertar_fila(B,nf,nc); cout<<"\n";
cout<<"Matriz Inicial con fila insertada";
mostrar(B,fil,nc); cout<<"\n";
cout<<"Inserta columna: "<<"\n";
col=insertar_columna(B,nf,nc); cout<<"\n";
cout<<"Matriz Inicial con columna insertada";
mostrar(B,nf,col); cout<<"\n";
}
//Borrar fila y columna de una matriz
.. //Se entiende que se realizan los procedimientos de
lectura de datos
int borrar_fila(int M[MAX][MAX], int nf, int nc)
{ int i,j,pos;
do{ cout<<"Ingrese posicion para borrar fila: ";
cin>>pos;
}while(pos<0 || pos>=nf);
for(i=pos;i<nf-1;i++)
for(j=0;j<=nc-1;j++)
M[i][j]=M[i+1][j];
nf--;
return nf;
}
Recopilado por Ing. Carol Rojas Moreno
62
TCNICAS DE PROGRAMACIN I
int borrar_columna(int M[MAX][MAX], int nf, int nc)
{ int i,j,pos;
do{ cout<<"Ingrese posicion para insertar columna: ";
cin>>pos;
}while(pos<0 || pos>=nc);
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;
cout<<"Ingrese numero de filas
nf=leenum();
";
";
ingresadatos(B,nf,nc); cout<<"\n";
mostrar(B,nf,nc); cout<<"\n";
cout<<"Elimina fila: "<<"\n";
fil=borrar_fila(B,nf,nc); cout<<"\n";
cout<<"Matriz Inicial con fila eliminada";
mostrar(B,fil,nc); cout<<"\n";
cout<<"Elimina columna: "<<"\n";
col=borrar_columna(B,nf,nc); cout<<"\n";
cout<<"Matriz Inicial con columna eliminada";
mostrar(B,nf,col); cout<<"\n";
}
63
TCNICAS DE PROGRAMACIN I
Ejercicios
1. Imprimir lo nmeros que rodean a un nmero X, la primera vez que se encuentra en la
Matriz incluido el nmero X:
-6
-5
-3
-3
N = 3, se
imprime la
columna 3
-5
-3
N = 2, se
imprime la
fila 2 y la
columna 2
-3
64
TCNICAS DE PROGRAMACIN I
65
TCNICAS DE PROGRAMACIN I
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 */
.. //Se entiende que se realizan los procedimientos de
lectura de datos
void seleccion(int M[MAX][MAX], int nf, int nc)
{
int i,j,n;
do{
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;
cout<<"Ingrese N filas
nf=leenum();
";
cout<<"Ingrese N columnas
nc=leenum();
";
ingresadatos(B,nf,nc);
cout<<"\n";
seleccion(B,nf,nc);
cout<<"\n";
}
66
TCNICAS DE PROGRAMACIN I
Ejercicios
Invertir Diagonal Principal de una Matriz:
6
7
1
8
2
5
4
5
3
3
7
1
8
2
5
4
5
6
67
TCNICAS DE PROGRAMACIN I
Intercambiar Filas por Columnas (Matriz Transpuesta)
6
7
1
9
8
2
5
7
4
5
3
-1
6
8
4
7
2
5
1
5
3
9
7
-1
68
TCNICAS DE PROGRAMACIN I
69
TCNICAS DE PROGRAMACIN I
de un objeto, tal como son. De aqu que un objeto no es una clase, sin embargo, una clase
puede ser un objeto.
Los principios (fundamentos) del enfoque Orientado a Objetos:
Polimorfismo: capacidad del cdigo de un programa para ser utilizado con diferentes
tipos de datos. El polimorfismo significa que objetos similares pueden responder a el
mismo mensaje de diferentes maneras.
Otros Conceptos:
Que es RUP ?
Que es UML?
Qu lenguajes de Programacin Orientado a Objetos existen?
70