Ayudas para el Turbo C++ (lenguaje C)

Esto es lo basico como para empezar a trabajar con C.
Yo estoy estudiando ingenieria en informatiza hace 3 años asi q cualquier duda les puedo contestar.

Este fue mi primer post y cualquier consejo q me quieran dar va a ser bien recibido.




Bueno aca les dejo un tutorial basico para programar en C, a mi me sirvio, yo utilizo el Turbo C++ y espero que les sirva a ustedes:

Estructura:

Un programa escrito en C está compuesto por una o más funciones. Como ya es sabido, una función es un programa que sirve para realizar una tarea determinada, por ejemplo, la función scanf sirve para leer datos desde el teclado.

Existe una función que está presente en todos los programas escritos en C, su misión es marcar el inicio y fin de la ejecución de cada uno de ellos; es la función principal, la primera que se ejecuta; es la función main. Su sintaxis "básica" es:


int main()
{
<bloque_de_instrucciones>
}



La función main contiene al bloque de instrucciones principal de un programa, dentro de los caracteres abrir llave ({) y cerrar llave (}).

Los paréntesis "()" escritos después de main sirven para indicar que el identificador main es una función. Es importante comprender que main no es una palabra reservada de C. Ningún identificador de función lo es.

Finalmente, no podemos pasar por alto que delante de main se ha escrito la palabra reservada int; enseguida veremos el porqué.



Tipos de instrucciones

En C, las instrucciones, también llamadas sentencias, se pueden clasificar en:

De expresión.
De control.
Compuestas.
Una instrucción compuesta siempre alberga, entre llaves ({...}), a un <bloque_de_instrucciones>:


{
<bloque_de_instrucciones>
}



Un bloque de instrucciones puede estar compuesto por una o más instrucciones, que, a su vez, pueden ser instrucciones de expresión, de control y/o compuestas nuevamente.

El cuerpo de toda función es una instrucción compuesta. Sirva como ejemplo el cuerpo de la función main, el cual alberga al bloque de instrucciones principal de un programa escrito en C.

Las instrucciones de expresión, también conocidas como instrucciones simples o elementales, son aquellas que representan a las acciones más pequeñas (elementales) que se pueden ejecutar en un programa, y siempre van seguidas de un carácter punto y coma (, el cual indica que la instrucción ha terminado:



<instrucción_de_expresión>;



Una instrucción de expresión es, en sí misma, una expresión. De modo que, la acción que se ejecuta es la evaluación de dicha expresión:



<expresión>;



En cuanto a las instrucciones de control, existen de distintos tipos, y todas sirven para modificar el flujo de control de un programa. Veremos que, algunas de ellas deben ir seguidas del carácter punto y coma (, pero otras no.



Mi primer programa en C

Ejemplo: Se quiere escribir un programa que muestre por pantalla un mensaje de saludo:

"Hola mundo"



Obsérvese que, el saludo se visualiza justo en la esquina superior izquierda de la pantalla. Más adelante se estudiará cómo se puede mostrar en otro lugar de la pantalla.

En C, el código fuente de dicho programa puede ser:

#include <stdio.h>

int main()
{
printf( "Hola mundo" );

return 0;
}

Programa: Hola_mundo

Todas las funciones de la biblioteca estándar de C son subprogramas que ya están compilados, es decir, junto a cualquier compilador de C se acompañan los códigos objeto de todas las funciones de su biblioteca estándar, pero no sus códigos fuente. Por tanto, aunque no sea posible modificar sus códigos fuente, sí se puede hacer uso de dichas funciones en cualquier programa. Por ejemplo, se puede llamar a la función printf para que muestre por pantalla el saludo "Hola mundo".

printf( "Hola mundo" );

Dentro de los paréntesis "()" de la función printf, se debe escribir, entre comillas dobles (", el mensaje o cadena de caracteres que se desea mostrar por pantalla.

Obsérvese que, después del carácter cerrar paréntesis "" se ha escrito un punto y coma (, esto implica que la llamada a la función printf es considerada como una instrucción de expresión.

Del código fuente preprocesado de un programa, el compilador generará un código objeto que se debe unir (enlazar) con los códigos objeto de las funciones de la biblioteca estándar de C que se llamen desde dicho programa. Por ejemplo, el código objeto de nuestro primer programa se debe enlazar con el código objeto del subprograma printf.

El enlazador sabe dónde encontrar el código objeto de las funciones de la biblioteca estándar de C que utilice un programa. Sin embargo, para poder utilizar una función (sea de la biblioteca estándar de C o no) en un programa, la función debe ser declarada previamente, al igual que se tienen que declarar las variables y las contantes que usa un programa.

Para que el compilador conozca la declaración de la función printf, hay que utilizar la directiva del preprocesador #include:

#include <stdio.h>

En este caso, la directiva #include indica, al preprocesador, que debe incluir, antes de la compilación, en el código fuente del programa, el contenido del archivo <stdio.h> (stdio, Standard Input/Output). En dicho archivo están escritas las declaraciones de todas las funciones de entrada y salida estándar de la biblioteca estándar de C, como printf. Si el compilador no sabe quien es printf, no podrá generar el código objeto del programa.

Las funciones de la biblioteca estándar de C están clasificadas en base a su funcionalidad, y sus declaraciones se agrupan en archivos con extensión (.h), los cuales son llamados archivos de cabecera. Además de stdio.h, algunos de los archivos de cabecera más utilizados en C son: math.h, string.h y stdlib.h. En ellos están escritas, respectivamente, las declaraciones de las funciones matemáticas, funciones de cadena y funciones de utilidad de la biblioteca estándar de C.

Después de #include, el nombre del archivo de cabecera se puede escribir entre los caracteres menor y mayor (<stdio.h>, o entre comillas dobles ("stdio.h". Cuando se escriba entre comillas dobles, el preprocesador buscará dicho archivo en el directorio actual de trabajo, y de no encontrarlo ahí, entonces lo buscará en el directorio especificado por el compilador. En el caso de escribirse entre los caracteres menor y mayor, el proceso de búsqueda será al revés.

Además de la directiva del preprocesador #include, existen otras, pero, ninguna de ellas es una palabra reservada de C.

El código objeto generado por el compilador de C tendrá "huecos" (espacios) en donde más tarde el enlazador escribirá el código objeto correspondiente a las llamadas de las funciones ya compiladas (como printf) y, así, generar el archivo ejecutable.

Toda función retorna un valor. En nuestro primer programa se ha escrito:

return 0;

Esto quiere decir que la función main devuelve el valor 0. Precediendo a main se ha escrito la palabra reservada int, indicando así, que la función retornará un valor de tipo int (entero).

int main()

En general, la instrucción return suele ser la última del bloque de instrucciónes de la función main. Al retornar el valor 0, indica (informa al sistema operativo) que el programa finalizó correctamente, es decir, sin producirse ningún error en su ejecución. Cuando la función main devuelva un valor distinto de cero, esto siginificará que se ha producido algún error en la ejecución del programa, o que ha ocurrido algo fuera de lo normal.

La instrucción return es una de las instrucciones de control que existen en C. Por tanto, es una palabra reservada. Después del valor de retorno (que es una expresión) se debe escribir un punto y coma (. La sintaxis de la instrucción return es:


return <expresión>;



Por el momento, se ha visto que la sintaxis "básica" de un programa escrito en C es:


[ <directivas_del_preprocesador> ]

int main()
{
<bloque_de_instrucciones>
}




Tipos de Datos:


Datos de tipo entero

Un dato de tipo entero (int) es aquel que puede tomar por valor un número perteneciente al conjunto de los números enteros (Z), el cual está formado por los números naturales, su opuestos (números negativos) y el cero.


Z = { ..., -3, -2, -1, 0, 1, 2, 3, ... }


Ejemplo 1: La edad de una persona y el año en que nació, son dos datos de tipo entero:

Edad...: 29
Año....: 1976

Z es un conjunto infinito de números enteros, y como el ordenador no puede representarlos todos, un dato de tipo entero sólo puede tomar por valor un número perteneciente a un subconjunto de Z. Los valores máximo y mínimo de dicho subconjunto varían según las características de cada ordenador y del compilador que se utilice.



Datos de tipo real

Un dato de tipo real (float o double) es aquel que puede tomar por valor un número perteneciente al conjunto de los números reales (R), el cual está formado por los números racionales e irracionales.

Ejemplo 2: El peso de una persona (en kilogramos) y su altura (en centímetros), son datos que pueden considerarse de tipo real.

Peso.....: 75,3
Altura...: 172,7


R es un conjunto infinito de números reales, y como el ordenador no puede representarlos todos, un dato de tipo real sólo puede tomar por valor un número perteneciente a un subconjunto de R. Los valores de dicho subconjunto varían según las características de cada ordenador y del compilador que se utilice.

La diferencia principal entre float y double está en el hecho de que un dato de tipo double puede tomar por valor un número perteneciente a un subconjunto de R mayor que un dato de tipo float.



Datos de tipo carácter

Un dato de tipo carácter (char) es aquel que puede tomar por valor un carácter perteneciente al conjunto de los caracteres que puede representar el ordenador.

En C, el valor de un dato de tipo carácter se debe representar entre comillas simples (').

Ejemplo 3: En un examen con preguntas en las que hay que seleccionar la respuesta correcta entre varias opciones dadas (a, b, c, d, e), la respuesta correcta de cada una de las preguntas es un dato de tipo carácter.

Respueta correcta a la pregunta 3...: 'c'



Datos sin valor

Un dato sin valor (void) es un dato que no puede tomar por valor nigún valor, es decir, es un dato vacío (nulo). Más adelante estudiaremos su utilidad.



Datos de tipo lógico

En programación, un dato de tipo lógico es aquel que puede tomar por valor sólo uno de los dos siguientes:


{ verdadero, falso }


Los valores verdadero y falso son contrapuestos, de manera que, un dato de tipo lógico siempre está asociado a que algo se cumpla o no se cumpla.

Ejemplo 4: El estado de una barrera de paso de trenes es un dato que puede considerarse de tipo lógico, por ejemplo, asociando verdadero a que esté subida y falso a que esté bajada.

Estado...: falso (indica que la barrera está bajada)

En C no existen datos de tipo lógico (que sí existen en otros lenguajes de programación). Ahora bien, se pueden simular con datos de tipo entero, considerándose el valor cero (0) como falso, y cualquier otro valor entero como verdadero (para ello, generalmente, se emplea el valor uno (1)).



Datos de tipo cadena

De todos los tipos de datos que no son básicos se dice que son derivados, ya que, están basados en alguno que sí lo es. Por ejemplo, los datos de tipo cadena son aquellos que pueden tomar por valor una secuencia de caracteres.

En C, el valor de un dato de tipo cadena se debe representar entre comillas dobles (".

Ejemplo 5: El título de un libro y el nombre de su autor, son datos de tipo cadena.

Título...: "La Odisea" (cadena de 9 caracteres)
Autor....: "Homero" (cadena de 6 caracteres)




Ejemplo de funcion FFLUSH:

#include <stdio.h>

int main()
{
int a, b;

printf( "Introduzca el primer numero: " );
scanf( "%d", &a );
printf( "Introduzca el segundo numero: " );
scanf( "%d", &b );
printf( "Los valores son: %d, %d ", a, b );

return 0;
}



Instrucciones Basicas:

WHILE:

En lenguaje C, para escribir una instrucción repetitiva mientras se utiliza la sintaxis:



while ( <expresión_lógica> )
{
<bloque_de_instrucciones>
}



Cuando el <bloque_de_instrucciones> sólo contiene una instrucción, los caracteres abrir llave ({) y cerrar llave (}) son opcionales.

Por otra parte, al igual que en las instrucciones alternativas doble y simple, a la <expresión_lógica> de una instrucción repetitiva while, también se le llama condición.

Para que se ejecute el <bloque_de_instrucciones>, la condición tiene que ser verdadera. Por el contrario, si la condición es falsa, el <bloque_de_instrucciones> no se ejecuta.

Por tanto, cuando el flujo de un programa llega a un bucle while, existen dos posibilidades:

Si la condición se evalúa a falsa, el bloque de instrucciones no se ejecuta, y el bucle while finaliza sin realizar ninguna iteración.
Si la condición se evalúa a verdadera, el bloque de instrucciones sí que se ejecuta y, después, se vuelve a evaluar la condición, para decidir, de nuevo, si el bloque de instrucciones se vuelve a ejecutar o no. Y así sucesivamente, hasta que, la condición sea falsa.
El <bloque_de_instrucciones> de un bucle while puede ejecutarse cero o más veces (iteraciones). Si el <bloque_de_instrucciones> se ejecuta al menos una vez, seguirá ejecutándose repetidamente, mientras que, la condición sea verdadera. Pero, hay que tener cuidado de que el bucle no sea infinito.

Cuando la condición de un bucle while se evalúa siempre a verdadera, se dice que se ha producido un bucle infinito, ya que, el programa nunca termina. Un bucle infinito es un error lógico.

Es importante hacer hincapié en el hecho de que, en un bucle while, primero se evalúa la condición y, en el caso de que ésta sea verdadera, entonces se ejecuta el bloque de instrucciones. Veremos que, en el bucle do...while, el procedimiento es al revés. En él, primero se ejecuta el bloque de instrucciones y, después, se evalúa la condición.

Para que un bucle while no sea infinito, en el bloque de instrucciones debe ocurrir algo para que la condición deje de ser verdadera. En la mayoría de los casos, la condición se hace falsa al cambiar el valor de una variable.

En resumen, una instrucción repetitiva while permite ejecutar, repetidamente, (cero o más veces) un bloque de instrucciones, mientras que, una determinada condición sea verdadera.



IF


En lenguaje C, para escribir una instrucción alternativa doble se utiliza la sintaxis:



if ( <expresión_lógica> )
{
<bloque_de_instrucciones_1>
}
else
{
<bloque_de_instrucciones_2>
}



A la <expresión_lógica> de una instrucción alternativa doble también se le denomina condición.

Para que se ejecute el <bloque_de_instrucciones_1>, la condición tiene que ser verdadera. Por el contrario, si la condición es falsa, se ejecutará el <bloque_de_instrucciones_2>.

En resumen, una instrucción alternativa doble (o simplemente alternativa doble) permite seleccionar, por medio de una condición, el siguiente bloque de instrucciones a ejecutar, de entre dos posibles.

Ejemplo: Se quiere escribir un programa que:


1º) Pida por teclado la nota (dato real) de una asignatura.
2º) Muestre por pantalla:

"APROBADO", en el caso de que la nota sea mayor o igual que 5.
"SUSPENDIDO", en el caso de que la nota sea menor que 5.

Solucion:

#include <stdio.h>

int main()
{
float nota;

printf( "\n Introduzca nota (real): " );
scanf( "%f", &nota );

if ( nota >= 5 )
printf( "\n APROBADO" );
else
printf( "\n SUSPENDIDO" );

return 0;
}




Switch:


Una instrucción alternativa múltiple (o simplemente alternativa múltiple) permite seleccionar, por medio de una expresión, el siguiente bloque de instrucciones a ejecutar de entre varios posibles. En lenguaje C, para escribir una alternativa múltiple se utiliza la sintaxis:



switch ( <expresión> )
{
case <expresión_1> : [ <bloque_de_instrucciones_1> ]
[ break; ]
case <expresión_2> : [ <bloque_de_instrucciones_2> ]
[ break; ]
...
case <expresión_n> : [ <bloque_de_instrucciones_n> ]
[ break; ]
[ default : <bloque_de_instrucciones_n+1> ]
}




El resultado de evaluar la <expresión> debe ser un valor perteneciente a un tipo de dato finito y ordenado, es decir, entero, lógico, carácter, enumerado o subrango.

Dependiendo del valor obtenido al evaluar la <expresión>, se ejecutará un bloque de instrucciones u otro.

Opcionalmente, se puede escribir un <bloque_de_instrucciones_n+1> después de default :. Este bloque de instrucciones se ejecutará en el caso de que el valor obtenido al evaluar la <expresión>, no se encuentre en ninguna de las expresiones después de cada case.

Ejemplo 1: Se quiere escribir un programa que:


1º) Pida por teclado el número (dato entero) de un día de la semana.
2º) Muestre por pantalla el nombre (dato cadena) correspondiente a dicho día.


Nota: Si el número de día introducido es menor que 1 ó mayor que 7, se mostrará el mensaje: "ERROR: Día incorrecto.".

En pantalla:


Introduzca dia de la semana: 2

Martes




Introduzca dia de la semana: 9

ERROR: Dia incorrecto
.



Solución propuesta:

#include <stdio.h>

int main()
{
int dia;

printf( "\n Introduzca dia de la semana: " );
scanf( "%d", &dia );

switch ( dia )
{
case 1 : printf( "\n Lunes" );
break;
case 2 : printf( "\n Martes" );
break;
case 3 : printf( "\n Miercoles" );
break;
case 4 : printf( "\n Jueves" );
break;
case 5 : printf( "\n Viernes" );
break;
case 6 : printf( "\n Sabado" );
break;
case 7 : printf( "\n Domingo" );
break;
default : printf( "\n ERROR: Dia incorrecto." );
}

return 0;
}




FOR:


En lenguaje C, para escribir una instrucción repetitiva para se utiliza la sintaxis:



for ( <expresión_1> ; <expresión_2> ; <expresión_3> )
{
<bloque_de_instrucciones>
}



Cuando el <bloque_de_instrucciones> sólo contiene una instrucción, los caracteres abrir llave ({) y cerrar llave (}) son opcionales.

Por otro lado, el bucle for es ideal usarlo cuando, de antemano, ya se sabe el número de veces (iteraciones) que tiene que ejecutarse un determinado bloque de instrucciones.

El bucle para es una variante del bucle mientras y, al igual que éste, puede iterar cero o más veces (véase el apartado 10.1 Repetitiva mientras, del Curso de Diseño de Algoritmos). Sin embargo, el bucle for sólo se suele usar cuando se conoce el número exacto de veces que tiene que iterar el bucle. Éste es el caso del problema planteado en el ejemplo 1 del apartado 3.1 Repetitiva mientras, en el cual, se sabe de antemano que el bucle tiene que iterar, exactamente, diez veces.

Ejemplo: Por tanto, dicho problema, se puede resolver con una instrucción repetitiva for de la siguiente forma:

#include <stdio.h>

int main()
{
int contador;

printf( "\n " );

for ( contador = 1 ; contador <= 10 ; contador++ )
printf( "%d ", contador );

return 0;
}


Programa: Números del 1 al 10 (for)

En este caso, <expresión_1>, <expresión_2> y <expresión_3>, se corresponden, respectivamente, con:

la inicialización de la variable contador,
la condición de salida del bucle y
el incremento de la variable contador





CHAU!!!

32 comentarios - Ayudas para el Turbo C++ (lenguaje C)

@Pantash +1
hola mundo

groso man te dejo tus primeros 5
@GoldenSaint
asi mismo empece yo!!!jajaj



buen post
@siner
Que recuerdosss...saludos a mi profe Valerio...(como en la tele)
@amiquelagar
muy bueno te dejo mis 10 para vos
@wireles
Changoooo! Muuuuy groso lo tuyo!! yo también estoy por aprender eso, y no sabes lo bien que me vino (el post) jeje De tendrías el programita de TURBO C++ pero la versión gráfica? Gracias y nuevamente FELICITACIONES!!
@Cartita07
uuh q buen post...estoy empezando a estudiar C en la facultad y esto fortaleze los conociemientos basicos q tenia de java...muy bueno..gracias
@victormedellinrock
OE, ME PODES AGREGAR vICTORMEDELLINROCK@HOTMAIL.COM,,, MI CORREO ES MI NOMBRE DE USUARIO CON EL HOTMAIL, ES QUE ESTOY EMPEZANDO ACA EN EL COLEGIO PROGRAMACION, QUE ALGORITMOS, PSEUDOCODIGO, Y ESO ME TIENE BOTADO, BUEN POS!!!!!!!!!!
@fernando717
Muy bueno cabon... cdo tenga tiempo me voy a poner a practicar... te dejo mas 5!! gracias..
@cissp
Excelente aporte, me sirvió mucho para la facultad, justamente estabamos viendo este tema, quisiera agregarte puntos pero no se donde ni como, soy nuevo aún y debo adaptarme, si alguien me indica como hacerlo le estaré agradecido! Muchas gracias por la info ofrecida.
@bernuska
Muy bueno, gente, queria comentarles que estoy trabajando en una consultora de sistemas, y estamos en un lindo proyecto en C++ con EA. Si alguno esta interesado, envienme un mensaje y coordinamos para vernos.

Gracias
@mitus85
muy buen post nu tendrias el programa???
@bbcho
muy bueno el post fiera no tengo puntos pero tengo marios para ofrecer me sumo a manguearte el programa
@martintintin
muy bueno...! si tuviera puntos te dejaria....
@macrovirus_txia
copado la verdad el turbo \&quot;c\&quot; tambien lo uso yo en analisis de sistema

asi que un 11 jejeje



saluna macrovirus
@matiqueen
Uhhhh lo que andaba buscando!



Llevo tiempo queriendo aprenderlo



+5
@Slash2x
justo lo ke me acaba de explicar mi profe en clase jeje... si puedes poner mas cosas seria genial... saludos.
@jecfox
sos groso!!! hey tengo una duda quiero hacer una funcion q me pueda hacer dos numeros enteros en racionales y tiene q ser por medio de punteros y nose como hacer si podes ayudarme se te agradecera =)
@Teltron09
grande loco justo rindo eso el martes...jaja y me viene al pelo!..
Aguante la INGENIERIA!!...+yapa(+10)
@norther
con vectores y matrices no tenes nada???
@federernojuega
Buen post che!!hago una pregunta,a quien sepa!!...si yo quiero determinar si una cadena es vacia o no en C como puedo hacer??? es decir...ingresando un espacio...un caractér nulo, yo quiero q me diga vacio!! y de otra manera...q no es vacia, como podria hacer??? gracias, muchas gracias
@belvedere01
Gracias master, estoy enredado con un ejercicio y algunos datos me sirvieron, gracias y: ++++++++++
Salú
@Sn1ckLogan
Muy bueno +2 !

No t dejo más puntos porq tngo q buscar en mas post ..

Porq mañana tngo parcial xD !

Pero muy, muy bueno el post loco Sigue asi !
@tonijeins
buen post esto nos ayuda bastante a los novatos
@nico_tombino
hermano muchísimas gracias ! estoy empezando con programación, ahora con algoritmos y las prácticas serán con C, usando dev c++, borland, etc Esta info que redactas es muy valiosa, te agradezco y te debo los diez, que gasté ya...

Saludos !!
@nico_tombino +1
nico_tombino dijo:hermano muchísimas gracias ! estoy empezando con programación, ahora con algoritmos y las prácticas serán con C, usando dev c++, borland, etc Esta info que redactas es muy valiosa, te agradezco y te debo los diez, que gasté ya...

Saludos !!




+10
@dnfabbiano
Capo como pongo las comillas simples en Turbo C??? porque siempre me salen comilas dobles...