Borland C
Borland C
Borland C
0
JU MO PO [email protected]
Consola:
IDE: Integrated Development Environment (Entorno
Integrado de Desarrollo). Es un programa que
contiene un conjunto de herramientas para un
programador.
GUI: Acrónimo de Graphical User Interface (Interfáz
Gráfica de Usuario). Es el aspecto visual que
presentan los programas.
Algoritmo
Aprender este concepto a nivel informático es fundamental para cualquier estudiante ya que nuestra
principal herramienta (la PC) trabaja en base a ellas.
Estructura de un programa
Todo programa en Borland C++ deberá especificar las bibliotecas que se usarán en el
programa. Para eso se seguirá la sintaxis: #include<NombreDeLaBiblioteca>
Todo programa en Borland C++ tiene una función principal llamada main. Para eso se seguirá
la siguiente estructura: tipoDeDato main(tipoDeDato){ }
Programa 1
Desarrollar un programa que muestre y espere hasta terminar de leer en una consola la frase: “Problemas,
luego los soluciono!”.
Para crear el programa ejecutable primero deberemos crear un archivo en donde almacenar el código
fuente. Felizmente Borland C++ cuenta con su propio editor. Para utilizarlo hacemos click en el menú File. Al
hacer esto aparecerá un submenú. Nosotros seleccionaremos con el mouse el submenú New. Luego
aparecerá otro submenú. Nosotros seleccionaremos con el mouse el submenú Text Edit y haremos click en
él, tal como se muestra en Imagen 3. Los pasos descritos anteriormente se ven en la imagen de abajo.
Imagen 4: Se muestra una acción (hacer click en Text Edit) con el mouse
Una vez ejecutados los pasos (algoritmo) de arriba se creará un archivo con un nombre (NONAME00)
temporal. En este archivo nosotros almacenaremos nuestro código fuente. En Imagen 5 observamos el
código fuente ya pegado en el archivo recientemente creado con nuestros pasos anteriores.
Imagen 5: Se muestra el nombre de los principales elementos de la IDE
ASCII (léase “as-ki”): American Standard Code for Depurar: Corregir un error.
Information Interchange (Código Americano para el Icono: Imágen de dimensiones pequeñas que
intercambio de información). representa a un programa u objeto cualquiera.
ANSI: American National Standards Institute IDE: Integrated Development Environment (Entorno
(Instituto Nacional Estadounidense de Estándares). Integrado de Desarrollo).
C: Es un lenguaje de Programación muy famoso en Versión: Es un indicador de la evolución
el mundo. (actualización) de un programa. Este generalmente
se representa por un numero que acompaña al
nombre de un programa.
Ahora sería bueno guardar el archivo fuente. Para hacer esto hacemos click en el menú File. Luego
sombreamos con el mouse la opción Save y hacemos click en él. Al hacer esto nos aparecerá la ventana de
guardado. Nosotros escribiremos Programa 1 y presionaremos la tecla Enter. También pudimos presionar la
combinación de teclas Ctrl + K + S para hacer que apareciese la ventana de guardado y escribir
directamente el nombre del archivo. En Imagen 6 se observa el cambio reflejado en el nombre del archivo
fuente.
Imagen 6
Ahora compilaremos el código fuente. Para hacer esto presionamos la tecla combinación de teclas ALT +
F9. Sí el compilador no encontró ningún problema a la hora de compilar el código fuente entonces se creará
el programa ejecutable. Este programa tiene una extensión EXE. Para ejecutar el programa solo
necesitamos ubicarlo y hacer click en él. Al proceso de buscarlo y luego ejecutarlo se llama enlazado. Sin
embargo estos tres procesos lo podríamos haber hecho presionando el botón Run o también presionando la
combinación de teclas: Ctrl + F9. En Imagen 7 se observa el programa ejecutable
En Imagen 7 se ve el programa ejecutable. Podemos apreciar que esta aplicación tiene el nombre de
Programa 1 y una extensión EXE.
Ahora, si nos dijeran que la base mide 8 y la altura 3 nosotros podríamos hallar el área de dicho triángulo
casi instantaneamente. En este caso el área del triángulo sería: S = 8 x 3 / 2 = 12
Como vemos para que nosotros podamos resolver un determinado problema necesitaremos saber o en todo
caso encontrar una solución. Si nos pusiéramos a pensar un poquito nos daríamos cuenta que a pesar de
saber calcular el área de un triángulo sería algo tonto que nos pidiesen calcular el área de un triángulo tal si
no nos dijeran cuál es la base y la altura. De este notamos que para resolver un problema no sólo es
necesario conocer la solución del problema sino también los datos que vamos a necesitar. En el ejemplo del
triángulo la forma de calcular el área, osea Base x Altura /2 vendría ser el algoritmo solucionador y los datos
que necesitaría dicho algoritmo sería la Base y la Altura.
Para resolver un problema con una computadora también haremos lo mismo. Primero buscaríamos una
solución al problema. Luego notaríamos los datos que se van a a necesitar para dicha solución. Una vez
hecho esto la computadora realizará los cálculos necesarios para finalmente arrojar por medio de una salida
los datos ya procesados (información).
Gráficamente sería así:
Hay que aclarar que cuando hablamos de “datos” nos referimos a un conjunto de conocimientos con escaso
valor o sin valor alguno. Por ejemplo un dato podría ser el radio de una circunferencia.
Cuando hablamos de “información” estamos hablando de un conocimiento que podría ser utilizando
inmediatamente o después de un tiempo para beneficio nuestro o de los demás. Por ejemplo si supiéramos
la cura del cáncer muchos se beneficiarían tanto positivamente (no moriríamos de cáncer) como
negativamente (seguramente esa cura sería guardada recelosamente y sólo los ricos tendrían acceso a
ella).
Obligaciones
En el ANEXO de este manual revisar las siguientes palabras clave:
1. Biblioteca
2. C
3. C++
4. Clase
5. Código
6. Código fuente
7. Código objeto
8. Consola
9. Compilador
10. Compilar
11. Dato
12. Derivación
13. Dirección
14. Dirección de memoria
15. Función
16. GUI
17. IDE
18. Información
19. Informática
20. Intérprete
21. Lenguaje
22. Leng. de programación
23. Linker
24. Objeto
25. Preprocesador
26. Procesador
27. Programación
28. Programar
29. Sintaxis
30. Sistemas operativos
31. Versión
Comentarios y documentación en Borland C++
Programa 2
Desarrollar un programa que muestre un mensaje en pantalla y espere hasta terminar de leerlo. El mensaje
es del gusto del usuario.
Para tener el programa ejecutable tenemos que compilar. Para esto presionamos la combinación de teclas:
ALT + F9 o sino hacemos click en el menú Project y hacemos click en la pestaña Compile. De las dos
maneras no sale una ventana como la de abajo:
Imagen 8
En primera instancia nos muestra el estado de la compilación.
“Status” y “Success” significan “Estado” y “Exitoso” respectivamente. Lo que esto quiere decir es que el
compilador no enconcontró ningun tipo de error en el archivo fuente.
En segunda instancia nos muestra el tiempo que demoró el compilador en interpretar, verificar la sintaxis,
generar el código objeto y por último generar el programa ejecutable (exe).
Como podemos darnos cuenta el tiempo que tardó (Elapsed Time) el procesador en compilar el código
fuente es muy pequeño, para ser exactos tardó 20 milésimas (20/1000) de segundos. Este tiempo puede ser
diferente para ustedes y depende de la velocidad del procesador que tengamos en nuestra PC.
Y por último nos muestra las líneas totales del código fuente, los avisos y él número de errores encontrados
en el archivo fuente.
Esta ventana será mostrada cada vez que compilemos nuestro código fuente.
El programa compilado se encuentra en un determinado directorio o carpeta del disco duro de nuestro
ordenador. Pero si te dá pereza buscarlo puedes presionar la combinación de teclas Ctrl + F9 que dará la
orden de compilar y luego ejecutar la aplicación recién creada por compilador. Abajo se muestra la imagen
del programa que hemos creado.
Imagen 9
En el proceso de compilación como ya sabemos se verifica más que nada la sintaxis del código fuente. Sí el
compilador no encuentrase error alguno entonces se genera el archivo objeto que es quien almacena las
instrucciones generadas al compilar el código fuente. El código objeto será utilizado para general el
programa ejecutable. Este programa ejecutable es autónomo pues tiene todo lo necesario para poder
ejecutarse y cargarse en la memoria.
Sentencias o instrucciones
En Borland C++ las sentencias o instrucciones se caracterizan por que siempre terminan con el símbolo ;
Una instrucción o sentencia es una orden o actividad que el procesador deberá realizar. Esta instrucción se
cargará en la memoria.
Qué es un bit?
El bit es la unidad básica de información más pequeña que puede manipular una computadora. 1 bit = 0 ó 1
bit = 1. Físicamente está representado por pequeños pulsos eléctricos de un determinado voltaje. Algunos
dicen equivocadamente que la computadora entiende solo ceros y unos. Eso es una mentira pues la
computadora tampoco sabe que es un 0 o un 1. Lo que sí sabe es la interpretación que le va a dar a esos
ceros y unos.
Declaración de una variable
Declarar una variable es difinirla y especificar su naturaleza (tipo de dato). Por ejemplo para declarar una
variable se seguirán dos pasos:
Primero definimos el nombre. El nombre de nuestra variable será: num
Segundo la naturaleza de la variable. La variable almacenará números enteros.
En Borland C++ para declarar una variable se seguirá la siguiente sintaxis: tipoDeDato
NombreDeLaVariable; Ejemplo: int num;
Variables de tipo char
No es por asustar pero seguramente es la variable más problemática de Borland C++ (ya lo verán ustedes
mismos). Al ser una varianble de tipo char le estamos deciendo al compilador que en dicha variable se
almacenarán caracteres. Por ejemplo puede ser la letra A, B, M, h ó puede ser también el símbolo 1, 5, etc.
La ventaja de trabajar con variables de tipo char es que se le puede asignar a la variable un tamaño que
indique cuantós caracteres ha de almacenar.
La sintaxis ha seguir será: char nombre[tamañoDeLaVariable]; Ejemplo: char nombre1[100]; También se
puede declarar así: char nombre; Esto es lo mismo a escribir: char nombre[2]; A las varianbles de tipo char
se les acostumbra llamar cadenas o arrays. Veamos a continuación la representación gráfica de una
cadena.
h o l l \0
Todas las cadenas deberán llevar al final el símbolo '\0' llamado nulo.
Antes de continuar con el aprendizaje vamos a tener un pequeño descanso. Ya saben que ustedes están
aprendiendo a utilizar el lenguaje Borland C++ versión 5. Ya también saben que existen el lenguaje C y C++.
C++ es un lenguaje derivado de C al igual que Borland C++ lo es de C++. El lenguaje de programación C es
de tal sencillez que fue reconocido por ANSI. Que C++ sea derivado de C significa que el primero tiene
muchas de las características del segundo. C++ debe ser considerado como un superconjunto de C. Esto
es, casi cualquier código fuente podrá compilarse sin ningún problema en C++. A veces lo contrario no se
cumple. Ahora, como sabemos Borland C++ es derivado de C++. Esto quiero decir que Borland C++
mantiene la mayoría de las características de C++. Las consecuencias de esto es que podemos compilar sin
ningún problema el código fuente elaborado en C++ en Borland C++. Lo contrario a veces no se cumple.
Cin Cout
El objeto cin se encarga de abrir un flujo de datos Este objeto también abre un flujo de datos que
que conecta el teclado con nuestro programa. Para conecta el monitor con nuestro programa. A este
extraer datos de este flujo hacemos uso del símbolo flujo se puede insertar datos mediante el operador
>> llamado operador de extracción. Al extraer es << llamado operador de inserción.
obligatorio especificar la variable en donde se ha de La sintaxis es: cout<<”Mensaje que se desea
guardar los datos extraidos. mostrar por la pantalla”;
La sintaxis es: cin>>variable;
Programa 3
Desarrollar un programa que calcule lo siguiente:
La suma de dos números enteros.
El producto de dos números reales.
Programa 4
Desarrollar un programa que registre los datos de una persona.
Estos datos serán: Nombre, edad y peso.
Errores Avisos
Borland C++ no generará el programa ejecutable Los avisos no son tan graves como para no generar
(aplicación) sí encuentra errores el código fuente. Y la aplicación. Sin embargo es bueno prestarle
sí lo crease es de su supones que dicha aplicación atención a los mismos.
es inservible. Hay muchos tipos de errores que
podremos cometer al desarrollar nuestro programa.
Error de compilación, este error se produce por lo común cuando se cometen errores en la sintaxis.
Error de ejecución, estos errores se producen por las instrucciones que la computadora puede comprender
pero no ejecutar. Ejemplo: divisiones por cero, raíz par de un número negativo, etc.
Error de lógica, estos errores son cometidos en su mayoría por programadores indisciplinados. Estos
errores son los más dífiles de detectar. Estos errores se detectan en los resultados de exploración del
programa o sea que los resultados que se obtienen no concuerdan con la práctica. Por ejemplo: si sumamos
3 y 6 el resultado es 9 pero el programa dice que es 27. Entonces el programa muestra un resultado
incorrecto.
Nota: Hay más tipos de errores que aquí no se muestran y que usted ya los verá.
Depuración o corrección de los errores
Borland C++ nos provee de varias herramientas de corrección (debug) que nos permitarán seguirle la pista
a los errores que podamos cometer. Sin embargo no debemos esperanzarnos mucho en ellos pues no nos
dan el lugar exacto del error. En lo único que confiaremos será en nuestra capacidad de observación y
nuestra experiencia. Debe saber que la depuración de un programa es un trabajo muy serio.
Programa 5
Desarrollar un programa al gusto del usuario.
Código fuente con errores Código fuente sin errores
#include<iostream.h> #include<iostream.h>
#include<conio.h> #include<conio.h>
int main(int a) int main()
{ {
cout<<"Borland C++ tiene muchas cout<<"Borland C++ tiene muchas
libertades"; libertades";
cout<<endl<<"pero es muy estricto en cuestiones"; cout<<endl<<" pero es muy estricto en
cout<<" de sintaxis." //A esta instrucción cuestiones";
le falta el ; cout<<" de sintaxis.";
getch; //A getch le falta () por ser una función getch();
return 10; return 10;
} }
Al tratar de compilar el código fuente de la izquierda no se podrá crear el programa ejecutable ya que este
código contiene errores de sintaxis. La ventana de compilación aparece:
Imagen 10
En la primera parte de la ventana apararece: Status: Failure, lo que quiere decir que ha fallado al tratar de
crear la aplicación. En la última parte se lee: Errors: 1, lo que quiere decir que hay un error en el código.
Cuando se compila y se encuentra errores en el código hace su aparición explícita una ventana llamada
Message como la imagen de abajo:
Imagen 11
En la imagen el signo de admiración en rojo (!) muestra el error. En este caso el nombre del error dice que
es: Statement missing; = Declaración desaparecida ; Esto quiere decir que en algún lugar de nuestro código
no hay el ; que simboliza la finalización de una instrucción. Aunque en la ventana Message solo se muestra
un error usted sabe que hay un error más. Además de los errores que pueda mostrar esta ventana también
muestra los warnings o avisos. En nuestro caso se mesra el aviso: Parameter 'a' is never used = El
parámetro 'a' no es usado en ningún momento. Esto nos quiere decir que el haber declarado la variable 'a'
ha sido inútil. Para solucionar esto, simplemente se elimina la declaración de dicha variable. Una vez
corregido los errores y avisos esta ventana se muestra así:
Imagen 12
Programa 6
Desarrollar un programa de intercambio de valores. Ejemplo: sí a=50 y b=100 entonces al intercambiar
valores a=100 y b=50.
Secuencias de escape
Las secuencias de escape son órdenes que serán interpretados por la pantalla, archivo o una impresora de
alguna manera. Esas secuencias no vienen más que hacer símbolos. En Borland C++ todas las secuencias
empieza con la barra invertida \.
Programa 7
Desarrollar un programa que muestre el uso de las secuencias de escape.
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+6x7 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.
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.
Programa 10
Elabore un programa que registre datos del usuario. Estos datos son al gusto del mismo.
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.
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++ Explicación
#include<iostream> En este programa es necesario el uso de la
#include<conio> biblioteca iomanip pues en ella se encuentran los
#include<iomanip.h> //Para usar manipuladores de prototipos de las 5 funciones; setiosflags(), setw(),
datos setbase(), setfill(), setprecision() y resetiosflags().
int main() Espero que con este programa sean capaces de
{ entender la importancia de dominar el uso de estas
int Z=86400; //Variable solo para herramientas. El efecto de dominar estas
muestra herramientas se verán reflejadas visualmente en los
float W=62.5126; //Variable solo para muestra programas que desarrollen. El aspecto de sus
programas serán más profesional y el código fuente
cout<<"\n\tMANIPULACION Y más sofisticado. Sin embargo en este programa no
FORMATEO DE DATOS\n"; se ha mostrado el uso de los manipuladores
cout<<"\t--------------------------------\n"; setiosflags() ni de resetiosflags(). Esto es porque
hacer esto haría el código fuente más extenso de lo
cout<<setiosflags(ios::left); /*Justifica la salida por que es. Sin embargo de ahora en adelante los
la izquierda 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
dentro del ancho de campo por ejemplo el ends, flush y setfill(). El manipulador
de setw()*/ ends inserta como ya se dijo el símbolo null (\0) al
final de la cadena que escribamos. Recuerde que
toda cadena debe (no es obligatorio) por razones de
cout<<"\n"<<setw(17)<<"Manipulador"<<"Descripcio efectividad tener al final el null. Antiguamente era
n\n"; necesario insertar manualmente este símbolo. En
cout<<setw(18)<<"\nsetw(int n)";cout<<"Establece los lenguajes modernos como Borland C++ esto se
un campo de ancho n\n"; hace automáticamente. El caracter null no tiene
representación gráfica (no es visible). Ahora, qué
cout<<"\n"<<setw(17)<<"dec"<<"Convierte numero pasa con el manipulador flush? La verdad es que yo
a base decimal\n"; tampoco sé cual es su utilización práctica. Cuando lo
cout<<"Ejemplo: Z = 0x0"<<hex<<Z<<" sepa les digo para que sirve. El manipulador
en base hexadecimal"; setfill(int n) inserta el caracter de código ASCII n
cout<<" a Z = "<<dec<<Z<<" en base [véase ASCII en el ANEXO] en el campo establecido
decimal\n"; por setw(). Más explicación creo que ya no es
necesario puesto que usted está experimentando
cout<<"\n"<<setw(17)<<"hex"<<"Convierte numero con el código fuente que se le está dando así que no
a base hexadecimal\n"; hay problema. Lamentablemente no puede dejar
cout<<"Ejemplo: Z = "<<Z<<" en base vacío esta parte de la tabla. Es por eso que vamos a
decimal"; ser una pequeño reflexión filosófica. Seguramente
cout<<" a Z = 0x0"<<hex<<Z<<" en usted estimado lector busca el tan ansiado título de
base hexadecimal\n"; hacker (en el mejor de los casos) que le hará
sentirse bien consigo mismo y sobre todo le dará
cout<<"\n"<<setw(17)<<"oct"<<"Convierte numero confianza en todo lo que haga. Seguramente es por
a base octal\n"; eso que se esfuerzo mucho en investigar y
cout<<"Ejemplo: Z = "<<dec<<Z<<" en experimentar. Con eso puedo adivinar que sus
base decimal"; campos preferidos son la informática y la
cout<<" a Z = "<<oct<<Z<<" en base electrónica. Así es no podemos ser completos si
octal\n"; ignoramos por completo la parte hardware. Como
muchos han dicho es más fácil aprender
cout<<"\n"<<setw(17)<<"endl"<<"Inserta una experimentando que leyendo. En el caso del ser
nueva linea y limpia el flujo\n"; humano las personas aprenden más con la práctica
cout<<"Presione una tecla para ver sus efectos"; que con teoría. Lamentablemente en el campo de la
getch();cout<<endl;getch(); informática solo vamos a poder experimentar con
códigos. En el campo de la electrónica se
cout<<"\n"<<setw(17)<<"ends"<<"Inserta un cero experimenta con transistores. Qué pasa si vamos
nulo (\\0) al final de la cadena\n"; acumulando conocimientos tanto informáticos como
cout<<"Nota: este caracter no es visible\n"; electrónicos? La respuesta a eso es que está
cout<<"Presione una tecla para ver sus efectos"; naciendo un hombre que puede resolverlo todo (es
getch();cout<<ends;getch(); un decir) o almenos va a tener un mundo de
posibilidades más amplios de visión. Ahora, muchos
cout<<"\n\n"<<setw(23)<<"flush"<<"Limpia el flujo de ustedes dirán pero aprendar tantas cosas es muy
de salida\n"; difícil. Eso es absolutamente verdadero pero si
cout<<"Presione una tecla para ver sus efectos"; siempre continuamos investigando el exito está
getch();cout<<flush;getch(); asegurado. Recuerdo que usted tiene un invencible
aliado: La Globalización. La globalización ha hecho
cout<<"\n\n"<<setw(23)<<"setbase(int posible el poder conectarnos de forma indirecta con
n)"<<"Formatea numero a base n\n"; miles de personas en el mundo. Le recomiendo no
cout<<"Ejemplo Z = "<<Z<<" en base octal"; buscar respuestas a preguntas simples. ¿Qué son
cout<<" a Z = "<<setbase(10)<<Z<<" en preguntas simples? Las preguntas simples son
base decimal\n"; aquellas sin ninguna importancia. Por ejemplo:
encontrar la solución a una ecuación de de grado 8.
cout<<"\n"<<setw(23)<<"setfill(int Estas preguntas son simples por que a todo rato en
c)"<<"Coloca c en el campo de setw()\n"; el mundo se está estudiando. En cambio sí usted va
cout<<"Ejemplo: "<<setfill(2)<<setw(10)<<"HOLA"; preguntándose por ahí como aprovechar al máximo
los conocimientos que posee? entonces eso ya es
cout<<"\n\n"<<setw(23)<<"setprecision(int otra cosa. Ud. es un hombre temible, que sabe lo
n)"<<"Determina la precision de punto flotante\n"; que está haciendo y sabe el camino que le espera.
cout<<"Ejemplo: INICIO W = "<<W<<" LUEGO W Para terminar estimado lector quiero decirle que no
= "<<setprecision(5)<<W; busque abundante conocimiento sino busque
aplicarlos. Los inteligentes buscan un deseo antes,
cout<<"\n\nPress any key to finish\n"; los tontos buscan hacer algo pero no saben que.
getch();return 1821;
}
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.
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.
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)
}
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.
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.
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
cout<<"\n\tPROGRAMA 15\n";
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 finalizar\n";getch();
}
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)
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
//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 finish\n";getch();
}
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
cout<<"\n\tJUEGO DE SOCIEDAD\n";
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;
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
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;
//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;
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
[email protected]