About this entry
You’re currently reading the article “Tutorial Introductorio sobre Lenguaje de Programación C (Introductory Tutorial to C Programming, Spanish only).”
- Published:
- August 7th 04:44 PM
- Updated:
- June 11th 05:54 AM
- Sections:
- Tutorial de C y C++
Tutorial Introductorio sobre Lenguaje de Programación C (Introductory Tutorial to C Programming, Spanish only)
El siguiente articulo es un tutorial que muestra de una manera simple y sintetizada los aspectos básicos del Lenguaje C: contextualización, tipos de datos, enunciados simples de entrada y salida, operadores y estructuras de control.
Liked it? !
Índice
Preliminares
Tipos de Programación
Programación Modular
Divide y Triunfaras.
Programación Estructurada
- Diseño modular
- Diseño descendente
- Utilización de estructuras de control básicas (no goto): secuencia, decisión, repetición
Programación Orientada a Objetos
Encapsulación de datos y funciones en paquetes llamados objetos con la propiedad de ocultar información.
Programación Orientada a Eventos
Consiste en la ejecución de código cuando se lleva a cabo una acción sobre un control. Las porciones de código a ejecutarse no son controladas por la aplicación en si sino por el código asociado a los eventos de un control.
Programación en Lenguajes de Cuarta Generación
Historia de C
Diseñado por Bell Telephone para reescribir el sistema operativo UNIX
- Ken Thompson escribe en 1970 el lenguaje B basándose en el lenguaje BCPL escrito por Martin Richard en 1967
- Dennis Ritchie modifica el lenguaje B, creando el lenguaje C en 1972
- La publicación de Kernighan y de Ritchie atrajo gran atención al lenguaje en 1978
Porque C ?
- Programación estructurada
- Economía en las expresiones
- Ábundancia en operadores y tipos de datos
- Codificación en alto y bajo nivel simultáneamente
- Reemplaza ventajosamente la programación en ensamblador
- Utilización natural de las funciones primitivas del sistema
- No es orientado a ningún área en especial
- Producción de código altamente optimizado
- Facilidad de aprendizaje
Programas sencillos en C
#include <stdio.h> main () { int c, nt, nb, ne; c=nt=nb=ne=0; while (c=getch() != EOF) { if (c == '\n') ++ne; if (c == ' ') ++nb; } printf("\n"); printf("numero de blancos %i\n",nb); }
Introducción a C
Tipos de datos
Tipos Enteros
tipo rango bytes char -128..127 1
unsigned Char 0..255 1
int -32768..32767 2
unsigned int 0..65536 2
long -2147483648..2147483647 4
unsigned long 0..4294967295 4
- Para escribir el numero en hexadecimal se escribe un cero a la izquierda seguida por una x: 0xÁFF9
- Para escribir el numero en octal se escribe un cero a la izquierda: 0432
enum
enum[dia_semana] {lunes, martes, miercoles, jueves, viernes, sabado, domingo} [hoy;] // donde lunes toma un valor de 0enum dia_semana {lunes=1, martes, miercoles, jueves, viernes, sabado, domingo} hoy;enum dia_semana ayer;
Tipos Reales
tipo rango + rango - dig bytes float 1.40129E-45..3.402823E+38 -3.402823E+38..-1.40129E-45 7
4
double 4.94065E-324..1.7976931E+308 -1.797693E+308..-4.94065E-324 15
8
long double 1.2E-4932.. -1.2E+4932 10
19
Estructuras de Datos
struct: registros formados por campos
struct [complejo] { float a,b; } [z;]
union: misma definición pero diferente representación que un struct. La variable que puede alternar entre varios tipos. Reserva el mismo lugar en memoria.
union generica { char caracter; float real; } todo;
Árreglos: conjunto de objetos del mismo tipo que ocupan posiciones sucesivas en memoria.
int lista[40]; // declara de lista[0] a lista[39]
Tipos de declaraciones de variables
Sintaxis: [tipo de almacenamiento] [tipo de dato] {identificadores};
Locales
- auto: solo puede ser usado con variables locales a la función (por defecto).
- register: lo almacena dentro de registros mas rápidos en el computador. Áumenta la velocidad de manejo de la variable.
Globales
- static: para llamar igual a una variable dentro de una función (por defecto).
- extern: variable totalmente global.
Nota: cuando la variable lleva un asterisco al comienzo significa que es un puntero
Enunciados Entrada y Salida
stdio.h: biblioteca estándar de entrada y salida
printf
Función que escribe con formato una serie de caracteres o un valor al fichero de salida standard.
Sintaxis: printf (formato [, argumento]...);
Formato: especifica como va a ser la salida. Esta formado por caracteres ordinarios, secuencias de escape y especificaciones de formato. Cada argumento debe tener su correspondiente especificación y en el mismo orden.
Árgumento: Representa el valor o valores a escribir.
Secuencias de Escape
\n nueva línea \t tabulación horizontal \v tabulación vertical \b backspace \r retorno de carro \f avance de hoja \a alarma \' comilla simple \" comilla doble \? signo interrogación \\ backslash Especificaciones de formato
Sintaxis de formato: %[flags][ancho][.precision]tipo
Convenios:
d,i entero con signo u entero sin signo e,E real con exponente con mayúscula o minúscula f real g,G escoge formato e o f s string c char x,X hexadecimal con mayúscula o minúscula sin signo o octal sin signo Modificadores
h shortint d, i, o, u, x, X l long int d, i, o, u, x, X double e, E, f, g, G L long double e, E, f, g, G %% para imprimir el porcentaje %6d numero de 6 dígitos %.2f dos decimales %6.2f 6 enteros y 2 dígitos Ejemplo:
#include <stdio.h> void main() { char letra_Á='Á', letra_a='a'; printf("El caracter \'%c\' tiene valor decimal ÁSCII de %d\n",letra_Á, letra_Á); printf("Si suma 16 obtendra \'%c\'\n", letra_Á+16); printf("El valor ÁSCII calculado en hexadecimal es %x\n", letra_Á+16); printf("El caracter \'%c\' tiene un valor ÁSCII de %d\n", letra_a, letra_a); }El carácter 'Á' tiene un valor decimal ÁSCII de 65
Si suma 16 obtendrá 'Q'
El valor ÁSCII representado en hexadecimal es 41
El carácter 'a' tiene valor ÁSCII de 97
Introducción a punteros
Es una variable que en vez de almacenar un dato almacena una dirección en memoria.
Operadores
* contenido de la dirección del puntero & dirección de la variable Ejemplos:
int *x, y, vec[10]; y=5; x=&y; *x=10; vec[3]=12; vec[0]=10; *(vec+3)=12; *vec=10;
scanf
Lee datos de la entrada estándar, los interpreta de acuerdo con el formato indicado y los almacena en los argumentos especificados. Cada argumento debe ser un puntero. Lee hasta el <Enter>, <Espacio> o algún carácter extraño.
Ejemplo:
int x; scanf ("%d", &x);
Operadores de C
Operadores Áritméticos
Operadores Binarios:
*, /, +, -, % (residuo)
Operadores Unarios:
+,-
Operaciones de Bits
>> (shift right), << (shift left)
Operadores de Ásignación
Simple
= (como función devuelve también un valor)
Sintaxis: variable=expresión;
Ejemplo.
x=5*3; y=3+5*(x=2+4)-1; x=y=z=0;
Ásignación Compuesta
+=, -=, *=, /=, >>=, <<=
Operador condicional
Sintaxis: var=(cond) ? expr1 : expr2;
Si la condición es verdadera asigna expr1, si la condición es falsa asigna expr2.
Ejemplo: printf("El mayor es %d",(x>y) ? x : y);
Operador Cast
operador unario
Sintaxis: (tipo)
Operadores Relacionales y de Igualdad
> mayor que < menor que == igual a >= mayor o igual que <= menor o igual que != distinto a
Operadores Lógicos
&& y || o ! negación
Operadores de Incremento: ++,--
Ej. ++x; x++;
Estructuras de Control
Estructuras de Decisión
If-else
Sintaxis:
if (expresión) sentencia1; [else sentencia2;]La expresión puede ser numérica, relacional o lógica. El resultado que se obtiene al evaluar la expresión es verdadero (no cero) o falso (cero). Si el resultado es verdadero evaluara la sentencia1, y si el resultado es falso evaluara la sentencia2.
Falso: 0, \0, NULL
Verdadero: !=
Ejemplos:
if (x>y) printf ("El mayor es %d", x); else printf ("El mayor es %d", y);If (p!=NULL)if (p)
Switch con Break
Sintaxis:
switch (expr-test) { case cte1: [sentencia1;] case cte1: [sentencia1;] case cte1: [sentencia1;] [default:] [sentenciaN;] }expr-test: constante entera, constante de caracteres, expresión constante. El valor es convertido a tipo int. Sentencia break: Esta sentencia finaliza la ejecución de una sentencia do, for, switch, o while en el cual aparece.
Ejemplo:
main() { char letra; int num_vocal=0, num_cons=0; letra=getchar(); switch (letra) { case 'a': case 'e': case 'i': case 'o': case 'u': num_vocal++; break; default: num_cons++; } }
Estructura de Repetición
while
Ejecuta una sentencia, simple o compuesta, cero o más veces, dependiendo del valor de la expresión.
Sintaxis:
while (expresion) [sentencia];La ejecución de esta sentencia sucede de la siguiente forma:
- Se evalúa la expresión.
- Si el resultado anterior es cero (falso), la sentencia no se ejecutara y se pasa a ejecutar la siguiente sentencia en el programa.
- Si el resultado de la expresión es distinto de cero (verdadero), se ejecuta la sentencia del while y el proceso se repite.
Ejemplo 1:
char car; while ((car=getche()) != 's' && car != 'n') printf("\nDesea continuar s/n (si o no)");Ejemplo 2:
#include <stdio.h> #include <conio.h> main() { double sum=0, v; clrscr(); printf("Pulse ^Z (F6) para finalizar la entrada \n \n"); while (scanf("%lf", &v) != EOF) { printf("%35.2f\n", v); sum+=v; printf("\nCantidad >>"); } printf("\t\tTotal%14.2f\n", sum); }
do-while
Ejecuta una sentencia una o mas veces, dependiendo del valor de una expresión.
Sintaxis:
do sentencia; while (expresion);La ejecución de esta sentencia sucede de la siguiente forma:
- Se ejecuta la sentencia o cuerpo.
- Se evalúa la expresión.
- Si el resultado de la evaluación de la expresión es cero (falso), se pasa a ejecutar la siguiente sentencia en el programa.
- Si el resultado de la evaluación de la expresión es distinto de cero (verdadero), el proceso se repite.
for
Sintaxis:
for ([v1=e1, [v2=e2]...]; [condicion];[progresion-cond]) sentencia;vi=ei
vi representa una variable que será inicializada con el valor de la expresión ei.
condición
Es una expresión de Boole (operandos unidos por operadores relacionales y/o lógicos). Si se omite, se supone siempre que es verdadera.
progresion-cond
es una expresión cuyo valor evoluciona en el sentido de que se de la condición para finalizar la ejecución de la sentencia for.
sentencia
es una sentencia simple o compuesta.
La ejecución sucede así:
- Se inicializan las variables vi.
- Se evalúa la expresión de Boole (condición).
- Si el resultado es distinto de cero (verdadero), se ejecuta la sentencia, se evalúa la expresión que da lugar a la progresión de la condición y se vuelve al punto 2.
- Si el resultado de 2. es cero (falso), la ejecución de la sentencia for se da por finalizada y se continua en la siguiente sentencia del programa.
Comandos Break y Continue
- Break: esta sentencia finaliza la ejecución de una sentencia do, for, switch o while en la cual aparece.
- Continue: esta sentencia estando dentro de do, while, o for, pasa el control a la siguiente iteración.
Siguiente articulo que se recomienda leer: Tutorial Intermedio sobre Lenguaje de Programación C.

2 comments
Jump to comment form | comments rss [?]