Sei sulla pagina 1di 70

TCNICAS DE PROGRAMACIN I

Separata N 01 (semana 1)
Escuela Profesional: Ing. Informtica
Turno: Maana, Noche
Docente: Ing. Carol Rojas Moreno

Asignatura: Tcnicas de Programacin I


Ciclo: Cuarto
Fecha: 07-08-2006

INTRODUCCIN A LA PROGRAMACIN ESTRUCTURADA


CONCEPTOS PREVIOS
Sistema de Procesamiento de la Informacin
Es un sistema que transforma datos en informacin.
E

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:

Recopilado por Ing. Carol Rojas Moreno

TCNICAS DE PROGRAMACIN I
1.

Intrpretes: es un traductor que toma un programa fuente, lo traduce y a continuacin


lo ejecuta.

PROGRAMA
FUENTE
INTERPRETE

PROGRAMA
EJECUTABLE

2. Compilador: es un traductor que toma un programa fuente, y lo traduce sentencia por


sentencia.

PROGRAMA
FUENTE
COMPILADOR

PROGRAMA
OBJETO

La compilacin es el proceso de traduccin del programa fuente a programa objeto


(traducido a cdigo mquina), a travs de un programa enlazador, para conducir al
programa ejecutable.
PROGRAMA
FUENTE
COMPILADOR
(Traductor)
PROGRAMA
OBJETO
PROGRAMA
ENLAZADOR
PROGRAMA
EJECUTABLE

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.

Recopilado por Ing. Carol Rojas Moreno

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

ste conjunto de tcnicas permite elaborar programas en cualquier lenguaje de


programacin.
Las estructuras bsicas mencionadas sern desarrolladas mas adelante en otras sesiones de
clase.
Resolucin de un Problema
1. Anlisis del Problema
1. Diseo del Algoritmo
2. Expresar el algoritmo en un programa.
3. Ejecucin y Validacin del programa.

Recopilado por Ing. Carol Rojas Moreno

TCNICAS DE PROGRAMACIN I

Separata N 02 (semana 2)
Escuela Profesional: Ing. Informtica
Turno: Maana, Noche
Docente: Ing. Carol Rojas Moreno

Asignatura: Tcnicas de Programacin I


Ciclo: Cuarto
Fecha: 14-08-2006

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.

Recopilado por Ing. Carol Rojas Moreno

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

numero1, nuemro2, 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
Procesos del algoritmo
Entada/Salida Estndar de Datos del algoritmo
Flujo de recorrido entre Procesos del algoritmo
Punto de Decisin del algoritmo

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

Asignatura: Tcnicas de Programacin I


Ciclo: Cuarto
Fecha: 21-08-2006

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

Representacin del Algoritmo en cada Estructura Bsica


1. Estructura Bsica Simple o Secuencial: es una estructura paso a paso, sin bifurcaciones
ni repeticiones; donde la salida de un proceso es entrada para otro.
Diagrama de Flujo

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

base, altura, Area


Leer base

Leer altura

Area

(base * altura) / 2

Escribir El valor del rea para


el tringulo es:

Escribir Area

FIN

Recopilado por Ing. Carol Rojas Moreno

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( )
{

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;
Area = (base * altura) / 2;
cout<<El valor del rea para el tringulo es: ;
cout<<Area;
cout<<\n;
return 0;
}
Ejercicios
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. Escribir un programa que convierta una distancia medida en pulgadas a
centmetros. (1 pulg = 2.54 cm.)
3. Calcular el numero de pulsaciones que una persona debe tener por cada 10
segundos de ejercicio, si la formula es: Num_pulsaciones = (220 - edad)/10

Recopilado por Ing. Carol Rojas Moreno

TCNICAS DE PROGRAMACIN I

Separata N 04 (semana 4)
Escuela Profesional: Ing. Informtica
Turno: Maana, Noche
Docente: Ing. Carol Rojas Moreno

Asignatura: Tcnicas de Programacin I


Ciclo: Cuarto
Fecha: 28-08-2006

SENTENCIAS DE PROGRAMACIN (cont.)


2. Estructura Bsica Selectiva: es una estructura que tiene un punto de decisin para
realizar un conjunto de acciones. Pueden ser:
-

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

a >0 && b>0

V
c

a+b

Escribir El valor de la suma es , c

FIN

Recopilado por Ing. Carol Rojas Moreno

11

TCNICAS DE PROGRAMACIN I
Diagrama N-S
INICIO
entero
Leer a , b

a, b, c

a >0 && b>0


V

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

Recopilado por Ing. Carol Rojas Moreno

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

Recopilado por Ing. Carol Rojas Moreno

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

Recopilado por Ing. Carol Rojas Moreno

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;

Recopilado por Ing. Carol Rojas Moreno

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;
}

Recopilado por Ing. Carol Rojas Moreno

20

TCNICAS DE PROGRAMACIN I

Separata N 05 (semana 5)
Escuela Profesional: Ing. Informtica
Turno: Maana, Noche
Docente: Ing. Carol Rojas Moreno

Asignatura: Tcnicas de Programacin I


Ciclo: Cuarto
Fecha: 04-09-2006

SENTENCIAS DE PROGRAMACIN (cont.)


3. Estructura Bsica Repetitiva: es una estructura permite iterar o repetir un conjunto de
acciones dada una condicin. Pueden ser:
-

E. B. Repetitiva Mientras

E. B. Repetitiva Hacer-Mientras

E. B. Repetitiva Para

a. Estructura Bsica Repetitiva Mientras: primero evala una expresin condicional y si es


verdadera permite realizar el conjunto de acciones y regresa evaluar nuevamente la
expresin condicional, hasta que deje de cumplir (Falso).
INICIO
Diagrama de Flujo
Declaracin de Variables

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.

Recopilado por Ing. Carol Rojas Moreno

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

Recopilado por Ing. Carol Rojas Moreno

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;
}

Recopilado por Ing. Carol Rojas Moreno

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

Recopilado por Ing. Carol Rojas Moreno

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;
}

Recopilado por Ing. Carol Rojas Moreno

27

TCNICAS DE PROGRAMACIN I

Separata N 06 (semana 6)
Escuela Profesional: Ing. Informtica
Turno: Maana, Noche
Docente: Ing. Carol Rojas Moreno

Asignatura: Tcnicas de Programacin I


Ciclo: Cuarto
Fecha: 11-09-2006

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

Se utilizan para retornar un valor a ser utilizado en el programa.


Declaracin:
Tipo_dato NombreFuncin( )
Tipo_dato NombreFuncin argumentos)

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;
}

//Procedimientos sin Argumentos: Ejemplo2


#include<iostream.h>
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;
cout<<"\n";
}
main()
{
sumar( );
return 0;
}

Recopilado por Ing. Carol Rojas Moreno

30

TCNICAS DE PROGRAMACIN I

Con Funciones:

//Funciones con Argumentos: Ejemplo1


#include<iostream.h>
int sumar(int a, int b)
{
int c;
c=a+b;
return c;
}
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);
cout<<"Valor de la suma de a y b:
cout<<"\n";
return 0;
}

"<<sum;

//Funciones sin Argumentos: Ejemplo2


#include<iostream.h>
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;
}
main()
{
int sum;
sum=sumar();
cout<<"Valor de la suma de a y b:
cout<<"\n";
return 0;
}

Recopilado por Ing. Carol Rojas Moreno

"<<sum;

31

TCNICAS DE PROGRAMACIN I

Otra Manera de definir un Procedimiento y Una Funcin:


//Procedimientos con Argumentos
#include<iostream.h>
void sumar(int a, int b);
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.h>
int sumar(int a, int b);
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);
cout<<"Valor de la suma de a y b: "<<sum;
cout<<"\n";
return 0;
}
int sumar(int a, int b)
{
int c;
c=a+b;
return c;
}

Recopilado por Ing. Carol Rojas Moreno

32

TCNICAS DE PROGRAMACIN I

Separata N 07 (semana 7)
Escuela Profesional: Ing. Informtica
Turno: Maana, Noche
Docente: Ing. Carol Rojas Moreno

Asignatura: Tcnicas de Programacin I


Ciclo: Cuarto
Fecha: 18-09-2006

LIBRERAS DE PROGRAMACIN CREADAS POR EL USUARIO


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.
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.h>
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.

Recopilado por 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;
}

Recopilado por Ing. Carol Rojas Moreno

34

TCNICAS DE PROGRAMACIN I

Separata N 08 (semana 8)
Escuela Profesional: Ing. Informtica
Turno: Maana, Noche
Docente: Ing. Carol Rojas Moreno

Asignatura: Tcnicas de Programacin I


Ciclo: Cuarto
Fecha: 25-09-2006

EJERCICIOS PARA EXPONER EN CLASE


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 = x 2 - 4x + 5
si x >= 2
#include<iostream.h>
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;
}
main()
{ float res;
res=ecuaciones();
cout<<"Resultado de la funcion es f(y)=\t"<<res;
cout<<"\n";
return 0;
}

Recopilado por 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;
}

Recopilado por Ing. Carol Rojas Moreno

36

TCNICAS DE PROGRAMACIN I

Separata N 09 (semana 9, 10)


Escuela Profesional: Ing. Informtica
Turno: Maana, Noche
Docente: Ing. Carol Rojas Moreno

Asignatura: Tcnicas de Programacin I


Ciclo: Cuarto
Fecha: 02-10-2006

FUNCIONES Y PROCEDIMIENTOS EN LA CONSTRUCCIN DE PROGRAMAS


Elaborar el Cdigo utilizando Funciones y/o Procedimientos.
1.

Si compramos al por mayor 100 o mas artculos nos descuentan el 40%, si


compramos entre 25 y 100, el descuento es de 20% y si compramos entre 10 y 25 el
descuento es de 10%. No hay descuento si adquirimos menos de 10 artculos. Indique el
monto a pagar, sabiendo la cantidad de artculos comprados y su precio.

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

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.
Leer el tipo de cliente y el tipo de articulo para indicar el descuento y el tipo de cliente.
3. 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.
4. 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.
Recopilado por Ing. Carol Rojas Moreno

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.

Un alumno es calificado con A, B, C D . Ser bueno si obtuvo A, ser regular si


obtuvo B, malo si obtuvo C y psimo si obtuvo D. Lea un calificativo e indique que tipo
de alumno es.

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':{

cout<<"Efectivo, Cheque o Credito";


switch(artic)
{
case 'A': cout<<"Dcto: 30%";break;
case 'B': cout<<"Dcto: 20%";break;
case 'C': cout<<"Dcto: 10%";break;
}
}break;

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;

default: cout<<"Siga itentando";


}
}
main ()
{
Muestra();
return 0;
}
Recopilado por Ing. Carol Rojas Moreno

39

TCNICAS DE PROGRAMACIN I

Separata N 10 (semana 11 y 12)


Escuela Profesional: Ing. Informtica
Turno: Maana, Noche
Docente: Ing. Carol Rojas Moreno

Asignatura: Tcnicas de Programacin I


Ciclo: Cuarto
Fecha: 16-10-2006

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);
}

Recopilado por Ing. Carol Rojas Moreno

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

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);
}
TAREA
Revisar y Exponer las funciones recursivas de:
1. Serie Fibonacci
2. Maximo Comn Divisor
3. Torres de Hanoi.

Recopilado por Ing. Carol Rojas Moreno

41

TCNICAS DE PROGRAMACIN I

Separata N 11 (semana 13)


Escuela Profesional: Ing. Informtica
Turno: Maana, Noche
Docente: Ing. Carol Rojas Moreno

Asignatura: Tcnicas de Programacin I


Ciclo: Cuarto
Fecha: 30-10-2006

ARREGLOS UNIDIMENSIONALES Y FUNCIONES/ PROCEDIMIENTOS


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:
Ejm.

TipoDato
Entero

NombreArreglo[tamao]
M[10]

//Programa para sumar alturas de alumnos con funciones y arreglos


#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 sumar(double array[ ])
{ int i;
double suma=0;
for(i=0;i<=N-1;i++)
{ suma=suma+array[ i ]; }
return suma;
}
void main()
{ double A[N],sum;
leerarre(A);
sum=sumar(A);
cout<<"La SUMA es "<<sum;
cout<<"\n\n";
}
Recopilado por Ing. Carol Rojas Moreno

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";
}

Recopilado por Ing. Carol Rojas Moreno

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);
}

Recopilado por Ing. Carol Rojas Moreno

44

TCNICAS DE PROGRAMACIN I

Separata N 12 (semana 14)


Escuela Profesional: Ing. Informtica
Turno: Maana, Noche
Docente: Ing. Carol Rojas Moreno

Asignatura: Tcnicas de Programacin I


Ciclo: Cuarto
Fecha: 06-11-2006

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);
}

Recopilado por Ing. Carol Rojas Moreno

48

TCNICAS DE PROGRAMACIN I

Separata N 13 (semana 15)


Escuela Profesional: Ing. Informtica
Turno: Maana, Noche
Docente: Ing. Carol Rojas Moreno

Asignatura: Tcnicas de Programacin I


Ciclo: Cuarto
Fecha: 13-11-2006

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

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]; cout<<"\n";
}
}
void bbinaria(int a[MAX], int n)
{
int elem;
int BAJO, ALTO, CENTRAL;
BAJO=1; ALTO=n;
cout<<"\n Ingrese elemento a buscar"<<":\t";
cin>>elem;
CENTRAL=((BAJO+ALTO)/2);
while ((BAJO<=ALTO) && (a[CENTRAL]!=elem))
{
if(elem<a[CENTRAL])
{ALTO=CENTRAL-1;
CENTRAL=(BAJO+ALTO)/2;
}
else{
BAJO=CENTRAL+1;
CENTRAL=(BAJO+ALTO)/2;
}
}
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);
}
Recopilado por Ing. Carol Rojas Moreno

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);
}

Recopilado por Ing. Carol Rojas Moreno

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

2. 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 y en B.
Ejemplo:
A
5
8
12
6
9
2
n1=6

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");
}

Recopilado por Ing. Carol Rojas Moreno

56

TCNICAS DE PROGRAMACIN I

Separata N 14 (semana 16)


Escuela Profesional: Ing. Informtica
Turno: Maana, Noche
Docente: Ing. Carol Rojas Moreno

Asignatura: Tcnicas de Programacin I


Ciclo: Cuarto
Fecha: 20-11-2006

FUNCIONES/ PROCEDIMIENTOS Y ARREGLOS BIDIMENSIONALES


Tambin llamado matrices, es un conjunto finito y ordenado de elementos de un mismo
tipo de dato. La definicin de un arreglo es como sigue:

Ejm.

TipoDato
Entero

NombreMatriz[nfilas][ncolumnas]
M[4][5]

A. LECTURA DE DATOS Y PRESENTACIN DE LOS ELEMENTOS DE UNA


MATRIZ
#include<iostream.h>
#define MAX 100
int leenum()
{int num;
do{ cin>>num;
cout<<"\n";
}while(num<=0 || num>MAX);
return num;
}
void ingresadatos(int M[MAX][MAX], int nf,int nc)
{int i,j;
cout<<"Ingrese elementos para la matriz ";
cout<<"\n";
for(i=0;i<=nf-1;i++)
for(j=0;j<=nc-1;j++)
{ cout<<"Elemento ["<<i<<"]"<<"["<<j<<"]"<<":";
cin>>M[i][j];
}
}

Recopilado por Ing. Carol Rojas Moreno

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
..

//Se entiende que se realizan los procedimientos de

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

cout<<"Ingrese numero de columnas


nc=leenum();

";

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();

";

cout<<"Ingrese numero de columnas


nc=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";
}

Separata N 15 (semana 17)


Escuela Profesional: Ing. Informtica
Turno: Maana, Noche
Docente: Ing. Carol Rojas Moreno

Asignatura: Tcnicas de Programacin I


Ciclo: Cuarto
Fecha: 27-11-2006

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();

";

cout<<"Ingrese numero de columnas


nc=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();

";

cout<<"Ingrese numero de columnas


nc=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";
}

Recopilado por Ing. Carol Rojas Moreno

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

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

-5

-3

-3

N = 3, se
imprime la
columna 3

-5

-3

N = 2, se
imprime la
fila 2 y la
columna 2

Recopilado por Ing. Carol Rojas Moreno

-3

64

TCNICAS DE PROGRAMACIN I

Solucin Ejercicios Propuestos


1. /*Imprimir lo nmeros que rodean a un numero X, la primera vez que se encuentra
en la matriz incluido el numero X*/
.. //Se entiende que se realizan los procedimientos de
lectura de datos
void rodean(int M[MAX][MAX], int nf, int nc,int n)
{
int i,j;
int f,c;
int ban=0;
for(i=0;i<=nf-1;i++)
for(j=0;j<=nc-1;j++)
if( M[i][j]==n && ban==0)
{
f=i;
c=j;
ban=1;
}
if (ban=1)
{cout<<"Los Numeros que rodean son: \n";
for(i=0;i<=nf-1;i++)
{for(j=0;j<=nc-1;j++)
if((i>=f-1 && i<=f+1) && (j>=c-1 && j<=c+1))
cout<<M[i][j]<<"\t";
else
cout<<" ";
cout<<"\n";
}
}
else
cout<<"El numero ingresado no existe";
}
void main()
{ int B[MAX][MAX];
int nf,nc,num;
cout<<"Ingrese numero de filas ";
nf=leenum();
cout<<"Ingrese numero de columnas ";
nc=leenum();
ingresadatos(B,nf,nc); cout<<"\n";
cout<<"Ingrese el numero a buscar ";
cin>>num;
rodean(B,nf,nc,num); cout<<"\n";
}

Recopilado por Ing. Carol Rojas Moreno

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<<"Ingrese valor de N: ";


cin>>n;
}while(n<0 || (n>=nf && n>=nc));

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";
}

Recopilado por Ing. Carol Rojas Moreno

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

.. //Se entiende que se realizan los procedimientos de


lectura de datos
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<<M[i][j];cout<<"\t";
}
cout<<"\n";
}
}
void invierte_principal(int M[MAX][MAX], int nf, int nc)
{
int i,k,temp;
if( nf==nc )
{
k=nf-1;
for(i=0;i<nf/2;i++)
{
temp=M[i][i];
M[i][i]=M[k][k];
M[k][k]=temp;
k--;
}
}
else cout<<"No es Posible";
}
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";
cout<<"Diagonal Principal Invertida";
invierte_principal(B,nf,nc);
mostrar(B,nf,nc); cout<<"\n";
}
Recopilado por Ing. Carol Rojas Moreno

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

//Se entiende que se realizan los procedimientos de


lectura de datos
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<<M[i][j];cout<<"\t";
}
cout<<"\n";
}
}
void transpuesta(int M[MAX][MAX], int nf, int nc,int T[MAX][MAX])
{
int i,j;
for(i=0;i<=nf-1;i++)
for(j=0;j<=nc-1;j++)
{ T[j][i]=M[i][j];
}
}
void main()
{ int B[MAX][MAX],T[MAX][MAX];
int nf,nc,ft,ct,temp;
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";
cout<<"Matriz Transpuesta";
transpuesta(B,nf,nc,T);
ft=nf;
ct=nc;
temp=ft;
ft=ct;
ct=temp;
mostrar(T,ft,ct);
cout<<"\n";
}
Recopilado por Ing. Carol Rojas Moreno

68

TCNICAS DE PROGRAMACIN I

Separata N 16 (semana 18)


Escuela Profesional: Ing. Informtica
Turno: Maana, Noche
Docente: Ing. Carol Rojas Moreno

Asignatura: Tcnicas de Programacin I


Ciclo: Cuarto
Fecha: 05-12-2006

INTRODUCCIN A ENFOQUE ORIENTADO A OBJETOS


Es el conjunto de disciplinas que desarrollan y modelan software que facilitan la
construccin de sistemas complejos a partir de componentes.
El atractivo intuitivo de la orientacin a objetos es que proporciona conceptos y
herramientas con las cuales se modela y representa el mundo real tan fielmente como sea
posible. Estos conceptos y herramientas orientados a objetos son tecnologas que permiten
que los problemas del mundo real sean expresados de modo fcil y natural.
Las tcnicas orientadas a objetos proporcionan mejoras y metodologas para construir
sistemas de software complejos a partir de unidades de software modularizado y
reutilizable.
La Programacin Orientada a Objetos desde el punto de vista computacional "es un
mtodo de implementacin en el cul los programas son organizados como grupos
cooperativos de objetos, cada uno de los cuales representa una instancia de alguna clase, y
estas clases, todas son miembros de una jerarqua de clases unidas va relaciones de
herencia" [Greiff W. R. Paradigma vs Metodologa; El Caso de la POO].
Definiciones:
Objeto: es la instancia de una clase, es decir el valor de cada uno de los atributos y
responsabilidades de la clase.
Clase: es un conjunto de objetos que comparten una estructura y comportamiento comn.
La diferencia entre un objeto y una clase es que un objeto es una entidad concreta que
existe en tiempo y espacio, mientras que una clase representa una abstraccin, la "esencia"

Recopilado por Ing. Carol Rojas Moreno

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:

Jerarqua. Es el orden de las abstracciones organizado por niveles.

Herencia: es la transmisin de atributos y responsabilidades de una clase a otra.

Encapsulamiento: En el proceso de ocultar todos los detalles de un objeto que no


contribuyen a sus caractersticas esenciales.

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?

Recopilado por Ing. Carol Rojas Moreno

70

Potrebbero piacerti anche