Você está na página 1de 34

UNI – FIM

BORLAND C++
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

SWÅFALSO

LEER NOTA

T F
NOTA<>-1
T
T F T
NOTA=10 SW

SWÅCIERTO Escribir “Hubo 10” Escribir “Hubo 10”


F

IMPRIME
LEER NOTA

FIN

Ing. Daniel Osorio Maldonado


Página 15 de 183
UNI – FIM
BORLAND C++

Tema: Instrucción de Control de Selección Multiple (conocido


como do Case; Case of; switch() )
Permite tener un control de una Var_Selectora, como “condición” para varias alternativas; dependiendo
del Lenguaje de Programación la condición 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, expresión, función; empero, sin embargo, el valor representado
debe ser por decir lo menos, un valor escalar es decir un dato numérico entero o un carácter . 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 acción o
proceso.

Modo en que Funciona

(a) El valor de la Var_Selectora o(condición) se evalúa 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 acción cuando ninguna de las
alternativas se cumple, es el caso del “si no” , el termino no es obligatorio, pero permita clarificar una
aplicación.
INICIO
Pseudocodigo
Condicion o var_Selectora
En Caso que (Var_Selctora) sea Leer Dato
Caso 1 proceso_1
Caso 2 proceso_2
Caso 3 proceso_3 Condicion
……………………….
Caso N proceso_N
Caso X proceso_Desconocido
Var_alterna1
Fin del Caso Proceso1

Var_alterna2 Proceso2

Var_alterna3 Proceso3

Var_alternaN ProcesoN

Var_alternaX Proceso_Desco

IMPRIMIR

FIN

Ing. Daniel Osorio Maldonado


Página 16 de 183
UNI – FIM
BORLAND C++
DIAGRAMA N - S

1 CONDICIONANTE O
VAR_SELECTORA
2
3

Proceso_1 Proceso_2 …
Proceso_3 X
.... N
Proce_N Proc_Desc

Aplicación: Programar una operación Aritmética con 02 operandos: Operando1 y Operando2


(enteros O reales) y que de acuerdo al Operador elegido habra un resultado. Considere que ud. Ha
diseñado una calculadora que le permita realizar operaciones matemáticas elementales y que Los
operadores permitidos son:
¾ + : suma Mas =’+’
¾ - : diferencia Menos =’-’
¾ * : producto Por =’*’
¾ ? : división entera Entre =’?’
¾ ¿ : residuo
Residuo =’¿’
¾ ~ : potencia
Potencia = ‘~’
solucion:
Definir objetos_datos
Objeto_dato de entrada:
operador,Ope1,Ope2.
Objeto_dato de salida : Resultado.
Pseudocodigo:
Definir los Operadores: Entonces
Inicio Resultado =Residuo(Ope1/Ope2)
Leer operador si no
Ingrese : Ope1, Ope2 Resultado =0
En CASO que Operador SEA Fin del SI
‘+’ : Resultado = Ope1 + Ope2 ‘~’ :Resultado=Ope1 elevado al Ope2
‘-‘ : Resultado = Ope1 – Ope2 Otro Caso :Rsultado :” No existe Operación”
‘*’ : Resultado = Ope1 * Ope2 Fin del Caso
‘?’ : SI Ope2 es diferente de 0 Imprimir respuesta
entonces fin
Resultado = Ope1 ? Ope2
si no
Resultado =0
Fin del SI
‘¿’ : SI Ope2 es diferente de 0

Ing. Daniel Osorio Maldonado


Página 17 de 183
UNI – FIM
BORLAND C++
N-S
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
Se deja como ejercicio para que sea completado.

¿Podría Ud. Completar el cuadro?

Ing. Daniel Osorio Maldonado


Página 18 de 183
UNI – FIM
BORLAND C++

INICIO 1

Inicializar constantes
Mas =’+’
Menos =’-’ IMPRIMIR
Por =’*’ RESULTADO
Entre =’?’
Residuo =’¿’
Potencia =’~’
FIN
DIGITAR EL OPERADOR A
USAR

INGRESE :
OPERANDO1
OPERANDO2

OPERADOR

‘+’ Resultado = Operando1 + Operando2

‘-‘ Resultado = Operando1 - Operando2

‘*’ Resultado = Operando1 * Operando2

‘?’

Operando2
No Diferente de φ Si

RESULTADO =φ Resultado= Ope1 ? Ope2

‘¿’ RESULTADO=RESIDUO(OPER1/OPER2)

RESULTADO=(OPE1)~(OPE2)
‘~’
1

Ing. Daniel Osorio Maldonado


Página 19 de 183
UNI – FIM
BORLAND C++

TEMA: Instrucción 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 sólo 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 instrucción (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.

Instrucción 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 condición.se pueden representar:
Pseudocodigo
mientras (condición ) sea verdadera
proceso
fin del mientras

NO
CONDICION
Diagrama Nassi_Schneiderman
SI IMPRIMIR

ACCIONES MIENTRAS < CONDICION>


FIN
Accion1
Accion2
Accion3

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

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

solucion: SUMA=0 ; C=1


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

Ing. Daniel Osorio Maldonado


Página 20 de 183
UNI – FIM
BORLAND C++
Definir C=1 //contador

Suma=0.
Mientras(C=N) hacer 1

AB=(A+c*B).
Inverso=1/AB.
Suma=Suma+Inverso.
C++. C<N
Fin del mientras
Escribir: Suma=Suma+1/A.
Fin SUMA=SUMA+1/A
AB=(A+C*B)
INVERSO=1/AB
SUMA=SUMA+INVERS IMPRIMIR
SUMA
C++

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.

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

sp=2*i/(2*i-1)

i=i+1

Ing. Daniel Osorio Maldonado


Página 21 de 183
UNI – FIM
BORLAND C++

Instrucción de control Repetitivo “hacer procesos mientras(condcion)


En este tipo de Instrucción 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 condición se cumple, es muy
parecida al “repeat until” del Pascal.
Pseudocodigo
Hacer (procesos)
mientras (condición ) sea verdadera Proceso 1
fin del hacer .

Proceso 2
DIAGRAMA (N-S)
PROCESO1 V
F
PROCESO2 Condición

MIENTRAS CONDICION Escribir

FIN

Problema de Aplicación
Se ingresa un Numero de varias cifras, INICIO
y luego hallar la suma de sus cifras, el numero
invertido y la cifra mayor.
Por ejemplo 1234, la suma es:10, invertido es Leer num
4321 y la cifra mayor es 4.
Objetos_datos de entrada y Salida
Objeto_Dato de Entrada: Numero
inversoÅ 0,Su Å 0, MÅ0
Objeto_Dato de Salida:Salida numero invertido.

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

F
V
num> 0

Inverso , Su, M

FIN

Ing. Daniel Osorio Maldonado


Página 22 de 183
UNI – FIM
BORLAND C++

Esta instrucción “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:

1 2 3 4
S= − + − + ...
t +1 2t + 3 3t + 5 4t + 7

Instrucción de control Repetitivo for


Esta instrucción de control repetitivo considera: que el proceso debe iniciarse para un valor inicial que
vendría a ser el inicio del contaje, una segunda expresión que contiene el valor máximo o mínimo 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 programación; 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

Ing. Daniel Osorio Maldonado


Página 23 de 183
UNI – FIM
BORLAND C++

INICIO
desde/para vi=1 hasta vf de uno en uno Hacer
Proceso_A
Proceso_B Para Vcont=
…………….. Valor_inic, Valor_fin
HACER
Fin del desde/para
Diagrama N-S
PROCESO
desde/para de var_contador=Vi Hasta Vf

ProcesoA IMPRIMIR
ProcesoB

Fin desde/para
FIN

INICIO

Aplicación
Se va a Ingresar un Numero y la tarea Lee ne
consiste en mostrar todos los divisores de
ese numero ingresado. ContDivi=0
Cuando el numero Ingresado tiene por
divisores a la unidad(1) o al mismo numero
mostrara un para Divisor=1, hasta ne
mensaje diciendo “ El Numero es Primo ”

SOLUCION
Objetos_Datos de ENTRADA Y SALIDA V
Resto(ne/Divisor)=0
Objejo_Datos de Entrada: el Numero
entero(NumeEnte)
Objeto_Dato de Salida : numero de Escribir Divisor
divisores(NumeDivi), mensaje F

PSEUDOCODIGO ContDivi=ContDivi+1
Inicio
Leer un Numero entero: NumeEnte
Definir la variable Contador de Divisores e
Inicializarla a 0 F V
NumeDivi=0 ContDivi=2
Contabilizar los divisores y mostrarlos
PARA Divisor=1 HASTA NumeEnte,
HACER No es Primo Numero Primo
SI Residuo de NumeEnte/Divisor=0,
ENTONCES
Escribir Divisor
ContDiv=ContDiv+1 MENSAJ
Fin del SI DIVISORE
Escribir mensaje
SI ContDiv=2,ENTONCES
MENSAJE “Numero Primo”
FIN
SINO
MENSAJE “No es Primo”
Fin del Si
Fin

Ing. Daniel Osorio Maldonado


Página 24 de 183
UNI – FIM
BORLAND C++

TEMA: ELEMENTOS BÁSICOS DEL BORLAND C++


Símbolos
Están clasificados en:
letras : ‘A’..’Z’, ‘a’..’z’ (no incluye la ñ y Ñ)
dígitos : 0 1 2 3 4 5 6 7 8 9
símbolos especiales
se tienen los siguientes:
simples :

SIMPLES

+ - * / = < > “

; ! : % & { } . ,

^ | sizeof

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

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

>>= <<=

// /* */

Identificadores

Es el nombre mediante el cual se define una variable, constante, tipo, función, estructura, unión, clase,
objeto, etc.
Los identificadores declarados en Boland C++ tienen las siguientes características.
• Pueden estar conformados por 127 caracteres como máximo.
Ejemplos :
Suma = ( 4 caracteres )
Contador = ( 8 caracteres )
• Se hace distinción entre mayúsculas, minúsculas.
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 carácter debe ser letra ó subrayado
Ejemplo :
Suma = Correcto
1 Suma= Incorrecto el 1er carácter debe ser letra */

Ing. Daniel Osorio Maldonado


Página 25 de 183
UNI – FIM
BORLAND C++
Suma1= Correcto
Suma 2m= no debe haber espacios entre el nombre//incorrecto
Suma_2m= correcto
Suma+si= incorrecto, no debe haber operación entre su nombre
S9_suma= correcto
S9+suma=incorrecto

Palabras reservadas
Son identificadores que tienen un significado especial establecido por el lenguaje de programación.
Siempre deben escribir en minúsculas.
Se lista a continuación 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++


Expresión
Es un conjunto de operaciones ( Datos y/o variables ) y operadores que actúan ó realizan operaciones
sobre los operandos, y que mediante el uso racional de paréntesis puede forzar las expresiones matemáticas
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 /
% << >> < > < = >
== != | && !! ? :
= * = / = % = + = - = << =
> > & = | = , # ##

Ing. Daniel Osorio Maldonado


Página 26 de 183
UNI – FIM
BORLAND C++

Las siguientes operaciones son específicos 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 dirección ( &A )
• En C++ un paso de parámetro por referencia a una función.
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 categorías.
La categoría #1 tiene la más alta Prioridad.
La categoría #2 ( los Operadores Unarios ) toman la segunda Prioridad, hasta el Operador coma (,) que
tiene igual Prioridad

Para el caso de los operadores unarios ( la categoría #2 ), condicional ( la categoría #14 ) y la de asignación
( la categoría #15)
La agrupación de estos operadores se ejecutan de Derecha a Izquierda todo, otra asociación 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.

Categoría #1 Operador Que realiza (o ejecuta)


1. Más alta () llamada de una función
[] Subscripción de un Arreglo
-> C++ selector de componente Indirecto
:: C++ acceso o resolución del alcance
. C++ selector de componente directo
2. Unaria ! Negociación Lógica ( NO)
A nivel de bits ( complemento a I )
+ Unitario más
- Unitario menos
++ Preincremento o postincremento
-- Predecremento o postdecremento
& Dirección de la variable
* Indirecciòn
sizeof Devuelve el tamaño del operando en ocho bits
new (separación de memoria dinámica en C++ )
delete (liberación de memoria dinámica en C++ )

3. Miembros de acceso . * C++ Referencia a un campo


Æ * C++ Referencia a un campo
4. Multiplicativos * Multiplica
/ Divide
% Resto ( módulo o resto de la División entera )
5. Aditivo + Binario más
- Binario menos
6. Desplazo << Desplazamiento de bits a la izquierda
>> Desplazamiento de bits a la derecha

Ing. Daniel Osorio Maldonado


Página 27 de 183
UNI – FIM
BORLAND C++
7. Relacional < Menor que
<= Menor que o igual que
> Mayor que
>= Mayor que o igual que

Categoría #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. && Lógico ‘y’
13. || Lógico ‘o’
14. Operador Ternario ?: (a >b )? Indica if (a) then “x,” else “y“
Donde el operador > puede ser cualquier otro
operador, <, >=, <=, =.
15. Asignación = Asignación 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 , Evaluación

El Operador Ternario (a>b)? a:b


Este operador reemplaza en cierta medida a la instrucción 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 números 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 números 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
librería estándar la otra utiliza el reloj del sistema.
Herramientas a usar

Ing. Daniel Osorio Maldonado


Página 28 de 183
UNI – FIM
BORLAND C++
a). ramdomize(); al inicio y antes de utilzar las funciones que genere los valores pseudoaleatorios, esta
función 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> Ejemplo
#include<conio.h> //Simule el lanzamiento de un dado y adivine el
#include<stdlib.h> // obligado ; <time.h> valor de la cara en una tirada
opcional #include<iostream.h>
main(){ #include<conio.h>
randomize();int Vf=45;Vi=1; #include<stdlib.h>//librería para los números
int m; //pseudoaleatorios
m=rand()%33 //genera valores desde 0 hasta 32 main(){ randomize();
w=random(Vf-Vi-1)+1; //genera valores desde 1 int cara=random(6)+1;
hasta 45 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 ubicación que permita al usuario una mejor vista de la
aplicación.
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.

0 1 2 3…10…15…20…30…50…60…70 …80
1
2 gotoxy(20,2); cin>>A;
3

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

25

//Programa que usa gotoxy(x,y) float x,y,z;randomize();


//Se pide generar 03 valores aleatorios en x=random(17)+7;
el rango [7,17] y halla el mayor gotoxy(10,5);cout<< "x ="<<x;
#include<iostream.h> y=random(17)+7;
#include<conio.h> gotoxy(10,7);cout<< "y ="<<y;
#include<stdlib.h> z=random(17)+7;
main(){ gotoxy(10,9);cout<< "z ="<<z;

Ing. Daniel Osorio Maldonado


Página 29 de 183
UNI – FIM
BORLAND C++
float m=x; getch();
if(y>m) }
m=y; /*Salida
if(z>m) x =12
m=z; y =23
gotoxy(20,15);cout<< "El Mayor es z =11
="<<m; 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
también 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)

Ing. Daniel Osorio Maldonado


Página 30 de 183
UNI – FIM
BORLAND C++

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 matemáticas como punto flotante. (Números
reales)
En Borland C++ realiza en forma automática en las operaciones la asignación del punto flotante cuando éste
no se especifique.

Tipos de dato void (tipo de dato vacío)


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

Cuando una función no tiene parámetros

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

Puede también ser utilizado para declarar punteros como vacío. Con lo que se puede
operar con datos de distintos tipos. Esto es porque al compilar este no determinará el
tamaño de la variable puntero vacío.

Ejemplo
#include<iostream.h>
#include<conio.h>

Ing. Daniel Osorio Maldonado


Página 31 de 183
UNI – FIM
BORLAND C++
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 código fuente de un
programa en Borland C++. Lo cual expande al ámbito del entorno de programación, permitiendo la
correcta manipulación de constantes y funciones en la codificación de un programa.
2 El preprocesador posibilita incluir diversas instrucciones para el compilador en el código fuente
de un programa en Borland C++. Lo cual expande al ámbito del entorno de programación,
permitiendo la correcta manipulación de constantes y funciones en la codificación 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 sección solo se especifica la cabecera de las funciones
definidas por el usuario.
6 Función Principal
Todo programa en Boland C++ por lo menor debe estar conformado por una función, la cual es llamada
función principal (función main())
Al ejecutarse un programa está función será la única que se encargará del control de todo el software
desarrollado.
Ejemplo :
main ( )
{ // Inicio de la función principal
int a, b; // Datos del programa
long prod // Resultado

Ing. Daniel Osorio Maldonado


Página 32 de 183
UNI – FIM
BORLAND C++
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 codificación 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. Implementación de Funciones

Las funciones definidas por el usuario son codificadas en esta sección 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 Asignación
Es el proceso mediante el cual se asigna un valor ò dato a una variable previamente definida en dicha
función
La asignación se realiza mediante el operador “=”

Sintaxis
identificadores _ Variable = dato ;
En dato puede ser el resultado de una expresión en la cual se procesan variables y constantes definidas por
el usuario, esto quiere decir que la expresión 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 líneas de programa.
#include <stdio.h> //En ANSI C
#include <iostream.h> // Para C++/Borland C++ con objetos

#include “iostream.h”

Ing. Daniel Osorio Maldonado


Página 33 de 183
UNI – FIM
BORLAND C++
Las comillas dobles indican que el fichero será buscado primero en el directorio actual de trabajo y si no es
encontrado continuará con la búsqueda 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 estándar (pantalla)
cin>>Lee caracteres de la entrada estándar (teclado)

Salida
Permite la salida de datos por pantalla al tener una variable o expresión numérica 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 Nùmeros”<<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 línea
\t Tab. horizontal
\b Retroceso
\a Bell (alerta. bip)

TEMA: INSTRUCCIONES DE CONTROL


Las estructuras de selección permite al usuario tener un control del programa mediante el uso de
instrucciones de control,constituyendo mecanismos para dirigir el flujo de ejecución, dentro de estas
Instrucciones, el Lenguaje C define tres categorías bien definidas:

• Instrucciones de Selección(if..else; if… then; if…else if else ; switch).


• Instrucciones de Iteración(bucle – lazo).
• Instrucciones de salto(break, continue,exit).

Ing. Daniel Osorio Maldonado


Página 34 de 183
UNI – FIM
BORLAND C++
I.Selectivas
¾ Simples : if...else proceso de Verdadero
¾ Dobles : if…condicion proceso_V else proceso_F
¾ Anidados: if…condicion 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 Condición Verdadero

Sentencia 2 Sentencia 1

Dado que las expresiones lógicas toman el valor de verdadero


o falso se necesita una instrucción de control que dirija al computador para ejecutar otras instrucciones, en
"C/C++" esta alternativa lo realiza con la instrucción o estructura de control

if (simple) if else (doble) if else if


if(<condición>){ if(<condicion>){ if(<condición>){
instrucción} instruccion1} instrucción a ;}
Ejemplo else{ else if(<condición>){
#include<iostream.h> instruccion2} instrucción b;}
main( ){ else if(<condición>);{
int a; instrucción c;}
cout<<”Ingrese Valor Ejemplo: .
a:”;cin>>a; #include<iostream.h> .
if(a>0) main(){ else{
cout<<”a es Positivo”; float a,b; instrucción n;}
getch( ); float div; Ejemplo:
} cout<<”Ingrese a: “;cin>>a; resuelve una ecuación de 1er grado con una
cout<<”Ingrese b: “;cin>>b; incógnita:
if(b) <<"ax + b =0"<<endl
{div=a/b; <<endl;
cout<<"El resultado es: cout<<"a =";cin>>a;
"<<div;} cout<<"b =";cin>>b;
else if (a==0) {cout<<" No tiene Solucion ";}
{cout<<"Division por cero ";} else if(b==0){x=0; }
getch( ); else {x=(-1)*(b/a);}
} cout<<"La Solución a la Ecuación : "<<a<<"x
+ "<<b<<"=0 ";
cout<<setiosflags(ios::fixed|ios::showpoint);

Ing. Daniel Osorio Maldonado


Página 35 de 183
UNI – FIM
BORLAND C++
cout<<setprecision(3)<<endl<<"Es X
="<<x;
cout<<"\n ¿Otro Calculo :?[S][N] ";
opc=toupper(getch());
if(opc=='N')break;}
}

El compilador evalúa las expresiones condicionales desde arriba descendiendo, y tan pronto como el compilador
encuentre una condición verdadera, ejecuta la instrucción 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 efectúa nada.

La Instrucción switch
Esta instrucción, realiza comprobaciones múltiples o condiciones múltiples.
Borland C++ comprueba una variable sucesivamente frente a una lista de constantes enteras o de carácter,
luego de encontrar una
coincidencia, la computadora ejecuta las instrucciones o bloque de instrucciones que se asocian a la constante.

Default
Si al evaluar <expresión> esta toma un valor que no se encuentra en ninguna <exp_constant> de los casos entonces se
procederá con la ejecución de la <instrucción por defecto>.

INICIO

EXPRESION

INSTRUCCIÓN 1
EXP_CONST 1

INSTRUCCIÓN 2
EXP_CONST 2

INSTRUCCIÓN 3
EXP_CONST 3

EXP_CONST N INSTRUCCIÓN N

OTRO CASO INSTRUCCIÓN X

MENSAJE

Sintaxis : FIN
switch(<expression>) {
case <exp_const1>:
instrucción(s);break;

case <exp_const2>:
instrucción(s);break;

case <exp_const3>:

Ing. Daniel Osorio Maldonado


Página 36 de 183
UNI – FIM
BORLAND C++
instrucción(s);break;
.
.
default :
instruction(s);

NOTAS:
Exp_const debe ser una Variable una expresión, una función y el valor que representa necesariamente
debe ser un escalar, en pocas palabras debe ser numérico entero o sino carácter 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 Instrucción 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 instrucción
correspondiente y termina la estructura que le corresponde.
3. Si no existe una <exp_const> que corresponda el control para la instrucción que sigue al bloque
del switch, a menos que este contenga la etiqueta de "default", en este caso el control se
transfiere a la instrucción que sigue a "default"
4. Dos etiquetas "case” en el mismo bloque no pueden tener <exp_const> con el mismo valor.
5. La Instrucción "break" se usa para terminar la secuencia que está asociada a la <exp_const>.Si
se omite la instrucción break, la ejecución continua en la Instrucción del siguiente "case " hasta que
la computadora encuentre un break o el final del switch.

Aplicación:
Programa que realiza una serie de operaciones matemáticas:
#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;

Ing. Daniel Osorio Maldonado


Página 37 de 183
UNI – FIM
BORLAND C++
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

Sentencia_A

a) do While Sentencia_B

Pseudocodigo: loop
Hacer Sentencia_A
Sentencia_B Expresión NO
Mientras(Expresión) sea Verdadera
Si
Imprimir
Sintaxis :
do{ <Sentencias>
sentencia_A FIN
sentencia_B
}while (Expresion);

Las <sentencias> son ejecutadas en forma repetida según que el valor de la expresión <expresión> sea
verdadera.
La prueba ò control toma el lugar después de cada ejecución de la <sentencia> esto nos indica que la
comprobación de continuar con la ejecución de <sentencia> está a la salida del ciclo iterativo o bucle o
loop. Se dive que la instrucción do- while itera al menos una vez.
Ejemplo :

Ing. Daniel Osorio Maldonado


Página 38 de 183
UNI – FIM
BORLAND C++

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

b) while…
Aquí la Instrucción se repetirá mientras la condición sea verdadera y lo hace mediante un bucle o lazo.
Termina cuando la condicion es falsa.

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

Sintaxis : No
Condicion
While (<condición>) loop si
{
<sentencia_1> Sentencia_1
<sentencia_2> Sentencia _2
}

Imprimir

FIN

<sentencias> es ejecutado en forma repetida según el valor de <expresión> sea distinto de cero.
La prueba toma el lugar antes de cada ejecución de la <sentencia> lo que permite controlar la ejecución
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>

Ing. Daniel Osorio Maldonado


Página 39 de 183
UNI – FIM
BORLAND C++
#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 instrucción ,es uno de las mas usadas dentro de las de flujo de control esta instrucción tiene su
equivalente en otros lenguejes de programación tradicionales como el Basic/Pascal en Fortran.

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

datos

Para…

Proceso1

imprim

La primera expresión se refiere a la condición inicial, si es una sola condición si son varias (deben estar
separadas por “;”);lo mismo ocurre con la tercera expresión que esta dedicada a la actualizacion. La
expresión central se refiere al test de terminación ,muy parecido al while ,continúa el bucle mientras se
cumpla la condición.

// Ejemplos : calcula el cuadrado de un numero ‘n’

Ing. Daniel Osorio Maldonado


Página 40 de 183
UNI – FIM
BORLAND C++
#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 instrucción for() permite construir un lazo, y solo saldra de ese lazo mediante un instrucción,
en este caso la instrucción if(),en la cual se libera del lazo cuando la condicion conlleva a una alternativa
falsa.
Esta instrucción es usada frecuentemente cuando una aplicaciondeba o no abandonar el programa.
#include<iostream.h> randomize();
#include<conio.h> cout<<"Ingreso mi Numero ";cin>>my;
main(){ cout<<"Genero un numero entre 1 y 7 \n";
…………… pc=random(7)+1;
for(;;){ cout<<"El numero de la pc es "<<pc;
cuerpo del programa //procesos if(my==pc)
……………… cout<<"\nSuertudo Adiviniste! mi numero
if(condicion ) fue "<<my<<'y'<<"\nEl Numero de la pc
break; fue "
} <<pc;
else
//Proprama que usa for(;;) cout<<"\nSin Suerte!";
//Adivine un numero en el rango de 1 a 7 cout<<mensaje;
#include<iostream.h> if(toupper(getch())=='N')break;
#include<conio.h> }
#include<stdlib.h> }
#define mensaje "\nOtra Prueba [S][N]" Ingreso mi Numero 3
#include<ctype.h> //para la mayuscula del Genero un numero entre 1 y 7
Caracter El numero de la pc es 3
main() Suertudo Adiviniste! mi numero fue 3y
{ El Numero de la pc fue 3
int my,pc; Otra Prueba [S][N]
for(;;){clrscr();

Ing. Daniel Osorio Maldonado


Página 41 de 183
UNI – FIM
BORLAND C++

TEMA: FUNCIONES DEFINIDAS, FUNCIONES PROPIAS Y


RECURSIVIDAD
Una aplicación 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 función main(), es la primera función 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 pequeños
procesos.
Una función es un proceso que realiza una determinada tarea, tiene un nombre y es capaz de recibir datos
y devolver resultados. Una función es reconocida en un programa porque lleva entre paréntesis
una lista de argumentos; los cuales son la clave entre la comunicación de las funciones. Estos argumentos o
variables especiales toman el nombre de parámetros . Otra manera de comunicarse es con su propio
nombre.
Toda función, posee un cuerpo que esta encerrado entre llave apertura “{“ y otra de cierre “}”cuando se
encuentra esta ultima llave, el control retorna a la función que hizo la llamada.

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

Declaración de funciones (prototipos)


La declaración indica al compilador el tipo de valor que va a devolver la función y el número y tipo de sus
parámetros. Lo indicamos básicamente para la comprobación de tipos. El formato del prototipo es el
siguiente:

Tipo nombre_función (tipo parámetro1, tipo parámetro2,...)

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

Ing. Daniel Osorio Maldonado


Página 42 de 183
UNI – FIM
BORLAND C++
float media_tres (float num1,float num2,float num3)
{float media =(num1+ num2+num3)/3.0;
return (media);// devuelve un valor
}

La función que no retorna valor


void nom_func() o void nom_func(tipo param1,tipo param2,tipo param3…)
Si una función no retorna ningún valor puede ser declarada del tipo void (vacio); la función void puede o
no llevar parametros o argumentos
Este tipo de función 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 aplicación 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);

Ing. Daniel Osorio Maldonado


Página 43 de 183
UNI – FIM
BORLAND C++
Algunas notas relativas a las funciones

‰ El prototipo de una función se debe corresponder en el número y tipo de parámetros


con la llamada y con la definición de la función.

‰ El tipo devuelto en la definición de la función 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 función puede retornar cualquier tipo básico de dato, punteros, referencias,
objetos, etc.
EJEMPLO:
#include<iostream.h>
#include<conio.h>
int sumar(int, int);//Prototipo

main( ){
int a,b;
gotoxy(10,10);
cout<<"Introduce primer número";
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 devolución de un valor se utiliza la instrucción cout<< indicando el dato a devolver a
continuación. 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();
}

Ing. Daniel Osorio Maldonado


Página 44 de 183
UNI – FIM
BORLAND C++

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 función. Con este sistema los valores originales no se pueden modificar
desde la función.

‰ Por referencia —> lo que se pasa es la dirección de memoria del dato utilizado como parámetro.
De esta forma ambas variables compartirán 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 número"; 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 Omisión (parámetros por omisión)

Al llamar a una función se pueden omitir argumentos o parámetros


inicializándolos a un valor por defecto o simplemente omitirlos.
Ese valor será el que tenga el parámetro si es omitido en la llamada. El valor por defecto se indica en el
prototipo de la función. El formato es:

a). Tipo nombre_función(tipo parámetro valor, tipo parámetro valor, ...) o


b). Tipo nombre_función( )
Reglas de utilización de argumentos por defecto

Ing. Daniel Osorio Maldonado


Página 45 de 183
UNI – FIM
BORLAND C++
‰ Se pasan por valor

‰ Sólo pueden ser valores literales o constantes. No pueden ser valores reales

Reglas para la utilización 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 tendrán que ser por defecto

EJEMPLO:
//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);}

Ing. Daniel Osorio Maldonado


Página 46 de 183
UNI – FIM
BORLAND C++
double L_Circo()
{return(2*pi*R);}

Otra Forma, usando referencia


#include<iostream.h> main()
#include<iostream.h> {
#include<conio.h> float P;
#include<math.h> LeerR(P);
#define pi 2*asin(1) cout<<"El Area del Circulo de Radio
Void LeerR(float &R){ "<<P<<"\nEs "<<A_Circo(P)<<endl
cout<< “Ingrese Radio =”;cin>>R;} <<"La Longitud de la Circunferencia de
double A_Circo(R) Radio "<<P<<"\nEs "<<L_Circo(P);
{return(pi*R*R);} getch();
double L_Circo(R) }
{return(2*pi*R);}

FUNCIONES DE LIBRERÍA ESTÁNDAR. <math.h>


Son funciones incluida en la librería <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 número entero más pequeño no menos que el argumento x. double ceil(double x)
floor()ÆEncuentra el número entero más grande no mayor que el argumento x. double floor(double x);
exp()ÆCalcula la e exponencial al argumento x. double exp(double x);

ƒ Funciones trigonométricas
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 logarítmicas y exponenciales.


log ()—> devuelve el logaritmo neperiano de un número. El formato es:
double log (double número);

log10() —> devuelve el logaritmo decimal de un número. El formato es:


double logl0 (double número);

exp()—> devuelve el exponente neperiano de un número. El formato es:


double exp (double número);

Ing. Daniel Osorio Maldonado


Página 47 de 183
UNI – FIM
BORLAND C++
sqrt ()—> devuelve la raíz cuadrada de un número. El formato es:
double sqrt (double número)',
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 función de si mismo.
La recursión 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 matemáticos, en estructuras de datos y en muchos otras
aplicaciones.
Un ejemplo muy conocido es el cálculo del factorial de un número que esta definida para cualquier valor
de n(n-1)!

1 si n=0 o n=1
n!
n(n-1)! si n>0

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

Ing. Daniel Osorio Maldonado


Página 48 de 183

Você também pode gostar