Monthly Archives: September 2009

Programa: Recuadros en C++

Ya que sabemos usar los ciclos for y el gotoxy, vamos a hacer un programa que muchos profesores encargan: un recuadro en c++, es decir, un margen o contorno para darle mas presentación a un programa.

En realidad es muy sencillo:

#include<stdio.h>
#include<conio.h>

int main()
{
  int x=0;
  for(x=1;x<=80;x++)
  {
    gotoxy(x,1);printf(".");
    gotoxy(x,22);printf(".");
    gotoxy(4,23);printf("Nombre:  Programa:  Numero:     ");
    gotoxy(x,24);printf(".");
    if(x<=24)
    {
      gotoxy(1,x);printf(".");
      gotoxy(80,x);printf(".");
    }
  }
  getch();
}

Modifíquenlo, échenle imaginación. Yo use puntos (.), pero ustedes pueden usar cualquier otro caracter.

Advertisements

Programa: Tabla ASCII en C++ (sencillo)

Bien, ahora que ya vimos algo de teoría y práctica sobre ciclos en c++, vamos a hacer un programa que nos muestre el código ASCII del 1 al 256. Por si no los saben, las computadoras solo ‘entienden’ números, así que cada letra y cada caracter es en realidad un número; eso es el código ASCII.

Así que el programa sería así:

#include<stdio.h>
#include<conio.h>

int main() {
  int ascii=0,col=1,ren=1;
  for(ascii=1;ascii<=256;ascii++) {
    gotoxy(col,ren);printf("%i: %c  ",ascii,ascii);
    if(ren==24) { ren=0; col+=12; }
    if(col>=80) { getch(); clrscr(); ren=0; col=1; }
    ren++;
  }
  getch();
}

Variables:

  • ascii -> Controla el ciclo desde 1 hasta 256
  • ren -> Controla los renglones
  • col -> Controla las columnas

Cuando ren==24, los renglones comienzan en cero de nuevo y se empieza en una nueva columna; cuando col>=80, se detiene el transcurso del ciclo, luego se limpia la pantalla y se reinician los renglones y las columnas.

Cómo usar Gotoxy en C++

Gotoxy significa go to (x, y), es decir ir a (x, y), donde (x, y) es una coordenada de nuestra pantalla. Se suele usar antes de un printf, para poner el texto en una cierta parte de la pantalla.

La pantalla de C++, tiene 24 renglones y 80 columnas, por lo que los valores que le pongamos a nuestro gotoxy no deberán pasar de esos valores. gotoxy pantalla

¿Cómo usar gotoxy()?

Su sintáxis es la siguiente:

gotoxy ( columna , renglón ) ;

Así, si queremos que un mensaje salga en la parte inferior de la pantalla, nuestro programa sería el siguiente:

#include<stdio.h>
#include<conio.h>

int main() {
  gotoxy(5,24);printf("Hola mundo");
  getch();
}

¡Qué fácil! ¿no?

Ciclos for en C++

Bien, ya que entendimos un poco la teoría de los ciclos en c++, ahora vamos a practicar sobre como usar el ciclo for.

¿Cómo hacer un ciclo en C++?

#include<stdio.h>
#include<conio.h>
int main()
{
  int x=0;
  for(x=0;x<=5;x++)
  {
    printf("%d ",x);
  }
  getch();
}
//Este programa mostrará en pantalla 0 1 2 3 4 5

Como ven, necesitamos una variable exclusiva para el ciclo (en este caso ‘x’) y éste empieza con la palabra for, su sintáxis es la siguiente:

for ( variable = inicio-del-ciclo ; condición-que-indica-el-final ; aumento de x )

Por partes:

  • x=0 -> Indica el inicio del ciclo. Puede ser cualquier variable y cualquier valor de inicio.
  • x<=5 ->Indica el fin del ciclo. Cuando la condición deja de cumplirse el ciclo termina. Cuando el ciclo no es menor o igual a 5 el ciclo termina.
  • x++ -> Indica que la variable ‘x’ aumenta de uno en uno. Para aumentar de dos en dos: x+=2, de tres: x+=3.

Otro ejemplo, la tabla de multiplicar del 2 en C++:

#include<stdio.h>
#include<conio.h>
int main()
{
  int c=0;
  for(c=1;c<=10;c++)
  {
    printf("2 x %d = %dn",c,2*c);
  }
 getch();
}

Entendiendo los ciclos en c++

ciclo
Como les dije en el programa anterior (¿Aprobó o no aprobó?), los ciclos son algo que un buen programador debe tener muy bien dominado. Pero…

¿Qué es un ciclo?

Un ciclo, aquí y en China, es algo que se repite constantemente. Por ejemplo:

  • Si vamos a la papelería y sacamos 5 copias de una hoja, cada vez que se imprime una hoja se completa un ciclo y se repite hasta completar las cinco repeticiones
  • Si saben algo de guitarra, abran oído del ‘círculo de sol’; son cuatro acordes que se repiten constantemente a lo largo de una canción, cada vez que tocas los cuatro acordes se completa un ciclo
  • Si ponen un CD de música en un reproductor, cada vez que suenen todas las canciones del disco se completa un ciclo

¿Cómo serían los programas de esos ejemplos?

Para sacar copias

Desde x=1 hasta 5
{
imprimir
}

Para tocar el circulo de Sol

Desde x=1 hasta fin de la canción
{
tocar Sol
tocar Mi menor
tocar La menor
tocar Re 7
}

Para tocar CD

Desde x=1 hasta número de canciones
{
tocar canción x
}

Los primeros dos están muy fáciles de entender: las acciones dentro de las llaves {} se repiten determinado número de veces y ese valor puede ser constante (como las copias) o variable (como el fin de la canción). El tercer ejemplo tiene algo complicado, pero que es la ‘escencia’ de los ciclos.

Supongamos que ese disco tiene 5 canciones, podríamos programarlo así:

tocar canción 1
tocar canción 2
tocar canción 3
tocar canción 4
tocar canción 5

O así:

Desde x=1 hasta 5
{
tocar canción x
}

Esta es la verdadera utilidad de los ciclos, ahorrar código.

Programa: ¿Aprobó o no aprobó?

También es muy común entre los profesores, encargar este tipo de programas una vez que se ven las condiciones. De lo que se trata es de pedir, por ejemplo, 3 calificaciones, sacar el promedio y mostrar un mensaje si el alumno aprobó o no aprobó.

Como el promedio puede ser una valor con decimales, tenemos que declarar las variables como tipo float.

#include<stdio.h>
#include<conio.h>

int main()
{
  float calif_1=0,calif_2=0,calif_3=0,promedio=0;
  printf("nIntroduce tu primera calificacion: ");scanf("%f",&calif_1);
  printf("nIntroduce tu segunda calificacion: ");scanf("%f",&calif_2);
  printf("nIntroduce tu tercera calificacion: ");scanf("%f",&calif_3);

  promedio=(calif_1+calif_2+calif_3)/3;

  if(promedio<6)
  {
   printf("ntLo siento, tu promedio de %.2f no es aprobatorio",promedio);
  }
  else
  {
    printf("ntFelicidades, pasaste con un %.2f",promedio);
  }

  getch();
}

Aquí estamos asumiendo que la calificación mínima aprobatoria es de 6, pero ¿y si quiero que este dato también sea variable? Entonces el programa quedaría así:
Continue reading Programa: ¿Aprobó o no aprobó?

Programa: ¿Qué tipo de triángulo es?

Ok, hasta hoy ya hemos visto las herramientas necesarias para hacer nuestro primer programa un poco más en serio. Este programa nos pide la medida de los tres lados de un triángulo y nos devuelve el tipo de triangulo que es (equilátero, isósceles o escaleno).

Para esto vamos a usar condiciones en C++ para comparar los lados de nuestro triángulo.

Un tríangulo equilátero tiene sus tres lados iguales, por tanto, la condición quedaría así:

“si el lado 1 es igual al lado 2 y el lado 2 es igual al lado 3, entonces es equilátero”

Un tríangulo isósceles tiene solo dos lados iguales, por tanto, la condición quedaría así:

“si el lado 1 es igual al lado 2 y el lado 2 es diferente al lado 3, o
el lado 2 es igual al lado 3 y el lado 3 es diferente al lado 1, o
el lado 3 es igual al lado 1 y el lado 1 es diferente al lado 2 entonces es isósceles”

Un tríangulo escaleno tiene sus tres lados diferentes, por tanto, la condición quedaría así:

“si el lado 1 es diferente al lado 2 y el lado 2 es diferente al lado 3 y el lado 3 es diferente al lado 1, entonces es escaleno”

Pero vamos a lo bueno. El programa completo en C++, sería así:

#include<stdio.h>
#include<conio.h>
int main()
{
  //Declaracion de variables
  int lado1=0,lado2=0,lado3=0;

  //Pedir los datos
  printf("TIPOS DE TRIANGULOS");
  printf("nIntroduce el lado 1: ");scanf("%i",&lado1);
  printf("nIntroduce el lado 2: ");scanf("%i",&lado2);
  printf("nIntroduce el lado 3: ");scanf("%i",&lado3);

  //Hacer comparaciones
  if(lado1==lado2 && lado2==lado3)
  { printf("ntEs equilatero"); }
  if(lado1==lado2 && lado2!=lado3 || lado2==lado3 && lado3!=lado1 || lado3==lado1 && lado1!=lado2)
  { printf("ntEs isosceles"); }
  if(lado1!=lado2 && lado2!=lado3 && lado3!=lado1)
  { printf("ntEs escaleno"); }

  //Pausa
  getch();
}

Aprovecho para explicarles un detalle más. n (alt+92 n) dentro de un printf(); indica un salto de línea, y t (alt+92 t) indica una sangría o tabulado o algo de espacio.

Bajar Dev-C++ gratis (compilador para C++)

dev c++ logo
Ya les proporcioné antes un enlace para bajar Borland C++ 6.0, pero no hay nada como lo legal, y Bloodshed Dev C++ lo puedes descargar de forma totalmente gratuita (y legal) desde su propia página, o para ahorrarles clics, desde SourceForge: Dev-C++.

Es un software excelente, muy actual, con una buena interfaz y funciona a la perfección. El único problema es que no podremos usar la librería <conio.h> (porque es propiedad de Borland) a menos que sigamos las siguientes instrucciones: conio en Dev-C++.

Ya por último les pongo la captura de pantalla de Dev-C++ con lo básico que debrían de saber:

pantalla dev c++

Condiciones (decisiones) en C++ – if, else

¿Cómo harían para saber si alguien es mayor o menor de edad? Creo que los pasos serían:

  1. Preguntarle su edad
  2. Si tiene 18 o más entonces es mayor de edad
  3. Si no, es menor de edad

Metiendonos al lenguaje de C++, quedaría algo así:

  1. scanf(“%d”, &edad);
  2. if(edad>=18) { printf(“Es mayor de edad”); }
  3. else { printf(“Es menor de edad”); }

if significa si y else significa si no

edad>=18 es una comparación. Si la variable ‘edad’ es mayor o igual a 18, se hacen las instrucciones que están entre las llaves {} del if; si no es así, se realizan las instrucciones que están entre las llaves del else.

El programa en sí quedaría de la siguiente forma:

#include<stdio.h>
#include<conio.h>
int main()
{
  int edad=0;
  printf("Cual es tu edad?: "); scanf("%d",&edad);
  if(edad>=18)
  {
    printf("Eres mayor de edad");
  }
  else
  {
    printf("Eres menor de edad");
  }
  getch();
}

Un if no tiene que tener un else ‘a fuerzas’, es opcional. Es muy importante que se fijen muy bien en las llaves, cada if tiene su llave de apertura y de cierre, al igual que el else.