Abril 22, 2018, 04:44:08 am

Autor Tema: Curso C/C++  (Leído 146938 veces)

0 Usuarios y 2 Visitantes están viendo este tema.

Desconectado Avoidance25

  • Moderador
  • *****
  • Mensajes: 1248
  • Sexo: Masculino
  • Da gehört eiskrem aber nicht hin xD
    • Ver Perfil
    • sytes
[En Revisión] Curso C/C++
« Respuesta #30 en: Febrero 24, 2010, 10:29:59 am »
14º CAPITULO
Por: ?? ?? ??



Manejo de archivos (crear, eliminar, guardar y cargar)

Se buscan voluntarios, contactarse You are not allowed to view links. Register or Login para escribir el articulo
You are not allowed to view links. Register or Login
por ejemplo, se habla de emprender la You are not allowed to view links. Register or Login con el "fusil de carne" y se insta a una mujer a introducir You are not allowed to view links. Register or Login en su You are not allowed to view links. Register or Login

Desconectado Avoidance25

  • Moderador
  • *****
  • Mensajes: 1248
  • Sexo: Masculino
  • Da gehört eiskrem aber nicht hin xD
    • Ver Perfil
    • sytes
[En Revisión] Curso C/C++
« Respuesta #31 en: Febrero 24, 2010, 10:31:47 am »
15º CAPITULO
Por: You are not allowed to view links. Register or Login



Structs (registros)

Typedef
Nota:el siguiente capitulo esta hecho bajo code::blocks usando el compilador GCC puede que los codigos no funcionen correctamente con Dev-C++

La palabra reservada typedef se usa para asignar un alias a un tipo de dato existente y de esta forma poder hacer referencia a un tipo de dato utilizando un alias.

La sintaxis es la siguiente:

Código: (cpp) You are not allowed to view links. Register or Login
typedef Tipo_de_dato Nombre_de_alias;
Por ejemplo podesmos hacer referencia al tipo int con un alias llamado entero:

Código: (cpp) You are not allowed to view links. Register or Login
#include<iostream>
 
typedef int entero;//definimos el alias para int
 
int main(int argc,char **argv){
    entero a,b,c;//definimos tres variables del tipo "entero" que en realidad hace referencia a un tipo int
    a=10;
    b=3;
    c=a-b;
    printf("%i, %i, %i",a,b,c);
    return 0;
}


Bueno simplemente nos olvidamos de poner el nombre que el compilador reconoce y ponemos un nombre que nosotros recordemos...no tiene mucho sentido y no es recomendado usar typedef con tipos nativos para que no se preste confuncion dentro del programa.


Struct

La palabra reservada struct se usa para crear registros o estructuras, una estructura puede contener en su interior varios tipos distintos de variables, y se usa para cuando dos datos de tipos distintos tienen que estar asociados.

La sintaxis es la siguiente:
Código: (cpp) You are not allowed to view links. Register or Login
struct Nombre_de_la_estructura {
    Tipo_de_dato_1 Nombre_de_dato_1;
    Tipo_de_dato_2 Nombre_de_dato_2;
    Tipo_de_dato_3 Nombre_de_dato_3;
};

Podiendose agregar la cantidad de datos que uno desea, en este caso solo son 3.

Luego para aceder a el valor del dato hay que nombrar el nombre que se la da a la estructura y mediante el operador '.' acedemos al campo interno.

Por ejemplo podemos nombrar a un equipo de futbol, para eso usaremos un int para el numero de camisa y un char para indicar en que posicion juega.

Código: (cpp) You are not allowed to view links. Register or Login
struct Jugador {
    int numero;
    char posicion;//a=arquero,m=mediocampo
};
 
int main() {
    struct Jugador Jugador1,Jugador2;
    Jugador1.numero=1;
    Jugador1.posicion='a';
    Jugador2.numero=7;
    Jugador2.posicion='m';
    return 0;
}


Explicacion del codigo:

Código: (cpp) You are not allowed to view links. Register or Login
struct Jugador {
    int numero;
    char posicion;//a=arquero,m=mediocampo
};


Defini una estructura llamada "Jugador" que tiene espacio reservado en memoria para un int y un char.

Código: You are not allowed to view links. Register or Login
struct Jugador Jugador1,Jugador2;
Aca creo dos instancias de la estructura "Jugador" que son dos bloques de memoria completamente diferentes uno del otro ya que podemos almacenar valores en el primer bloque ("Jugador1") y valores en el segundo bloque ("Jugador2").


Código: (cpp) You are not allowed to view links. Register or Login
Jugador1.numero=1;
Jugador1.posicion='a';
Jugador2.numero=7;
Jugador2.posicion='m';


Asigno a cada campo de cada estructura un valor, esto tambien puede hacerce desde el teclado, para que el usuario carge los datos.

Bueno aca el unico tema es que todavia no usaremos esa forma de definir las estructuras...me refiero a esto:

Código: You are not allowed to view links. Register or Login
struct Jugador Jugador1,Jugador2;
Esta e la forma mas usada de definir estructuras en C++ pero no sirve en C y todavia no estamos listo para utilizarla...

Para definir las estructuras vamos a usar typedef, asi es!! eso que no servia para nada ahora cobra utilidad practica!

Valiendonos de lo que ya sabemos sobre typedef la forma de declarar la estructura seria asi:

Código: (cpp) You are not allowed to view links. Register or Login
typedef struct {
    int numero;
    char posicion;//a=arquero,m=mediocampo
} Jugador;
 
int main() {
    Jugador Jugador1,Jugador2;
    Jugador1.numero=1;
    Jugador1.posicion='a';
    Jugador2.numero=7;
    Jugador2.posicion='m';
    return 0;
}


Explicacion:

Código: (cpp) You are not allowed to view links. Register or Login
typedef struct {
    int numero;
    char posicion;//a=arquero,m=mediocampo
} Jugador;


Es el equivalente a "typedef Tipo_de_dato Nombre_alias", en este caso el alias es Jugador y el tipo de datos es desde donde comienza la sentencia struct hasta que se cierra la llave.

a la hora de definir las variables es igual que como si fuera un tipo nativo: Tipo_de_dato Nombre-variable

solo que en este caso usamos un alias para el tipo de datos porque es muy largo escribir todo eso.

Código: You are not allowed to view links. Register or Login
Jugador Jugador1,Jugador2;
La asignacion de valores a las variables no cambia.

Ahora que podemos usar alias para referirnos a estructuras todo es mas facil...por ejmplo si quisieramos pasar una estructura como paramentro se hace asi.

Código: (cpp) You are not allowed to view links. Register or Login
typedef struct {
    int numero;
    char posicion;//a=arquero,m=mediocampo
} Jugador;
 
void asignarValores(Jugador Jugador1) {
    Jugador1.numero=1;
    Jugador1.posicion='a';
}
 
int main() {
    Jugador Jugador1,Jugador2;
    asignarValores(Jugador1);
    Jugador2.numero=7;
    Jugador2.posicion='m';
    return 0;
}


el siguiente programa pasa la estructura "Jugador1" de tipo de dato "Jugador" (osea todo lo que este alias representa) a una funcion que modifica una referencia a el valor...por lo tanto si imprimen las variables aganlas de "Jugador1" al final de la funcion.

Se pueden definir todos los tipos de datos que queramos dentro de una estructura, hasta podemos hacer un alias y dentro de la estructura usarlo:

Código: (cpp) You are not allowed to view links. Register or Login
typedef int entero;
typedef struct {
    entero numero;
    char posicion;//a=arquero,m=mediocampo
} Jugador;
 
void asignarValores(Jugador Jugador1) {
    Jugador1.numero=1;
    Jugador1.posicion='a';
}
 
int main() {
    Jugador Jugador1,Jugador2;
    asignarValores(Jugador1);
    Jugador2.numero=7;
    Jugador2.posicion='m';
    return 0;
}


Y como no, podemos meter estructuras dentro de estructuras, el clasico ejemplo de que tenemos fichas sobre productos, en cada ficha tenemos los siguientes datos del producto: codigo(int), clase(char), tipo(int), fecha de elaboracion (?).

Código: (cpp) You are not allowed to view links. Register or Login
typedef struct {
    int dia;
    int mes;
    int anio;
} Fecha;
 
typedef struct {
    int codigo;
    char clase;
    int tipo;
    Fecha fechaElaboracion;
} Ficha;
 
 
int main() {
    Ficha Ficha1;
    Ficha1.codigo=1221;
    Ficha1.clase='A';
    Ficha1.tipo=7;
    Ficha1.fechaElaboracion.dia=23;
    Ficha1.fechaElaboracion.mes=11;
    Ficha1.fechaElaboracion.anio=2009;
    return 0;
}


Tambien es posible definir un arreglo de estructuras o una matriz de estructuras, por ejemplo si ese programa hubiese tenido que soportar muchas fichas iba a ser conveniente crear un arreglo de "Ficha".

Ya conociendo las estructuras y los archivos es posible diseñar software que maneje bastante informacion y pueda ser guardada y procesada....

por ejemplo podrian diseñar un software de gestion para una empresa, donde se tienen fichas con los datos de cada empleado (cargo(char),codigo(long),sueldo(int),nombre(string),fecha de nacimiento(  )) y la empresa contrata 10 empleados hay que hacer 10 fichas que se pediran que se cargen por teclado y tambien debera existir la opcion de mofificar una ficha existente en solo un campo existente si asi se desea.

Los invito a seguir mejorando este capitulo, si ves que necesita una mejora o quieres agregar algo podes mandarle un mp al moderador de la seccion y el se encargara de hacer las modificaciones que le propongas

saludos
« Última modificación: Febrero 25, 2010, 07:23:17 am por Avoidance25 »

Desconectado Avoidance25

  • Moderador
  • *****
  • Mensajes: 1248
  • Sexo: Masculino
  • Da gehört eiskrem aber nicht hin xD
    • Ver Perfil
    • sytes
[En Revisión] Curso C/C++
« Respuesta #32 en: Febrero 24, 2010, 10:33:06 am »
16º CAPITULO
Por: ?? ?? ??



Punteros

Se buscan voluntarios, contactarse You are not allowed to view links. Register or Login para escribir el articulo

Tutorial temporal: You are not allowed to view links. Register or Login
« Última modificación: Marzo 05, 2010, 02:18:12 pm por Avoidance25 »

Desconectado Avoidance25

  • Moderador
  • *****
  • Mensajes: 1248
  • Sexo: Masculino
  • Da gehört eiskrem aber nicht hin xD
    • Ver Perfil
    • sytes
[En Revisión] Curso C/C++
« Respuesta #33 en: Febrero 25, 2010, 06:00:36 am »
17º CAPITULO
Por: ?? ?? ??



Listas y listas de listas

Se buscan voluntarios, contactarse You are not allowed to view links. Register or Login para escribir el articulo

Desconectado Avoidance25

  • Moderador
  • *****
  • Mensajes: 1248
  • Sexo: Masculino
  • Da gehört eiskrem aber nicht hin xD
    • Ver Perfil
    • sytes
[En Revisión] Curso C/C++
« Respuesta #34 en: Febrero 25, 2010, 06:01:55 am »
18º CAPITULO
Por: You are not allowed to view links. Register or Login



Recursividad

La recursividad en un método que se emplea para resolver ciertos problemas particulares los cuales pequeñas partes de su solución es similar a la solución general.

Esto quiere decir que se puede descomponer el problema general en varios subproblemas, y quizás estos subproblemas también puedan ser descompuestos, y la solucion para cada uno de ellos es similar a la del problema general en si.

Veamos el típico ejemplo del factorial:

6! = 6.5.4.3.2.1

Una también posible seria un for descendiente desde el numero ingresado hasta 0 (ya que 0! es igual a 1) o hasta 1.

Pero este problema también puede ser resuelto por recursividad pensando de la siguiente manera:

6! = 6. 5!

y 5! es igual que 5. 4!

Antes de ver algo de código les nombro lo mas importante de la recursividad, lo primero es darse cuenta que problema puede ser resuelto recursivamente, luego, tenemos que fijarnos en la secuencia de corte o salida, esto es muy importante, tenemos que encontrar una instancia del problema el cual la recursividad termina, sino estaremos infinitamente resolviendo el problema.

En el caso de la recursividad nuestra secuencia de corte será cuando lleguemos a el numero 1 o 0.

La peculiaridad de la recursividad a nivel programación es que la misma función se llama a si misma, parece ilógico para algunos pero a el compilador le da igual, y es totalmente valido.

Código: (c) You are not allowed to view links. Register or Login
unsigned int factorial(unsigned int n) {
    if (n > 0)
        return n * factorial(n-1);
    else return 1;
}

Esta es una función recursiva que calcula el factorial de un numero entero.

Primero para quienes no sepan, "unsigned" se utiliza para despreciar el signo del numero, ya que los factoriales son positivos.

Ahora bien, si le pasamos 0 como parámetro retorna 1 y eso esta bien porque la definición de factorial es así.

Si le pasamos 1 como parámetro retornara 1*factorial(0)

Pero factorial(0) todavía no lo calculo, así que antes de poder hacer la multiplicación para retornar el valor llama a la función factorial con 0 como parámetro (o casualidad que la función que llama es ella misma) y recién una ves que retorne 1 el factorial de 0 hace 1*1 y retorna 1.

Si el numero fuese un 2 la función que llama a la primera se la pasa como parámetro un uno y estamos en el caso anterior, y así sucesivamente.

Fíjense bien que acá la sentencia de corte es claramente el "else" cuando no se va por el "if" la función deja de llamarse a si misma y vuelve hacia quien la llamo.

Hay muchos casos donde se usa la recursividad, el factorial es el mas elemental, pero se puede aplicar para saber si un arreglo es capicúa, resolver una sucesión Fibonacci, resolver las torres de Hanoi y muchísimos mas problemas.

Además la recursividad puede darse sin que una función se llame a si misma, por ejemplo de esta forma


Código: (c) You are not allowed to view links. Register or Login
int A(int n){
    if(...)
        return n+B(n-1);
    else return 0;
}

int B(int n) {
    if(...)
        return n*A(n-1);
    else return 1;
}

En este caso la función A llama a la función B y la función B llama a la función A, es muy importante que tenga una sentencia de corte porque sino esto se vuelve infinito.

Sin embargo, los algoritmos recursivos presentan una ligera desventaja frente a los no recursivos, supongamos que utilizamos el for para calcular el factorial de 1000000 ese for tendría que pegar 1000000 de vueltas para resolver el problema y en cada vuelta se tiene que restarle uno al contador del for, además se tiene que multiplicar al resultado parcial por la variable temporal del for....

Eso llevaría algo de tiempo si, además que en memoria tendría que estar la variable del for y la de el resultado....

Cual es el problema de la recursividad??

En la recursividad no usamos una variable para el contador, y tampoco usamos una variable para recordar el resultado porque simplemente hacemos el return de una y listo....

Ahora bien, si calculamos el factorial de 1000000 antes que la primer función termine su ejecución tiene que resolverse otra función, entonces el procesador la guarda en la memoria principal y se pone a resolver la nueva función, pero se encuentra con el mismo problema!!

Antes de terminar de resolverla tiene que resolver otra y otra y otra, así 1000000 de veces,  dejara 999999 funciones en memoria a mitad de resolver cuando se encuentra calculando el ultimo factorial, y ese espacio si es valioso y costoso, además que qué manejar mucho con la memoria principal nos puede hacer perder tiempo.

Ni hablar con problemas mas avanzados donde la recursividad es inaplicable (por los costos) por mas que el problema tenga una solución sencillísima con recursividad,

Por eso mismo es que la recursividad no es tan utilizada, pero, si tiene algo bueno =D, hay casos de problemas donde lo complicado de la resolución no recursiva hace que queramos aumentar los costos.

Por ejemplo si se quiere mostrar una lista desde adelante hacia atrás...

(actualmente no hay articulo de listas, pero cuando lo haya entenderán)

Lo normal es mostrar el primer elemento de una lista e irme hacia el segundo, mostrar el segundo e irme al tercero, así hasta que llegue al ultimo.

Esa solución se puede hacer como se supondría que la vienen haciendo o recursiva, pero no conviene en lo mas mínimo hacerla recursiva, pero, si se quiere mostrar primero el ultimo, luego el ante último y así hasta el primero, resulta muy difícil hacerlo sin recursión así que ahí si se permite la recursividad.

Cuando vean estructura de árboles binarios se darán cuenta de que es muy difícil recorrerlo iterativamente por eso se recorren siempre por recursividad.

Si escuchan hablar de la pila de recursión se esta haciendo referencia a las funciones que se están apilando en la memoria.

Con respecto a código no creo que haga falta ya que hay mucho en Internet y además es bastante simple, les propongo hacer los ejercicios que comente mas arriba para practicar, pero mas que nada esto de recursividad esta dado para que puedan manejarse con árboles.

saludos
« Última modificación: Mayo 09, 2010, 11:25:23 am por WaesWaes »

Desconectado Avoidance25

  • Moderador
  • *****
  • Mensajes: 1248
  • Sexo: Masculino
  • Da gehört eiskrem aber nicht hin xD
    • Ver Perfil
    • sytes
[En Revisión] Curso C/C++
« Respuesta #35 en: Febrero 25, 2010, 06:02:16 am »
19º CAPITULO
Por: ?? ?? ??



Arboles binaros

Se buscan voluntarios, contactarse You are not allowed to view links. Register or Login para escribir el articulo

Desconectado Avoidance25

  • Moderador
  • *****
  • Mensajes: 1248
  • Sexo: Masculino
  • Da gehört eiskrem aber nicht hin xD
    • Ver Perfil
    • sytes
[En Revisión] Curso C/C++
« Respuesta #36 en: Febrero 25, 2010, 06:02:41 am »
20º CAPITULO
Por: ?? ?? ??



Orientación a objeto (clases, herencia y polimorfismo)

Se buscan voluntarios, contactarse You are not allowed to view links. Register or Login para escribir el articulo
« Última modificación: Mayo 19, 2010, 07:09:47 pm por AnimAlf »

Desconectado Avoidance25

  • Moderador
  • *****
  • Mensajes: 1248
  • Sexo: Masculino
  • Da gehört eiskrem aber nicht hin xD
    • Ver Perfil
    • sytes
[En Revisión] Curso C/C++
« Respuesta #37 en: Marzo 05, 2010, 02:34:32 pm »
Quiero seguir aprendiendo, que hago?



Ahora que ya tienes las bases deberias buscar cosas mas especificas, en este mismo foro hay varios tutoriales que te pueden ayudar con esto:

You are not allowed to view links. Register or Login

You are not allowed to view links. Register or Login

You are not allowed to view links. Register or Login

You are not allowed to view links. Register or Login / You are not allowed to view links. Register or Login

You are not allowed to view links. Register or Login



:cura:
« Última modificación: Marzo 05, 2010, 02:49:09 pm por Avoidance25 »

Desconectado WaesWaes

  • Actualmente es
  • Colaborador
  • ****
  • Mensajes: 4402
  • You are not prepared!
    • Ver Perfil
Re: Curso C/C++
« Respuesta #38 en: Abril 04, 2011, 12:58:02 am »
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.

Desconectado WaesWaes

  • Actualmente es
  • Colaborador
  • ****
  • Mensajes: 4402
  • You are not prepared!
    • Ver Perfil
Re: Curso C/C++
« Respuesta #39 en: Abril 04, 2011, 01:00:12 am »
5º 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)


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.

Desconectado WaesWaes

  • Actualmente es
  • Colaborador
  • ****
  • Mensajes: 4402
  • You are not prepared!
    • Ver Perfil
Re: Curso C/C++
« Respuesta #40 en: Abril 04, 2011, 01:05:01 am »
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.

Desconectado WaesWaes

  • Actualmente es
  • Colaborador
  • ****
  • Mensajes: 4402
  • You are not prepared!
    • Ver Perfil
Re: Curso C/C++
« Respuesta #41 en: Abril 04, 2011, 01:06:47 am »
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" : "debes estudiar mas\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

Desconectado WaesWaes

  • Actualmente es
  • Colaborador
  • ****
  • Mensajes: 4402
  • You are not prepared!
    • Ver Perfil
Re: Curso C/C++
« Respuesta #42 en: Abril 04, 2011, 01:08:17 am »
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?Huh?Huh?

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

saludos.

Desconectado WaesWaes

  • Actualmente es
  • Colaborador
  • ****
  • Mensajes: 4402
  • You are not prepared!
    • Ver Perfil
Re: Curso C/C++
« Respuesta #43 en: Abril 04, 2011, 01:09:41 am »
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.


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.

Desconectado WaesWaes

  • Actualmente es
  • Colaborador
  • ****
  • Mensajes: 4402
  • You are not prepared!
    • Ver Perfil
Re: Curso C/C++
« Respuesta #44 en: Abril 04, 2011, 01:10:48 am »
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.


smiley
Curso de visual basic 6.0 como el Curso C/C++ desde cero

Iniciado por Paolita747

2 Respuestas
1733 Vistas
Último mensaje Mayo 31, 2008, 01:56:18 am
por Paolita747
xx
Curso de PHP #1 [Soporte eriik + curso basico de php]

Iniciado por eriik

8 Respuestas
2702 Vistas
Último mensaje Abril 03, 2008, 05:12:43 pm
por carlmycol
xx
Curso de ASP.NET

Iniciado por Tilmitt

0 Respuestas
1128 Vistas
Último mensaje Junio 22, 2013, 05:00:53 am
por Tilmitt
xx
Curso de C

Iniciado por Dr.SysCrack

3 Respuestas
1921 Vistas
Último mensaje Noviembre 23, 2007, 03:06:26 am
por TXS
thumbup
Curso de ASP.:!!

Iniciado por -SharK_90-

2 Respuestas
3944 Vistas
Último mensaje Agosto 05, 2007, 05:25:35 pm
por loco_crazy
exclamation
Curso de C

Iniciado por Yawin

8 Respuestas
2187 Vistas
Último mensaje Diciembre 14, 2009, 02:38:04 pm
por jep
xxx
Curso PGP

Iniciado por syncrack

8 Respuestas
3037 Vistas
Último mensaje Agosto 12, 2009, 07:08:23 am
por ---saster---
xx
Curso PHP

Iniciado por DarkWolf

4 Respuestas
2402 Vistas
Último mensaje ſeptiembre 07, 2008, 05:16:16 am
por DarkWolf
xx
Curso de PHP

Iniciado por Hacker290

3 Respuestas
1143 Vistas
Último mensaje Diciembre 28, 2011, 11:18:14 pm
por Hacker290
xx
Curso

Iniciado por QuEeN PhOeNiX

2 Respuestas
1555 Vistas
Último mensaje Mayo 17, 2006, 03:37:00 pm
por QuEeN PhOeNiX