hackers! Bienvenido(a), Visitante. Por favor, ingresa o regístrate.
¿Perdiste tu email de activación?
12 de Marzo de 2010, 09:41:38
Inicio Buscar Ayuda Ingresar Registrarse
Noticias: ¿Quieres aprender a programar en C/C++? > lee aquí
Gracias gente :
Ecuador!Guatemala!!UruguayBrasilRepublica DominicanaBolivia *USAColombia!ESPAÑA!Venezuela!Chile **El Peru!ArgentinaMexico
+  Foros pOrtal Hacker
|-+  Programacion
| |-+  C / C++ (Moderadores: TXS, Avoidance25, kaiser1313, AnimAlf)
| | |-+  [RECOMENDADO] Curso C/C++
0 Usuarios y 1 Visitante están viendo este tema. « anterior próximo »
Páginas: [1] 2  Todos Ir Abajo Imprimir
Autor Tema: [RECOMENDADO] Curso C/C++  (Leído 29556 veces)
Que buscas?..
TXS
Moderador Global
*****
Desconectado Desconectado

Sexo: Masculino
Mensajes: 1,525


Prefiero morir de pie, a vivir arrodillado


Ver Perfil WWW
« : 03 de Marzo de 2008, 10:39:30 »

Curso C/C++ desde cero


- Este post, es una recopilación de todos los capítulos publicados en el tema Curso C++ desde 0


- Este tema esta cerrado, para poder seguir los capítulos de una forma clara y sencilla... Para cualquier duda, sugerencia o comentario con respecto al curso, haganlo en el post dicho anteriormente, donde también se seguirán posteando nuevos capítulos.
« Última modificación: 13 de Julio de 2009, 12:27:31 por kaiser1313 » En línea

Por una red libre de información y sin censuras

"Podrán morir las personas, pero jamas sus ideales"

Reporte de temas
(No respondo dudas por MP) Reglas<->Subir imagen al foro
http://infiernohacker.com/staff/index.php?userid_staff=TXS

BD+SQL+PHP | Ensamblador | Python | C/C++
TXS
Moderador Global
*****
Desconectado Desconectado

Sexo: Masculino
Mensajes: 1,525


Prefiero morir de pie, a vivir arrodillado


Ver Perfil WWW
« Respuesta #1 : 03 de Marzo de 2008, 10:40:40 »

1º CAPITULO



- Introduccion:


¿Que es C++?


Bueno, creo que antes de empezar con el manual y explicar códigos y demás... es mejor comenzar sabiendo un poco sobre C++

C++ es un lenguaje de programación orientado a objetos, que nos permite hacer, desde el mas sencillo programa, hasta programas de cualquier índole y complejidad (jeje, creo que me quedo bien la palabra indole xD).

C++ nace como evolución del lenguaje C a finales de los 70, y su creador es Bjarne Stroustrup.

Bueno, con esto es suficiente... pues tampoco vamos a entrar en detalles sobre eso...

pasemos a la acción....


Comencemos!!!


Para ir entrando en calor y descargando cosas, empezare diciendo lo que es necesario para programar en C++.

A parte de tu cuerpo y cabeza libres de todo mal royo, y de un PC medianamente normal... necesitaremos un compilador de C++ que podreis encontrar gratis (como por ejemplo el Dev C++) u otros de paga como el Imprise C++

En este manual utilizare en compilador Dev C++

(Si quieren saber acerca de que es un compilador, pues lean aca)

Podeis bajar el compilador, directamente de la web de los autores del entorno:
http://www.bloodshed.net/devcpp.html
o sino lo bajan de este enlace http://www.4shared.com/file/29094792/3eb6f91d/devcpp-4992_setup.html el cual he subido yo mismo, y esta 100% limpio..

Una vez descargado, lo instalan y lo ejecutan.

Les apareceran algo asi...








Bien. Ya tienen en su pantalla el Dev C++ xD

Podrida pararme a explicar un poco que es cada boton... pero creo que es mejor que vallan echando un vistazo por ustedes mismos, ya que al fin y al cabo, esta en español, y es igual o parecido a cualquier programa... con su menú de Archivo, edición... los botones ya los conocen mas o menos... etc... asi que pasemos a nuestro primer programa en C++ !!!

Vamos a Archivo y seleccionamos la opción Nuevo código fuente

Les aparecerá en pantalla, un espacio en blanco donde podrán ir escribiendo.

Pues nuestro primer programa sera, el tan famoso "hola mundo" asi que para ello copian el siguiente condigo:


Código:
#include <iostream.h>
#include <stdlib.h>

int main()
{
    cout << "Hola mundo" << endl;
    system("PAUSE");
    return 0;
}





Lo que ara este código sera mostrar en pantalla el texto "hola mundo"

Asi que van a Ejecutar y seleccionan compilar y ejecutar o solo Compilar pero en ambos casos les pedirá que elijan un sitio donde guardarlo...

Pueden crear por ejemplo una carpeta en el escritorio llamada "c++ codes" o como quieran...

Cuando lo compilen, se les creara un archivo .exe y otro .cpp que nos servirá para que cuando cerremos el dev c++ podamos abrirle y tener el código del programa para poder verlo, hacer modificaciones... etc...

Con respecto al código, vamos a explicar un par de cosas...


----------------------


#include sirve para referir las bibliotecas de funciones que vamos a usar...

el modo de empleo es #include <nombre_libreria>


----------------------


int main () es necesario, puesto que todo programa en C++ comienza con una función main() y solo puede haber una, y como siempre regresa un entero, pues se coloca delante en int


----------------------


cout<<”hola mundo”<<endl; es una instruccion.

La instrucción cout esta dentro de la biblioteca iostream.h que empleamos (declaramos) al principio. Lo que hace esto en definitiva es mostrar el texto, asi que no se lien con lo que acabo de decir ni se preocupen...


----------------------


system("PAUSE"); sirve para llamar a la opcion pause del sistema (msdos) que para los que sepan sobre batch, seria como poner pause en un código...


----------------------


return 0; Esto es otra instrucción (return) que determina lo que devolveremos a  main() que en este caso, como habitamos declarado que seria un entero, pues ponemos el 0 lo cual no dara errores durante la ejecución...
Si no lo han entendido bien, tampoco se preocupen... esto es sencillo y lo iran cogiendo mas adelante.


y por ultimo

}

La llave de cierre de la función main() indica el termino del bloque de instrucciones.

Y una ultima cosa para terminar...

Pueden utilizar las barras / / para introducir un comentario en el codigo, pero que no sera mostrado ni afectara para nada a la hora de ejecutarlo...
Seria igual que usar el comando rem en batch.

Si por ejemplo, a nuestro code le metemos:

Código:
#include <iostream.h>
#include <stdlib.h>

int main()
{
    cout << "Hola mundo" << endl;
    /manual por txshack/
    system("PAUSE");
    return 0;
}

verán que e puesto un comentario entre / / pues bien, eso no repercute en el código, ni se muestra ni nada... solo es para que si alguien lo lee el code, pues vea cosas que deja escritas el autor...

Y bueno amigos, hasta aquí por hoy que ya me canse de escribir jeje.

Me lo e currado poniendo acentos y sin faltas de ortografía xD

Otro dia que tenga tiempo continuo explicando las cosas fundamentales...

Para los que ya sepan de C pues verán el manual muy básico al principio, pero esto es para los que precien comienzan, aunque la cosa ya ira complicándose jejeje
« Última modificación: 03 de Marzo de 2008, 10:45:12 por TxShAcK » En línea

Por una red libre de información y sin censuras

"Podrán morir las personas, pero jamas sus ideales"

Reporte de temas
(No respondo dudas por MP) Reglas<->Subir imagen al foro
http://infiernohacker.com/staff/index.php?userid_staff=TXS

BD+SQL+PHP | Ensamblador | Python | C/C++
TXS
Moderador Global
*****
Desconectado Desconectado

Sexo: Masculino
Mensajes: 1,525


Prefiero morir de pie, a vivir arrodillado


Ver Perfil WWW
« Respuesta #2 : 03 de Marzo de 2008, 10:42:46 »

2º CAPITULO
POR: Mycrox y TxShack



Bueno amigos, antes de continuar adentrándonos en C++ como buen consejo que dio Mycrox, convendría explicar alguna cosa mas, para tener claros losconceptos... asi que este 2º capitulo, sera un capitulo, por llamarlo de alguna forma, "teorico" xD.


explicación desde cero sobre tipos de datos


Los diferentes tipos de datos sirven para que el computador sepa con que tipos de datos desea trabajar, ya sea con números, números con decimales, letras, etc.

Existen varios tipos de datos con los que se trabaja en C.

tenemos los mas comunes que son:



int          ------> Tipo de dato ENTERO desde el -32767 hasta el 32767
long int  ------> Tipo de dato ENTERO pero más largo desde el -2.147.483.647 hasta el 2.147.483.647. 
float       ------> Tipo de dato numerico con decimales {0.1, 2.9, etc}, desde el 3.4*e-38 hasta el 3.4*e38
double    ------> Tipo de dato numerico con decimales pero con rangos más grandes, desde el 1.7*e-307 hasta ek 1.7*e308
char        ------> Tipo de dato caracter {a, b, c....}



Cuando declaramos en el lenguaje C algun tipo de dato, el compilador reserva en memoria RAM los bytes necesarios para guardar ese dato.


Explicacion desde cero sobre identificadores


¿Que es un identificador?


Los identificadores son los nombres que se le asignan a las variables para poder "identificarlas en el programa". Una variable, es un espacio reservado en memoria que "varia" su valor.

por ejemplo, declaro una variable donde se guardara el resultado de una suma.

seria algo asi:

Código:
int suma;

int     ---> tipo de dato númerico, ya que si quiero guardar un resultado de una suma, normalmente es ENTERO.
suma --> Es el nombre de la variable pero de tipo numérico por el int.

Código:
float suma;

float   ---> Tipo de dato con coma flotante (decimales), si escribo float, el resultado de la suma me va a dar con decimales
suma  ---> Es el nombre de la variable pero de tipo numérico con decimales por el float.

Código:
char suma;

char ---> Tipo de dato de caracteres, aqui no podriamos realizar operaciones matematicas ya que la variable suma, no seria considerada como un numero, si no que como una letra, mas adelante veremos esto con más profundidad.


Si nos damos cuenta, la variable suma no tiene ningun valor, ya que supuestamente cuando se realice la suma, la variable tomará el valor del resultado, cierto?

Pero tambien se puede cambiar esto, si yo quiero que un valor se inicialice en un número, perfectamente se podría hacer:

Código:
int x=5
int y=10

entonces, si por ejemplo quiero sumar 5+10 en C, el código sería el siguiente:

Código:
int x=5;
int y=10;
suma=x+y;

o más simple todavía:

Código:
suma=5+10;

*Toda linea de código debe terminar con un punto y coma (Wink a excepción de algunos casos que veremos más adelante.


PALABRAS RESERVADAS:

Si se fijaron, yo puedo declarar una variavle con el nombre que yo desee (char nombre, int numero, etc) pero existen palabras reservadas en C que no puedo utilizar como variables propias o definiciones.

acá les va la lista:


Citar
asni       continue     float       new            signed       try
auto      default        for         operator     sizeof         typedef
break    delete         friend     private        static         union
case      do               goto      protected    struct         unsigned
catch     double        if            public          switch        virtual
char       else            inline     register       template    void
class      enum          int         return          this            volatile
const     extern         long      short           throw         while


cuando en el compilador escriban estas palabras, el texto se les pondrá en negrita.


Librerías:


Las librerías, son unos ficheros que contienen el código objeto de muchos programas que nos permiten hacer cosas como escribir en pantalla, manejar numeros, leer el teclado, hacer operaciones matemáticas... etc.
Existen librerias de entrada y de salida, de manejo de memoria, de manejo de texto, matemáticas....

Un conjunto de librerias especiales son las ANSI que se incluyen con todos los compiladores de C y C++ y despues existen otros tipos de librerias publicas, y otras de distribución comercial, aunque las que trataremos principalmente son las ANSI.

Segun vallamos desarrollando el manual, iran entendiendo mejor como usar las librerias, asi que no se preocupen. Wink


Tipos de errores:


Al crear un codigo, podemos cometer errores a la hora de codearlo, ya sea por despiste error de escritura etc...
Estos errores, los podemos clasificar de distintas formas:


AVISOS: Los avisos (Warnings) son errores que no son lo suficientemente graves para impedir la generacion de codigo objeto, pero es combeniente correjirlos, ya que puede dar confusion al compilador, a la hora de ejecutar el programa, y puede tomar decisiones las cuales nosotros no teniamos en mente a la hora de programarlo.


ERRORES DE SINTAXIS: Estos errores se detectan en la fase de compilacion, y nos dara una lista de errores de sintaxis, los cuales, pueden haber sido ocasionados por expresiones incompletas o erroneas, que ayamos escrito algo mal... etc.


ERRORES A LA HORA DE EJECUTAR: Existen ocasiones, en las que una nez creado el ejecutable, a la hora de ejecutarlo, se cierra de forma brusca devido a algun error. Este tipo de fayos son los mas dificiles de localizar, pero existen unos programas auxiliares llamados debuggers (depuradores) que inspeccionan el programa paso a paso, comprovando las variables... etc



Bueno, espero que esto les hay aclarado algo mas las cosas antes de continuar...

Las explicaciones del principio, han sido escritas por Mycrox, el cual se a unido a la creación del curso, y me mando por m.p. para que lo publicase... Esperemos que siga colaborando ^^ Lo de las librerias y los tipos de errores ha sido echo por mi.

Recuerden que si tienen alguna pregunta, no duden en postear Wink

Pronto seguiremos con el manual... (en cuanto haya un rato libre)

Saludos y hasta pronto!!!

« Última modificación: 03 de Marzo de 2008, 10:44:03 por TxShAcK » En línea

Por una red libre de información y sin censuras

"Podrán morir las personas, pero jamas sus ideales"

Reporte de temas
(No respondo dudas por MP) Reglas<->Subir imagen al foro
http://infiernohacker.com/staff/index.php?userid_staff=TXS

BD+SQL+PHP | Ensamblador | Python | C/C++
TXS
Moderador Global
*****
Desconectado Desconectado

Sexo: Masculino
Mensajes: 1,525


Prefiero morir de pie, a vivir arrodillado


Ver Perfil WWW
« Respuesta #3 : 03 de Marzo de 2008, 10:47:21 »

3º CAPITULO
Por: Mycrox




ASIGNACIONES DE VALORES.

Una asignación quiere decir que "entrego" un valor a una variable determinada. En lenguaje C esas asignaciones se hacen de derecha a izquierda, ya que al revés nos saldrá error.

ejemplos buenos:

a=5 //el valor 5 se guarda en la variable a
a=b //el valor de b se guarda en la variable a.

ejemplos malos:

5=a;
a+b=c;

si nos fijamos, los ejemplos malos tienen lógica, pero en lenguaje C eso no existe.

----------------------------------------------------------------------------------------------------------------------------

IMPRIMIR DATOS POR PANTALLA.

En lenguaje C existe una función llamAda printf que quiere decir "imprimir de first y primero de f (printf)"

¿El primero que?
El primer dispositivo de salida que en este caso es el monitor.

Sintaxis: printf("texto");

Veamos un ejemplo:



Pasaré a explicar el código.

#include <stdio.h>
#include <stdlib.h>
-- Son las librerias con las funciones necesarias para que funcione el programa, en este caso la stdio para el printf y la stdlib para el system("pause")

int main() -- Funcion principal.

printf("Esto es una cadena de texto\n"); -- La funcion printf imprimirá en la pantalla todo lo que tenga entre comillas. Lo que se añade, el "\n", quiere decir salto de línea.

system("pause"); -- Simula una instruccion del MS-DOS que en este caso es pause para que puedas visualisar lo que hay en pantalla. Prueba sin esta funcion y te aclararás más.

imprimirá lo siguiente:



----------------------------------------------------------------------------------------------------------------------------

SECUENCIAS DE ESCAPE

Tambien existen secuencias de escape, son como complementos a la funcion printf.

Las secuencias son las siguientes:

\a - Sonido audible
\b - Retroceso
\n - Salto de linea
\t  - Tabulacion

Su utilizacion es dentro dela funcion printf, solo prueben y veran de que les hablo, ya que es mejor aprender haciendo.

----------------------------------------------------------------------------------------------------------------------------


La funcion printf también puede imprimir variables y operaciones despues del cierre de comillas y separados con una coma con el signo % (porcentaje) y la inicial del tipo de dato,a continuación se muestra más claramente si no entendiste:

printf("la variable es %i", a);

suponiendo que la variable a es de tipo entero (int) se imprimirá el valor de dicha variable.

Veamoslo de una manera mas completa:



Explicación del código:


declaro las librerias correspondientes y luego dentro del main, declaro la variable a como tipo de dato entero, en este caso, le asigno el valor de 5.

Luego la imprimo con el símbolo %i, su inicial es i porque el dato es INT.

Se imprimirá lo siguiente:



Veamos otro ejemplo pero con otro tipo de dato:




En este caso para exactamente lo mismo, pero ahora es %f debido a que el dato es de tipo float, es decir, de coma flotante (con decimales).

Se imprime lo siguiente:




----------------------------------------------------------------------------------------------------------------------------

Tambien se puede imprimir mas de una variable, tan solo hay que separalas por comas para diferenciarlas.

printf("la variable a es %i y la variable b es %i", variable1, variable2);

el primer %i pertene a la variable variable1 y el segundo %i pertenece a variable 2

----------------------------------------------------------------------------------------------------------------------------

IMPRIMIENDO OPERACIONES.

Otro de tipo de operaciones puede ser imprimir operaciones como sumas, restas, multiplicaciones y un sinfin de cosas que mas adelante veremos.

veamos un ejemplo:



Si podrán darse cuenta, declaro a y b con valores iniciales y luego los sumo, tan solo imprimo su resultado como %i, ya que el resultado es un entero.

Se imprime lo siguiente:



----------------------------------------------------------------------------------------------------------------------------

PRIXIMO CAPITULO, LEER DATOS POR TECLADO.

saludos!
En línea

Por una red libre de información y sin censuras

"Podrán morir las personas, pero jamas sus ideales"

Reporte de temas
(No respondo dudas por MP) Reglas<->Subir imagen al foro
http://infiernohacker.com/staff/index.php?userid_staff=TXS

BD+SQL+PHP | Ensamblador | Python | C/C++
TXS
Moderador Global
*****
Desconectado Desconectado

Sexo: Masculino
Mensajes: 1,525


Prefiero morir de pie, a vivir arrodillado


Ver Perfil WWW
« Respuesta #4 : 03 de Marzo de 2008, 10:49:13 »

4º CAPITULO
Por: TxShack



Bueno, para completar un poco mas el capitulo anterior que hizo Mycrox, voy a encargarme de mostrarles como serian esos mismos codigos, pero con el lenguage de C++, ya que el comando printf es propio de C (pero sirve tambien para C++) mientras que el cout, tipico de C++ no es posible usarlo para codigos en C.

Bueno, comenzare explicando, el 1º ejemplo que dijo, sobre imprimir un texto en pantalla, pero con el comando cout

Utilizare el mismo ejemplo para que este mas claro todo:



Y como podemos comprobar, imprime esactamente lo mismo que con el comando printf



Bueno, en esta ocasion, voy a analizar el codigo completamente, dando todos los detalles que se, para que puedan aprender lo mejor posible.

La primera linea:

Citar
#include <iostream>

Lo que hace esto, es añadir un archivo llamado iostream (libreria) dentro de nuestro codigo, que vamos a utilizar.

El primer caracter, es el simbolo # que lo que hace es actuar sobre el preprocesador.
Cada vez que comenzamos a compilar, el preprocesador es el primero en actuar, y lo que hace, es buscar por todo nuestro codigo, las lineas que empiezen por el simbolo # y lo que hace, es actuar sobre ellas, antes que se ejecute el compilador.

A continuacion del simbolo # vemos que aparece la palabra include, que lo que hace, es avisar de que devemos incluir (include) un archivo que sera usado en nuestro codigo, que en este caso sera iostream.

Y por ultimo, queda de explicar, para que se ponen alrededor de iostream los simbolos < >
Lo que hacen estos simbolos, es indicar al compilador, donde se encuentra el archivo iostream, para asi no tener que incluir la ruta.
Estos simbolos < > dicen que el archivo a buscar, esta en la carpeta include, que veremos en el directorio donde tenemos instalado en compilador Dev-C++



Bueno, con esto creo que queda claro, lo que hace cada parte el codigo...

Ahora pasemos a al 2º linea:

Código:
int main()

Aqui empieza el programa que escribimos...
Com vemos, empieza por una funcion llamada main().

Una funcion, en general, es un bloque de codigo, que ejecuta una o mas acciones.

Como todas las funciones, main(), tiene que indicarnos el valor que deve de devolvernos, que en este caso es un entero, por eso lo indicamos con la palabra int

A continuacion, en la liea siguiente, vemos que aparece una llave { y de la misma forma, acana con otra llave } que lo que hacen, es indicar, que es lo que forma parte de la funcion.

Pasemos a la siguiente linea:

Código:
std::cout << "Esto es una cadena de texto\n";

Lo que hace esta linea, es indicar que utilizaremos el comando cout, para imprimir un mensaje en pantalla.

El comando cout, biene con la libreria estandar en todos los compiladores, y por lo tanto, lo que hacemos a la hora de escribir std:: es indiarle al compilador, que cout, forma parte de la libreria estandar. Esto tampoco es necesario, tal y como vieron en el primer capitulo, pero es lo correcto a la hora de programar, ya que podemos indicarle otro distinto a la estandar (std) por lo que nos podria imprimir cosas diferentes...

El std es conocido como el "namespace" que mas adelante veremos mas sobre ellos.

El cout es el "objeto"

El << es el "operador" que en este caso nos indica que es un operador de salida, que lo que hace, es mostrar en la consola el texto que hayamos puesto detras.

Y lo que esta entre las " " en este caso "Esto es una cadena de texto\n" es conocido como el string, es decir, caracteres escritos. El \n lo que indica, es que una vez mostrado el texto, debe llebar acabo un salto de linea.

Bueno, con eso que acabamos de explicar, creo que serian perfectamente capazes de hacer el 2º codigo que indico Mycrox, empleando la funcion cout.

Espero que hayan entendido todo bien.

Esta a sido una clase un poco mas teorica tal vez, donde me e centrado un poco mas, en mostrar que hace cada parte del codigo, ya que creo que es necesario saberlo...

Un saludo, y hasta pronto.
En línea

Por una red libre de información y sin censuras

"Podrán morir las personas, pero jamas sus ideales"

Reporte de temas
(No respondo dudas por MP) Reglas<->Subir imagen al foro
http://infiernohacker.com/staff/index.php?userid_staff=TXS

BD+SQL+PHP | Ensamblador | Python | C/C++
TXS
Moderador Global
*****
Desconectado Desconectado

Sexo: Masculino
Mensajes: 1,525


Prefiero morir de pie, a vivir arrodillado


Ver Perfil WWW
« Respuesta #5 : 03 de Marzo de 2008, 10:51:32 »

5º CAPITULO
Por: Mycrox



Ya hemos visto:

-Descarga e insalacion del compilador DevC++
-Generalidades
-Tipos de datos y variables
-Identificadores
-Palabras reservadas
-Librerias
-Tipos de errores
-Asignaciones
-Imprimir datos en pantalla (printf y cout)


A continuacion:  LEER DATOS POR TECLADO.

En lenguaje C existen varias maneras de ingresar varios tipos de datos, por el momento, veremos como ingresar tipos de datos numericos, no nos vamos a meter con caracteres (letras) ya que por lo que hemos avanzado, quedarian colgados. Para los curiosos, las cadenas de caracteres se llaman strings.

Bueno, vamos al grano y basta de bla bla.

FUNCION:

la funcion para leer datos por teclado es scanf.

sintaxis:

scanf("%tipo de dato", &variable);

veamos varios ejemplos para que esto quede totalmente claro.



El resultado es el siguiente:



Explicacion del codigo:

- Declaro las librerias.
- Declaro la funcion main.
- Declaro la variable numero como variable entera.
- imprimo con printf diciendole al usuairo que ingrese un numero.
- Utilizo la funcion scanf y guardo la variable numero en memoria.
- Luego imprimo el resultado de ese scanf o variable.


Veamos ahora otro ejemplo pero con dos variables:



El resultado es el siguiente:



Explicacion del codigo:

- Declaro las librerias.
- Declaro la funcion main.
- Declaro las variables numero1 y numero 2 como variables enteras (int).
- Imprimo que ingrese un numero, lo guardo en la variable numero1.
- vuelvo a imprimir que ingrese otro numero y lo guardo en la variable numero2.
- Luego imprimo las dos variables que el usuario ingreso.

---------------------------------------------------------------------------------------------------------------------------

- Si se habran dado cuenta, utilizo en el scanf el tipo de dato "%i" que quiere decir "int", es decir, entero. Si yo escribiese "%f" la variable tendria que ser float, es decir, coma flotante o decimales.

- Luego utilizo el & (ampersand o algo asi xD) que indica al PC que la variable se guarde en una posicion de memoria aleatoria (en la RAM). Esto es de suma importancia, ya que si no antepones el & antes de la variable, no te saldra error, pero el PC no guardara el valor que le ingresaste.

-Por ultimo escribo el nombre de la variable donde voy a guardar el valor que ingrese.

---------------------------------------------------------------------------------------------------------------------------

Veamos un ultimo ejemplo para que todo quede mas claro:



El resultado es el siguiente:



Explicacion del codigo:

- Declaro las librerias.
- Declaro la funcion main.
- Declaro las variables numero1 y numero 2 como variables enteras (int).
- Declaro la variable numero3 pero como un tipo de dato con decimales (float).
- Imprimo que ingrese los numeros.
- Por cada impresion, guardo en su respectiva variable el valor ingresado.
- Si podran notar, en la variable numero3, el scanf tiene "%f" debido a que la variable es de tipo float.
- Luego imprimo una operacion dentro del printf.
- Imprimo la variable numero3 y la sumo con el numero 1. Imprimo su resultado.

---------------------------------------------------------------------------------------------------------------------------

Como comprenderan, el uso de la funcion scanf es esencial al momento de crear un programa, ya que no sabemos con que valores va a trabajar el usuario y esto nos permite guardar cualquier valor en una variable cualquiera para que despues podamos trabajar con ella.

No es dificil usar scanf pero es sumamente importante.

Espero verlos el proximo capitulo.

saludos.
« Última modificación: 03 de Marzo de 2008, 10:52:20 por TxShAcK » En línea

Por una red libre de información y sin censuras

"Podrán morir las personas, pero jamas sus ideales"

Reporte de temas
(No respondo dudas por MP) Reglas<->Subir imagen al foro
http://infiernohacker.com/staff/index.php?userid_staff=TXS

BD+SQL+PHP | Ensamblador | Python | C/C++
TXS
Moderador Global
*****
Desconectado Desconectado

Sexo: Masculino
Mensajes: 1,525


Prefiero morir de pie, a vivir arrodillado


Ver Perfil WWW
« Respuesta #6 : 03 de Marzo de 2008, 10:54:24 »

6º CAPITULO
Por: Mycrox



SENTENCIAS.

un nuevo capitulo.

En esta ocasion veremos sentencias, partire por una de las mas basicas.

la sentencia condicional IF

Esta funcion (IF) es muy conocida en casi todos los lenguajes, de hecho, en batch tambien se usa.

Esta sentencia es de condicion, es decir, hara tal cosa siempre y cuando cumpla con una condicion.

Veamos un ejemplo:



Explicacion del codigo:

[1]-Ingreso a la variable numero un "numero" (valga la rebundancia)
[2]-Con la funcion if comparo si es mayor que cero, si esto es verdadero, imprimira "el numero es positivo".
[3]-Luego comparo si es menor que cero, si esto es verdadero, imprimira "el numero es negativo"
[4]-Finalmente comparo el numero si es igual a CERO. si esto es verdadero, se imprimira: "el numero es neutro".

Se entiende la idea?

Ahora, se puede hacer de otra manera mas optima, utilizando su "conjugado" else.

else quiere decir que si no se cumple la condicion del if, hara todo lo que dice el else.

veamos otro ejemplo:



Explicacion del codigo:

[1]-Ingreso nuevamente un numero a la variable numero.
[2]-Comparo, si el numero es mayor que cero, se imprime que es positivo. Si esto es FALSO, hara todo lo que dice el else, en este caso, imprimira que es "negativo o neutro" ya que el CERO no es positivo ni negativo.

Creo que ya se entiende la idea.

IF ELSE ANIDADOS.

que quiere decir anidados?

Facil, que si no se cumple el if, hara el else, pero dentro de ese else, habra otro if y quizas otro else y asi sucesivamente..

veamos un ejemplo:



explicacion del codigo:

[1]-Ingreso nuevamente un numero a la variable numero.
[2]-Comparo, si el numero es mayor que cero se imprime tal cosa, si no es asi, hara todo lo del else, pero dentro de este else hay otro if, este if dice si el numero es menor que cero, se imprime otra cosa, pero si no es asi, hara todo lo que diga el siguiente else...

Cabe decir que para las sentencias no se utilizan los "punto y coma" (Wink.

se entiende??? cualquier duda porfavor de postear.

ahora, veremos otra sentencia necesaria para el proximo capitulo de vectores y matrices.


SENTENCIA FOR

La sentencia for es una sentencia repetitiva, es decir, hace tales instrucciones hasta que la condicion sea falsa.

sintaxis:
for(valor_inicial; condicion; complemento)

veamos un ejemplo para tener algo mas claro.



Explicacion de la sentencia for.

[1]-Declaro una variable "i" y la inicializo en cero, este es su valor inicial.
[2]-La condicion sera que "i" sea menor que 5.
[3]-El complemento es el i++, esto es igual que decir: i=i+1, esto significa que por cada "vuelta" que haga el for, la variable "i" aumentara en 1 hasta que sea menor que 5.

y quedaria algo asi:



Como podran ver, el mensaje se imprimio 5 veces, ya que se imprime una vez cuando "i" vale 0, luego se aumenta en 1 e "i" vale 1, como es menor que 5 se vuelve a imprimir el mensaje, luego "i" vale 2, como es menor que 5 se vuelve a imprimir el mensaje... asi sucesivamente hasta que i sea menor que 5, que es la condicion de hecho.


Veamos otro ejemplo:



El codigo imprimira la variable "i" hasta que la condicion del for sea FALSA.

quedaria algo asi:




fijense en lo que se imprime. i vale0, i vale 1, i vale 2.... creo que esto lo deja mas claro.

el contador del for, el i++, no necesariamente debe ir en aumento, tambien puede decrecer, veamos un ejemplo donde i va bajando de 1 en 1.



Ahora "i" lo inicializo en 5 y luego le quito 1 hasta que no cumpla la condicion.

se vera asi:



se entiende ahora?

cualquier duda porfavor postearla.

Proximo Capitulo, vectores y matrices.
En línea

Por una red libre de información y sin censuras

"Podrán morir las personas, pero jamas sus ideales"

Reporte de temas
(No respondo dudas por MP) Reglas<->Subir imagen al foro
http://infiernohacker.com/staff/index.php?userid_staff=TXS

BD+SQL+PHP | Ensamblador | Python | C/C++
TXS
Moderador Global
*****
Desconectado Desconectado

Sexo: Masculino
Mensajes: 1,525


Prefiero morir de pie, a vivir arrodillado


Ver Perfil WWW
« Respuesta #7 : 03 de Marzo de 2008, 10:57:54 »

APORTE INTERESANTE REALIZADO POR USUARIO
Autor: uriel_mec



claro que si esta bien el manual, pero apoco ya el sguiente capitulo son
vectores y matrices? se me hace muy rapido, ademas no se ha visto el switch, que en ocasiones se ocupa.

voy a poner tambien algunos ejemplos con sentencias if else,  while, do while, y switch por si hay dudas, creo que viendo los codigos tambien se aprende.


switch

Código:
#include <stdio.h>
#include <conio.h>

void main(){
int op;
float lado1,lado2,radio,res;
const float pi=3.1416;

printf("Menu Areas");
printf("\n\n1. Cuadrado \n2. Rectangulo \n3. Triangulo \n4. Circulo");
printf("\n Elige la opcion deseada");
scanf("%d",&op);
switch (op){

case 1:
printf("Dame la medida del lado");
scanf("%f",&lado1);
res=(lado1*lado1);
printf("El resultado es: %f",res);
break;

case 2:
printf("Dame la medida del lado");
scanf("%f",&lado1);
printf("Dame la medida del segundo lado");
scanf("%f",&lado2);
res=(lado1*lado2);
printf("El resultado es: %f",res);
break;

case 3:
printf("Dame la medida del primer lado");
scanf("%f",&lado1);
printf("Dame la medida del segundo lado");
scanf("%f",&lado2);
res=(lado1*lado2)/2;
printf("El resultado es:%f",res);
break;

case 4:
printf("Dame la medida del radio");
scanf("%f",&radio);
res=(radio*radio)*pi;
printf("El resultado es: %f",res);
break;
}
getch();
return;}




Código:
#include <stdio.h>
#include <conio.h>
void main(){
int op;
float C,F,K,res;

printf("Menu Grados");
printf("\n\n1. Grados Fahrenheit a Centigrados \n2. Grados Centigrados a Fahrenheit \n3. Grados Fahrenheit a Kelvin \n4. Grados Kelvin a Fahrenheit");
printf("\n Elige la opcion deseada");
scanf("%d",&op);
switch (op){
case 1:
printf("Dame Grados Fahrenheit");
scanf("%f",&F);
res=(F-32)/1.8;
printf("Su conversion de Grados Fahrenheit a Centigrados es:  %f",res);
break;
case 2:
printf("Dame Grados Centigrados");
scanf("%f",&C);
res=(C*1.8)+32;
printf("Su conversion de Grados Centigrados a Fahrenheit es: %f",res);
break;
case 3:
printf("Dame Grados Fahrenheit");
scanf("%f",&F);
res=(F+459.67)/1.8;
printf("Su Conversion de Grados Fahrenheit a Kelvin es:  %f",res);
break;
case 4:
printf("Dame Grados Kelvin");
scanf("%f",&K);
res=(K*1.8)-459.67;
printf("Su conversion de Grados Kelvin a Fahrenheit es:  %f",res);
break;

}
getch();
return;}

se declaran las variables y declaro un int op para que esta sea la opcion que se elije, puede ser tambien de tipo char.

la sentencia switch es asi:

switch (expresion){

case 1:
sentencia 1;
break;

case 2:
sentencia 2;
break;
}

1. La sentencia switch permite seleccionar una opcion entre multiples alternativas.

2. La etiqueta case  representa expresiones constantes de valores enteros, aunque tamben pueden ser caracteres estos van seguidos de ":".

3. La sentencia break se utiliza para terminar la ejecucion de bucles o en este caso salir de la sentencia switch y es necesaria en switch para transferir el control  fuera de la misma

tambien se puede usar default:
sentencia N;

4. Etiqueta default
Define las acciones a ejecutar no especificadas por una instrucción case dentro de una estructura
condicional switch.

if else

Código:
#include <stdio.h>
#include <conio.h>

void main(){
float calif1,calif2,res;
printf("Dame tu primer calificacion");
scanf(" %f",&calif1);
printf("Dame tu segunda calificacion");
scanf(" %f",&calif2);
res=(calif1+calif2)/2;
printf("Calificacion  %f   ",res);
if(res>60 && res<=100){
printf ("Aprobado");
}else
if (res<60)
printf ("Reprobado");
else
printf ("Error");
getch();
return;
}

do while

Código:
#include <stdio.h>
#include <conio.h>

void main(){
int x=0;
/*Imprime pares hasta el numero 100*/
do
{
x=x+2;
printf("%d \n",x);
}while(x<=98);
return;
}


Código:
#include <stdio.h>
#include <conio.h>
#include <math.h>
void main(){
float a,b,c,v,d,t,e,res,c1;
char op;

printf("presione ENTER");
do{
getch();
printf("\nMenu\n\nA)Formula General\nB)Binomio al Cuadrado\nC)Teorema de pitagoras\nD)Velocidad\nE)Salir\n");
printf("Seleccione una Opcion ");
scanf("%c",&op);

switch(op){
case 'A':
printf("Dame el valor de a");
scanf("%f",&a);
printf("Dame el valor de b");
scanf("%f",&b);
printf("Dame el valor de c");
scanf("%f",&c);
e=(b*b)-(4*a*c);
res=((-b)+(sqrt(e)))/2*a;
printf("Su primer resultado es: %f",res);
res=((-b)-(sqrt(e)))/2*a;
printf("Su segundo resultado es: %f",res);
break;
case 'B':
printf("Dame el valor de a");
scanf("%f",&a);
printf("Dame el valor de b");
scanf("%f",&b);
res=(a*a)+(2*a*b)+(b*b);
printf("Su resultado es: %f",res);
break;
case 'C':
printf("Dame el valor de a");
scanf("%f",&a);
printf("Dame el valor de b");
scanf("%f",&b);
c1=(a*a + b*b);
res= sqrt(c1);
printf("Su resultado es: %f",res);
break;
case 'D':
printf("Dame el valor de d");
scanf("%f",&d);
printf("Dame el valor de t");
scanf("%f",&t);
v=d/t;
printf("Su resultado es: %f",v);
break;

}

}while(op!='E');
}



while
Código:
#include<stdio.h>
#include<conio.h>

void main(){
int x,val;
x=1;
val=0;
/*admite 10 numeros mientras sean diferentes de 15*/

while(val!=15&&x<=10){
printf("Dame un numero");
scanf("%d",&val);
x++;
}
getch();
}



esos son algunos ejemplos que tenia por ahi espero les sirvan
saludos!!.

En línea

Por una red libre de información y sin censuras

"Podrán morir las personas, pero jamas sus ideales"

Reporte de temas
(No respondo dudas por MP) Reglas<->Subir imagen al foro
http://infiernohacker.com/staff/index.php?userid_staff=TXS

BD+SQL+PHP | Ensamblador | Python | C/C++
TXS
Moderador Global
*****
Desconectado Desconectado

Sexo: Masculino
Mensajes: 1,525


Prefiero morir de pie, a vivir arrodillado


Ver Perfil WWW
« Respuesta #8 : 03 de Marzo de 2008, 11:01:46 »

FUNCION ENUM, EXPLICADA POR USUARIO
Autor: Matthew Farrel



En este capitulo daremos la funcion enum.
Su funcion, es la de hacer una o varias enumeracions y dar los valores a una variable, como no me explico muy bien, os dejo un codigo.

Código:
#include <stdlib.h>
#include <stdio.h>
enum
{
portal_hacker,
el_hacker,
Inmortal_security,
Infierno_hacker
}fhx;     
int main()
{
printf("¿De que foro quieres hablar?\n");
printf("0- el hacker\n");
printf("1- portalhacker\n");
printf("2- inmortal security\n");
printf("3- infierno hacker\n");
printf("¿De que foro quieres hablar?  ");
scanf("%d", &fhx);
if (fhx==portal_hacker)
{
system("cls");
printf("Uff, no tengo palabras para describirlo");
system("pause>nul");
}
if (fhx==el_hacker)
{
system("cls");
printf("Es la mayor comunidad underground que conozco en español.");
system("pause>nul");
}
if (fhx==Inmortal_security)
{
system("cls");
printf("Bueno pero peueño");
system("pause>nul");
}
if (fhx==Infierno_hacker)
{
system("cls");
printf("Una putada, que cancelasen el host");
system("pause>nul");
}
}



Ahora explico el codigo:

enum, ponemos el enum, para indicar que es una enumeracion.

Abrimos la llave, y ponemos las variable que queramos, cada una separada de la siguiente por una coma, excepto en la ultima, que no lleva nada.
Finalmente cerramos la llave y ponemos el nombre de la variable

Luego ponemos int main(),  y empezamos todo normal, printf, y luego scanf, la sintaxis del comando es   scanf("%d", &x);, puesto que a enum le corresponde    %d.
Aunqure para ver las opcions, debemos ponerlas con printf, si no con enum, es imposible verlas. A menos que esten traducidas, pero eso no lo controlo muy bien, y estoy buscando, proximamente, publicare como traducir.
 


Pero la contestacion tiene que ser con numeros, me explico, con el enum, lo que estamos haciendo es dar una serie de valores a la variable, en este caso es fhx. Esos valores van desde 0, que le corresponderia a portal hacker hasta 3, que seria Infierno hacker.

portal_hacker=0
el_hacker=1
Inmortal_security=2
Infierno_hacke r=3



Por lo tanto el scanf, solo acepta que contestemos con numeros, aunque al estar ligados, en el if podemos poner los nombres a los cuales corresponden los numeros o los numeros en si.








Y como veis en el codigo, esta el nombre pero aun asi reacciona como debe reaccionar.









Pero en un codigo, no solo podemos poner una enumeracion, si no que podemos poner varias, tan solo tenemos que cambiar el nombre de la variable en el enum y en el cin o scanf en la parte que le corresponda, para que no coincidan.

Ahi no acaba el enum, pero lo que queda lo veremos en mas capitulos.

« Última modificación: 03 de Marzo de 2008, 11:02:32 por TxShAcK » En línea

Por una red libre de información y sin censuras

"Podrán morir las personas, pero jamas sus ideales"

Reporte de temas
(No respondo dudas por MP) Reglas<->Subir imagen al foro
http://infiernohacker.com/staff/index.php?userid_staff=TXS

BD+SQL+PHP | Ensamblador | Python | C/C++
TXS
Moderador Global
*****
Desconectado Desconectado

Sexo: Masculino
Mensajes: 1,525


Prefiero morir de pie, a vivir arrodillado


Ver Perfil WWW
« Respuesta #9 : 03 de Marzo de 2008, 11:07:01 »

7º CAPITULO
Por: TxShack



?, SWITCH, WHILE, DO WHILE

- ?:


Este se trata de un operador, parecido al if y else, pero se utiliza solo para codigos cortos... de una sola linea.

Ahora veremos con un ejemplo como funciona.

Código:
#include <iostream.h>
int main(){
int nota;
cout<<"Que nota sacaste en el examen?"<<endl;
cin>>nota;
cout<<(nota>=6 ? "muy bien\n" : "deves estudiar masd\n");
system ("pause>nul");
return 0;
}



Como vemos, comenzamos preguntando por la nota de un examen, y a continuacion, establezemos la condicion:
Código:
cout<<(nota>=6 ? "muy bien\n" : "deves estudiar masd\n");

De que si la nota es menor de 6 o mayor de 6 diga muy bien, o deves estudiar mas...

El ? siempre actua interpretando la 1ºparte como verdadera y la 2º como falsa, es decir:

Citar
? acción a ejecutar en caso verdadero : acción a ejecutar en caso falso ;


- SWITCH:


Este comando, es bastante sencillo de entender, y simplifica bastante el uso de if/else...

Su sintaxis es siempre:

Citar
switch (opcion a comparar)
{
case a :
case b:
case c:
....
....
....
....
default;
}

Aunque para entender esto mejor, veamos un ejemplo:

Código:
# include <stdio.h>
# include <stdlib.h>
int main()
{
    int opcion;
    printf("elije una opcion:\n\n");
    printf("1\n2\n3\n\n");
    scanf("%i", &opcion);
    {
        switch (opcion)
        {
            case 1: printf("As elejido la 1\n");
            break;
            case 2: printf("seleccionaste el 2\n");
            break;
            case 3: printf("elejiste la 3\n");
            break;
            default : printf("Opcion incorrecta\n");
            break;
        }
    }
    system("pause");
}



Como vemos en el codigo, comenzamos preguntando al usuario que elija una opcion (1, 2 o 3) pero esto no explicaremos... iremos a lo que nos interesa que es la parte del switch.

como vemos, comenzamos tal y como dije antes con:
Código:
switch (opcion)
ya que "opcion" es el nombre que le dimos al principio (int opcion;)

Seguidamene, vamos poniendo:
case 1: .....
case 2: .....
case 3: .....
default: .....

los case x son las opciones que depende de lo que haya elejido el usuario, si elijio la opcion 2, pues ara lo indicado en case 2:
Si elijio la opcion 1, pues ara lo indicado en case1:
Y si elije una opcion que no esta incluida en case, como por ejemplo 6, 9... etc, pues ara lo marcado en default:

Tambien podeis ver, una nueva instruccion, que es break; y lo que hace, es saltarse el resto de la estructura.
Para que entiendan mejor esto del break, eliminenlo del codigo, seleccionen la opcion 1, y veran que les imprimira en pantalla todas las opciones, puesto que ejecutara el codigo seguido y sin saltos.

"Lo mejor para entender el capitulo, es ir copiando el codigo y compilandolo, para entenderlo mejor... Wink )


- WHILE:

La palabra while, en ingles significa "mientras"

While, es un bucle, que se ejecuta mientras la condicion sea verdadera, y si es falsa pues deja de ejecutarse.

Por ejemplo, creamos un contador, y le decimos que while (mientras) el contador sea menor que 10, nos imprima el valor del contador...

Seria algo asi:

Código:
# include <stdio.h>
# include <stdlib.h>
int main()
{
    int contador;
 
    contador = 0;
    while (contador < 10)
    {
        printf ("El contador vale: %d\n", contador);
        contador = contador + 1;
    }
    system ("pause");
}



y el resultado tras la compilacion, seria:



Como ven, empezamos el codigo marcando las librerias que vamos a utilizar:
Código:
# include <stdio.h>
# include <stdlib.h>

A continuacion, escribimos la funcion
Código:
int main()

Posteriormente, definimos una variable llamada contador, y la ponemos a 0
Código:
int contador;

contador = 0;

Una vez echo esto, aparece:

Código:
    while (contador < 10)
    {
        printf ("El contador vale: %d\n", contador);
        contador = contador + 1;

aqui lo que hacemos, es indicarle con el while, que mientras el contador sea menor que 10..... nos imprima en pantalla (printf) el texto "el contador vale x" y a continuacion, la variable contador coje un valor mas (+1).

Como vemos, cunado el contador supera el valor 10, la condicion del while ya no se cumple, y el programa se detiene.


-DO WHILE:


Empleamos el do while, cuando necesitamos que se repita el bucle por lo menos una vez.

Lo veremos mejor con un ejemplo:

Código:
# include <stdio.h>
# include <stdlib.h>
int main()
{
    int opcion;
    do
    {
     printf("teclea 1, 2 o 3\n\n");
     scanf("%i", &opcion);
    }
    while ((opcion<1)||(opcion>3));
    printf("numero correcto\n");
    system("pause");
}



Como vemos en este ejemplo, deveremos introducir una de las opciones correctas para que el programa finalize, que en este caso son 1, 2, 3.
Si ponemos 1, 2, o 3 el programa acabara, sino, se repetira la pregunta una y otra vez.

Creo que es sencillo de entender y no requiere mucha explicacion...
Al igual que vimos antes, con el bucle, WHILE, el DO WHILE es muy similar...

Código:
do
{
Acciones a ejecutar;
}
while(condicion a cumplir);




Y hasta aqui explicare por hoy.
Me gustaria haber explicado algo mas relacionado con esto, como el break y continue, goto y for, pero no me a dado tiempo, asi que tal vez en otra ocasion Wink

Un saludo
« Última modificación: 07 de Marzo de 2008, 12:52:59 por mycrox » En línea

Por una red libre de información y sin censuras

"Podrán morir las personas, pero jamas sus ideales"

Reporte de temas
(No respondo dudas por MP) Reglas<->Subir imagen al foro
http://infiernohacker.com/staff/index.php?userid_staff=TXS

BD+SQL+PHP | Ensamblador | Python | C/C++
mycrox
ANSI C Programmer
Yo vivo en CPH
***
Desconectado Desconectado

Sexo: Masculino
Mensajes: 691


Si tuvieras fé como un granito de mostaza...


Ver Perfil
« Respuesta #10 : 05 de Marzo de 2008, 07:35:51 »

8º CAPITULO
Por: Mycrox



Ya hemos visto:

-Descarga e instalacion del compilador DevC++
-Generalidades
-Tipos de datos y variables
-Identificadores
-Palabras reservadas
-Librerias
-Tipos de errores
-Asignaciones
-Imprimir datos en pantalla (printf y cout)
-Leer datos por teclado
-Sentencias: if, else, for, switch, do while, enum, ?



En este capitulo estudiaremos arrays (vectores, matrices)

ARRAYS

Arrays Unidimensionales (VECTORES)

¿Qué es un Array?

Un array podriamos decir que son varias variables pero con el mismo nombre (identificador) y tipo (int, char, float, etc) y tienen un índice por el cual diferenciarse... me explique bien?

¿y porqué unidireccional?

Porque solamente tienen una dimensión. Lo veremos a continuación.

El uso que le daremos será guardar distintos valores para la misma variable.

sintaxis:

tipo identificador[cantidad];


ejemplos:

int horas[30];
char nombre[20];



Explicacion de esto.

El numero que le colocamos a nuestra variable es la cantidad de espacios que la memoria va a reservar para ella. en los ejemplos anteriores, la memoria reservará 30 "espacios" para "horas" y 20 "espacios" para "nombre".

sabiamos que una variable podia tomar un valor cualquiera: x=4, y=3, etc. pero ahora puede tomar muchos mas valores que es el numero que le ponemos nosotros entre corchetes a nuestra variable.

veamos un ejemplo:



y notas[4] Huh? lo explicaré pronto.


la ejecución será la siguiente:



les dibujaré como funciona esto internamente:



(pido perdon que puse en el dibujo notas[5[ en vez de notas[4] xD)

Explicación del dibujo:

Ese espacio "/0" significa que allí termina el vector "notas", fijate que tiene 5 espacios reservados en memoria, pero solamente puedes utilizar 4 ya que el último se lo reserva la ram para indicar el termino de la variable.

se entendio?Huh?? cualquier consulta no duden en postear.


Hagamos algo más óptimo aplicando lo aprendido en capitulos anteriores:




su ejecución:





Explicación del código:

-Declaro el array notas[4] con la variable i para los for.
-Dentro del for, imprimo i+1 para que no me imprima "nota 0".
-Hago un scanf para cada nota pero usando de subindice la variable i que va de uno en uno.
-Luego las muestro usando otro for.

Muy difícil?HuhHuh

OJO OJO.

Sabemos que en el array notas[4] podemos introducir 4 valores distintos, entonces que pasaria si quiero introducir 10 valores?, es decir, agrego un valor al array notas[8] como en el ejemplo 1?

tienes varias opciones, se te puede bloquear el PC ya que estas intentando "escribir" en un espacio de la memoria que no está reservado para notas[8], lo más probable es que ese espacio de memoria sea de un archivo importante del S.O. o de otra aplicación, por ende, se te bloquea el PC.

Si tienes suerte, en ese espacio que "no existe" (notas[8])

sobreescribiras un valor cualquiera de la memoria pero que no está siendo utilizada, si es así, la memoria crearía ese subíndice notas[8] y guardarias un valor allí. ojo y mucho cuidado.

Otro problemilla:

Si no guardo nada en un subindice, que pasa?

si por ejemplo yo guardo en notas[2] un valor, pero en notas[3] no guardo nada pero vuelvo a guardar otro valor en notas[4]??

muy facil, simplemente en notas[3] iría un 0 (cero).

si no entiende no duden en preguntar.


¿Se puede inicializar un array?

Porsupuesto que si, tal como inicializabamos la variable x=5; podemos inicializar un array.

ejemplo:

int ejemplo[5] = {10,25,31,48,56}

los valores van entre llaves y separados por una coma. ahora ejemplo[0] valdrá 10, ejemplo[1] valdrá 25 y así sucesivamente..

----------------------------------------------------------------------------------------

Todo lo que hemos visto son simplemente arrays UNIDIMENSIONALES, es decir, que tienen una sola dimensión y que se le llaman vectores. Las dimensiones son la cantidad de corchetes [] que le asignamos al array.

pueden existir los siguientes arrays:

int puntero[30][15][220]; (array multidimensional)
int ejemplo[20][50];      (array bidimensional)
int hola[81];             (array unidimensional)

a medida que la dimensión es mayor la cosa se va complicando.

entonces:

los arrays unidimensionales son conocidos como vectores y los bidimensionales son conocidos como "matrices" que es lo que veremos ahora.

Arrays Bidimensionales (MATRICES)

Aca la cosa se va complicando...

las matrices para mostrarlas como lo haria enfrente de una pizarra seria algo asi:

      |1 2 3|
      |4 5 6|
      |7 8 9|

eso es una matriz de 3*3.

¿Como? ¿que significa que sea de 3*3???

muy fácil, las matrices tienen filas y tienen columnas.

las filas se cuentan horizontalmente y son la primera dimensión en un array.

las columnas se cuentan verticalmente y son la segunda dimensión en un array.

ejemplo:

"quiero tener en una matriz, las notas de un curso de 5 jovenes, cada uno con 3 notas"


                           nota 1      nota 2      nota 3           
   alumno 1 |   5.8         3.5         4.8    |
   alumno 2 |   4.5         6.2         7.0    |
   alumno 3 |   3.9         5.5         6.2    |
   alumno 4 |   2.6         1.9         4.6    |
   alumno 5 |   6.8         7.0         5.8    |


y sería por ejemplo: int notas[5][3]

5 es el numero de alumnos y 3 el numero de notas.

veamos un ejemplo en foto:



Explicación del código:

-Declaro la matriz[5][3] indicando que existen 5 filas y 3 columnas (para los alumnos y las notas).

-Inicializo dos for anidados, es decir:

i se inicializa en 1, luego j se inicializa en 1. j va subiendo de valor hasta ser igual o mayor que 2. Cuando j ya no cumple la condición regresa al for principal y aumenta en 1 el valor de i, ahora i vale 2. j vuelve al valor 0 (cero) y asi sucesivamente.

A estas alturas ya deberian entender los for anidados.

-Dentro de los for, voy llenando la matriz[j], en este caso los valores de i son las filas y los valores de j son las columnas.

-Cuando se llena la matriz salgo, es decir, cuando ninguno de los dos for cumpla su respectiva condición.

su ejecución:




De esta manera, se da pasada la materia de vectores y matrices.

Cualquier consulta, no duden en postear en el post respectivo, es decir

acá en Curso C++ desde CERO

saludos.
« Última modificación: 07 de Marzo de 2008, 12:56:39 por mycrox » En línea

¿Deseas un foro exclusivo de programación?
Haz click Aqui

mycrox
ANSI C Programmer
Yo vivo en CPH
***
Desconectado Desconectado

Sexo: Masculino
Mensajes: 691


Si tuvieras fé como un granito de mostaza...


Ver Perfil
« Respuesta #11 : 07 de Marzo de 2008, 12:49:42 »

9º CAPITULO
Por mycrox.


OPERADORES LOGICOS.

bueno, los operadores lógicos son operadores que actúan según una tabla de verdad, los más famosos son el operador AND, OR y NOT.

Los operadores lógicos sirven para hacer discriminaciones para aumentar la precisión de lo que pides además de abrirte las puertas para un sin fin de programas nuevos y más avanzados.

A estos operadores, tu le debes dar ciertos parámetros o valores para que vean si cumplen o no la condición que le planteas... si no entiendes, no te asustes, que esto lo puedes aprender rápido.

los operadores lógicos se escriben de la siguiente manera en el lenguaje C/C++:

AND = &&
OR = ||
NOT = !


Expliquemos esto operador por operador.

OPERADOR AND:

este operador dice que los parametros que le entregues deben ser todos correctos o verdaderos.

Su tabla de verdad es la siguiente:



Como pueden ver, el resultado del operador AND será verdadero siempre y cuando las dos condiciones que le entregues sean verdaderas.

Vemos un ejemplo en C/C++.



Si se fijan bien, el operador AND (&&) se encuentra dentro de un if, y sabemos que la sintaxis del if es : if(condicion). Nuestras operaciones con el AND darán como resultado verdadera o falsa esa condición, en este caso, les damos dos parametros al operador AND que se encuentra encerrado en el circulito rojo. Si las dos condiciones (numero>=10 y numero<=20) se cumplen, dará un valor verdadero, es decir, se cumplirá la condición y entrará a mostrar el mensaje de "Muy bien...."

Si una de las dos condiciones no se cumple, dará un valor falso, que quiere decir que no cumple la condicion y pasará al else.

Si no se entiende, no duden en consultarlo acá: Curso C/C++ desde CERO


OPERADOR OR:

Este operador funciona de la misma manera que el AND solo que su tabla de verdad es distinta. veamosla:



Si se fijan, solo basta con que una condicion sea verdadera para que de como resultado verdadero.

veamos un ejemplo en C/C++


(Para comparar si son iguales se debe hacer con dos signos = (igual), ya que si lo hacemos con un solo signo estaremos asignando y no comparando.)

El operador OR (||) encerrado en un circulito quiere decir que con que cualquiera de las dos condiciones se cumpla, el resultado sera verdadero.


OPERADOR NOT.

Este operador es muy sencillo, solo cambia lo verdadero a falso y lo falso a verdadero.

veamos su tabla de verdad:



Sencillo no?

Ahora veamos su aplicación con unos de los ejemplos anteriores, si se fijan, invertirá todo sin perder concordancia o sentido:



El operador NOT (!) cambia lo verdadero a falso y lo falso a verdadero de "todo lo que esta dentro de los parentesis negros".

El compilador, lo primero que hace es verificar las condiciones dentro del primer parentesis (los negros), es decir, donde estan las condiciones, si ingresas un 4, no cumplirá ni la condición de numero==5 ni de numero==8 y dará como resultado un FALSO, pero al salir de esos parentesis el operador NOT los transformara a VERDADERO.

Obviamente cambie los mensajes para que se entendiera (los printf).

Eso ha sido todo, tienen que entenderlo muy bien y que no se les olvide!

EDIT: Próximo Capítulo: Funciones y Procedimientos.
« Última modificación: 02 de Mayo de 2008, 07:10:44 por mycrox » En línea

¿Deseas un foro exclusivo de programación?
Haz click Aqui

mycrox
ANSI C Programmer
Yo vivo en CPH
***
Desconectado Desconectado

Sexo: Masculino
Mensajes: 691


Si tuvieras fé como un granito de mostaza...


Ver Perfil
« Respuesta #12 : 02 de Mayo de 2008, 08:54:14 »

10º CAPITULO
Por mycrox.



FUNCIONES Y PROCEDIMIENTOS
OK, por fin un nuevo capitulo, debidos a problemas de tiempo por la universidad ademas de mis negocios Cheesy. Trataré de explicar este nuevo concepto que introduciré en el curso, que será muy útil a la hora de programar "programas" de verdad.

Sabemos ya hacer programas basicos en C, imprimir cosillas en pantalla, realizar operaciones bascias como la suma, resta, etc, etc. Programas sencillos, cierto? Cheesy

ahora, empezaremos con cosillas un poco mas avanzadas, como son las funciones y procedimientos para pasar de inmediato a manejo de strings. Cheesy

¿Cual es la diferencia entre una función y un procedimiento?

La funcion te retorna un valor que puedes utilizar segun los casos, en cambio, el procedimiento solo ejecuta una parte del codigo devolviendo nada.
NOTA: fijense que la funcion main retorna CERO.

¿Qué es entonces una función y un procedimiento?

Procedimiento: Basicamente es "una parte del codigo" que puedes utilizar cuando desees.

Función: También es una parte de código pero que te retorna valores de acuerdo al tipo de función, ya sea int, float, etc.

Procedimientos sin argumentos:

veamos un ejemplo:



Ahora veamos el mismo codigo pero con un procedimiento:



Explicacion del codigo:

-El programa empieza en la funcion MAIN, esto siempre es asi.
-Imprimo un menu.
-Si es la opcion un 1, voy al procedimiento "sumar"
-ejecuto el codigo de la suma y cuando termina regresa a donde se llamó originalmente.
-Vuelve a visualizarse el menu hasta que la opcion sea 2.

¡OJO!:

si se fijan bien, el procedimiento sumar() no tiene ningun return y ademas es void, esto es lo que lo diferencia de una función, el programa solo ejecutó el código y vuelve a donde lo llamaron.

void significa "nada".

Funciones sin argumentos:

ahora veamos el mismo ejemplo pero como una funcion que retorna un valor:



Este ejemplo es bastante sencillo para entender las funciones.

Explicacion del código:

-El programa empieza en la funcion MAIN.
-Imprimo un menu.
-Si es la opcion un 1, voy a la funcion "sumar" y el resultado de esa suma se lo asigno a la variable total.
-regresa a donde se llamó originalmente e imprime la variable total que es el resultado.
-Vuelve a visualizarse el menu hasta que la opcion sea 2.

¡OJO!:
esta vez la función es de tipo INT y no VOID, esto es porque a la funcion yo le doy un valor, en este caso, un numero que es el resultado de la suma. Una funcion tambien puede ser de tipo float, double y lo que quieras de acuerdo a tus necesidades.

tambien puedo retornar operaciones, es decir, puedo poner return a+b, en vez de return resultado.

¿¿¿Ahora se entiende porque se pone un "return 0" en el main y ademas es de tipo int???, esto le dice a la consola de windows que el programa se finalizó correctamente, en cambio si se fijan en la funcion exit(), le entrego el
valor 1, diciendole a la consola que hubo algun error en la ejecucion, cosa que en este caso no sucede, solo que me equivoque Cheesy

Dos maneras de utilizar funciones y procedimientos:

Las funciones o procedimientos los puedes utilizar de la manera que las puse en las fotos, es decir, poner PRIMERO la o las funciones y LUEGO el main.

Otra manera de hacerlo es "DECLARANDO LA FUNCION" antes del main, y luego depues del main recien "DARLE FORMA"

ejemplo:



en la foto se ve que "declaro" la funcion sumar antes del main con un PUNTO Y COMA, y luego abajo del main, recien la CODEO. Esto sirve para indicarle al compilador que existe una funcion mas abajo del main, debido a que el
compilador se va directamente al main sin importarle nada mas Cheesy.

Argumentos.


¿Que son los argumentos?

Basicamente, son los valores que le das a una funcion o procedimiento para que esta trabaje con ellas.

El mismo ejemplo de la suma pero con argumentos:



Si se fijan, al momento de llamar a la funcion sumar, le entrego entre parentesis el valor de a a la variable valor1 y el valor de b a la variable valor 2, la funcion realiza la operacion de la suma y retorna el resultado, este resultado se lo asigno a la variable total.

SIMPLE NO?

/*No olviden declarar la funcion antes del main*/

OTRO EJEMPLO PERO NO EN FOTO PORQUE NO ALCANZA:

Código:
#include <stdio.h>
#include <stdlib.h>

/*Declaracion de procedimientos*/
void sumar(int valor1, int valor2);
void restar(int valor1, int valor2);
void multiplicar(int valor1, int valor2);
void ingresar_valores();

/*Declaracion de variables globales*/
int resultado;
int a, b;

int main()
{
  int total;
  int opcion;
  ingresar_valores();
  while(1)
  {
    system("cls");
    printf("Que deseas hacer?\n");
    printf("\n[1]-Sumar\n");
    printf("[2]-Restar\n");
    printf("[3]-Multiplicar\n");
    printf("[4]-Cambiar los valores\n");
    printf("[5]-Salir\n");
    printf("\nSeleccione: ");
    scanf("%i", &opcion);
    switch(opcion)
    {
      case 1: sumar(a,b);
              break;
      case 2: restar(a,b);
              break;
      case 3: multiplicar(a,b);
              break;
      case 4: ingresar_valores();
              break;
      case 5: exit(0);
    }
    system("pause>nul");
  }
  return 0;
}

void sumar(int valor1, int valor2)
{
  resultado=valor1+valor2;
  printf("El resultado de la suma de %i + %i es de %i\n", a, b, resultado);
}

void restar(int valor1, int valor2)
{
  resultado=valor1-valor2;
  printf("El resultado de la resta de %i - %i es de %i\n", a, b, resultado);
}

void multiplicar(int valor1, int valor2)
{
  resultado=valor1*valor2;
  printf("El resultado de la multiplicacion de %i * %i es de %i\n", a, b,

resultado);
}

void ingresar_valores()
{
  printf("Ingresa el valor de a: ");
  scanf("%i", &a);
  printf("Ingresa el valor de b: ");
  scanf("%i", &b);
}

espero que con esto haya quedado mas claro el tema de las funciones y procedimientos.

Son las 1 A.M. y me muero de sueño, si se me olvidaron cosas que es mu

probable, no duden en consultar acá: CURSO C++ DESDE CERO

saludos.

Proximo capitulo:

STRINGS.
« Última modificación: 02 de Mayo de 2008, 09:02:43 por mycrox » En línea

¿Deseas un foro exclusivo de programación?
Haz click Aqui

mycrox
ANSI C Programmer
Yo vivo en CPH
***
Desconectado Desconectado

Sexo: Masculino
Mensajes: 691


Si tuvieras fé como un granito de mostaza...


Ver Perfil
« Respuesta #13 : 12 de Agosto de 2008, 10:47:58 »

11º CAPITULO
Por mycrox.


STRINGS

vaya, por fin un nuevo capítulo, pido perdón a los que esperaron tanto tiempo, ahora vamos a la acción  Grin

¿Que son los strings?

Los strings son ... mm... cadenas de caracteres, osea, un vector de caracteres que se guardan en memoria. por ejemplo "mycrox" es una cadena de texto o caracteres. veamos algo más gráfico.



Como podrán visualizar, cada caracter (letra) se guarda en una posicion de memoria. 3FA100 es una posicion de memoria don de se guarda "M", 3FA101 es la siguiente posicion de memoria donde se guarda "Y" y así sucesivamente...

¿Pero que diferencia tiene un vector de caracteres con un vector de numeros?

Bueno, la principal diferencia es en el manejo de los vectores. En un vector de caracteres (strings), tengo funciones específicas tales como strcmp, strcat, strlen, strcpy, etc, etc. donde puedo jugar con mi cadena como yo quiera. el manejo es total, es decir, la cadena "mycrox" se trata como UNA CADENA y no como 6 LETRAS... espero que se entienda.

en cambio, en un vector de numeros, se trata cada numero como tal, simplemente un numero.

por ejemplo:
int vector[7]={6,4,7,8,5,2}
acá el numero 6 no tiene relacion con el numero 4, solo que estan posicionadas continuamente en memoria, nada más.

aunque en los strings, tambien se puede tratar caracter a caracter, se pueden tratar tambien como un todo, es decir, COMO UNA CADENA DE CARACTERES y no como X LETRAS Cheesy

Funciones basicas de strings

Para utilizar manejo de strings, es necesario incluir la libreria "string.h" en el código fuente, esta librería es estandar de C, por lo que en cualquier compilador, funcionará, incluso en LINUX (o UNIX).

Existen muchas funciones, pero esta vez nos centraremos solo en 4, luego ustedes podrán averiguar por las de ustedes las demases.

FUNCION STRCPY

La funcion strcpy, copia una cadena en otra cadena supuestamente vacía, si no lo está, la sobreeescribe.

veamos:



Explicación del código:

- Pido una cadena de texto.
- Muestro en pantalla la cadena ingresada
- Muestro en pantalla la cadena vacia con basura
- copio en la cadena vacia, la cadena ingresada
- Muestro en pantalla la cadena que estaba vacia pero que ahora contiene la cadena anterior.

Veamos la ejecución:



FUNCION STRCAT


esta funcion, concatena dos cadenas, es decir, las UNE o las PEGA.

veamos:



Explicación del código:

- Pido una cadena
- Pido otra cadena
- Las imprimo en pantalla ambas
- Llamo a la funcion STRCAT
- Imprimo la NUEVA cadena concatenada.

Veamos su ejecucion:




FUNCION STRLEN


esta funcion, me retorna la cantidad de caracteres que posee una cadena de caracteres.

veamos el código:




Explicación del código:

- Pido una cadena
- llamo a strlen y guardo su retorno en a.
- imprimo "a" que es la cantidad de caracteres que tiene la cadena.

También, se puede hacer de la siguiente manera, obviando la variable a.



En este caso, se obvia la variable "a" y se imprime directamente.

Veamos la ejecucion:



Sencillo no?

FUNCION STRCMP


esta funcion, compara dos cadenas, si estas SON IGUALES, retorna CERO, si no lo son, retorna cualquier valor distinto de CERO.

Veamos el código:



Explicación del código:

- Pido una cadena
- Pido otra cadena para comparar
- Llamo a la funcion strcmp, como verán, uso el operador NOT, ya que si son iguales, me retorna CERO, y uso el NOT para que me de POSITIVO.
- Si no son iguales, imprimo que no lo son.

Veamos el ejemplo en ejecucion donde las cadenas son iguales:



Veamos otro ejemplo en ejecucion donde las cadenas NO son iguales:



creo que quedo claro strcmp.


Varios

Inicializacion de strings.


Los strings tambien pueden ser inicializados, tal como int a=5;. Esto se hace de la siguiente manera:



Inicializacion de vectores de strings.


Un string, ya es un vector, por lo que un vector de strings seria una matriz.



Formato %s

El formato %s que se da en los scanf y los printf, indica que se trata de strings, osea, un vector de caracteres. por lo que al momento de imprimir, no es necesario imprimir caracter a caracter, ya que se puede imprimir una cadena completa de una sola vez. esto gracias a %s.

lo mismo con scanf, %s, indica que leera hasta encontrar un espacio o enter, y todo lo tecleado se asumirá que forma parte de la cadena.

Siempre char

los strings, son siempre char, por lo que internamente se guardan los valores ASCII de cada caracter, por ejemplo el "A" es el 65 en ASCII (creo), pero al ser CHAR, se imprimira el "A", en cambio si pongo %i, se imprimira el 65.

veamos un ejemplo:



O es lo mismo que:



veamos la ejecucion:






Bueno, cualquier duda, no vacilen en preguntar acá: CURSO C++ DESDE CERO

Saludos, nos vemos.
« Última modificación: 12 de Agosto de 2008, 10:52:28 por mycrox » En línea

¿Deseas un foro exclusivo de programación?
Haz click Aqui

mycrox
ANSI C Programmer
Yo vivo en CPH
***
Desconectado Desconectado

Sexo: Masculino
Mensajes: 691


Si tuvieras fé como un granito de mostaza...


Ver Perfil
« Respuesta #14 : 06 de Marzo de 2009, 08:32:49 »

12º CAPITULO
Por vVegeta


Argumentos del main (int argc, char *argv[])

Como verán, anteriormente en los programas, el main solo lo poníamos como "int main()", sin argumentos, esto es porque lo ejecutamos desde el DevC++ o lo ejecutamos haciendo dos click en el ejecutable. Pero los programas "deberian" llamarse todos desde la consola (MS-DOS), con lo cual los argumentos del main pasan a tener importancia.

Los argumentos de método main, son aquellos que son recibidos por el método main... Las dos variables que veremos en este capitulo serán:

    * argc
    * argv


argc:

argc, es de tipo entero (int), especificament e mantiene la cantidad de "numeros de argumentos" ingresados, por defecto contiene el numero 1, ya que el nombre del programa o la ruta se toma como el primer argumento que recibe el programa, y cada número representa el INDICE de una matriz (char *argv[]) que veremos a continuación.

veamos un ejemplo de el numero de argumentos:



Como verán, no tengo el code Cheesy, pero argc se trata o manipula como cualquier otra variable de tipo entera. (int).

argv[]:

argv[], es un array o matriz que está basado en el array de los carácteres que contiene el programa, son ingresados al momento de invocar el Programa... entonces podemos decir que argv[], guarda los "nombres" de los argumentos ingresados en el programa...



veamos algo más claro en la siguiente imagen:



en este caso:

-argv[0] es "programa" o dependiendo del compilador te dirá "la ruta del archivo más el nombre del programa".
-argv[1] es "entrada.txt".
-argv[2] es "salida.txt".

no se confundan o se inquieten si ven esta matriz declarada así : char *argv[], ya que se usa un punteros a vectores, lo cual es lo mismo que una matriz, aunque eso sí, una matriz de caracteres. Para poder visualizar por ejemplo argv[0], es necesario poner:

printf("argv[0] es %s \n", argv[0]);

no olviden poner %s, ya que es formato de STRING, que es lo mismo que un vector de caracteres..

bueno, a estas alturas, ya no deberian confundirse con eso.

Gracias a vVegeta por el aporte.

hasta el próximo capitulo.

NO OLVIDEN DE DEJAR SUS DUDAS O COMENTARIOS ACÁ:
http://foro.portalhacker.net/index.php/topic,54501.0.html
« Última modificación: 14 de Mayo de 2009, 03:50:19 por mycrox » En línea

¿Deseas un foro exclusivo de programación?
Haz click Aqui

Páginas: [1] 2  Todos Ir Arriba Imprimir 
« anterior próximo »
Ir a:  


Ingresar con nombre de usuario, contraseña y duración de la sesión
Powered by SMF 1.1.11 | SMF © 2006-2009, Simple Machines LLC hacker descargas gratis
Ranking-Hits