lunes, 28 de septiembre de 2009

Borland C++

¿Que es Borland C++?

C++Builder es un entorno de desarrollo integrado en lenguaje C++ para Windows inicialmente de la empresa Borland, actualmente de su filial CodeGear.

Introduccion a Borland C 5.0

¿Qué es Borland C++?

Borland C++ es un lenguaje de programación derivado de C++. Desarrollado por la compañía Borland Software Corporation.

¿Como se hacen los programas?

Los programas se hacen a través de los lenguajes de programación.

¿Qué es un programa?

Los programas son un conjunto de instrucciones.

¿Qué es una instrucción?

Son órdenes de cualquier tipo. Estas órdenes serán enviadas al procesador.

¿Qué es el procesador?

El es el encargado de hacer cumplir las instrucciones.

¿Qué es un lenguaje de programación?

Un lenguaje de programación es un lenguaje artificial que se puede usar para definir o preparar instrucciones que luego serán ejecutadas por la PC.

¿A que nos referimos con eso de lenguaje artificial?

Veamos un ejemplo para comprender mejor esto. Estaba caminando por la calle cuando de pronto observo venir a una preciosa chica. Al instante me dan ganas de decirle que es muy guapa pero no me atrevo. Luego de un rato me decido, me acerco a ella y le digo: Perdone señorita, pero que guapa es Ud!. La señorita un tanto sorprendida, me observa y responde: I'm sorry, I don't speak spanish!, luego se va. Ustedes pueden darse cuenta de este caso que cuando dos personas no conocen un mismo idioma no se pueden comunicar correctamente, sin embargo eso no quiere decir que dos personas que no hablan el mismo idioma no se puedan entender, ¿verdad?. En este caso que hubiesen hecho ustedes para que aquella señorita entendiese el mensaje que le desean comuncar? Claro!, buscar algo (lenguaje alternativo o artificial) que los dos pudiesen comprender. En el caso de la señorita podríamos haber usado mímicas o gestos o simplemente buscar a alguien que entendiese nuestro idioma y la de la señorita para que le diga nuestro mensaje. A ese alguien nosotros le llamos traductor o intérprete y sirve como intermediario en la comunicación entre dos o más personas que no conocen el mismo lenguaje.

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.

Imagen 1: La IDE del lenguaje Borland C++ versión 5.0

¿Cómo nos comunicamos con la PC?

A través de los softwares (programas) y hardwares (dispositivos) con los que contemos.

¿En qué consiste la comunicación Usuario – PC?

El usuario da órdenes a la computadora.

¿Qué significa dar órdenes a una computadora?

Aunque muchos no se hayan dado cuenta, nosotros constantemente damos órdenes a la computadora a través de nuestros programas. Por ejemplo:

  • Ejecutar un programa ... Ejemplo 1
  • Reproducir un video ... Ejemplo 2
  • Descargar música ... Ejemplo 3

Estos son solo tres de la enorme cantidad de órdenes que pueden existir.

Imagen 1: Se muestra una consola

Tabla 1: Se muestra el significa de ciertos términos

Algoritmo: Son un conjunto de pasos que sí se siguen correctamente resuelven un determinado problema.

Archivo: De forma sencilla podemos decir que un archivo es como un "almacén". En su interior se puede almacenar instrucciones especiales para el ordenador o simplemente algo que el usuario desee guardar. Existen archivos de diferentes naturalezas. Estas naturalezas se ven reflejadas en la extensión del archivo. Por ejemplo un archivo que tenga extensión JPG significaría que dicho archivo almacena una imagen y sí la extensión fuera EXE eso significaría que dicho archivo almacena instrucciones para el ordenador.

Archivo fuente: Es aquel archivo que contiene el código fuente.

Código fuente: Es cualquier escrito que se hace en base a ciertas reglas (sintaxis) de un determinado lenguaje de programación.

Código Objeto: Es el conjunto de instrucciones obtenidas al compilar el código fuente.

Compilación: Es la actividad de traducir las instrucciones contenidas en un archivo fuente, en instrucciones máquina.

Consola: En los años 70' existían lo que se llamaban consolas. Estas eran las pantallas oscuras que aparecían al arrancar el ordenador.

GUI: Es el acrónimo de Graphic User Interface (Interfaz Gráfica de Usuario). La GUI se compone de botones, barras de deslizamiento, menus, etc.

"Problemas, luego los soluciono!"

Simplemente Yo

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.

Tabla 2: Se plantea un problema de la vida cotidiana y sus posibles soluciones.

PROBLEMA

  • Quiero ir en autobús al colegio pero no tengo dinero.

SOLUCION

  • Busco a alguien para que me preste el dinero que necesito.
  • Realizo un atraco al banco más cercano para obtener el dinero que necesito.
  • Vendo mi reloj favorito y así obtengo el dinero que necesito.

Características fundamentales del algoritmo

  • El algoritmo es finito: El algoritmo que nosotros elaboremos necesariamente deberá tener un determinado conjunto de instrucciones.
  • El algoritmo es preciso: El algoritmo está constituido por un conjunto de instrucciones que se ejecutarán paso a paso.
  • El algoritmo es definido: El algoritmo seguido dos o más veces muestra resultados similares.

Tabla 3: Se muestra el significado de más términos informáticos

Biblioteca: Una biblioteca es un almacén de rutinas/funciones y clases.

Dato: Es cualquier conocimiento con escaso valor o sin valor alguno. Un dato es la mínima unidad fundamental para crear una información.

Función: Es un almacén de datos y algoritmos. La función es conocida también como procedimiento o rutina y se encargará de una tarea determinada.

Información: Es cualquier conocimiento con gran valor de uso. Dicho conocimiento estará constituido de un cúmulo de datos.

Objeto: Es un almacén de datos y funciones. Los objetos son unidades fundamentales de los programas desarrollados con la técnica Programación Orientada a Objetos.

Imagen 3: Se indica los elementos de ciertos elementos de la GUI de Borland C++

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

Codificación en Borland C++

#include

#include

void main(void)

{

cout<<"\nProblemas, luego los soluciono!\n";

cout<<"\nPresione una tecla para finalizar";

getch();

}

Explicación

El código fuente del Programa 1 es todo lo que está en color rojo oscuro. En este programa hemos explicitado las bibliotecas que estamos usando; Iostream y Conio. También se muestra a la función main en su respectiva estructura.

Todo lo que se encuentra en el interior de las llaves ({ }) se llama: cuerpo del programa.

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 Information Interchange (Código Americano para el intercambio de información).

ANSI: American National Standards Institute (Instituto Nacional Estadounidense de Estándares).

C: Es un lenguaje de Programación muy famoso en el mundo.

Depurar: Corregir un error.

Icono: Imágen de dimensiones pequeñas que representa a un programa u objeto cualquiera.

IDE: Integrated Development Environment (Entorno Integrado de Desarrollo).

Versión: Es un indicador de la evolución (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

Imagen 7: Se ve la imagen de una consola mostrando mensajes

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.

HERRAMIENTAS PARA REPRESENTAR ALGORITMOS

¿Qué son las herramientas de representación de algoritmos?

Son, como su nombre indica, herramientas. Estas herramientas nos ayudarán a plasmar cualquier algoritmo que desarrollemos. Debe entender que cualquier programa se desarrolla antes en papel y luego en computadora.

Nosotros usaremos 3 herramientas: Pseudocódigo, Diagramas de Flujo de Datos (DFD) y Diagramas Nassi/Scheirman (N/S).

Pseudocódigo

Seguramente este será la herramienta que más usemos (solo al principio) para poder representar nuestros algoritmos puesto que su utilización es sencilla.

Diagramas de flujo de datos (DFD)

Los diagramas de flujo de datos es otra herramienta más que vamos aprender a usar. Como su nombre indica esta herramienta utililiza diagramas o figuras para poder representar a los algoritmos. Con esta herramienta vamos a poder darle un toque artístico a nuestros algoritmos. Y por que flujo de datos? Bueno, simplemente por que a través de ellos vamos a ser que circulen datos.

Diagramas Nassi / Scheiderman (N/S)

Esta herramienta es casi similar a los DFD pues también se usan gráficos para representar a los algoritmos.

¿Qué podemos hacer con nuestra PC aparte de chatear y escuchar música?

Todo!!!. Así es, con una computadora podemos resolver una infinidad de problemas. Por ejemplo podemos calcular el área de un terreno, la velocidad de un auto, la temperatura del medio ambiente, el área del Perú, el password del correo de tu novia, etc.

Cuando nosotros queramos resolver un problema de geometría, por ejemplo calcular el área de un triángulo, qué haríamos? Lo primero sería pensar para con ello encontrar la forma de resolverlo ¿verdad? Después de tanto investigar encontramos que para calcular el área de un triángulo se necesitan dos datos importantes; la base y la altura del triángulo ya ahora conocemos la fórmula para hallar él área de cualquier triángulo.

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

Comentarios internos

Estos comentarios se hacen en el código fuente. La finalidad de usar estos comentarios es para hacer más comprensible al código fuente. En Borland C++ los comentarios son de una sola línea o de varias líneas. Estos comentarios podrán en cualquier parte del código ya que serán ignorados por el compilador.

Para comentarios de una sola línea se usará: //

Para comentarios de varias líneas se usará: /**/

Documentación

La documentación hace referencia a los manuales de uso que puede tener una programa ejecutable.

Para poder elaborar un manual de un programa se necesita conocer muy bien al programa. No es conveniente desarrollar un manual muy detallado ya que se puede cansar demasiado al propietario del programa. Esto es por que las personas no están acostumbrados a leer o es que simplemente les aburre demasiado.

Programa 2

Desarrollar un programa que muestre un mensaje en pantalla y espere hasta terminar de leerlo. El mensaje es del gusto del usuario.

Codificación en Borland C++

//Todo lo escrito detrás de las dos barras serán ignoradas

/*El compilador ignora los comentarios.

Recuerde: Los comentarios pueden ir en cualquier

parte del código.*/

#include //Se incluye (include) la biblioteca conio

#include //Se incluye la biblioteca iostream

void main() //FUNCION PRINCIPAL

{

cout<<"Todo lo que se escribe dentro de las comillas"<

cout<<"sera mostrado en la pantalla."<

cout<

cout<<"Presione una tecla para finalizar";

getch(); //Espera hasta que se presione una tecla

}

Explicación

En él código fuente se ve el uso de comentarios de una y de varias líneas. Se incluye la bibioteca conio por que dentro de ella se encuentra la rutina getch. Sí no se usaría esta bibioteca no podríamos usar la función getch. La bibioteca iostream contiene al objeto cout. Se ve a la función principal main. El símbolo { y } indica el inicio y el fin respectivamente del cuerpo de main. Todo tiene un inicio y un fin. Por qué pensó que un programa no!. Debe recordar que toda función tiene un cuerpo. Luego se observa una instrucción. La instrucción a la que nos referimos es: cout<<"Todo lo..."; Las instrucciones se reconocen fácilmente por que terminan siempre en ; Cout es un objeto de la librería de clases iostream. Este objeto abre un flujo de datos que conecta la pantalla con el programa. El símbolo << llamado operador de inserción se encarga de insertar lo captado en el teclado. La función getch() esperará siempre mientras no se pulse una tecla.

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.

Variables, su definición, tipo y por último su declaración

Variables

Una variable en informátca al igual que en matemáticas viene a ser cualquier letra (a, e, X, b, c, Y, etc.) o palabra (pedro_1, numero, Juan15, fido, variable, etc.) que nosotros escogeremos para que almacene algo interior.

Definición de una variable

Definir una variable es buscar la variable que necesitemos para luego darle un nombre. En Borland C++ dicho nombre no puede empezar nunca con cualquer caracter especial excepto el _. Por ejemplo sí definiera una variable con el nombre 4auto sería rápidamente detectado como error en la sintaxis por el compilador. Pero sí podría definir así: _auto. Además tampoco se puede definir el nombre de una variable con las palabras reservadas del lenguaje, puesto que estas palabras junto con la sintaxis conforman al lenguaje Borland C++.

Las palabras reservadas del lenguaje son:

asm

auto

bool

break

case

char

class

const

continue

default

delete

do

double

else

enum

explicit

extern

for

friend

goto

if

inline

int

long

mutable

namespace

new

operador

private

public

register

return

short

signed

sizeof

static

struct

switch

template

this

throw

typedef

union

unsigned

virtual

void

volatile

while

Tipos de datos

Ya anteriormente hemos explicado lo que es una variable. Hemos explicado también como difinir una variable. Ahora vamos a preguntarnos por la naturaleza del valor almacenado en dicha variable. En efecto, podríamos desear definir una variable en donde guardar solo números enteros, solo letras, etc, esto es; el tipo de dato que la variable almacena. Los tipos de datos que Borland C++ reconoce se muestran a continuación en 2 tablas.

Tipos de datos básicos o primitivos:

TIPO

TAMAÑO

RANGO

char (caracter)

8 bits

-

int (entero)

32 bits

-

float (real)

32 bits

-

double (real)

64 bits

-

Tipos de datos extendidos :

TIPO

TAMAÑO

RANGO

unsigned char

8 bits

-

short int

8 bits

-

unsigned int

16 bits

-

unsigned long

32 bits

-

long double

80 bits

-

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

El objeto cin se encarga de abrir un flujo de datos que conecta el teclado con nuestro programa. Para extraer datos de este flujo hacemos uso del símbolo >> llamado operador de extracción. Al extraer es obligatorio especificar la variable en donde se ha de guardar los datos extraidos.

La sintaxis es: cin>>variable;

Cout

Este objeto también abre un flujo de datos que conecta el monitor con nuestro programa. A este flujo se puede insertar datos mediante el operador << llamado operador de inserción.

La sintaxis es: cout<<"Mensaje que se desea mostrar por la pantalla";

Programa 3

Desarrollar un programa que calcule lo siguiente:

La suma de dos números enteros.

El producto de dos números reales.

Codificación en Borland C++

#include

#include

void main(int)

{

//Declaración de variables

int numE1,numE2,sum; //Se han declarado 3 variables: numE1, numE2 y sum

float numR1,numR2,pro;

cout<<"Suma de numeros enteros"<

cout<<"-----------------------"<

cout<>numE1;

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

sum=numE1+numE2;

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

cout<<"Producto de numeros reales"<

cout<<"--------------------------"<

cout<

cin>>numR1;

cout<<"Ingrese otro numero: ";

cin>>numR2;

pro=numR1*numR2;

cout<<"El producto es: "<

cout<<"Presione una tecla para finalizar";getch();

}

Explicación

En las primeras líneas se especifica las bibiotecas que se van a usar para desarrollar el programa. En la siguiente línea se observa a la función principal main siempre acompañado. Esta vez por capricho hemos puesto dentro del paréntesis que acompaña a main el tipo de dato int con intención didáctica. Debe darse cuenta que toda función siempre está acompañado del paréntesis. Ya en el cuerpo de main hemos declarado 3 varianbles de tipo int que es la contracción de Integer que significa entero. Luego hemos declarado 3 varianbles de tipo float (real) que significa flotante. Las instrucciones que a continuación se han escrito creo que ustedes estimados lectores pueden fácilmente reconocerlos. Cuando se llegue a la instrucción en donde se vea involucrado el objeto cin seguido del operador >> se hará un parado indeterminado. Este parado es para que usted pueda ingresar datos a través del teclado. Cuando haya acabado de ingresar los datos deseados solo presione la tecla Enter. Estos datos que usted ingresó serán guardados en la variable que coloca a la derecha del operador >>. La instrucción que tal vez le sorprenda sea: sum=numE1+numE2; No debe sorprenderse pues esto indica la variable sum guardará la suma de la variable numE1 con numE2.

Programa 4

Desarrollar un programa que registre los datos de una persona.

Estos datos serán: Nombre, edad y peso.

Codificación en Borland C++

#include

#include

int main()

{

//Declarando varianbles

char _nombre[50];

int _edad;

float _peso;

cout<<"REGISTRO DE DATOS"<

cout<<"-----------------"<

cout<<"Ingrese su nombre: ";cin>>_nombre;

cout<<"Ingrese su edad: ";cin>>_edad;

cout<<"Ingrese su peso: ";cin>>_peso;cout<

cout<<"Mostrando sus datos..."<

cout<<"Nombre: "<<_nombre<

cout<<"Edad: "<<_edad<

cout<<"Peso: "<<_peso<

cout<<"Presione una tecla para finalizar";

getch();

return 16;

}

Explicación

En las dos primeras líneas del código se muestra los dos bibliotecas a utilizar para este programa. La sorpresa está en la función principal main y sus acompañantes. A la izquierda de main ahora ya no está la palabra void sino int. Qué quiere decir esto? Eso quiere decir que la función principal main va a devolver un valor de tipo int. También notamos que dentro del paréntesis que se coloca a la derecha de main ya no se coloca void. Esta característica es de C++. En C++ no es obligatorio colocar void. La sorpresa de este programa se encuentra en el cuerpo de main. Primeramente hemos declarado una variable de tipo char. Esta variable de nombre _nombre almacenará 49 caracteres y 1 el símbolo especial '\0' que indicará el final de la cadena. Lo demás ya no necesita explicación pues son cosas que ya hemos visto anteriormente. Ahora sí se están preguntando por la instrucción: return 16; solo cabe decir que esta instrucción returna (return) el valor de 16 a la función main. Por que 16? En este caso por que hemos dicho que main devolvería un entero. Recuerde: int main();

Errores y avisos en el código de un programa

Errores

Borland C++ no generará el programa ejecutable (aplicación) sí encuentra errores el código fuente. Y sí lo crease es de su supones que dicha aplicación es inservible. Hay muchos tipos de errores que podremos cometer al desarrollar nuestro programa.

Avisos

Los avisos no son tan graves como para no generar la aplicación. Sin embargo es bueno prestarle atención a los mismos.

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

#include

#include

int main(int a)

{

cout<<"Borland C++ tiene muchas libertades";

cout<

cout<<" de sintaxis." //A esta instrucción le falta el ;

getch; //A getch le falta () por ser una función

return 10;

}

Código fuente sin errores

#include

#include

int main()

{

cout<<"Borland C++ tiene muchas libertades";

cout<

cout<<" de sintaxis.";

getch();

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.

Codificación en Borland C++

#include //Para cout y cin

#include //Para getch()

int main()

{

int A,B;

int varTem; //varTem es la variable temporal

cout<<"Programa 6"<

cout<<"----------"<

cout<<"A = ";cin>>A;

cout<<"B = ";cin>>B;cout<

cout<<"Intercambiando valores..."<

varTem=A;

A=B;

B=varTem;

cout<<"A = "<

cout<<"B = "<

cout<<"Presione una tecla para finalizar"<

getch();

return 0;

}

Explicación

Lo más importante del programa se ve en las 3 instrucciones seguidas:

varTem=A;

A=B;

B=varTem;

En la primera parte la variable varTem almacena el valor de A. Esto se hace con la finalidad de no perder el valor original de A. En la segunda instrucción la variable A pierde su valor original. Ahora el nuevo valor de A es el valor almacenado en B. En la tercera instrucción el valor de B es reemplazado con el valor de la variable varTem quien era el que almacenaba el valor original de A. Con esto se logra intercambiar los valores de las variables. Tal vez usted haya querido hacer esto:

A=B;

B=A;

para intercambar los valores de las variables. En la primera instrucción el valor de A es reemplazado con el valor de B. En la segunda instrucción el valor de B es reemplazado con el valor de A quien almacena el mismo valor que B.

Recuerde: cuando un valor es reemplado por otro. El valor reemplazado se pierde!!!

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

Secuencias de escape

Descripción

\n

Esta secuencia ordena a la pantalla ubicar el cursor al principio del renglón siguiente.

\r

Ubica el cursor al inicio del renglón en el que estaba.

\t

Desplaza el cursor una distancia igual a una tabulación.

\a

Enciende un pitido del sonido del sistema.

\'

Muestra un apostrofe en la pantalla.

\"

Muestra una comilla en la pantalla.

\\

Muestra una barra invertida en la pantalla.

Programa 7

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

Codificación en Borland C++

#include

#include

int main()

{

cout<<"\n\tSECUENCIAS DE ESCAPE\n";

cout<<"\t--------------------\n";

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

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

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

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

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

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

cout<<"\n\n \\t: Mueve el cursor una distancia a la derecha\n";

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

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

cout<<"\n\n \\a: Enciende un pitido del sonido del sistema\n";

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

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

cout<<"\n\n \\\': Muestra un apostrofe en la pantalla\n";

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

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

cout<<"\n\n \\\": Muestra una comilla en la pantalla\n";

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

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

cout<<"\n\n \\\\: Muestra una barra invertida en la pantalla\n";

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

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

cout<<"\n\n 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+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.

Codificación en Borland C++

#include

#include

int main(int a,int b)

{

cout<<"\n\tBORLAND C's BASIC OPERATIONS\n";

cout<<"\t----------------------------\n";

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

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

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

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

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

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

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

cout<<"\nPress a key to finalize\n";

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: "<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

#include

float main()

{

int dinero;

cout<<"\n\tSUBMULTIPLOS DE MI DINERO\n";

cout<<"\t-------------------------\n";

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

cout<<"\nCalculando submultiplos...\n";

cout<<"\nHay "<

dinero=dinero%200;

cout<<"Hay "<

dinero=dinero%100;

cout<<"Hay "<

dinero=dinero%50;

cout<<"Hay "<

dinero=dinero%20;

cout<<"Hay "<

dinero=dinero%10;

cout<<"\nHay "<

dinero=dinero%5;

cout<<"Hay "<

dinero=dinero%2;

cout<<"Hay "<

cout<<"\nPress any key to finish\n";

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< ¿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 \0. 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

#include

double main()

{

char nomApe[200],fechNac[60];

char sex[15];

float est,pes;

int eda;

cout<<"\n\tREGISTRO DE DATOS\n";

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: "<

cout<<"Fecha de nacimiento: "<

cout<<"Sexo: "<

cout<<"Estatura (metros): "<

cout<<"Peso (kilogramos): "<

cout<<"Edad: "<

cout<<"\nPress any key to finish"<

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

#include

#include //Para usar manipuladores de datos

int main()

{

int Z=86400; //Variable solo para muestra

float W=62.5126; //Variable solo para muestra

cout<<"\n\tMANIPULACION Y FORMATEO DE DATOS\n";

cout<<"\t--------------------------------\n";

cout<

dentro del ancho de campo de setw()*/

cout<<"\n"<

cout<

cout<<"\n"<

cout<<"Ejemplo: Z = 0x0"<

cout<<" a Z = "<

cout<<"\n"<

cout<<"Ejemplo: Z = "<

cout<<" a Z = 0x0"<

cout<<"\n"<

cout<<"Ejemplo: Z = "<

cout<<" a Z = "<

cout<<"\n"<

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

getch();cout<

cout<<"\n"<

cout<<"Nota: este caracter no es visible\n";

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

getch();cout<

cout<<"\n\n"<

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

getch();cout<

cout<<"\n\n"<

cout<<"Ejemplo Z = "<

cout<<" a Z = "<

cout<<"\n"<

cout<<"Ejemplo: "<

cout<<"\n\n"<

cout<<"Ejemplo: INICIO W = "< cout<<"\n\nPress any key to finish\n";

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 (\0) 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

#include

void main(int N,int S)

{

cout<<"\n\tSUMA DE LOS N PRIMEROS NUMEROS NATURALES\n";

cout<<"\t----------------------------------------\n";

cout<<"\n1 + 2 + 3 + ... + N\n";

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

//ALGORITMO QUE HALLA LA SUMA

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

cout<<"La suma es: "<

cout<<"\nPress any key to finish\n";

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 //Para usar getch() y gotoxy()

#include

#include //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...: "<

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

sueE=pagHorE*horE;

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

ingTotal=sueE+sueN;

bonifi=(3*ingTotal)/10;

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

seguro=sueN/20;

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

gotoxy(1,17);cout<<"-----------------------------------------------------------------------";

sueNet=ingTotal+bonifi-seguro;

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

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

#include

int main()

{

int N,apreTot;

cout<<"\n\tCUANTOS APRETONES DE MANOS HAY?\n";

cout<<"\t-------------------------------\n";

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

//ALGORITMO PRINCIPAL

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

cout<<"Hay "<

cout<<"\nPress any key to finish\n";

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

#include

int main()

{

int X,S;

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: "<

cout<<"\nPresione una tecla para finalizar\n";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

#include

void main() //FUNCION PRINCIPAL

{

//Declaración de variables y constantes

int radio;

float circulo;

const float pi=3.1415;

cout<<"\n\tCALCULA EL CIRCULO\n";//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: "<

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

#include

void main()

{

//Declarando variables

int N,suma;

cout<<"\n\tSUMA DE LOS N PRIMEROS PARES\n";

cout<<"\t----------------------------\n";

cout<<"\n2 + 4 + 6 +...+ N\n";

//Ingreso datos

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

//Calcula suma

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

//Escribe resultados

cout<<"\nLa suma es: "<

//Pausa

cout<<"\nPress any key to finish\n";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

#include

void main()

{

int n1,n2,resultado;

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;

//Imprime resultado

cout<<"El resultado es: "<

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

#include

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<

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

#include

void main()

{

//Declaración de variables

int NP,NT,PROY;

float PF;

cout<<"\n\tHALLE SU PROMEDIO FINAL\n";

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: "<

cout<<"\nPresione una tecla para finalizar\n";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.

1 comentario: