Monografias.com > Uncategorized
Descargar Imprimir Comentar Ver trabajos relacionados

Introducción a Borland C++ 5.0 (página 3)




Enviado por JU MO PO



Partes: 1, 2, 3

Programa 7

Desarrollar un programa que
muestre el uso de las secuencias de escape.

Codificación en Borland
C++

#include<conio>

#include<iostream>

int main()

{

cout<<"ntSECUENCIAS DE
ESCAPEn";

cout<<"t——————–n";

cout<<" \n: Mueve el
cursor al inicio del sgte renglonn";

cout<<" Presione una tecla
para ver el efecto";

getch();cout<<"n";getch();

cout<<"n \r: Mueve el
cursor al inicio del renglon actualn";

cout<<" Presione una tecla
para ver el efecto";

getch();cout<<"r";getch();

cout<<"nn \t: Mueve el
cursor una distancia a la derechan";

cout<<" Presione una tecla
para ver el efecto";

getch();cout<<"t";getch();

cout<<"nn \a: Enciende
un pitido del sonido
del sisteman";

cout<<" Presione una tecla
para ver el efecto";

getch();cout<<"a";getch();

cout<<"nn \': Muestra un apostrofe en la
pantallan";

cout<<" Presione una tecla
para ver el efecto";

getch();cout<<"
'";getch();

cout<<"nn \": Muestra
una comilla en la pantallan";

cout<<" Presione una tecla
para ver el efecto";

getch();cout<<"
"";getch();

cout<<"nn \\: Muestra
una barra invertida en la pantallan";

cout<<" Presione una tecla
para ver el efecto";

getch();cout<<"
\";getch();

cout<<"nn Press any key
to go out";

getch();return 800;

}

Explicación

Como se habrán podido dar cuenta las
secuencias son órdenes que se le dan al monitor, archivos o a la impresora. Las secuencias que se han
nombrado se incrustan en un flujo de datos.
De ahora en adelante usaremos constantemente las
secuencias en nuestros programas. Creo yo que más
explicación de no puede haber. Para no
desperdiciar espacio voy a explicar algunas cosas por
aquí. Anteriormente hemos visto a endl que
incrustado en el flujo de datos abiertos por cout realiza
el mismo trabajo que
n. Esto quiere
decir que se puede usar indistintamente ambos. Ya estamos
viendo muy a menudo la palabra return al final de
nuestro código. Esta es una palabra clave
de Borland C++ heredado de C++. Cuando nosotros
escribimos la instrucción: return 10; por poner un ejemplo le
decimos al compilador que tome el valor
10 y lo almacene en algún lugar de la
memoria. Este valor será llamado cada vez que
se invoque a una función. Más adelante
veremos como aprovechar este valor que se almacena en
algún lugar de la memoria. Voy adelantarles un poco de
información con respecto a las
funciones.

Las funciones son un tema que se va a tratar
más adelante. Toda función diseñada
por el usuario tendrá una estructura o prototipo.

La sintaxis para declararar funciones es:
tipoDeDato nombreDeLaFunción (argumentos);
Ejemplo: int Suma(int a, int b); En este ejemplo se
declarado una función. Esta función
devuelve un valor entero. El nombre de la función
es Suma. Los parámetros o argumentos que recibe
son dos; a y b, ambos de tipo entero. Ahora dejamos de
lado lo que son las funciones para hablar un poco del
lenguaje Borland C++. Algunos pueden estar
dudando de la potencia del lenguaje y estar pensando que
hasta ahora no han aprendido nada. Deben considerar que
ahora estamos desarrollando aplicaciones para el sistema
operativo MS-DOS
o plataforma similar. En este tipo de aplicaciones no es
muy fácil mostrar palabras tildadas en la consola
como ya se han dado cuenta. Sí están
preguntando cuando vamos a empezar a desarrollar juegos
y todo lo demás, entonces deberán ponerse
las pilas
para poder
avanzar rápidamente en su aprendizaje del lenguaje Borland C++ con
el paradigma de programación: Programación
Estructurada (PE) que es lo que estamos haciendo
actualmente.

Operadores aritméticos

En Borland C++ se definen 5 operadores básicos
que nos servirán para construir operaciones
más complejas.

Operador

Acción

– (menos)

Este el símbolo menos y se usará
para restar números de cualquier tipo.

+ (mas)

Este símbolo se usará para sumar
dos números de cualquier tipo.

* (por)

Este símbolo se usará para
multiplicar dos números de cualquier
tipo.

/ (división)

Este símbolo se usará para dividir
dos números de cualquier tipo.

% (módulo)

Este símbolo se usará para hallar
el resto de la división de dos
números
enteros
.

Las reglas de agrupación y jerarquía de
los operandos es como nosotros acostumbramos. Por ejemplo: En la
operación 4+6×7 el compilador primero multiplicará
y luego sumará,

Programa 8

Desarrollar un programa que opere 2 números y
obtenga los resultados sgtes: resta, suma, producto,
cociente y el resto de dividir el primer número con el
segundo.

Codificación en Borland
C++

#include<iostream>

#include<conio>

int main(int a,int b)

{

cout<<"ntBORLAND C's
BASIC OPERATIONSn";

cout<<"t—————————-n";

cout<<"nIngrese numero:
";cin>>a;

cout<<"Ingrese otro
numero: ";cin>>b;

cout<<"nLa resta es:
"<<(a-b)<<endl;

cout<<"La suma es:
"<<(a+b)<<endl;

cout<<"El producto es:
"<<(a*b)<<endl;

cout<<"La division es:
"<<(a/b)<<endl;

cout<<"El resto es:
"<<(a%b)<<endl;

cout<<"nPress a key to
finalizen";

getch();

return 36;

}

Explicación

La novedad en este código fuente es el
haber declarado dos varianbles; a y b en la zona de
argumentos de la función main y no en la el cuerpo
del mismo. Las variables declaradas son de tipo int por
que el operador módulo (%) solo se aplica a los
números de tipo int (entero). Si nos vamos a la
instrucción: cout<<"La resta es:
"<<(a-b); podemos notar como hemos
incrustado a través del flujo el valor resultante
de restar la variable a con b. Lo mismo hemos hecho con
todos los demás resultados. Podríamos haber
declarado una variable c de tipo int con la
intención de hacer: c=a-b; para luego mostrarlo en
pantalla con la instrucción: cout<<"La resta es: "<<c;
Hacer esto sin embargo por ahora no tiene mucha
importancia ya que dicho valor solamente serviría
para mostrarlo en pantalla.

Para poder hacer algo, primero debemos tener una
necesidad. En nuestro campo (informática) también será
así. No podemos poder desarrollar ni un solo programa
nuevo sino no tenemos necesidad alguna por algún software. Como ya sabemos,
"programar" es encontrar una solución adecuada y
óptima a un problema. Las principales
características de un programa son: tamaño (medido
en múltiplos de un byte), estabilidad o solidez (el
programa no se "cuelga") y versatilidad o eficacia (el
programa es muy bueno en lo que hace). Estas
características son las que harán exitoso a
nuestros programas. La relación entre estas
características es:

Esta la relación perfecta para cualquier
programa. Osea menor tamaño, alta solidez y eficacia.
¿Por que bajo tamaño? La respuesta a eso
está la ganancia de velocidad a la
hora de cargarse en la memoria el programa. Las otras dos
características se responda solas ¿verdad?. Para
implementar estas características en nuestros programas
será necesario disciplinarmos un poco y volvernos muy
analistas. Un programa refleja en algo el carácter del programador.

Ahora hablaremos un poco de las variables. Las variables
pueden clasificarse en variables de entrada y/o salida. Es muy
importante tener la capacidad de anticipar (en el mejor de los
casos) las variables que podamos necesitar para poder elaborar
nuestros programas. También es útil utilizar
identificar el tipo de la variable. Más adelante veremos
con más detalle las ventajas de usar variables de un tipo
con respecto a otro.

Recordando… En algebra estamos acostumbrados a
trabajar con ecuaciones
¿verdad? Observe la ecuación siguiente: X=4
¿Qué podemos deducir? Lo podemos deducir es que la
variable x tiene un valor igual a 4. Osea que sí sumamos
X+8 el resultado será 12 ¿cierto?. Ahora,
también estamos acostumbrados a esto: 2Y=Y+6
¿verdad? Si resolvemos la ecuación
hallaríamos que la variable Y tiene un valor igual 6.
Ahora, Qué pasa sí propongo la ecuación:
Z=Z+6? La respuesta a esto en algebra no tiene solución o
en todo caso la solución es el conjunto vacío.
Cuando programemos usaremos la expresión Z=Z+10 (por poner
un ejemplo) muchas veces con la finalidad de ahorrar la
declaración de variables en exceso.

Ahora voy a proponer la instrucción
sgte:

A=10;

A=A+5;

Como entendemos esto? Primeramente hay que entender
la computadora
no sabe resolver ecuaciones. En la instrucción:
a=10; le decimos al compilador
que almacena el valor 10 en la variable A. En la segunda
instrucción le decimos al compilador que almacene en la
variable A la suma de del valor de A con 5. En otras palabras la
instrucción: A=A+5;
es lo mismo que escribir: A=10+5;

Programa 9

Elabore un programa que muestre todo los
submúltiplos de una cantidad de dinero
dado.

Las monedas existentes son: 1 sol, 2 soles y 5
soles

Los billetes existentes son: 10 soles, 20 soles, 50
soles, 100 soles y 200 soles

Ejemplo: Sí el dinero
fuese 45 soles entonces el programa deberá mostrar que
existen 2 billetes de 20, 2 monedas de 2 soles y 1 moneda de un
sol.

Codificación en Borland
C++

#include<conio>

#include<iostream>

float main()

{

int dinero;

cout<<"ntSUBMULTIPLOS DE
MI DINEROn";

cout<<"t————————-n";

cout<<"nCantidad de
dinero: ";cin>>dinero;

cout<<"nCalculando
submultiplos…n";

cout<<"nHay
"<<dinero/200<<" billetes de
S/.200n";

dinero=dinero%200;

cout<<"Hay
"<<dinero/100<<" billetes de
S/.100n";

dinero=dinero%100;

cout<<"Hay
"<<dinero/50<<" billetes de
S/.50n";

dinero=dinero%50;

cout<<"Hay
"<<dinero/20<<" billetes de
S/.20n";

dinero=dinero%20;

cout<<"Hay
"<<dinero/10<<" billetes de
S/.10n";

dinero=dinero%10;

cout<<"nHay
"<<dinero/5<<" monedas de S/.5n";

dinero=dinero%5;

cout<<"Hay
"<<dinero/2<<" monedas de S/.2n";

dinero=dinero%2;

cout<<"Hay
"<<dinero<<" monedas de S/.1n";

cout<<"nPress any key to
finishn";

getch();return 19.87;

}

Explicación

En este programa solo hemos declarado la
variable dinero. Como ya se habrá podido dar
cuenta este es una manera de poder desarrollar el
programa solicitado. Tal vez usted tenga otra idea
diferente de como desarrollar el programa. Sí ese
fuera el caso entonces usted deberá compararlos y
analizarlos para aprovechar lo mejor de ambos
códigos. El valor del dinero que es ingresado por
el usuario se guarda en la variable dinero. Lo primero
que hice fue calcular cuantos billetas existen de 200.
Esto se logra en la instrucción:
cout<<"Hay
"<<dinero/200<<"…"; En
la instrucción: dinero=dinero%200; lo que se hace
es guardar el resto de dividir el valor de la variable
dinero con 200. Esto es necesario puesto que se desea que
el programa halle los submúltiplos del dinero en
forma decreciente. Una vez hecho esto la variable dinero
ahora almacena un nuevo valor que será
interpretado como dinero restante que no es
múltiplo de 200. Como esta cantidad no es
múltiplo de 200 entonces tendrá que serlo
de 100, de no serlo se verá reflejado en el
resultado de dividirlo por 100. Sí este fuera el
caso el resultado de dividir por 100 sería 0. En
la instrucción siguiente se logra esto:
cout<<"Hay
"<<dinero/100<<"…";
Como puede notar se ha seguido el mismo paso para
poder hallar los submúltiplos menores. Debe
recordar que el operador % (módulo) no se aplica a
números enteros. Además también debe
notar que cuando se divide un número de tipo int
con otro también de tipo int, el resultado es un
número de tipo int.

Cuando una variable de tipo int se vea en
"peligro " de almacenar un decimal este se redonde al
menor entero posible. Ejemplo: int A=13/5; En este caso
13/5 es 2,6. Este valor será redondeado a 2 por
que la variable A es de tipo int (entero).

 

La función
miembro getline()

Hasta ahora hemos visto la utilización del objeto
cin con su acompañante >> (operador de
extracción). Para entender lo que voy a tratar de explicar
voy a declar una variable así: char nombre[100]; Como ya saben, esta
variable de tipo char será capáz de almacenar 99
caracteres. Ahora voy a escribir otra instrucción:
cin>>nombre; En esta
instrucción se hace una parada y se empieza a extraer lo
que se pulse en el teclado.
Suponga que yo escriba: Carlos
Torres Torres. Ahora sí escribo esta otra
instrucción: cout<<nombre; ¿que creen que
mostrará en la pantalla? Lo que se mostrará
será tan solo: Carlos
y lo demás no se mostrará. Eso es por que el
operador >> incrustará todos los caracteres hasta
encontrar el primer espacio en blanco o el simbolo . Lo
demás no será guardado en la variable. Para poder
guardar espacios en blanco se usará la función
miembro getline().

La sintaxis es:
cin.getline(nombreDeLaVariable,tamañoDeLaVariable);
Ejemplo: cin.getline(nombre,100);

Programa 10

Elabore un programa que registre datos del usuario.
Estos datos son al gusto del mismo.

Codificación en Borland
C++

#include<iostream>

#include<conio>

double main()

{

char
nomApe[200],fechNac[60];

char sex[15];

float est,pes;

int eda;

cout<<"ntREGISTRO DE
DATOSn";

cout<<"t—————–n";

cout<<"Apellidos y
Nombres: ";cin.getline(nomApe,200);

cout<<"Fecha de
nacimiento: ";cin.getline(fechNac,60);

cout<<"Sexo:
";cin.getline(sex,15);

cout<<"Estatura (metros):
";cin>>est;

cout<<"Peso (kilogramos):
";cin>>pes;

cout<<"Edad:
";cin>>eda;

cout<<"nMostrando datos
del usuario actual…n";

cout<<"nApellidos y
Nombres: "<<nomApe<<endl;

cout<<"Fecha de
nacimiento: "<<fechNac<<endl;

cout<<"Sexo:
"<<sex<<endl;

cout<<"Estatura (metros):
"<<est<<endl;

cout<<"Peso (kilogramos):
"<<pes<<endl;

cout<<"Edad:
"<<eda<<endl;

cout<<"nPress any key to
finish"<<endl;

getch();return 12.63;

}

Explicación

En el código fuente de este programa se
ve el uso de la función miembro getline(). Se le
llama función miembro por que es una
función y además está en el interior
de una clase
[véase clase en el ANEXO]. Con el uso de
cin y su función miembro getline() se acabaron los
problemas de ingreso de datos a
través del teclado. Sin embargo se debe aclarar
que hay un pequeño problemite cuando se usa
getline después de cin. Para explicar este
problema voy a escribir 4 instrucciones seguidas.
Así:

int A; … Instrucción
1

char B[5]; …
Instrucción 2

cin>>A; …
Instrucción 3

cin.getline(B,5); …
Instrucción 4

cout<<"Chau!!!"; …
Instrucción 5

Cuando llegue a la instrucción 3 como ya
saben se hará un paro
para poder ingresar datos a través del teclado.
Cuando ya no se desee ingresar más datos se
presionará la tecla Enter para finalizar. Luego no
se hará un paro en la instrucción 4 como
debería suceder. Esto se debe a que getline capta
el último caracter almacenado en el buffer
[véase buffer en el ANEXO] de la memoria. Este
último caracter viene a ser más que nada el
null (nulo) o símbolo especial . Esto hace que
se finalice el parado en la instrucción dando como
resultado que se efectue la instrucción 5. Para
evitar este pequeño error se usará otra
función miembro llamada ignore(). La sintaxis que
usará será: cin.ignore(); Esto evitará
que getline capte el último caracter especial
haciendo que trabaje correctamente.

Manipulación y formateo de los
datos en la salida por pantalla

Para mejorar el aspecto de los datos en la salida se
usarán los manipuladores y formateadores. Estos
serán incrustados en el flujo abierto por cout.

Manipulador

Descripción

dec

Convierte número a base decimal.

hex

Convierte número a base
hexadecimal.

oct

Convierte némero a base octal.

endl

Inserta una nueva línea y limpia el
flujo.

ends

Inserta un cero nulo (/0) al final de la
cadena.

flush

Limpia el flujo de salida.

setbase(int n)

Convierte número a base n. Este n puede ser
0 (por defecto) o 10 para el decimal, 8 para el octal y 16
para el hexadecimal.

resetiosflags(long)

Limpia el formato especificado por el indicador
f.

setiosflags(long f)

Establece el formato determinado por el indicador
f.

setfill(int c)

Coloca c el campo establecido por
setw().

setprecision(int n)

Especifica la cantidad de decimales de un
real.

setw(int n)

Establece un ancho de campo.

Tabla de indicadores de
formato usados por setiosflags

Indicador

Acción

ios::left

Justifica la salida a la izquierda dentro del
campo especificado por setw().

ios::right

Justifica la salida a la derecha dentro del campo
especificado por setw().

ios::scientific

Muestra números de coma flotante en
notación científica.

ios::fixed

Muestra en formato de punto fijo los
números de coma flotante.

ios::dec

Formatea (modifica) los números a base
10

ios::hex

Formatea los números a base 16

ios::oct

Formatea los números a base 8

ios::uppercase

ios::showbase

ios::showpos

ios::showpoint

Programa 11

Desarrollar un programa que muestre el uso de los
manipuladores de Borland C++.

Codificación en Borland
C++

#include<iostream>

#include<conio>

#include<iomanip.h> //Para
usar manipuladores de datos

int main()

{

int Z=86400; //Variable solo para
muestra

float W=62.5126; //Variable solo
para muestra

cout<<"ntMANIPULACION Y
FORMATEO DE DATOSn";

cout<<"t——————————–n";

cout<<setiosflags(ios::left); /*Justifica
la salida por la izquierda

dentro del ancho de campo de
setw()*/

cout<<"n"<<setw(17)<<"Manipulador"<<"Descripcionn";

cout<<setw(18)<<"nsetw(int
n)";cout<<"Establece un campo de ancho
nn";

cout<<"n"<<setw(17)<<"dec"<<"Convierte
numero a base decimaln";

cout<<"Ejemplo: Z =
0x0"<<hex<<Z<<" en base
hexadecimal";

cout<<" a Z =
"<<dec<<Z<<" en base
decimaln";

cout<<"n"<<setw(17)<<"hex"<<"Convierte
numero a base hexadecimaln";

cout<<"Ejemplo: Z =
"<<Z<<" en base decimal";

cout<<" a Z =
0x0"<<hex<<Z<<" en base
hexadecimaln";

cout<<"n"<<setw(17)<<"oct"<<"Convierte
numero a base octaln";

cout<<"Ejemplo: Z =
"<<dec<<Z<<" en base decimal";

cout<<" a Z =
"<<oct<<Z<<" en base octaln";

cout<<"n"<<setw(17)<<"endl"<<"Inserta
una nueva linea y limpia el flujon";

cout<<"Presione una tecla
para ver sus efectos";

getch();cout<<endl;getch();

cout<<"n"<<setw(17)<<"ends"<<"Inserta
un cero nulo (\0) al final de la cadenan";

cout<<"Nota: este caracter
no es visiblen";

cout<<"Presione una tecla
para ver sus efectos";

getch();cout<<ends;getch();

cout<<"nn"<<setw(23)<<"flush"<<"Limpia
el flujo de salidan";

cout<<"Presione una tecla
para ver sus efectos";

getch();cout<<flush;getch();

cout<<"nn"<<setw(23)<<"setbase(int
n)"<<"Formatea numero a base nn";

cout<<"Ejemplo Z =
"<<Z<<" en base octal";

cout<<" a Z =
"<<setbase(10)<<Z<<" en base
decimaln";

cout<<"n"<<setw(23)<<"setfill(int
c)"<<"Coloca c en el campo de setw()n";

cout<<"Ejemplo:
"<<setfill(2)<<setw(10)<<"HOLA";

cout<<"nn"<<setw(23)<<"setprecision(int
n)"<<"Determina la precision de punto
flotanten";

cout<<"Ejemplo: INICIO W =
"<<W<<" LUEGO W =
"<<setprecision(5)<<W;

cout<<"nnPress any key to
finishn";

getch();return 1821;

}

Explicación

En este programa es necesario el uso de la
biblioteca iomanip pues en ella se
encuentran los prototipos de las 5 funciones;
setiosflags(), setw(), setbase(), setfill(), setprecision()
y resetiosflags(). Espero que con este programa sean
capaces de entender la importancia de dominar el uso de
estas herramientas. El efecto de dominar estas
herramientas se verán reflejadas visualmente en los
programas que desarrollen. El aspecto de sus programas
serán más profesional y el código
fuente más sofisticado. Sin embargo en este programa
no se ha mostrado el uso de los manipuladores setiosflags()
ni de resetiosflags(). Esto es porque hacer esto
haría el código fuente más extenso de
lo que es. Sin embargo de ahora en adelante los usaremos.
Ud. podrán ver su utilización en el
código fuente de nuestros próximos programas.
Hay algunos manipuladores un tanto especiales como por
ejemplo el ends, flush y setfill(). El manipulador ends
inserta como ya se dijo el símbolo null () al
final de la cadena que escribamos. Recuerde que toda cadena
debe (no es obligatorio) por razones de efectividad tener
al final el null. Antiguamente era necesario insertar
manualmente este símbolo. En los lenguajes modernos
como Borland C++ esto se hace automáticamente. El
caracter null no tiene representación gráfica
(no es visible). Ahora, qué pasa con el manipulador
flush? La verdad es que yo tampoco sé cual es su
utilización práctica. Cuando lo sepa les digo
para que sirve. El manipulador setfill(int n) inserta el
caracter de código
ASCII n [véase ASCII en
el ANEXO] en el campo establecido por setw(). Más
explicación creo que ya no es necesario puesto que
usted está experimentando con el código
fuente que se le está dando así que no hay
problema. Lamentablemente no puede dejar vacío esta
parte de la tabla. Es por eso que vamos a ser una
pequeño reflexión filosófica.
Seguramente usted estimado lector busca el tan ansiado
título de hacker
(en el mejor de los casos) que le hará sentirse bien
consigo mismo y sobre todo le dará confianza en todo
lo que haga. Seguramente es por eso que se esfuerzo mucho
en investigar y experimentar. Con eso puedo adivinar que
sus campos preferidos son la informática y la
electrónica. Así es no podemos
ser completos si ignoramos por completo la parte hardware.
Como muchos han dicho es más fácil aprender
experimentando que leyendo. En el caso del ser humano las
personas aprenden más con la práctica que con
teoría. Lamentablemente en el campo
de la informática solo vamos a poder experimentar
con códigos. En el campo de la electrónica se
experimenta con transistores. Qué pasa si vamos
acumulando conocimientos tanto informáticos como
electrónicos? La respuesta a eso es que está
naciendo un hombre
que puede resolverlo todo (es un decir) o almenos va a
tener un mundo de posibilidades más amplios de
visión. Ahora, muchos de ustedes dirán pero
aprendar tantas cosas es muy difícil. Eso es
absolutamente verdadero pero si siempre continuamos
investigando el exito
está asegurado. Recuerdo que usted tiene un
invencible aliado: La
Globalización. La globalización ha hecho posible el
poder conectarnos de forma indirecta con miles de personas
en el mundo. Le recomiendo no buscar respuestas a preguntas
simples. ¿Qué son preguntas simples? Las
preguntas simples son aquellas sin ninguna importancia. Por
ejemplo: encontrar la solución a una ecuación
de de grado 8. Estas preguntas son simples por que a todo
rato en el mundo se está estudiando. En cambio
sí usted va preguntándose por ahí como
aprovechar al máximo los conocimientos que posee?
entonces eso ya es otra cosa. Ud. es un hombre temible, que
sabe lo que está haciendo y sabe el camino que le
espera. Para terminar estimado lector quiero decirle que no
busque abundante conocimiento sino busque aplicarlos. Los
inteligentes buscan un deseo antes, los tontos buscan hacer
algo pero no saben que.

Bueno!. Estimados lectores, ha llegado la hora de
decirles que están ustedes capacitados para elaborar
programas. Ha llegado la hora de hacer un montón de
programas!!!

FULL
PRÁCTICA

Programa 12

Desarrolle un programa que halle la suma de los
N primeros números naturales.

Solución

Lo primero que debemos hacer es entender el problema.
Sí no entendemos el problema deberemos buscar a alguien
que sí los pueda entender. Sí después de
buscar no encontramos a alguien que los entienda pasamos al
siguiente problema. En un programa también es lo mismo. Lo
primero es entender qué es lo que se supone que
hará el programa? Sí ya se sabe lo que va a ser el
programa entonces ya todo está resuelto.

Para poder resolver este problema lo primero que hay que
hacer es reconocer los datos que tenemos. Sí observamos
con atención la parte "los N primeros
números naturales
"
encontramos a N. Quién es N? Este valor se supone
será ingresado por el usuario. Entonces N es una variable
de Entrada. Ahora qué hacemos luego de pedir el valor de
N? Exacto!, tendremos que encontrar un algoritmo que
halle la suma con el dato N.

Gráficamente lo que piden es esto: 1 + 2 + 3 +
… + N. A continuación nos ponemos pequeños
ejemplos. Qué pasa sí N es 3. Lo que nos piden
sería: 1 + 2 + 3 que sería igual a 6. Ahora,
qué pasa se N fuese 5. En este caso lo se nos pide
sería: 1 + 2 + 3 + 4 + 5. Todos sabemos que esta suma la
podemos hacer hasta contando con los dedos. Ahora qué pasa
sí N fuese 100? En este terrible caso nos estaría
pidiendo sumar: 1 + 2 + 3 + … + 100 que no lo podríamos
sumar (es un decir) ni con papel y lápiz y sí lo
hiciésemo demoraríamos tanto que
olvidaríamos hasta casarnos. Nosotros solo hemos tomado
solo 3 posibles valores de los
infinitos que podría haber tomado N. Entonces tendremos
que hallar una fórmula que permita representar la suma
para cualquier valor de N.

Para hallar la fórmula (algoritmo)
hacemos:

Creo que todos ya conocían la fórmula de
esta suma y Carl Friedrich Gauss; gran matemático quien
fue su descubridor a los 6 años de edad.

Codificación en Borland
C++

#include<iostream>

#include<conio>

void main(int N,int
S)

{

cout<<"ntSUMA DE LOS N
PRIMEROS NUMEROS NATURALESn";

cout<<"t—————————————-n";

cout<<"n1 + 2 + 3 + … +
Nn";

cout<<"nIngrese un valor
para N: ";cin>>N;

//ALGORITMO QUE HALLA LA
SUMA

S=N*(N+1)/2;

cout<<"La suma es:
"<<S<<endl;

cout<<"nPress any key to
finishn";

getch();

}

Diagrama Nassi / Scheiderman
(N/S)

 

 

 

 

 

 

Como ya observaron el uso de diagramas N/S se basa en el uso de cajas o
rectángulos para representar el algoritmo de un
programa.

Programa 13

En la empresa Denver
un trabajador cuenta con seguro
obligatorio y es libre hacer horas extras. Por el seguro al
obrero se le descuenta el 5% de su sueldo. El pago por hora extra
es 30% más que el de una hora normal. Además la
empresa ofrece
una bonificación igual al 30% del ingreso total del
trabajador.

Con todo esto se pide desarrollar un programa que
elabore la boleta de pago de un trabajador.

Codificación en Borland
C++

#include<conio> //Para usar
getch() y gotoxy()

#include<iostream>

#include<iomanip> //Para usar
setw()

void main()

{

char cod[60];

int horE,horN;

float
pagHorE,pagHorN,sueE,sueN,sueNet;

float bonifi,ingTotal,seguro;

gotoxy(35,2);cout<<"BOLETA DE
PAGO";

gotoxy(35,3);cout<<"————–";

gotoxy(3,6);cout<<"Codigo del
trabajador……..: ";cin.getline(cod,60);

gotoxy(3,8);cout<<"Horas normales
trabajadas….: ";cin>>horN;

gotoxy(3,9);cout<<"Pago x hora
(S/.)…………: ";cin>>pagHorN;

gotoxy(40,8);cout<<"Horas extras
trabajadas…: ";cin>>horE;

gotoxy(1,11);cout<<"———————————————————————–";

sueN=pagHorN*horN;

gotoxy(3,13);cout<<"Sueldo
Normal…: "<<sueN;

pagHorE=pagHorN+(3*pagHorN)/10;

sueE=pagHorE*horE;

gotoxy(3,14);cout<<"Sueldo
Extra….: "<<sueE;

ingTotal=sueE+sueN;

bonifi=(3*ingTotal)/10;

gotoxy(3,15);cout<<"Bonificacion….:
"<<bonifi;

seguro=sueN/20;

gotoxy(40,13);cout<<"Costo del
seguro…: "<<seguro;

gotoxy(1,17);cout<<"———————————————————————–";

sueNet=ingTotal+bonifi-seguro;

gotoxy(24,19);cout<<"SUELDO NETO:
"<<sueNet;

gotoxy(19,20);cout<<"—————————";

gotoxy(3,22);cout<<"Press any key
to finish";

getch();

return; //Main no devuelve ningún
valor (void)

}

¿Qué significa inicializar una
variable?

Inicializar una variables es la posibilidad de darle un
valor a la misma a la hora de declararlo.

Ejemplo:

int A=8,B=0,C=-60;

char
SAL[]="Hola",OPC='S',pal[10]={'A','M','O','R'};

Programa 14

A una reunión asisten N personas. Desarrolle un
programa que muestre la cantidad de apretones de manos que
habrá.

Solución

Este problemita se resuelve muy fácil. Lo primero
como ya dijimos es hallar los datos que nos dan. En este caso
será el número de personas que asistirán a
la reunión. Dicha cantidad la representaremos con la
variable N. Ahora sí nos ponemos a pensar y usamos la
forma inductiva para resolver el problema… sería bueno
plantearnos pequeños casos:

Caso 1: Asisten N=1 personas a la reunión. En
este caso no hay saludo puesto que para que haya saludo debe
haber de por lo menos 2 personas.

N=1, #saludo=0, #apretones=0

Caso 2: Asisten N=2 personas a la reunión. En
este caso hay 2 saludos y un apretón de mano.

N=2, #saludos=2, #apretones=1

Caso 3: Asisten N=3 personas a la reunión. En
este caso hay 6 saludos y 3 apretones de mano.

N=3, #saludos=6, #apretones=3

Caso 4: Asisten N=4 personas a la reunión. En
este caso hay 12 saludos y 6 apretones de manos.

N=4, #saludos=12, #apretones=6

Los resultados anteriores lo hemos determinado por
experiencia pero no vamos a estar experimentando para más
casos puesto que sería muy agotador e
innecesario.

Analizando otra vez tenemos:

N = 1
entonces #saludos = 0 = 1 * 0 y #apretones = 0 =
#saludos/2

N = 2
entonces #saludos = 2 = 2 * 1 y #apretones = 1 =
#saludos/2

N = 3
entonces #saludos = 6 = 3 * 2 y #apretones = 3 =
#saludos/2

N = 4
entonces #saludos = 12 = 4 * 3 y #apretones = 6 =
#saludos/2

N = m entonces #saludos =
m *
( m
1 ) y #apretones = m * (
m – 1 ) / 2

Otra forma de resolver sería pensando así:
Como en la reunión asisten N personas es obvio que cada
persona
saludará a las restantes personas. Entonces el
número de saludos (incluidos los repetidos) será
N*(N-1) y como en cada saludo intervienen 2 personas eso quiero
decir que sí el primero saludo al segundo también
se está incluyendo el saludo del segundo al primero.
#saludos=2#apretones. Despejando tenemos la solución:
#apretones=#saludos/2=N*(N-1)/2.

Codificación en Borland
C++

#include<conio>

#include<iostream>

int main()

{

int N,apreTot;

cout<<"ntCUANTOS
APRETONES DE MANOS HAY?n";

cout<<"t——————————-n";

cout<<"Numero de personas:
";cin>>N;

//ALGORITMO PRINCIPAL

apreTot=N*(N-1)/2;

cout<<"Hay
"<<apreTot<<" apretones de
manosn";

cout<<"nPress any key to
finishn";

getch();return-45;

}

Diagrama N/S

Programa 15

Se tiene un cuadrado de lado X cuyos puntos
medios se han
unido para formar otro cuadrado. Ahora, los puntos medios se han
vuelto a unir para volver a formar otro cuadrado. La acto de unir
los puntos medios de los nuevos cuadrados es contínuo.
Desarrolle un programa que calcule la suma de las áreas de
todos los cuadrados así formados.

Solución

Graficando…

St: Suma de las áreas totales

St = S1+
S2+S3+…+Sn

S1: Area del 1er cuadrado

S2: Area del 2do cuadrado

S3: Area del 3er cuadrado

Sn: Area del cuadrado

S1=X*X, ahora, para calcular el S2
se necesita conocer la medida de su lado.

Para conocer su lado hay observar … El lado de ese
cuadrado viene a ser la hipotenusa del triángulo rojo cuyo
catetos miden X/2 y X/2. Ahora falta calcular la hipotenusa. La
hipotenusa lo calcularemos aplicando el teorema de
Pitágoras. Que la medida de la hipotenusa sea H. Entonces
tenemos: H2 = (X/2)2 + (X/2)2 =
X2/4 + X2/4 = X2/2. Despejando
… H=X/√2. Ahora toca calcular el S3. Esto se
logrará conociendo su lado. En este caso como en la
anterior el lado viene a coincidir con la hipotenusa del
tríangulo amarillo. Llamemos L a la hipotenusa.
L2 = (H/2)2 + (H/2)2 =
H2/2 = X2/4. Sí hallamos el
área del cuadrado siguiente comprobaríamos que el
resultado sería X2/8.

Veamos nuevamente los resultados obtenidos:

S1=X2

S2=X2/2

S3=X2/4

S4=X2/8

St = X2 + X2/2 +
X2/4 + X2/8 + …

St = X2 + 1/2 (
X2 + X2/2 +
X2/4 + … )

St = X2 + 1/2 ( St
)

St – St/2 = X2 Por
tanto St =
2*X2

Codificación en Borland
C++

#include<iostream>

#include<conio>

int main()

{

int X,S;

cout<<"ntPROGRAMA
15n";

cout<<"t———–n";

cout<<"Ingrese el lado del
cuadrado: ";cin>>X;

S=2*X*X;

cout<<"La suma de las areas
de todo los cuadrados es:
"<<S<<endl;

cout<<"nPresione una tecla
para finalizarn";getch();

}

Diagrama N/S

 

 

 

 

 

 

 

 

 

 

 

 

Constantes

Todo el mundo sabe lo que es una constante o almenos
sabe interpretarlo ¿verdad?. Una constante es algo que no
cambia nunca.

Para declarar una constante en Borland C++ se sigue la
sintaxis sgte: const
tipoDeDato
Nombre;

Ejemplo: const int
pi=3.1415;

Programa 16

Desarrolle un programa que calcule el área de la
superfice definido por una circunferencia de radio
conocido.

Solución

Todos nosotros sabemos por geometría básica que el
círculo es el producto de la constante pi=3,1415
multiplicado por el radio al cuadrado.

Definiendo Entrada/Salida (E/S) de
datos:

Entrada: El radio de la circunferencia
(radio)

Salida: El círculo (circulo)

Codificación en Borland
C++

#include<conio>

#include<iostream>

void main() //FUNCION
PRINCIPAL

{

//Declaración de
variables y constantes

int radio;

float circulo;

const float
pi=3.1415;

cout<<"ntCALCULA EL
CIRCULOn";//Escribe o muestra (imprime)
mensaje

cout<<"t——————n";

//Ingreso de datos

cout<<"nIngrese el radio:
";cin>>radio;

//Calcula el
círculo

circulo=pi*radio*radio;

//Escribe resultado

cout<<"nEl circulo es:
"<<circulo<<endl;

cout<<"nPress any key to
finsh";

getch();//Pausa para ver los
resultados

}

Pseudocódigo

Inicio

ingresar radio

calcular
circulo=3.1415*radio*radio

mostrar circulo

Fin

Aquí vemos la utilización del
pseudocódigo para representar a nuestro programa.
Este pseudocódigo básicamente muestra la
estructura (esqueleto) de nuestro programa.

Observaciones:

  • Cualquier pseudocódigo bien
    diseñado puede fácilmente codificarse en
    cualquier lenguaje
    de programación.
  • Hay tantos de programas como problemas
    existen en el mundo.
  • Como hay problemas que no se pueden resolver
    eso quiere decir que no existen algoritmos capacez de
    resolverlos!!!

Programa 17

Desarrolle un programa que calcule la suma de los N
primeros números pares.

Solución

Definiendo E/S de datos:

Entrada: número N

Salida: suma de los números (suma)

suma = 2 + 4 + 6 +…+ N

suma = 2 ( 1 + 2 + 3 +…+ N/2 ) Recuerde… N es
par

suma = 2 N/2 ( N/2 + 1 )/2 = N ( N/2 + 1 )/2

Codificación en Borland
C++

#include<conio>

#include<iostream>

void main()

{

//Declarando
variables

int N,suma;

cout<<"ntSUMA DE LOS N
PRIMEROS PARESn";

cout<<"t—————————-n";

cout<<"n2 + 4 + 6 +…+
Nn";

//Ingreso datos

cout<<"nIngrese N:
";cin>>N;

//Calcula suma

suma=N*(N/2+1)/2;

//Escribe resultados

cout<<"nLa suma es:
"<<suma<<endl;

//Pausa

cout<<"nPress any key to
finishn";getch();

}

Pseudocódigo

Inicio

Lee N

Calcular
suma=N*(N/2+1)/2

Imprimir suma

Fin

Diagrama N/S

 

Programa 18

Lea dos números. El primero vendrá a ser
la unión del dia y mes de su nacimiento. Ejemplo sí
su fecha de nacimiento es: 14 de septiembre o 14 del 09 la
unión sería: 1709. El segundo número
será la edad que usted tiene. Luego realice los
cálculos siguientes:

  • Multiplique al primer número 2
  • Súmele 5 al nuevo resultado
  • Multiplíquelo por 50 al resultado
    anterior
  • Al resultado anterior réstele 250

Una vez hecho esto el resultado tendrá un valor
igual a la union del primer número con el segundo. Este
juego es
conocido en los círculos matemáticos como "Juego de
sociedades".

Solución

Definiendo E/S de datos:

Entrada: número n1 y n2

Salida: calcular
resultado=(((n1*2)+5)*50+n2)-250

Codificación en Borland
C++

#include<conio>

#include<iostream>

void main()

{

int n1,n2,resultado;

cout<<"ntJUEGO DE SOCIEDADn";

cout<<"t—————–n";

//Ingreso de datos

cout<<"Ingrese numero:
";cin>>n1;

cout<<"Ingrese otro numero:
";cin>>n2;

//Calcula resultado

resultado=(((n1*2)+5)*50+n2)-250;

//Imprime resultado

cout<<"El resultado es:
"<<resultado;

getch();//Pause

}

Diagramas de flujo de dato

 

 

 

 

 

 

 

Aunque no he explicado muy bien como usar los
diagramas de
flujo, almenos pueden notar como se usan los diagramas.
Cada diagrama
tiene un significado especial.

Como usar los diagramas
de flujo de datos?

A mí en lo particular me gusta realizar mis
programas usando diagramas de flujo. Con ellos puede darle un
aspecto más agradable a mi algoritmo a parte de que la
lógica
del mismo es facilmente apreciable. Sí quieren saber de
forma más clara lo que son los diagramas de flujo
allá les va esto: Los diagramas de flujo sirven para
representar gráficamente a cualquier algoritmo. Los
diagramas que se usan han sido normalizados por el Instituto
Norteamericano de Normalización (ANSI). Utilizando
adecuadamente los diagramas o símbolos podemos graficar la lógica
de nuestro programa. Cada símbolo tiene una acción
bien definida.

Tabla de digramas y sus acciones

Diagrama o símbolo

Nombre: Acción

Carácter de parada o Terminal: Representa
al Inicio o Fin un programa. Representa además una
parada o interrupción.

 

Datos o Entrada/Salida (E/S): Sirve para leer o
imprimir datos.

 

Proceso: Este símbolo se usará
cuando queramos procesar cualquier dato.

 

Conector: Sirve para enlazar dos partes
cualesquiera de un diagrama
de flujo a través de un conector en la salida
y otro en la salida.

Conector off-page o Conector fuera de
página: Se utiliza cuando se quiera conectar dos
flujos lógicos.

 

Decisión: Esto se utilizará cuando
el programa tenga dos posibilidades da salida que
dependerán del valor de una condición
lógica.

Estos no son los únicos símbolos que
existen, hay muchos más!!!. Sin embargo estos son los que
usaremos por ahora.

Conversiones de tipos de dato

Cuando declaramos dos variable, por ejemplo:
int A; y float B;
sabemos muy bien lo que estamos haciendo ¿verdad?.
Sí eso es cierto entonces no podemos tratar de guardar el
valor de 3.5 (real) en la variable A de tipo int pues ella
almacenará solo enteros. Sin embargo podemos cometer esta
imprudencia en forma incosciente. Sí esto sucediese los
resultados no serían de nuestro agrado. Cuando estemos
obligados a esto usaremos el método
cast (moldear). Ejemplo:

int A; …instrucción 1

float B=12.5; …instrucción 2

A=int(B);
ó A=int(B); …instrucción
3

En la instrucción 1 declaramos la variable A de
tipo int.

En la instrucción 2 declaramos e inicializamos la
variable B de tipo float con el valor de 12.5

En la instrucción 3 almacenamos en A el valor de
B (tipo float) que es obligado a transformarse en un entero.
Recuerde que los valores
con decimales serán redondeados al menor entero. En
nuestro caso será redondeado a 12. Sin embargo la
conversión es automática cuando se trata de
variables de tipo número pero no en el caso del tipo char.
Como es esto? En la instrucción 3 pudimos poner:
A=B; En este el compilador
reconoce primero a la variable A. Como A es de tipo int entonce
el valor de B será transformado en un valor de tipo
int.

Programa 19

Desarrolle un programa cualquiera.

Códificación en Borland
C++

#include<conio>

#include<iostream>

void main()

{

//Declaración de
variables

int A;

float B=12.5; //Se inicializa B con el
valor 12.5

//Conversión de tipos
(método cast)

A=(int)B;

cout<<A;

getch(); //Pause

}

Programa 20

En la facultad de Informática e Sistemas de la
universidad UNAS
(Tingo María-Perú) se aprueba el curso con la nota
mínima de 11. Esta nota viene a ser el promedio final
representado por PF.

PF=( 0.3*NT+0.8*NP+0.9*PROY+9 )/3, donde NT es Nota
Teórica, NP es Nota Práctica y PROY es Proyecto.
Desarrolle un programa que ayuda a calcular el promedio final de
los alumnos preocupados.

Codificación en Borland C++

#include<conio>

#include<iostream>

void main()

{

//Declaración de
variables

int NP,NT,PROY;

float PF;

cout<<"ntHALLE SU PROMEDIO
FINALn";

cout<<"t———————–n";

//Ingreso de datos

cout<<"nIngrese Nota teorica:
";cin>>NT;

cout<<"Ingrese Nota practica:
";cin>>NP;

cout<<"Ingrese Nota de su
proyecto: ";cin>>PROY;

//Proceso de
datos

PF=(0.3*NT+0.8*NP+0.9*PROY+9)/3;

//Salida de la
información

cout<<"nSu promedio final es:
"<<PF<<endl;

cout<<"nPresione una tecla para
finalizarn";getch();

}

Bueno… estimados lectores hasta aquí termina la
parte introductoria a Borlad C++. Espero que hayan podido
seguirme en el avance del "curso". Todo los programas que hasta
ahora hemos desarrollado siguen un proceso secuencial
[véase Programación Estructurada (PE) en el ANEXO].
Osea que las instrucciones que contiene el código son
ejecutados uno a continuación de otro. En otras palabras
hemos abarcado todo el capítulo de procesos
secuenciales y nosotros ni cuenta nos hemos dado!!!.

En esta última parte usted encontrará 10
problemas propuestos que ud. deberá solucionar y luego
implementarlos en un programa. Deberá ser muy justo ya que
aunque estos problemas son propuestos han sido resueltos para que
el lector pueda comparar sus resultados obtenidos.

 

JU MO PO

rey_andav_sy[arroba]hotmail.com

Partes: ,
3

Partes: 1, 2, 3
 Página anterior Volver al principio del trabajoPágina siguiente 

Nota al lector: es posible que esta página no contenga todos los componentes del trabajo original (pies de página, avanzadas formulas matemáticas, esquemas o tablas complejas, etc.). Recuerde que para ver el trabajo en su versión original completa, puede descargarlo desde el menú superior.

Todos los documentos disponibles en este sitio expresan los puntos de vista de sus respectivos autores y no de Monografias.com. El objetivo de Monografias.com es poner el conocimiento a disposición de toda su comunidad. Queda bajo la responsabilidad de cada lector el eventual uso que se le de a esta información. Asimismo, es obligatoria la cita del autor del contenido y de Monografias.com como fuentes de información.

Categorias
Newsletter