Вы находитесь на странице: 1из 34

UNI FIM

BORLAND C++
Ing. Daniel Osorio Maldonado
Pgina 15 de 183
Un ejemplo con (sw): Algoritmo que lee un secuencia de notas(con valores que van desde 0 a 10) que
termina con el valor -1 y nos dice si hubo o no alguna nota con valor 10.








Objeto_datos:
NOTA : variable para leer la secuencia.
SW :switch para controlar la aparicion de notas 10 con los
siguientes significados:
FALSO :No hay nota 10
CIERTO :Si hay nota 10

INICIO
SWFALSO
LEER NOTA
NOTA<>-1
Escribir Hubo 10
SW
Escribir Hubo 10
NOTA=10
SWCIERTO
LEER NOTA
IMPRIME
FIN
F
T
T F T
F
T
UNI FIM
BORLAND C++
Ing. Daniel Osorio Maldonado
Pgina 16 de 183
Tema: Instruccin de Control de Seleccin Multiple (conocido
como do Case; Case of; switch() )
Permite tener un control de una Var_Selectora, como condicin para varias alternativas; dependiendo
del Lenguaje de Programacin la condicin se le conoce como:
Var_Selectora ->(Case...), cuando se trata de Pascal, Vsual Basic, Visual Fox, etc.
Var_Selectora ->Switch cuando se trata de Lenguaje C o Borland C++ /Turbo C++,Visual C++,
usado tambien por Matlab.
Case(Var_Select) of cuando se trata de Pascal

Consideraciones a tener en cuenta en el uso del control multiple

La Var_Selectora puede ser variable, expresin, funcin; empero, sin embargo, el valor representado
debe ser por decir lo menos, un valor escalar es decir un dato numrico entero o un carcter . No se acepta
una cadena o un dato real.
Se debe entender que cada alternativa tiene un nico valor y que va ha realizar una determinada accin o
proceso.

Modo en que Funciona

(a) El valor de la Var_Selectora o(condicin) se evala en las alternativas uno a uno.

(b) Si halla una coincidencia que contenga el valor de la Var_Selectora, entonces ejecutara el proceso
correspondiente dando por finalizado la estructura, para luego buscar otra coincidencia, y ejecutar.

(c) Existe un termino que se usa ocasionalmente y que representa la accin cuando ninguna de las
alternativas se cumple, es el caso del si no , el termino no es obligatorio, pero permita clarificar una
aplicacin.

Pseudocodigo
Condicion o var_Selectora
En Caso que (Var_Selctora) sea
Caso 1 proceso_1
Caso 2 proceso_2
Caso 3 proceso_3
.
Caso N proceso_N
Caso X proceso_Desconocido
Fin del Caso

















Condicion
Var_alterna1
Proceso1
IMPRIMIR
INICIO
Leer Dato
Var_alterna2 Proceso2
Var_alterna3 Proceso3
Var_alternaN ProcesoN
Var_alternaX Proceso_Desco
FIN
UNI FIM
BORLAND C++
Ing. Daniel Osorio Maldonado
Pgina 17 de 183

1 CONDICIONANTE O
VAR_SELECTORA
2
3

Proceso_1 Proceso_2
Proceso_3 X
.... N
Proce_N Proc_Desc
DIAGRAMA N - S













Aplicacin: Programar una operacin Aritmtica con 02 operandos: Operando1 y Operando2
(enteros O reales) y que de acuerdo al Operador elegido habra un resultado. Considere que ud. Ha
diseado una calculadora que le permita realizar operaciones matemticas elementales y que Los
operadores permitidos son:
+ : suma
- : diferencia
* : producto
? : divisin entera
: residuo
~ : potencia

solucion:
Definir objetos_datos
Objeto_dato de entrada:
operador,Ope1,Ope2.
Objeto_dato de salida : Resultado.
Pseudocodigo:
Definir los Operadores:
Inicio
Leer operador
Ingrese : Ope1, Ope2
En CASO que Operador SEA
+ : Resultado = Ope1 + Ope2
- : Resultado = Ope1 Ope2
* : Resultado = Ope1 * Ope2
? : SI Ope2 es diferente de 0
entonces
Resultado = Ope1 ? Ope2
si no
Resultado =0
Fin del SI
: SI Ope2 es diferente de 0
Entonces
Resultado =Residuo(Ope1/Ope2)
si no
Resultado =0
Fin del SI
~ :Resultado=Ope1 elevado al Ope2
Otro Caso :Rsultado : No existe Operacin
Fin del Caso
Imprimir respuesta
fin













Mas =+
Menos =-
Por =*
Entre =?
Residuo =
Potencia = ~
UNI FIM
BORLAND C++
Ing. Daniel Osorio Maldonado
Pgina 18 de 183
N - S














Se deja como ejercicio para que sea completado.



Podra Ud. Completar el cuadro?





































INICIO
Establecer Operandos op1,op2
Mas +; Menos -; Por *; Entre ?; Residuo ; Potencia ~


+

op1+op2 -

*
op1-op2
op1*op2 ?
op2<>0
no si
error no op2<>0si ~ X


UNI FIM
BORLAND C++
Ing. Daniel Osorio Maldonado
Pgina 19 de 183
*








































No Si












DIGITAR EL OPERADOR A
USAR
INGRESE :
OPERANDO1
OPERANDO2
OPERADOR
+
Resul t ado = Oper ando1 + Oper ando2
-
Resul t ado = Oper ando1 - Oper ando2
Resul t ado = Oper ando1 * Oper ando2
?

Operando2
Diferente de
Resul t ado= Ope1 ? Ope2 RESULTADO =
RESULTADO=RESIDUO(OPER1/OPER2)
~
RESULTADO=(OPE1)~(OPE2)
1
IMPRIMIR
RESULTADO
INICIO
Inicializar constantes
Mas = +
Menos = -
Por = *
Ent r e = ?
Resi duo =
Pot enci a = ~
FIN
1
UNI FIM
BORLAND C++
Ing. Daniel Osorio Maldonado
Pgina 20 de 183

TEMA: Instruccin de Control Repetitivas
Son aquellas Instrucciones que permiten que ciertas aplicaciones en las cuales una opercion o conjunto de
ellas deben repetirse muchas veces, por consiguiente se puede afirmar que un programa que lee una lista
de numeros puede repetir la misma secuencia de mensajes al usuario e instrucciones de lectura, hasta que
todos los numeros del rango establecido sean leidas.
Para efectos del C++/Borland C++ se van a tomar en cuenta slo las tres mas usadas:
mientras ->(While )
Hacer proceso Mientras (Condicion)-> (Do while)
Desde/ Para-> (For)
Para otros lenguajes de programacion son en alguno casos combinaciones de ellas o en su defecto usan
otra nomenclatura como por ejemplo para Pascal es comun usar la instruccin (repeat until) repetir
hasta que, mientras que en Visual Basic es comun usar (do until) hacer hasta que ,estas son las mas
representativas de estos lenguajes de programacion.



Instruccin de control Repetitivo Mientras

la estructura repetiriva mientras(en Ingles WHILE o DOWHILE:hacer mientras ) es auella en que el
cuerpo del bucle se repite mientras se cumple una determinada condicin.se pueden representar:
Pseudocodigo
mientras (condicin ) sea verdadera
proceso
fin del mientras

NO

Diagrama Nassi_Schneiderman
SI










1. Desarrollar la suma de los primeros M terminos de la siguiente suma :

D=
B N A B A B A B A A *
1
3
1
2
1 1 1
+
+ +
+
+
+
+
+
+ K



solucion:
definir objetos_datos E/S
objeto_dato de entrada: A,B,N.
Objeto_dato de salida : SUMA DE N.
Pseudocodigo:
Inicio
Leer A,B,N.
CONDICION
ACCIONES
IMPRIMIR

MIENTRAS < CONDICION>
Accion1
Accion2
Accion3
A,B,N
SUMA=0 ; C=1
FIN
FIN
1
UNI FIM
BORLAND C++
Ing. Daniel Osorio Maldonado
Pgina 21 de 183
Definir C=1 //contador



Suma=0.
Mientras(C=N) hacer

AB=(A+c*B).
Inverso=1/AB.
Suma=Suma+Inverso.
C++.
Fin del mientras
Escribir: Suma=Suma+1/A.
Fin










2. En la siguiente serie se pide hallar la suma de los elementos que ocupan las posiciones pares,y la
suma total de elementos, sabiendo que el # de termninos es igual a 50.

...
7
8
5
6
3
4
2 + + + + = Su
Solucion:
Objetos_Datos de Entrada: N
Objetos_Datos de Salida:
suma de posiciones pares: sp
suma total de elementos: su
Pseudocodigo
Inicio
Leer N F
Establecer variables
i=1; par=0;Su=0;
mientras(i<=N) V
si(resto (i/2=0)entonces V
sp=2*i/(2*i-1)
fin del si F
su=2*i/(2*i-1)
i=i+1
fin del mientras
escribir su, sp








C<N
AB=(A+C*B)
INVERSO=1/AB
SUMA=SUMA+INVERS
C++
SUMA=SUMA+1/A
IMPRIMIR
SUMA
FIN
INICIO
N
i=1,su=0,sp=0
i<-N
sp=2*i/(2*i-1)
Resto(i/2)=0
sp=2*i/(2*i-1)
i=i+1
sp,su
FIN
1
UNI FIM
BORLAND C++
Ing. Daniel Osorio Maldonado
Pgina 22 de 183
Leer num
inverso 0,Su 0, M0
dgtresto(num/10)
inversoinverso*10+dgt
Su Su+digito
numentero(nume/10)
num>0
Inverso , Su, M
FIN
INICIO
V
V
dgt>M
Mdgt
F
F
Proceso 1
Proceso 2
Condicin
Escribir
FIN
V
F
Instruccin de control Repetitivo hacer procesos mientras(condcion)
En este tipo de Instruccin de control repetitivo difiere un poco con respecto al mientras en el sentido que
las instrucciones se realizan al menos una vez antes de comprobar si la condicin se cumple, es muy
parecida al repeat until del Pascal.
Pseudocodigo
Hacer (procesos)
mientras (condicin ) sea verdadera
fin del hacer .


DIAGRAMA (N-S)









Problema de Aplicacin
Se ingresa un Numero de varias cifras,
y luego hallar la suma de sus cifras, el numero
invertido y la cifra mayor.
Por ejemplo 1234, la suma es:10, invertido es
4321 y la cifra mayor es 4.
Objetos_datos de entrada y Salida
Objeto_Dato de Entrada: Numero
Objeto_Dato de Salida:Salida numero invertido.

Pseudocodigo
Inicio
Leer numero
Inicializar variables : inverso 0, Su0,M0
Hacer
digito resto(M/10)
Inverso inverso*10+digito.
Su Su+digito
Si (digito>M) entonces
M digito
Fin del si
numero=entero(numero/10)
Mientras(numero>0)
Escribir inverso, Su, M
Fin











PROCESO1
PROCESO2


MIENTRAS CONDICION
UNI FIM
BORLAND C++
Ing. Daniel Osorio Maldonado
Pgina 23 de 183


Esta instruccin hacer procesos mientras (condicion) sea verdadera, es utilizada para consistenciar y
controlar la repeticion de un propgrama sin necesidad de salir, dandole al usuario el control del mismo. Vea
el siguiente ejemplo:
Se desea hallar la suma de los primeros N terminos de la siguiente serie:































Instruccin de control Repetitivo for
Esta instruccin de control repetitivo considera: que el proceso debe iniciarse para un valor inicial que
vendra a ser el inicio del contaje, una segunda expresin que contiene el valor mximo o mnimo que puede
tener el contaje y determina cuando termina el ciclo, hasta aqu tal vez es el formato que usa la
mayoria de los lenguajes de programacin; sin embargo para el lenguaje C, C++ o Borland C++,
existe lo que se conoce como el incremento o decremento (se suma o se reta el contaje).
Para otros lenguajes es tal vez mas facil iniciar con el Valor Maximo para luego ir disminuyendo en unida en
unidad.

Diagrama de Flujo (for )
Pseudocodigo
...
7 4
4
5 3
3
3 2
2
1 t
1
+
+

+
+
+

+
=
t t t
S
UNI FIM
BORLAND C++
Ing. Daniel Osorio Maldonado
Pgina 24 de 183

desde/para vi=1 hasta vf de uno en uno Hacer
Proceso_A
Proceso_B
..
Fin del desde/para
Diagrama N-S













































F
INICIO
Lee ne
ContDivi=0
para Divisor=1, hasta ne
Resto(ne/Divisor)=0
Escribir Divisor
ContDivi=ContDivi+1
V
ContDivi=2
Numero Primo No es Primo
MENSAJ
DIVISORE
FIN
V F
Para Vcont=
Valor_inic, Valor_fin
HACER
PROCESO
IMPRIMIR
desde/para de var_contador=Vi Hasta Vf




Fin desde/para
ProcesoA
ProcesoB
INICIO
FIN
Aplicacin
Se va a Ingresar un Numero y la tarea
consiste en mostrar todos los divisores de
ese numero ingresado.
Cuando el numero Ingresado tiene por
divisores a la unidad(1) o al mismo numero
mostrara un
mensaje diciendo El Numero es Primo

SOLUCI ON
Objetos_Datos de ENTRADA Y SALIDA
Objejo_Datos de Entrada: el Numero
entero(NumeEnte)
Objeto_Dato de Salida : numero de
divisores(NumeDivi), mensaje

PSEUDOCODIGO
Inicio
Leer un Numero entero: NumeEnte
Definir la variable Contador de Divisores e
Inicializarla a 0
NumeDivi=0
Contabilizar los divisores y mostrarlos
PARA Divisor=1 HASTA NumeEnte,
HACER
SI Residuo de NumeEnte/Divisor=0,
ENTONCES
Escribir Divisor
ContDiv=ContDiv+1
Fin del SI
Escribir mensaje
SI ContDiv=2,ENTONCES
MENSAJ E Numero Primo
SI NO
MENSAJ E No es Primo
Fin del Si
Fin
UNI FIM
BORLAND C++
Ing. Daniel Osorio Maldonado
Pgina 25 de 183


TEMA: ELEMENTOS BSICOS DEL BORLAND C++

Smbolos
Estn clasificados en:
letras : A..Z, a..z (no incluye la y )
dgitos : 0 1 2 3 4 5 6 7 8 9
smbolos especiales
se tienen los siguientes:
simples :


SI MPLES

+ - * / = < >

; ! : % & { } . ,

^ | sizeof



DOBLES
<= >= == !! | = &&

?: -> >> << != ( ) [ ] += -=

>>= <<=

/ / / * */



Identificadores

Es el nombre mediante el cual se define una variable, constante, tipo, funcin, estructura, unin, clase,
objeto, etc.
Los identificadores declarados en Boland C++ tienen las siguientes caractersticas.
Pueden estar conformados por 127 caracteres como mximo.
Ejemplos :
Suma = ( 4 caracteres )
Contador = ( 8 caracteres )
Se hace distincin entre maysculas, minsculas.
Ejemplo :
SUMA =25, suma=25; en ambos el identificador para el compilador es diferente
Tienen que ser distintas de las palabras reservadas.
Ejemplos :
continue, incluye,if , while, bool, for , etc
El primer carcter debe ser letra subrayado
Ejemplo :
Suma = Correcto
1 Suma= Incorrecto el 1er carcter debe ser letra */
UNI FIM
BORLAND C++
Ing. Daniel Osorio Maldonado
Pgina 26 de 183
Suma1= Correcto
Suma 2m= no debe haber espacios entre el nombre//incorrecto
Suma_2m= correcto
Suma+si= incorrecto, no debe haber operacin entre su nombre
S9_suma= correcto
S9+suma=incorrecto

Palabras reservadas
Son identificadores que tienen un significado especial establecido por el lenguaje de programacin.
Siempre deben escribir en minsculas.
Se lista a continuacin las palabras reservadas definidas por el compilador Borland C++

asm

auto

break

case

continue
char class const default delete
Do double else enum extern
Far float for friend if
inline int interrup long near
new operator pascal private protected
public register signed sizeof static
struct union unsigned virtual void
volatile while time rand random()

Comentarios
Sirven para documentar un programa y siempre van entre /* */ //.
Ejemplo :
/* Este es un comentario que tiene
mas de una linea */
//Otro comentario pero solo de una linea

EXPRESIONES Y OPERACIONES DE BORLAND C++
Expresin
Es un conjunto de operaciones ( Datos y/o variables ) y operadores que actan realizan operaciones
sobre los operandos, y que mediante el uso racional de parntesis puede forzar las expresiones matemticas
convenientes.
Ejemplo : 13*A+(11+B/46)
( x +41) /37

El cierto y falso en Borland C++
Borland C++, como ya hemos visto tiene una manera de tratar el tipo de dato booleano es decir cierto,
falso sin embargo, es bueno hacer notar que en algunas aplicaciones es imprescindible la forma natural
que tiene el lenguaje, me refiero al 0 y 1, ya que para borland C++ el 0 significa falso, por el contrario el
1.
Lo podran apreciar en las aplicaciones que estan en ste libro.

Tema: Los Operadores de Borland C++
[ ] ( ) . -> ++ -- &
* + - ! sizeof /
% << >> < > < = >
== != | && !! ? :
= * = / = % = + = - = << =
> > & = | = , # ##
UNI FIM
BORLAND C++
Ing. Daniel Osorio Maldonado
Pgina 27 de 183

Las siguientes operaciones son especficos de C++/ Borland C++

Los operadores # y ## son usados nicamente por el preprocesador.
Al usar un operador depende de la forma de el contexto, para que el mismo operador & puede ser
interpretado como :
Un and a nivel de bits ( A & B )
Un operador de direccin ( &A )
En C++ un paso de parmetro por referencia a una funcin.
En el primer caso el & es un Operador Binario.
En el segundo caso el & es un Operador Unario.


Prioridad de Operadores

En Borland C++ la tabla de Prioridad de los Operadores esta dividida en 16 categoras.
La categora #1 tiene la ms alta Prioridad.
La categora #2 ( los Operadores Unarios ) toman la segunda Prioridad, hasta el Operador coma (,) que
tiene igual Prioridad

Para el caso de los operadores unarios ( la categora #2 ), condicional ( la categora #14 ) y la de asignacin
( la categora #15)
La agrupacin de estos operadores se ejecutan de Derecha a Izquierda todo, otra asociacin de los
operadores de Izquierda a Derecha.
Teniendo presente la prioridad de los operadores podemos deducir que resultado se obtendr al momento
que le programa ejecute una determinada sentencia, compuesta por expresiones que enlazan mediante los
operadores a las variables y datos del programa, predeterminando de esta forma que operador se desarrolla
primero.

Categora #1 Operador Que realiza (o ejecuta)
1. Ms alta ( )
[ ]
->
: :
.
llamada de una funcin
Subscripcin de un Arreglo
C++ selector de componente Indirecto
C++ acceso o resolucin del alcance
C++ selector de componente directo
2. Unaria !

+
-
++
--
&
*
sizeof
new
delete

Negociacin Lgica ( NO)
A nivel de bits ( complemento a I )
Unitario ms
Unitario menos
Preincremento o postincremento
Predecremento o postdecremento
Direccin de la variable
Indireccin
Devuelve el tamao del operando en ocho bits
(separacin de memoria dinmica en C++ )
(liberacin de memoria dinmica en C++ )

3. Miembros de acceso . *
*
C++ Referencia a un campo
C++ Referencia a un campo
4. Multiplicativos *
/
%
Multiplica
Divide
Resto ( mdulo o resto de la Divisin entera )
5. Aditivo +
-
Binario ms
Binario menos
6. Desplazo <<
>>
Desplazamiento de bits a la izquierda
Desplazamiento de bits a la derecha
UNI FIM
BORLAND C++
Ing. Daniel Osorio Maldonado
Pgina 28 de 183
7. Relacional <
< =
>
> =
Menor que
Menor que o igual que
Mayor que
Mayor que o igual que


Categora #2 Operador Que realiza (o ejecuta )
8. Igualdad ==
! =
Igual a (tambien identicamente igual a)
No es igual a
9. & A nivel de bits Y
10. ^ A nivel de bits XOR
11. | A nivel de bits 0
12. && Lgico y
13. | | Lgico o
14. Operador Ternario ? :

(a >b )? Indica if (a) then x, else y
Donde el operador > puede ser cualquier otro
operador, <, >=, <=, =.
15. Asignacin =
*=
/ =
% =
+ =
-=
& =
^=
| =
<< =

>> =

Asignacin sencilla
Asigna el producto
Asigna el cociente
Asigna el resto ( residuo)
Asigna la suma
Asigna la diferencia
Asigna AND a nivel de bits
Asigna XOR a nivel de bits
Asigna Or a nivel de bits
Asigna desplazamientos de bits a la izquierda

Asigna desplazamientos de bits a la derecha
16. La coma , Evaluacin


El Operador Ternario (a>b)? a:b
Este operador reemplaza en cierta medida a la instruccin if<condicion>es verdadero entonces
proceso_verdadero, si no (else) proceso_falso.
Para nuestro caso (a>b)? a:b significa que si la condicon es verdadera entonces resulta a sino
resulta b.
Ejemplo: se tienen 03 nmeros A =30, B=19 y C=27, se pide hallar el menor de ellos
#include<iostream.h>
#include<conio.h>
main(){
float A =30, B=19 y C=27;
M=((A<B)? A:B) //el menor se almacena en M
N=((M<C)? M:C)// el menor se almacena en N
Cout<< El menor valor se almacenara en N<<N;
getch();
} }

Los Numero PseudoAleatorios
El Lenguaje C/C++permite generar nmeros pseudoaleatorio, que pueden simular ciertos eventos, para ello
necesita de las librerias #include<stdlib.h>y #include<time.h>; mientras que la primera tiene que ver con la
librera estndar la otra utiliza el reloj del sistema.
Herramientas a usar
UNI FIM
BORLAND C++
Ing. Daniel Osorio Maldonado
Pgina 29 de 183
0 1 2 310152030506070 80
1
2 gotoxy(20,2); cin>>A;
3

15
gotoxy(30,15);cout<<A+4<<A+4;
18

25
a). ramdomize(); al inicio y antes de utilzar las funciones que genere los valores pseudoaleatorios, esta
funcin genera valores frescos cada vez que es invocado.
b). rand()%N; genera valores pseudoaleatorios desde 0 hasta( N-1)
c). random(Valor final Valor inicial -1)+1; genera valores pseudoaleatorios desde un valor inicial hasta un
valor final. En la practica se usa la forma reducida : random(val_num)+val_inicial.
#include<iostream.h>
#include<conio.h>
#include<stdlib.h> // obligado ; <time.h>
opcional
main(){
randomize();int Vf=45;Vi=1;
int m;
m=rand()%33 //genera valores desde 0 hasta 32
w=random(Vf-Vi-1)+1; //genera valores desde 1
hasta 45
..
}



Ejemplo
//Simule el lanzamiento de un dado y adivine el
valor de la cara en una tirada
#include<iostream.h>
#include<conio.h>
#include<stdlib.h>//librera para los nmeros
//pseudoaleatorios
main(){ randomize();
int cara=random(6)+1;
cout<<"El Valor de una tirada es " <<cara;
getch();
}
Salida
El Valor de una tirada es 5

Direccionando en la pantalla( gotoxy(col,fil))
Borland C++permite direccionar en la pantalla, una ubicacin que permita al usuario una mejor vista de la
aplicacin.
El comando gotoxy(col,fil), indica, un desplazamiento vertical(x) y un desplazamiento horizontal(y).
En la pantalla, el desplazamiento vertical va desde 0 hasta 80 caracteres, mientras que el desplazamiento
horizontal va desde 0 hasta 25.
Puede apreciarse en el siguiente diagrama, una salida para A+4.
Para una entrada vale lo referido.


















/ / Programa que usa gotoxy(x,y)
/ / Se pide generar 03 valores aleatorios en
el rango [7,17] y halla el mayor
#include<iostream.h>
#include<conio.h>
#include<stdlib.h>
main(){
float x,y,z;randomize();
x=random(17)+7;
gotoxy(10,5);cout<< "x ="<<x;
y=random(17)+7;
gotoxy(10,7);cout<< "y ="<<y;
z=random(17)+7;
gotoxy(10,9);cout<< "z ="<<z;
UNI FIM
BORLAND C++
Ing. Daniel Osorio Maldonado
Pgina 30 de 183
float m=x;
if(y>m)
m=y;
if(z>m)
m=z;
gotoxy(20,15);cout<< "El Mayor es
="<<m;
getch();
}
/ *Salida
x =12
y =23
z =11
El Mayor es =23 */



Tema: Tipos de Datos en C++/Borland C++

Determina la naturaleza del dominio de valores que puede tomar una variable u Objeto_Dato, as como
tambin los operadores que pueden procesar dicha variable.
Existen 2 tipos de datos
Tipos Fundamentales.
Tipos Derivados.


Tipos Fundamentales

Tipos enteros Tipos reales Tipo cadena Tipo vacio


Tipos Derivados

Punteros Estructuras Uniones Arreglos Funciones Clases

Los tipos de Datos de acuerdo a la plataforma de bits de los
Fundamentales
Tipo de Dato para 16 bits
Tipo Ancho Rango

unsigned char 8 bits 0 to 255
Char 8 bits -128 to 127
Enum 16 bits -32,768 to 32,767
unsigned int 16 bits 0 to 65,535
short int 16 bits -32,768 to 32,767
Int 16 bits -32,768 to 32,767
unsigned long 32 bits 0 to 4,294,967,295
Long 32 bits -2,147,483,648 to 2,147,483,647
float 32 bits 3.4 x 10-38 to 3.4 x 10+38
Double 64 bits 1.7 x 10-308 to 1.7 x 10+308
long double 80 bits 3.4 x 10-4932 to 1.1 x 10+4932
near (pointer) 16 bits not applicable
far (pointer) 32 bits not applicable


Tipo de Dato para (32-bits)
UNI FIM
BORLAND C++
Ing. Daniel Osorio Maldonado
Pgina 31 de 183
Tipo Ancho Rango

unsigned char 8 bits To 255
Char 8 bits -128 To 127
short int 16 bits -32,768 To 32,767
unsigned int 32 bits 0 To 4,294,967,295
Int 32 bits -2,147,483,648 To 2,147,483,647
unsigned long 32 bits 0 To 4,294,967,295
Enum 16 bits -2,147,483,648 To 2,147,483,647
Long 32 bits -2,147,483,648 To 2,147,483,647
Flota 32 bits 3.4 x 10-38 To 3.4 x 10+38
Double 64 bits 1.7 x 10-308 To 1.7 x 10+308
long double 80 bits 3.4 x 10-4932 To 1.1 x 10+4932
near (pointer) 32 bits not aplicable
far (pointer) 32 bits not aplicable



El uso de datos de tipo double y float es aplicado en las matemticas como punto flotante. (Nmeros
reales)
En Borland C++ realiza en forma automtica en las operaciones la asignacin del punto flotante cuando ste
no se especifique.



Tipos de dato void (tipo de dato vaco)

Este tipo de dato es utilizado cuando una funcin realiza una tarea y la funcin no retorna valor
alguno.
Ejemplo :
void error ( char *name)
{ cout <<Nombre Inicial << name :
}

Cuando una funcin no tiene parmetros

Ejemplo :
int LeerN ( )
{
procesos;
return 1;
}


Puede tambin ser utilizado para declarar punteros como vaco. Con lo que se puede
operar con datos de distintos tipos. Esto es porque al compilar este no determinar el
tamao de la variable puntero vaco.


Ejemplo
#include<iostream.h>
#include<conio.h>
UNI FIM
BORLAND C++
Ing. Daniel Osorio Maldonado
Pgina 32 de 183
main(){
int x;float r;
void *p=&x; //*p apunta a x
cout<< "Ingrese un valor para x ";
cin>>x;
cout<< "La direccion de x es "<<p
<<sizeof(*p);
getch();
}
/*Ingrese un valor para x 200
La direccion de x es 0x0012ff88 */




TEMA : Estructura de un Programa en Borland C++

Un programa en Borland C++ est dividido en cuatro secciones bien definidas.


Instrucciones del Preprocesador : #include <librerias >
Macros y Constantes : #define macro
: const var1;
Variables Globales : unsigned int a,b;
Struct , unions, class .
Prototipo de Funciones
Funcion Principal main () {
Cuerpo del Programa Principal
Llamad a Funcion Principal
Implementacion de Funciones


1 Instrucciones del Preprocesador
El preprocesador posibilita incluir diversas instrucciones para el compilador en el cdigo fuente de un
programa en Borland C++. Lo cual expande al mbito del entorno de programacin, permitiendo la
correcta manipulacin de constantes y funciones en la codificacin de un programa.
2 El preprocesador posibilita incluir diversas instrucciones para el compilador en el cdigo fuente
de un programa en Borland C++. Lo cual expande al mbito del entorno de programacin,
permitiendo la correcta manipulacin de constantes y funciones en la codificacin de un programa.
3 Variables Globales:Variables que seran reconocidas tanto a nivel de Programa Principal como
en las funciones.
4 struct, unio,class: se define en este lugar permiten definir un tipo de dato y definir un objeto.
5 Prototipo de Funciones: En esta seccin solo se especifica la cabecera de las funciones
definidas por el usuario.
6 Funcin Principal
Todo programa en Boland C++ por lo menor debe estar conformado por una funcin, la cual es llamada
funcin principal (funcin main())
Al ejecutarse un programa est funcin ser la nica que se encargar del control de todo el software
desarrollado.
Ejemplo :
main ( )
{ // Inicio de la funcin principal
int a, b; // Datos del programa
long prod // Resultado
UNI FIM
BORLAND C++
Ing. Daniel Osorio Maldonado
Pgina 33 de 183
a = 19; // Asigna al valor 19 a la variable a
b = 13; // Asigna al valor 13 a la variable b
prod = a*b; // Asigna el producto a*b en prod
cout<<prod:
getch();
} // fin

1. Cuerpo de la funcion
Es el centro de la codificacin en ella se resuelve todo el codigo del programa.
2. Llamada a Funcion
Se da cuando ha sido declarada una funcion y es aqu donde se le llama por su nombre
3. Implementacin de Funciones

Las funciones definidas por el usuario son codificadas en esta seccin ejemplo:

static double escribir(int x,int y);// prototipo de la funcion
main( ){
int a,b;
double r;
cout<<"\nIngrese el valor de a: ";cin>>a;
cout<<"\nIngrese el valor de b: ";cin>>b;
r=escribir(a,b);
cout<<"La suma de "<<a<<" y "<<b
<<" = "<<a+b<<" Elevado a la Potencia 3 es: "<< r<<"\n";
getch( );
}

static double escribir(int x=2,int y=3)
{
cout<<setw(15);
return(pow(x+y,3));
}

Sentencia de Asignacin
Es el proceso mediante el cual se asigna un valor dato a una variable previamente definida en dicha
funcin
La asignacin se realiza mediante el operador =

Sintaxis
identificadores _ Variable = dato ;
En dato puede ser el resultado de una expresin en la cual se procesan variables y constantes definidas por
el usuario, esto quiere decir que la expresin de la derecha es evaluada y el resultado es asignado a la
variable especificada a la izquierda.
Su=1;
par=2
Su +=par;

Entrada y salida de datos.
Las operaciones de entrada no forman parte del conjunto de sentencias de Borland C++. Por lo que
debe incluirse un fichero que contenga dichas funciones de Entrada y Salida I/O.
Lo que da lugar a tener una de las siguientes lneas de programa.
#include <stdio.h> //En ANSI C
#include <iostream.h> // Para C++/Borland C++ con objetos

#include iostream.h
UNI FIM
BORLAND C++
Ing. Daniel Osorio Maldonado
Pgina 34 de 183
Las comillas dobles indican que el fichero ser buscado primero en el directorio actual de trabajo y si no es
encontrado continuar con la bsqueda en el los directorios standard especificados en el submen Options
del Ambiente Integrado (Editor Compilador) del Borland C++.
Si el fichero especificado se escribe de la siguiente forma:

#include<iostream.h>
El fichero solo ser buscado en el directorio standart.
El fichero iostream.h provee una serie de facilidades definidas en base a clases que se encargan de la
entrada y salida de datos y transformarlos al tipo de variable correspondiente.
Se tiene los siguientes Objetos
cout<<Pone caracteres en la salida estndar (pantalla)
cin>>Lee caracteres de la entrada estndar (teclado)

Salida
Permite la salida de datos por pantalla al tener una variable o expresin numrica como salida esta
es transformada a caracteres para ser mostrada en pantalla.
Ejemplo :
# include <iostream,h>
#include <math.h>
#include<conio.h>

main ( )
{
float a,b;
double poten;
cout<<Ingrese los Nmeros<<endl
<<Ingrese el valor de a: ;>>cin>>a;
cout<<Ingrese el valor de b: ;>>cin>>b;
poten=pow(a,b);
cout<<La Potencia de <<a<<Elevedo a
<<b<<Es <<poten<<endl;
getch( );
}
SECUENCIAS DE ESCAPE

Secuencia Normal
\ n Nueva lnea
\ t Tab. horizontal
\ b Retroceso
\ a Bell (alerta. bip)








TEMA: INSTRUCCIONES DE CONTROL
Las estructuras de seleccin permite al usuario tener un control del programa mediante el uso de
instrucciones de control,constituyendo mecanismos para dirigir el flujo de ejecucin, dentro de estas
Instrucciones, el Lenguaje C define tres categoras bien definidas:

Instrucciones de Seleccin(if..else; if then; ifelse if else ; switch).
Instrucciones de Iteracin(bucle lazo).
Instrucciones de salto(break, continue,exit).
UNI FIM
BORLAND C++
Ing. Daniel Osorio Maldonado
Pgina 35 de 183
I.Selectivas
Simples : if...else proceso de Verdadero
Dobles : ifcondicion proceso_V else proceso_F
Anidados: ifcondicion proceso_V else if condicion proc_verd else if condic
II Multiples :
switch(){
case .procesos.; break;

default:
}

III Repetitivas o de Iteracion : a) while() b)do . while() c)for (.)


INSTRUCCIONES SELECTIVAS O CONDICIONALES:




Falso Verdadero








Dado que las expresiones lgicas toman el valor de verdadero
o falso se necesita una instruccin de control que dirija al computador para ejecutar otras instrucciones, en
"C/C++" esta alternativa lo realiza con la instruccin o estructura de control

if (simple) if else (doble) if else if
if(<condicin>){
instruccin}
Ejemplo
#include<iostream.h>
main( ){
int a;
cout<<Ingrese Valor
a:;cin>>a;
if(a>0)
cout<<a es Positivo;
getch( );
}
if(<condicion>){
instruccion1}
else{
instruccion2}


Ejemplo:
#include<iostream.h>
main(){
float a,b;
float div;
cout<<Ingrese a: ;cin>>a;
cout<<Ingrese b: ;cin>>b;
if(b)
{div=a/b;
cout<<"El resultado es:
"<<div;}
else
{cout<<"Division por cero ";}
getch( );
}

if(<condicin>){
instruccin a ;}
else if(<condicin>){
instruccin b;}
else if(<condicin>);{
instruccin c;}
.
.
else{
instruccin n;}
Ejemplo:
resuelve una ecuacin de 1er grado con una
incgnita:
<<"ax + b =0"<<endl
<<endl;
cout<<"a =";cin>>a;
cout<<"b =";cin>>b;
if (a==0) {cout<<" No tiene Solucion ";}
else if(b==0){x=0; }
else {x=(-1)*(b/a);}
cout<<"La Solucin a la Ecuacin : "<<a<<"x
+ "<<b<<"=0 ";
cout<<setiosflags(ios::fixed|ios::showpoint);
Condicin
Sentencia 2 Sentencia 1
UNI FIM
BORLAND C++
Ing. Daniel Osorio Maldonado
Pgina 36 de 183
cout<<setprecision(3)<<endl<<"Es X
="<<x;
cout<<"\n Otro Calculo :?[S][N] ";
opc=toupper(getch());
if(opc=='N')break;}
}


El compilador evala las expresiones condicionales desde arriba descendiendo, y tan pronto como el compilador
encuentre una condicin verdadera, ejecuta la instruccin asociada y salta el resto de la escalera. Si no es as se
ejecutara el "else" final. Si no hay else al final y son falsas las otras condiciones no se efecta nada.


La Instruccin switch
Esta instruccin, realiza comprobaciones mltiples o condiciones mltiples.
Borland C++ comprueba una variable sucesivamente frente a una lista de constantes enteras o de carcter,
luego de encontrar una
coincidencia, la computadora ejecuta las instrucciones o bloque de instrucciones que se asocian a la constante.

Default
Si al evaluar <expresin>esta toma un valor que no se encuentra en ninguna <exp_constant>de los casos entonces se
proceder con la ejecucin de la <instruccin por defecto>.

























Sintaxis :
switch(<expression>) {
case <exp_const1>:
instruccin(s);break;

case <exp_const2>:
instruccin(s);break;

case <exp_const3>:
EXPRESION
EXP_CONST 1
EXP_CONST 2
EXP_CONST 3
EXP_CONST N
OTRO CASO
INSTRUCCIN 1
INSTRUCCIN 2
INSTRUCCIN 3
INSTRUCCIN N
INSTRUCCIN X
MENSAJ E
INICIO
FIN
UNI FIM
BORLAND C++
Ing. Daniel Osorio Maldonado
Pgina 37 de 183
instruccin(s);break;
.
.
default :
instruction(s);


NOTAS:
Exp_const debe ser una Variable una expresin, una funcin y el valor que representa necesariamente
debe ser un escalar, en pocas palabras debe ser numrico entero o sino carcter individual, nunca un float ni
una cadena. Debe tenerse en cuenta que que exp_const ser evaluada en cada alternativa hasta encontrar
el lugar que le corresponde.
Cada exp_const esta conformada por un nico valor
Cada Instruccin puede estar conformada por una o varias sentencias.
1. El valor de exp_const es evaluado en las alternativas una por una.
2. Una vez encontrada una alternativa que contenga el valor de la exp_const, ejecuta la instruccin
correspondiente y termina la estructura que le corresponde.
3. Si no existe una <exp_const> que corresponda el control para la instruccin que sigue al bloque
del switch, a menos que este contenga la etiqueta de "default", en este caso el control se
transfiere a la instruccin que sigue a "default"
4. Dos etiquetas "case en el mismo bloque no pueden tener <exp_const> con el mismo valor.
5. La Instruccin "break" se usa para terminar la secuencia que est asociada a la <exp_const>.Si
se omite la instruccin break, la ejecucin continua en la Instruccin del siguiente "case " hasta que
la computadora encuentre un break o el final del switch.

Aplicacin:
Programa que realiza una serie de operaciones matemticas:
#include<conio.h>
#include<iostream.h>
#include<ctype.h>
#include<math.h>
#include<iomanip.h>
#include<stdlib.h>
main( ){
int opera;
int a,b;
char opc;
do{ clrscr();
//system(cls); llama al DOS para limpiar la pantalla, recomendable solo con Win98SE o
anteriores
cout<<"Ingrese 02 Numeros : ";
cout<<"Ingrese a: ";cin>>a;
cout<<"Ingrese b: ";cin>>b;
cout<<"MENU DE OPERACIONES :"<<endl;

cout<<"1 :Suma\n"
<<"2 :Resta\n"
<<"3 :Producto\n"
<<"4 :Division\n"
<<"5 :Cociente Entero\n"
<<"6 :Resto\n"
<<"7 :Potencia\n"
<<"Elija su Opcion...:";cin>>opera;
switch(opera){
case 1:
cout<<setiosflags(ios::fixed|ios::showpoint);
cout<<"La Suma es :" <<(a+b);break;
UNI FIM
BORLAND C++
Ing. Daniel Osorio Maldonado
Pgina 38 de 183
case 2:
cout<<"La Resta es :" << (a-b);break;
case 3:
cout<<"El Producto es :" << a*b;break;
case 4: if(b) // Indica que es verdadero que b no es cero
{cout<<"El cociente es:" <<setprecision(2)<<(float)a/b;break;}
else
{cout<<"division por cero!";break;}
case 5: if(b) {
cout<<"El COCIENTE ENTERO es :"<<setprecision(2)<<a/b;break;}
else {
cout<<"\n No es posible la division: ";break;
exit(0);}
case 6: if(b) {
cout<<"El resto es :"<<a%b;break;}
else {
cout<<"\nNo es posible calcular el resto";break;
exit(0);}
case 7 : cout<<"\nLa Potencia es :" <<setprecision(2)<<pow(a,b);break;
default: cout<<"No existe esa opcion Prueba Otra:"<<endl;
}
cout<<"\n Desea Otra Operacion [S][N]?" <<endl;
opc=toupper(getch());
}while(opc=='S');
}

Tema: Instrucciones de Control Repetitivas




a) do While

Pseudocodigo: loop
Hacer Sentencia_A
Sentencia_B NO
Mientras(Expresin) sea Verdadera
Si

Sintaxis :
do{ <Sentencias>
sentencia_A
sentencia_B
}while (Expresion);

Las <sentencias> son ejecutadas en forma repetida segn que el valor de la expresin <expresin> sea
verdadera.
La prueba control toma el lugar despus de cada ejecucin de la <sentencia> esto nos indica que la
comprobacin de continuar con la ejecucin de <sentencia> est a la salida del ciclo iterativo o bucle o
loop. Se dive que la instruccin do- while itera al menos una vez.
Ejemplo :

Sentencia_A

Sentencia_B
Expr esi n
Imprimir
FIN
UNI FIM
BORLAND C++
Ing. Daniel Osorio Maldonado
Pgina 39 de 183

b) while
Aqu la Instruccin se repetir mientras la condicin sea verdadera y lo hace mediante un bucle o lazo.
Termina cuando la condicion es falsa.

Pseudocodigo
Mientras (condicion) sea verdadera
Sentencia_1
Sentencia_2
Fin del mientras


Sintaxis : No

While (<condicin>) loop si
{
<sentencia_1>
<sentencia_2>

}








<sentencias> es ejecutado en forma repetida segn el valor de <expresin> sea distinto de cero.
La prueba toma el lugar antes de cada ejecucin de la <sentencia> lo que permite controlar la ejecucin
de dicha <sentencia> antes de ingresar a l.


Ejemplo :
/*Algoritmo de Euclides para encontrar el maximo comun divisor
de dos Numeros */
#include<Iostream.h>
#include<conio.h>
#include<ctype.h>
#include<iostream.h>
#include<conio.h>
main()
{
long factorial;
int i= 1,n=1;
do {
n* =i;
i++;
}while (i <=factorial) ;
cout<< El Factorial de n es : <<n;
}
getch();
}

Condicion
Sentencia_1
Sentencia _2
Imprimir
datos
FIN
UNI FIM
BORLAND C++
Ing. Daniel Osorio Maldonado
Pgina 40 de 183
#define mensaje Otra Prueba [S][N] ?:
int a,b; // declaracion global
main()
{
for(;;){clrscr();
cout<<"Ingrese el Primer Numero: ";cin>>a;
cout<<"Ingrese el segundo Numeros: ";cin>>b;
while(a!=b)
if(a>b)
a-=b;
else
b-=a;
cout<<"El Maximo comun divisor es: "<<a<<endl
<<mensaje;
if(toupper(getchar())==N)
break;}
}

c) For
Esta instruccin ,es uno de las mas usadas dentro de las de flujo de control esta instruccin tiene su
equivalente en otros lenguejes de programacin tradicionales como el Basic/Pascal en Fortran.

for(inicializacion;condicion;incremento)
{
sentencias ;
}












La primera expresin se refiere a la condicin inicial, si es una sola condicin si son varias (deben estar
separadas por ;);lo mismo ocurre con la tercera expresin que esta dedicada a la actualizacion. La
expresin central se refiere al test de terminacin ,muy parecido al while ,contina el bucle mientras se
cumpla la condicin.

// Ejemplos : calcula el cuadrado de un numero n
datos
Para
Proceso1
imprim
UNI FIM
BORLAND C++
Ing. Daniel Osorio Maldonado
Pgina 41 de 183
#include<iostream.h>
#include<conio.h>
#include<ctype.h>
#define mensaje Otra Prueba [S][N]?:
main{
int i; long Su=0;
for(;;){clrscr();
for(i=1;i<=n; i++)
Su+=(2*i)-1;
cout<<El Cuadraco de :<<n<< Es <<Su<<endl
<<mensaje;
if(toupper(getch())==N)
break;}
}

La siguiente instruccin for() permite construir un lazo, y solo saldra de ese lazo mediante un instruccin,
en este caso la instruccin if(),en la cual se libera del lazo cuando la condicion conlleva a una alternativa
falsa.
Esta instruccin es usada frecuentemente cuando una aplicaciondeba o no abandonar el programa.
#include<iostream.h>
#include<conio.h>
main(){

for(;;){
cuerpo del programa / / procesos

if(condicion )
break;
}

/ / Proprama que usa for(;;)
/ / Adivine un numero en el rango de 1 a 7
#include<iostream.h>
#include<conio.h>
#include<stdlib.h>
#define mensaje "\ nOtra Prueba [S][N]"
#include<ctype.h> / / para la mayuscula del
Caracter
main()
{
int my,pc;
for(;;){clrscr();
randomize();
cout<<"Ingreso mi Numero ";cin>>my;
cout<<"Genero un numero entre 1 y 7 \ n";
pc=random(7)+1;
cout<<"El numero de la pc es "<<pc;
if(my==pc)
cout<<"\ nSuertudo Adiviniste! mi numero
fue "<<my<<'y'<<"\ nEl Numero de la pc
fue "
<<pc;
else
cout<<"\ nSin Suerte!";
cout<<mensaje;
if(toupper(getch())=='N')break;
}
}
Ingreso mi Numero 3
Genero un numero entre 1 y 7
El numero de la pc es 3
Suertudo Adiviniste! mi numero fue 3y
El Numero de la pc fue 3
Otra Prueba [S][N]













UNI FIM
BORLAND C++
Ing. Daniel Osorio Maldonado
Pgina 42 de 183
TEMA: FUNCIONES DEFINIDAS, FUNCIONES PROPIAS Y
RECURSIVIDAD
Una aplicacin escrita en Borland C++ esta compuesta de funciones y esta su vez de enunciados.
Se debe tener en claro que la mayor cantidad de aplicaciones son echas en base a funciones definidas por
el usuario.
La funcin main(), es la primera funcin que aparece dentro de un programa en Borland C++/C++ y
dentro de ella se presentan llamadas a otras funciones, con la finalidad de tener muchos pequeos
procesos.
Una funcin es un proceso que realiza una determinada tarea, tiene un nombre y es capaz de recibir datos
y devolver resultados. Una funcin es reconocida en un programa porque lleva entre parntesis
una lista de argumentos; los cuales son la clave entre la comunicacin de las funciones. Estos argumentos o
variables especiales toman el nombre de parmetros . Otra manera de comunicarse es con su propio
nombre.
Toda funcin, posee un cuerpo que esta encerrado entre llave apertura { y otra de cierre }cuando se
encuentra esta ultima llave, el control retorna a la funcin que hizo la llamada.

Declaracin :
#include<iostream.h>
#include<conio.h>
float media_tres (float numl,float num2,float num3);
main()
{
Llamada a la funccion Descripcin del cuerpo de la funcin.
getch();
}
/ / desarrollo de la funcin
float media_tres (float numl,float num2,float num3)
{
Desarrollo de la funcion
Return(valor);
}

Declaracin de funciones (prototipos)
La declaracin indica al compilador el tipo de valor que va a devolver la funcin y el nmero y tipo de sus
parmetros. Lo indicamos bsicamente para la comprobacin de tipos. El formato del prototipo es el
siguiente:

Tipo nombre_funcin (tipo parmetro1, tipo parmetro2,...)

EJ EMPLO;
#include<iostream.h>
#include<conio.h>
#include<ctype.h>
#define mensaje "Otra Prueba[S][N] ?"
float media_tres (float numl,float num2,float num3);//prototipo
float media; //declaracion global
main(){
float num1,num2,num3;for(;;){clrscr();
cout<<"Primer numero ";cin>>num1;
cout<<"Segundo numero ";cin>>num2;
cout<<"Tercer numero ";cin>>num3;
cout<<"El promedio es "<<media_tres(num1, num2, num3)<<endl
<<mensaje; if(toupper(getch())=='N')
break;}
}
UNI FIM
BORLAND C++
Ing. Daniel Osorio Maldonado
Pgina 43 de 183
float media_tres (float num1,float num2,float num3)
{float media =(num1+ num2+num3)/3.0;
return (media);// devuelve un valor
}

La funcin que no retorna valor
void nom_func() o void nom_func(tipo param1,tipo param2,tipo param3)
Si una funcin no retorna ningn valor puede ser declarada del tipo void (vacio); la funcin void puede o
no llevar parametros o argumentos
Este tipo de funcin solo devuelve de la memoria el operador de salida <<

//halla el mayor de 03 numeros
#include<iostream.h>
#include<conio.h>
#include<ctype.h>
#define mensaje "Otra Prueba[S][N] ?"
void leerabc(float &a,float &b,float &c)
{
cout<<"a= ";cin>>a;
cout<<"b= ";cin>>b;
cout<<"c= ";cin>>c;
}

float mayorabc(float a,float b,float c)
{
float M1,M2;
M1=((a>b)? a:b) ;
M2=((M1>c)? M1:c);
return(M2);
}

float m,n,p;
main(){
for(;;){clrscr();
leerabc(m,n,p) ;
cout<<"El Mayor es "<<mayorabc(m,n,p) ;
cout<<endl<<mensaje<<endl
<<&m;
if(toupper(getch())=='N')
break;}
}
Resultado:
a= 12
b= 21
c= 17
El mayor valor es 21
Otra Prueba[S][N] ?
Para que resulte la aplicacin se hace uso del paso por referencia, en este caso usamos el
operador & que devuelve la direccion:
Void leerabc(float &a,float &b,float &c);






UNI FIM
BORLAND C++
Ing. Daniel Osorio Maldonado
Pgina 44 de 183
Algunas notas relativas a las funciones

El prototipo de una funcin se debe corresponder en el nmero y tipo de parmetros
con la llamada y con la definicin de la funcin.

El tipo devuelto en la definicin de la funcin debe corresponderse con el indicado en el prototipo.


Si no concuerdan lo tipos, el compilador tratar de realizar conversiones y si no lo consigue se
genera un error.

Retorno de valores

Una funcin puede retornar cualquier tipo bsico de dato, punteros, referencias,
objetos, etc.
EJ EMPLO:
#include<iostream.h>
#include<conio.h>
int sumar(int, int);//Prototipo

main( ){
int a,b;
gotoxy(10,10);
cout<<"Introduce primer nmero";
cin>>a;
gotoxy(10,11);
cout<<Introducir segundo numero ;
cin>>b;
int c;
gotoxy(10,12);
c=sumar(a,b);
cout<<El resultado es <<c;
}
int sumar(int, int ){
return(a+b)
}


Para forzar la devolucin de un valor se utiliza la instruccin cout<< indicando el dato a devolver a
continuacin. Vea por ejemplo
//Usando Funciones definidas por el usuario
#include<iostream.h>
#include<conio.h>
void Leerab(float &a,float &b)
{cout<<"a = ";cin>>a;
cout<<"b = ";cin>>b;}
float operacion(float &a,float &b)
{cout<<(a+b);
return(a-b);}

main(){
float m,n;
Leerab(m,n);
cout<<" La suma y la diferencia es "<<operacion(m,n);
getch();
}

UNI FIM
BORLAND C++
Ing. Daniel Osorio Maldonado
Pgina 45 de 183



Paso de argumentos

Existen dos formas de realizar el paso de argumentos:

Por valor -> cuando se realice la llamada lo que se hace es una copia de los datos para
utilizarlos en la funcin. Con este sistema los valores originales no se pueden modificar
desde la funcin.

Por referencia > lo que se pasa es la direccin de memoria del dato utilizado como parmetro.
De esta forma ambas variables compartirn la misma zona de memoria. Si cambia el valor de una,
cambia el valor de la otra.


//Un ejemplo usando funciones con referencia
#include<iostream.h>
#include<conio.h>
void Leerab(int ,int);
void sumar(int, int); //por valor
void restar(int *, int *); //por por referencia
flota sumar(int &,flota&)//
main() {
int a,b;
gotoxy(10,10); cout<<"Introduce primer nmero"; cin>>a;
gotoxy(10,11); cout<<Introducir segundo numero ; cin>>b;
gotoxy(10,12); Sumar (a,b);
gotoxy(10,130;Restar(&a,&b); //Envio direccion
gotoxy(10,14);cout<<La suma es <<suma(a,b)
getch();
}

void sumar (int i,int d) {
int result =c+d;
cout<<"La suma es"<<result;}

void restar(int *c, int *d) {
int resul =*c - *d;
cout<<"La resta es"<<result;}

float sumar (int &i,int &d) {
int result =c+d;
cout<<"La suma es"<<result;}


Argumentos por Omisin (parmetros por omisin)

Al llamar a una funcin se pueden omitir argumentos o parmetros
inicializndolos a un valor por defecto o simplemente omitirlos.
Ese valor ser el que tenga el parmetro si es omitido en la llamada. El valor por defecto se indica en el
prototipo de la funcin. El formato es:

a). Tipo nombre_funcin(tipo parmetro valor, tipo parmetro valor, ...) o
b). Tipo nombre_funcin( )
Reglas de utilizacin de argumentos por defecto

UNI FIM
BORLAND C++
Ing. Daniel Osorio Maldonado
Pgina 46 de 183
Se pasan por valor

Slo pueden ser valores literales o constantes. No pueden ser valores reales

Reglas para la utilizacin de argumentos por defecto
Se pasan por valor
Solo pueden ser valores literales o constantes. No oueden ser valores.
Todos los argumentos por defecto deben estar situados al final del prototipo.
Si el primer argumento es por defecto, los argumentos posteriores tendrn que ser por defecto


EJ EMPLO:
/ / Con argumento en la funcion
#include<iostream.h>
#include<conio.h>
int suma(int a, int b, int c); //prototipo
int resta(int a, int b=0, int c= 0);//prototipo

main ( ) {
cout<<"Para sumar (1,2,3)= "<<suma (1,2,3) << endl;
cout<< "Para sumar (1,2) ="<<suma (1,2,0) << endl;
cout<<"Para sumar(1)="<<suma(1,0,0)<<endl;
cout<<"Para sumar(0) ="<<suma(0,0,0)<<endl<< endl;

cout<<"Para restar (1,2,3)= "<<resta(1,2,3)<<endl;
cout<< "Para restar (1,2) ="<<resta (1,2,0) <<endl;
cout<<"Para restar(1)="<<resta(1,0,0) <<endl;
cout<<Para restar(0)=<<resta(0,0,0);
getch();
}

int suma (int a,int b, int c) {
return (a+b+c);}
int resta (int a, int b, int c) {
return ((a - b) -c);}

//Sin Argumento en la funcion
//Calcula Area y Longitus de una //Circunferencia
#include<iostream.h>
#include<iostream.h>
#include<conio.h>
#include<math.h>
#define pi 2*asin(1)
double A_Circo();
double L_Circo();
float R;
main(){
cout<<"Ingrese el valor del Radio ";cin>>R;
cout<<"El Area del Circulo de Radio "<<R<<"\nEs "<<A_Circo()<<endl
<<"La Longitud de la Circunferencia de Radio "<<R<<"\nEs "<<L_Circo();
getch();
}
double A_Circo()
{return(pi*R*R);}
UNI FIM
BORLAND C++
Ing. Daniel Osorio Maldonado
Pgina 47 de 183
double L_Circo()
{return(2*pi*R);}

Otra Forma, usando referencia
#include<iostream.h>
#include<iostream.h>
#include<conio.h>
#include<math.h>
#define pi 2*asin(1)
Void LeerR(float &R){
cout<<Ingrese Radio =;cin>>R;}
double A_Circo(R)
{return(pi*R*R);}
double L_Circo(R)
{return(2*pi*R);}

main()
{
float P;
LeerR(P);
cout<<"El Area del Circulo de Radio
"<<P<<"\nEs "<<A_Circo(P)<<endl
<<"La Longitud de la Circunferencia de
Radio "<<P<<"\nEs "<<L_Circo(P);
getch();
}



FUNCIONES DE LIBRERA ESTNDAR. <math.h>
Son funciones incluida en la librera <math.h>, es decir se hace necesario cuando es invocada la funcion.

Funciones Matematicas
abs()Devuelve el valor absoluto del argumento entero x. int abs(int x); #include<stdlib.h>
fabs()Devuelve el valor absoluto del argumento en punto flotante de x: double fabs(double x)
ceil()Encuentra el nmero entero ms pequeo no menos que el argumento x. double ceil(double x)
floor()Encuentra el nmero entero ms grande no mayor que el argumento x. double floor(double x);
exp()Calcula la e exponencial al argumento x. double exp(double x);

Funciones trigonomtricas
sin( ) devuelve el seno de un ngulo. Su formato es: double sin(double ngulo);
cos () devuelve el coseno de un ngulo. El formato es: double cos(double ngulo);
tan () devuelve la tangente del ngulo indicado. El formato es: double tan(double ngulo);

asin()Devuelve el arco seno del angulo especificado. El formato es :double asin(double angulo)
acos()Devuelve el arco coseno del angulo especificado. El formato es :double acos(double angulo)
atan ()>devuelve el arcotangente del ngulo especificado. El formato es: double atan (double ngulo);

sinh()Devuelve el seno hiperbolico. El formato double sinh(double x);
cosh()Devuelve el coseno hiperbolico. El formato : double cosh(double x)
tanh()Devuelve la tangente hiperbolica. El formato double tanh(double x)


Funciones logartmicas y exponenciales.
log ()> devuelve el logaritmo neperiano de un nmero. El formato es:
double log (double nmero);

log10() > devuelve el logaritmo decimal de un nmero. El formato es:
double logl0 (double nmero);

exp()> devuelve el exponente neperiano de un nmero. El formato es:
double exp (double nmero);

UNI FIM
BORLAND C++
Ing. Daniel Osorio Maldonado
Pgina 48 de 183
sqrt ()> devuelve la raz cuadrada de un nmero. El formato es:
double sqrt (double nmero)',
pow ()--> devuelve el resultado de una potencia. Debemos indicar la base y el exponente. El formato es:
double pow(base, exponente);

Recursividad
Se dice que un proceso es recursivo s forma parte de si mismo o sea que se define en funcin de si mismo.
La recursin aparece en la vida diaria, como por ejemplo si colocamos dos espejos uno al frente del otro y
no posicionamos en el centro, entonces podremos apreciar que la imagen se repite infinita veces. ste
simple ejemplo nos sirve de modelo en problemas matemticos, en estructuras de datos y en muchos otras
aplicaciones.
Un ejemplo muy conocido es el clculo del factorial de un nmero que esta definida para cualquier valor
de n(n-1)!




n!




#include<iostream.h>
#include<conio.h>
#include<ctype.h>
# define mensaje "\n Otro Factorial [S][N] ?: "
void LeerN(long &N)
{cout<<"Ingrese N = ";cin>>N;}
long double factorial(long N)
{
if((N==0)||(N==1))
return 1;
else
return(N*factorial(N-1));
}

main() {
for(;;) {clrscr();
long M;
LeerN(M);
gotoxy(10,10);cout<<"El Factorial de "<<M<<" es "<<factorial(M)<<endl
<<'\t'<<mensaje;
if(toupper(getch())=='N')break;
}
}
/*Ingrese N = 9
El Factorial de 9 es 362880
Otro Factorial [S][N] ?: */

Experiencia : modifique el tipo de dato a long double y pruebe hasta que valor de N puede calcular.




1 si n=0 o n=1

n(n-1)! si n>0

Вам также может понравиться