Menú principal

Escuela de C/C++

Publicado por cazador.asesino, Enero 12, 2009, 05:04:06 PM

Tema anterior - Siguiente tema

cazador.asesino

#225
Escuela de C/C++

Reglas o guías de la Escuela:

1.- Dirigido a: Todo aquel con ganas de aprender estos lenguajes y por supuesto algo de tiempo disponible.

2.- Si cometo alguna equivocación en alguna explicación, siéntanse libres de corregirme(eso incluye faltas ortográficas) , ya que para eso estamos para compartir conocimientos . Las sugerencias o correciones pueden enviarlas via un mensaje privado o como una respuesta si asi lo creen conveniente.

4.- Trataré de enumerar las instrucciones que son las que deberían ser realizadas por ustedes

5.- Por lo general las definiciones y/o conceptos que coloco serán de wikipedia, caso contrario trataré de mencionar la fuente.

Para empezar, algunos conceptos básicos:

Definición de C (Wikipedia):
C es un lenguaje de programación creado en 1972 por Ken Thompson y Dennis M. Ritchie en los Laboratorios Bell como evolución del anterior lenguaje B, a su vez basado en BCPL.

Al igual que B, es un lenguaje orientado a la implementación de Sistemas Operativos, concretamente Unix. C es apreciado por la eficiencia del código que produce y es el lenguaje de programación más popular para crear software de sistemas, aunque también se utiliza para crear aplicaciones.

Definición de C++ :
C++ es un lenguaje de programación diseñado a mediados de los años 1980 por Bjarne Stroustrup. La intención de su creación fue el extender al exitoso lenguaje de programación C con mecanismos que permitan la manipulación de objetos. En ese sentido, desde el punto de vista de los lenguajes orientados a objetos, el C++ es un lenguaje híbrido.

Compilador
Un compilador es un programa informático que traduce un programa escrito en un lenguaje de programación a otro lenguaje de programación, generando un programa equivalente que la máquina será capaz de interpretar. Usualmente el segundo lenguaje es código máquina, pero también puede ser simplemente texto. Este proceso de traducción se conoce como compilación.

Un compilador es un programa que permite traducir el código fuente de un programa en lenguaje de alto nivel, a otro lenguaje de nivel inferior (típicamente lenguaje máquina). De esta manera un programador puede diseñar un programa en un lenguaje mucho más cercano a como piensa un ser humano, para luego compilarlo a un programa más manejable por una computadora.

IDE
Un entorno de desarrollo integrado o, en inglés, Integrated Development Environment ('IDE'), es un programa compuesto por un conjunto de herramientas para un programador. Puede dedicarse en exclusiva a un sólo lenguaje de programación o bien, poder utilizarse para varios. Ej: Dev C++, un IDE para el lenguaje de programación C++.

Un IDE es un entorno de programación que ha sido empaquetado como un programa de aplicación, es decir, consiste en un editor de código, un compilador, un depurador y un constructor de interfaz gráfica GUI. Los IDEs pueden ser aplicaciones por sí solas o pueden ser parte de aplicaciones existentes. El lenguaje Visual Basic, por ejemplo, puede ser usado dentro de las aplicaciones de Microsoft Office, lo que hace posible escribir sentencias Visual Basic en forma de macros para Microsoft Word.

Código fuente

El código fuente de un programa informático (o software) es un conjunto de líneas de texto que son las instrucciones que debe seguir la computadora para ejecutar dicho programa. Por tanto, en el código fuente de un programa está descrito por completo su funcionamiento. El código fuente de un programa está escrito por un programador en algún lenguaje de programación, pero en este primer estado no es directamente ejecutable por la computadora, sino que debe ser traducido a otro lenguaje (el lenguaje máquina o código objeto) que sí pueda ser ejecutado por el hardware de la computadora. Para esta traducción se usan los llamados compiladores, ensambladores, intérpretes y otros sistemas de traducción.

El área de la informática que se dedica a la creación de programas y, por tanto a la creación de su código fuente, es la programación.

1.- Los interesados deberán descargar algun IDE para trabajar alli, este puede ser:
    -> Borland C++
    -> Dev C++
    -> Codeblocks
    Personalmente recomiendo cualquiera de los dos últimos.

2.- Asumiré que descargaron el Dev C++ para dar algunas explicaciones, en otro caso como puede ser el Codeblocks el funcionamiento es similar.

Una vez instalado el Dev C++ y abierto el programa,seleccionen en el Menú Archivo - Nuevo - Archivo Fuente se verá de la siguiente manera:


El Área de trabajo es en la que nosotros escribiremos el Código Fuente, una vez listo lo compilamos y ejecutaremos (Presionando F9) .
Cuando compilemos nuestros códigos, se obtendrá una ventanita más o menos como esta:


En la que se mostrarán los resultados.

Por el momento, esta sera la introducción , agregaré más cosas en estos dias, espero que les agrade.

--->   142857   <---

fullmetalplayer

venga ya kiero aprender  ;D me pongo a estudiar :D

ahorita me descargo un IDE :D

Si buscas resultados distintos, no hagas siempre lo mismo

cazador.asesino

#227
ESCUELA DE C++ 2

Un programa en C/C++ consta de:

-> Una o más líneas de cabeceras o librerías (Una librería es un conjunto de recursos [algoritmos] prefabricados, que pueden ser utilizados por el programador para realizar determinadas operaciones).

-> Prototipos de Funciones y/o Procedimientos del Programador

-> Funcion principal (main)

-> Código de las funciones y/o procedimientos

Ejemplo:

     

Uso de algunas librerías, solo se mencionan algunas de sus funciones – las que utilizaremos por ahora -.

-> stdio.h :

printf     Muestra datos en la pantalla equivale al "escribir en pseudocódigo"
           Ejm:  
           printf("Hola"); //Muestra el texto Hola en la pantalla

scanf      Obtiene valores , equivale al "leer"
            Ejm:
            int a; //Declaración de la variable a
            scanf("%d",&a); // %d indica que se va a leer un entero y se almacena en la //variable a

-> stdlib.h:

system     Pasa la cadena al intérprete de comandos(cmd)
             Ejm:
             system("pause"); // detiene el programa   


-> iostream.h: Pertenece al C++

cout       Muestra en pantalla al igual que el printf, pero sin especificar los tipos de las variables.
            Ejm:
            cout<<"Hola";

cin        Al igual que scanf lee una variable pero sin especificar el tipo de dato a leer
           Ejm:
           int a; //Declaración de una variable entera a
           cin>>a; //Lectura de la variable a;

-> string.h:

strcpy    Copia una cadena de caracteres a una variable especificada
strcmp    Compara 2 cadenas de caracteres


Más conceptos básicos:

-> Operadores Lógicos

Operador Lógico        Operador en C/C++
NO                               ¡
AND                             &&
OR                               ||

-> Tipos de variables

int       enteros: 1, 5 , 95 , -14 , 0
float    reales: 3.1416, -1.414 , 5
char    caracteres : 'a', '5'

-> Asignación: Consiste en entregar un valor dado a una variable.

Ejm:
int a,b; //Declaramos dos variable tipo entero
a=2;     //Asignamos el valor de 0 a la variable a, a = 2
b=a;     //Asignamos el valor de a hacia b, por lo que b = 2

-> Especificadores de Formato: Se utilizan para decirle a las funciones scanf y printf que tipos de dato van a leer o a mostrar

%c      carácter (char)
%s      cadena de caracteres (string)
%d      enteros
%f      reales o punto flotante
%x      Número hexadecimal
%p     apuntador

-> Comentarios: Son elementos del lenguaje que no realizan ninguna función en el programa, su trabajo es mejorar la comprensión del código para el programador.

//Este es un comentario de una línea

/* Comentario
de varias
lineas
*/

1.- Abriremos el Dev C++, Abrimos un nuevo archivo y escribiremos, aunque aun no sepamos lo que signifique:


#include <stdio.h>  
#include <stdlib.h>

int main()
{
printf("Hola Mundo\n");  
system("pause");            
return 0;
}


Guardamos el programa y lo compilamos; observaremos lo que sucede, ahora la explicación:

Usaremos printf por ello se incluye la librería stdio.h y debido al uso de system se incluye stdlib.h

\n indica un salto de linea
system("pause");   Detiene la ejecución del programa
return 0 ; Devuelve el valor de 0

2.- Un segundo ejemplo, un programa que sume dos números:

#include <stdio.h>  
#include <stdlib.h>

int main()
{
int a,b,c;  //Tres variables enteras, recuerde esto es un comentario
printf("Escriba el primer numero: ");
scanf("%d",&a);   // %d indica que es entero y &a lo almacena en a
printf("\nEscriba el segundo numero: ");
scanf("%d",&b);

//Sumando y almacenándolo en c
c=a+b;
//Mostrando
printf("Suma = %d",c);

system("pause"); //Esta orden pausa y hace aparecer en pantalla presione una tecla //para cntinuar
return 0;

}

   
Al compilarlo comprobaremos su funcionamiento.

3.- Con lo ya aprendido, se podría:
a) Escribir el código para un programa que nos solicite 3 notas de practicas y nos devuelva el promedio.
b) Escribir un programa que reciba un número de 3 cifras y las invierta mostrándonos el numero invertido.
--->   142857   <---

makubex

Estructuras de Control:

Aportando al curso he querido iniciar el tema de estructuras de control porque me parece apropiado en este momento iniciar con lo básico:

Las estructuras de control son herramientas que proporcionan los lenguajes de programaación para proporcionar un control sobre el flujo del programa, para empezar aprenderemos 2 tipos:
1) Estructuras de seleccion simple y múltiple
2) Estructuras repetitivas

Estructuras de seleccion simple:
Tambien son llamados Estructura de toma de desiciones, el común en casi todos los lenguajes de programación es la sentencia if. aunque en algunos lenguajes la sintaxis cambia el funcionamiento es similar.

El funcionamiento es el siguiente:

Si se cumple una condición
  Ejecutar esta parte del código
Si no
  Ejecutar esto otro

Cabe mencionar que la parte "Si no" es opcional.

Show me the code!
Un programa en C que identifica el mayor de dos numeros
#include <stdio.h>

int main ()
{
  int a, b;
 
  a = 1;
  b = 5;

  //Aqui el programa compara los valores
  if (a < b)
    printf("El numero menor es %i", a);
  return 0;
}

Nota 1: Bloques de código
La estructura if solo ejecuta una instrucción despues de la linea en la que se encuentra:
if (expresion)
  SoloEjecutoEsto;

Para ejecutar más de dos instrucciones se utilizan los bloques de código que se definen con los signos {}

if (expresion)
{
   Sentencia1;
   Sentencia2;
   SentenciaN;
}

Probablemente algunos que ya estan iniciados en programación aprendieron unicamente a programar con bloques incluso si solo se tiene que ejecutar una sola instrucción. Esto queda a desición, pero si queremos aprender buenas practicas y crear un código compacto y elegante pues hay que  ver como programan thompson, ritchie y kernighan, los creadores de C
#apt-get moo
         (__)
         (oo)
   /------\/
  / |    ||  
*  /\---/\
    ~~   ~~  
...."Have you mooed today?"...

Software Libre para una Sociedad Libre

Deegu!

buenos aportes jew je je aunque no habia pasado antes es un muy buen material el quie estan aportande je je je sigan asi je je je

portense mal


gracias a los usuarios de LDC por visitarnos y preferirnos

cazador.asesino

ESCUELA DE C++ - 03

Estructuras De Control Selectivas:

* if               : Selectiva Simple
      
* if – else     : Selectiva Compuesta

Ya explicados por makubex  8) , aquí un ejemplo más sobre su uso:

1A.- Un programa que ordena 3 números de menor a mayor, este funciona guardandolo como archivo *.c o *.cpp

#include <stdlib.h>
#include <stdio.h>

int main()
{
   int A, B, C;

   printf("\nIngrese A: ");
   scanf("%d",&A);

   printf("\nIngrese B: ");
   scanf("%d",&B);

   printf("\nIngrese C: ");
   scanf("%d",&C);

   if(A>B)
   {
      if(B>C)
      {
         printf("C, B, A\n");
      }
      else
      {
         if(A>C)
         {
            printf(" B, C, A \n");
         }
         else
         {
            printf(" B, A, C\n");
         }
      }
   }
   else
   {
      if(B>C)
      {
         if(A>C)
         {
            printf("C, A, B\n");
         }
         else
         {
            printf("A, C, B\n");

         }
      }
      else
      {
            printf("A, B, C\n");

      }
   }

   system("PAUSE");
   return 0;
}


1B.- El mismo programa, pero en vez de printf y scanf se uso cin y cout, por ello solo cmpilará al guardarlo como *.cpp

#include <stdlib.h>
#include <iostream.h>

int main()
{
   int A, B, C;

   cout<<"\n\nIngrese A: ";
cin>>A;

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

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

   if(A>B)
   {
      if(B>C)
      {
         cout<<"C, B, A\n";
      }
      else
      {
         if(A>C)
         {
            cout<<" B, C, A \n";
         }
         else
         {
            cout<<" B, A, C\n";
         }
      }
   }
   else
   {
      if(B>C)
      {
         if(A>C)
         {
            cout<<"C, A, B\n";
         }
         else
         {
            cout<<"A, C, B\n";

         }
      }
      else
      {
            cout<<"A, B, C\n";

      }
   }

   system("PAUSE");
   return 0;
}



* switch       : Selectiva Múltiple, Una variable denominada selector,nos permite escoger una de varias posibilidades(casos)

switch(selector)
{
   case 1: acción 1;
           break;
   case 2: accion 2;
           break;
   ...
   case n: accion n;
}


2.- Este programa nos permite mostrar el nombre del dia actual al leer el numero de dia 1: lunes 2: martes ...


#include <iostream.h>
#include <stdlib.h>

int main()
{
int dia;
cout<<"Ingrese el numero de dia de la semana: ";
cin>>dia;

cout<<"\nEs el dia : ";

switch(dia)
{
case 1:cout<<"Lunes";
       break;
case 2:cout<<"Martes";
       break;
case 3:cout<<"Miercoles";
       break;
case 4:cout<<"Jueves";
       break;
   case 5:cout<<"Viernes";
       break;
case 6:cout<<"Sabado";
       break;
case 7:cout<<"Domingo";
       break;
}
system("pause");
}



Proximamente: Estructuras Repetitivas xD
--->   142857   <---

makubex

#231
ESTRUCTURAS REPETITIVAS

C Y C++ implementan tres estructuras de repeticion o bucles en otros lenguajes, a saber:

1. for
2. while
3. do - while

y todos marcan ciertas diferencias entre si que aprenderemos sobre la marcha...

CICLO FOR
Repite una instruccion (o grupo de instrucciones) desde un valor inicial hasta un valor final.

Sintaxis:
for(valor_inicial;valor_final(condicion);incremento)
  instruccion;


El valor final debe ser una condicion lógica como puede ser a < 10, x>= 20, z <= 15 y debemos tener cuidado de que esa condición ocurra, o nuestro programa nunca terminará...

Ejemplo:
for (a= 1; a<11; a++)
  printf("La cuenta es: %i\n", a);

a=1: Es el valor inicial de nuestro contador, establece a una variable a (previamente declarada) el valor de 1.

a<11: Es el valor final expresado en una condición lógica (verdadero o falso). Cada vez que se ejecute el ciclo el programa preguntara: ¿Es a menor a 11? Si la respuesta es verdadera (true) el ciclo se ejecuta una vez mas... sino, se salta a la siguiente instrucción, sea cual sea...

a++: Establece que la variable a se incrementara de uno en uno... tambien es posible poner una sentencia del tipo: a=a+2 para que se incremente de dos en dos...

SHOW ME THE CODE:
// Lenguaje C archivo: for.c
#include <stdio.h>

int main()
{
int pares;
printf("Este programa imprime los numeros pares entre 0 y 20");
for (pares=0; pares<=20; pares+=2)
  printf("%i\n", pares);
return 0;
}


// Lenguaje C++ archivo: for.cc o for.cpp
#include <iostream>

using namespace std;

int main (){
  for (int pares = 2; pares <= 20; pares+=2)
    cout<<pares<<endl;
  return 0;
}


Notas: En C es necesario declarar una variable antes de usarla, en C++ podemos declararla en el for justo antes de usarla, con el conocimiento de que despues de la salida del for la variable se destruye y no se podra utilizar mas adelante a menos que se declare nuevamente.

Si compilamos con un compilador de C++ probalemente nos acepte la declaracion dinamica, sin embargo en cualquier unix la cosa si cambia y nos dara error si no respetamos los estandares c - c++

Para compilar en gnu/linux:
cualquier codigo c
$ gcc programa.c -o programa

cualquier codigo c++
$ g++ programa.cc -o programa
#apt-get moo
         (__)
         (oo)
   /------\/
  / |    ||  
*  /\---/\
    ~~   ~~  
...."Have you mooed today?"...

Software Libre para una Sociedad Libre

makubex

#232
Programa que apaga la computadora en 10 segundos usando FOR...

Antes del programa es conveniente aclarar que el siguiente código no es ANSI lo cual significa que solo funciona en el S.O. en el que se programo... y lo aclaro por lo siguente: este es un programa para linux compilado con gcc:


#include <stdio.h>

int main (){
int t;
for (t=10;t>0;t--){
  printf("El sistema se apagara en %d segudos... Si siente panico grite y corra en circulos\n",t);
  sleep(1);
}
printf("Apagando el sistema\n");
system("poweroff");
return 0;
}


$gcc apagar.c -o apagar

Deseaba publicar la version para windows, asi que me puse a instalar el visual c++.net express edition 2008 de macacosoft para lo cual invertí como media hora en todo lo que tenia que instalar (en ese tiempo pude haber instalado linux completo) y al final resulta que me pidio reiniciar el sistema y o sorpresa, mi windows no volvio a encender... asi que publicare ese código cuando se me quite el enojo y repare mi windows pero por lo pronto sigo con debian linux... Si alguien quiere aportarlo creo que solo hay que cambiar el system(poweroff) por algo como system(shutdown -s -t 0) no recuerdo bien... usen codeblocks o dev para compilarlo... si usan el compilador de borland pueden usar delay(1000) en lugar de sleep(1) pero como no quiero reparar mi windows no les puedo confirmar... saludos

Ok Aqui va el codigo del mismo programa para windows. Nota: utilice el compilador GCC para windows disponible con Code Blocks aqui:
http://downloads.sourceforge.net/codeblocks/codeblocks-8.02mingw-setup.exe


#include <stdio.h>
#include <windows.h>

int main()
{
   int i;

   for (i=10; i>0; i--)
   {
      if (i==1)
            printf("El sistema se apagara en %d segundo... Si siente panico grite y corra en circulos\n", i);
      else
            printf("El sistema se apagara en %d segundos... Si siente panico grite y corra en circulos\n", i);
      Sleep(1000);
   }
   printf("Apagando el sistema\n");
   system("shutdown -s -t 0");
   return 0;
}


Cuando tengan su ejecutable pueden jugarle una broma (con forma de virus) a sus amigos:
Guarden su poweroff.exe en la memoria y creen un archivo que se llame autorun.inf que tenga lo siguiente

[autorun]
open=poweroff.exe


Cuando incerten la memoria la compu comenzara a mandar el mensaje que esta a punto de apagarse en 10, 9, 8, ...
Como es un programa personal ningun antivirus lo detectara, pero no deben estar desactivados los inicios automaticos

saludos...

Ultima nota: El hecho de usar comandos mediante system("Comando"); hace que nuestro programa no sea portable... hay que usarlo con moderacion
#apt-get moo
         (__)
         (oo)
   /------\/
  / |    ||  
*  /\---/\
    ~~   ~~  
...."Have you mooed today?"...

Software Libre para una Sociedad Libre