Informática
Programación en C
PROGRAMACIÓN EN C
TIPOS DE DATOS EN C
Nombre | Aplicación |
Bits | Rango |
unsigned char | Nº pequeños positivos, caracteres y bucles cortos | 8 | 0 a 255 |
char | Nº pequeños, caracteres y bucles cortos | 8 | -128 a 127 |
signed char | Nº pequeños, caracteres y bucles cortos | 8 | -128 a 127 |
short int | Amplía el rango de los anteriores | 8 | -128 a 127 |
unsigned int | Nº positivos grandes y bucles largos | 16 | 0 a 65535 |
int | Nº grandes y bucles largos | 32 | -32768 a 32767 |
signed int | Nº grandes y bucles largos | 32 | -32768 a 32767 |
unsigned long | Nº positivos grandes y bucles largos | 32 | 0 a 4294967295 |
long | Nº grandes y bucles largos | 32 | -21474836 a 2147483647 |
float | Notación científica (7 dígitos precisión) | 32 | 3.4e-38 a 3.4e+38 |
double | Notación científica (15 dígitos precisión) | 64 | 1.7e-308 a 1.7e+308 |
long double | Notación científica (18 dígitos precisión) | 80 | 3.4e-4932 a 1.1e+4932 |
SECUENCIAS DE ESCAPE
Secuencia | Función |
\a | Aviso sonoro |
\b | Backspace |
\f | Paso de página |
\n | Nueva línea |
\r | Retorno de carro |
\t | Tabulación horizontal |
\v | Tabulación vertical |
\\ | \ |
\' | Comillas simples |
\” | Comillas dobles |
\? | Signo de interrogación |
\0 | Numero octal O |
\xH | Número hexadecimal H |
\XH | Número hexadecimal H |
OPERADORES ARITMÉTICOS
Operador | Descripción |
+ | Suma |
- | Resta |
* | Multiplicación |
/ | División. Si los operadores son enteros, trunca el resultado |
% | Resto. Devuelve el resto de la división entera |
++A | Preincremento. Incrementa el valor de A |
A++ | Postincremento. Decrementa el valor de A. |
--A | Predecimiento. Decrementa el valor de A |
A-- | Postdecremento. Evalúa el valor de A y a continuación lo decrementa |
OPERADORES DE BITS
Destinados a trabajar directamente sobre los bits:
Operador | Descripción |
& | AND binario. Devuelve 1 si los bits valen 1 |
| | OR binario. Devuelve 1 si alguno de los bits vale 1 |
^ | EXOR binario. Devuelve 1 si hay un número impar de 1 |
" | NOT binario. Cambia 1 por 0 y viceversa |
>> | Desplazamiento binario a la dcha. Desplaza los bits un lugar a la derecha |
<< | Desplazamiento binario a la izda. Desplaza los bits un lugar a la izquierda |
OPERADORES DE ASIGNACIÓN
Se utilizan para pasar resultados a variables
Operador | Descripción |
= | Asignación (simple o múltiple) |
*= | Multiplicación seguida de asignación |
/= | División seguida de asignación |
%= | Resto seguido de asignación |
+= | Suma seguida de asignación |
-= | Resta seguida de asignación |
<<= | Desplazamiento binario a la dcha. seguido de asignación |
>>= | Desplazamiento binario a la izda. seguido de asignación |
$= | AND binario seguido de asignación |
^= | EXOR binario seguido de asignación |
|= | OR binario seguido de asignación |
OPERADORES RELACIONADOS
Operador | Descripción |
== | Igual |
¡= | Distinto |
> | Mayor |
< | Menor |
>= | Mayor o igual |
<= | Menor o igual |
OPERADORES LÓGICOS
Se encargan de realizar operaciones del tipo verdadero o falso. NO CONFUNDIR con los operadores de bits.
Operador | Descripción |
&& | AND lógico |
|| | OR lógico |
¡ | NOT lógico |
EL OPERADOR COMA
Se utiliza para separar elementos en una lista de argumentos a una función, o concatenar varias expresiones en una misma sentencia. No se usa mucho por que puede llegar a confundir.
OPERADORES DE PARÉNTESIS
Operador | Descripción |
( ) | Se utiliza para agrupar expresiones, indicar llamadas a función, o agrupar una lista de parámetros. |
{ } | Se utiliza para indicar principio y final de una sentencia compuesta |
[ ] | Se utiliza para encerrar los límites de una matriz |
OPERADORES DE ESTRUCTURAS
Operador | Descripción |
. | Se utiliza para acceder a miembros de estructuras y uniones |
_> | Se utiliza para acceder a miembros de estructuras y uniones referenciadas como punteros |
OPERADORES PUNTEROS
Operador | Descripción |
* | Se utiliza para acceder a los elementos referenciados por los punteros |
& | Se utiliza para obtener la dirección de la memoria del elemento al que se hace referencia |
Signo | Descripción |
, | Elemento separador |
; | Fin de sentencia |
: | Indicador de etiqueta |
... | Nº de parámetros desconocido |
* | Indicador de puntero |
# | Directiva del procesador |
EL OPERADOR SIZEOF
Se utiliza para conocer el tamaño en bytes de cierta variable o tipo de dato. La sintaxis es:
sizeof operando
sizeof(operando)
ENTRADA SALIDA POR CONSOLA
-
Funciones de salida sin formato:
-
putchar: Envía un carácter a la consola. Si tiene éxito devuelve ese mismo carácter, si no devuelve EOF.
-
puts: Envía una cadena a la salida estándar. Si tiene éxito devuelve un valor positivo, en caso contrario devuelve EOF.
-
Funciones de salida con formato:
-
printf: Envía ciertos elementos a la salida estándar, con formato. Puede aparecer simplemente la cadena o especificadores de formato:
-
int printf(const char *formato[,argumento,...];
-
printf(“%d”,Numero);
-
flags: Controlan el tipo de especificación a emplear en la escritura en pantalla, y para los nº indican si aparecerán los signos y de qué manera. Estos son:
Flag | Función |
- | Justifica a la izquierda |
+ | Siempre aparece el signo |
Espacio en blanco | Aparece sólo el signo - |
-
Especificador de anchura: Controla la cantidad de espacios que debe ocupar el elemento en pantalla, de forma que si no tiene suficientes, rellena por espacios en blanco, y si sobran hace caso omiso de este especificador. Existen dos variantes:
Flag | Función |
N | Cantidad de espacios (n) que debe ocupar |
0n | Cantidad de espacios a ocupar, si no tiene suficiente rellena con 0's a la izquierda. |
-
Especificador de precisión: Controla varios aspectos según el tipo de datos al que se aplique. Normalmente está relacionado con la cantidad de cifras decimales de un dato float. Estos son:
Flag | Función |
Ninguno | Se utiliza la precisión por defecto |
.0 | En float no aparecen cifras decimales |
.n | En float aparecen n cifras decimales redondeando si sobran. En el resto aparecen n caracteres eliminando los que sobran |
-
Conversión de tipo:
Carácter | Entrada | Dirección |
D | Entero decimal | (int*) |
D | Entero decimal | (long*) |
E, e | Número en coma flotante | (float*) |
F | Número en coma flotante | (float*) |
G, g | Número en coma flotante | (float*) |
O | Entero octal | (int*) |
O | Entero octal | (long*) |
I | Entero decimal, octal o hexadecimal | (int*) |
I | Entero decimal, octal o hexadecimal | (long*) |
U | Entero decimal sin signo | (unsigned int*) |
U | Entero decimal sin signo | (unsigned long*) |
X | Entero hexadecimal | (int*) |
X | Entero hexadecimal | (int*) |
S | Cadena | (char*) |
C | Carácter | (char*) |
% | Carácter % | |
N | Puntero | (int*) Almacena el nº de caracteres leídos |
P | Puntero hexadecimal | (far*) ó (near*) |
-
Funciones de entrada sin formato:
-
getch: Lee un carácter directamente del teclado, sin mostrarlo en la pantalla. Devuelve dicho carácter. Sirve para almacenara por ejemplo una tecla pulsada.
-
#include <conio.h>
-
int getch(void);
-
getchar: Lee un carácter de teclado. Si tiene éxito devuelve dicho carácter, si no devuelve EOF. La diferencia con el anterior es que éste si que lo muestra en la pantalla.
-
#include <stdio.h>
-
int getchar(void);
-
getche: Lee un carácter de teclado y lo muestra en pantalla. Devuelve dicho carácter. Su funcionamiento es como el anterior.
-
#include <conio.h>
-
int getche(void);
-
gets: Lee una cadena de teclado, siendo el indicador de fin el retorno de carro. Coloca la cadena leída en *s.
-
#include <stdio.h>
-
char gets(chars);
-
kbhit: Comprueba si se ha pulsado alguna tecla. La cual será leída con alguna de las funciones anteriores. Si se puede leer alguna tecla devuelve un valor distinto de 0.
-
Funciones de entrada con formato: Controlan la entrada de datos en sentido opuesto al de las funciones de salida con formato.
-
scanf: Es la inversa de printf, pero donde va el argumento, ahora irá la dirección de la variable donde se va a almacenar lo leído del teclado.
-
#include <stdio.h>
-
int scanf(const char*formato[,dirección];
-
Si tiene éxito devuelve el nº de elementos leídos y almacenado, los cuales son guardados en la dirección especificada.
-
La cadena formato tiene una estructura similar a la utilizada en printf: comienza por % seguido de:
-
%[*][Anchura]tipo
-
Donde lo únicos elementos son % y el tipo.
-
Donde está * irá el elemento que será leído pero no asignado a ninguna dirección.
-
La anchura indica la cantidad de caracteres a ser leídos.
-
Los tipos de datos se encuentran en la tabla anterior Conversiones de tipo.
-
Modificaciones de la cadena formato: En las funciones de entrada con formato se pueden añadir ciertas modificaciones adicionales para controlar mejor la entrada.
-
También se puede utilizar la conversión de matriz de caracteres (%[W]c)
-
El juego de inspección se utiliza para especificar los únicos caracteres válidos de entrada. Sustituye al tipo %s. La sintaxis es:
Tipo | Función |
%[Caracteres] | Sólo son válidas las entradas Caracteres |
%[^Caracteres] | Sólo son inválidas las entradas Caracteres |
%[Principio-Final] | Sólo son válidas las entradas de Principio a Final |
-
Función gotoxy: Es una instrucción para controlar la posición de la escritura, ye que el lenguaje C permite como si dijéramos dividir la pantalla en celdas (quedando dividida en filas y columnas). La instrucción sería
-
gotoxy(x,y);
-
Siendo x e y las coordenadas.
FUNCIONES MATEMÁTICAS
Para usarlas es necesario incluir el fichero <math.h>.
No pueden ir sola, es decir, deben de haberse asignado antes o en una función printf
Función | Descripción |
double acos(double arg); | Devuelve el arcocoseno del argumento |
double asin(double arg); | Devuelve el arcoseno del argumento |
double atan(double arg); | Devuelve el arcotangente del argumento |
double atan2(double y, double x); | Devuelve el arcotangente del argumento |
double cos(double arg); | Devuelve el coseno del argumento |
double cosh(double arg); | Devuelve el coseno hiperbólico del argumento |
double exp(double arg); | Devuelve el nº e elevado al argumento |
double fabs(double num); | Devuelve el valor absoluto del argumento |
double log(double num); | Devuelve el logaritmo neperiano del argumento |
double log10(double num); | Devuelve el logaritmo en base 10 del argumento |
double pow(double base, double exp); | Devuelve la base elevada el exponente |
double sin(double arg); | Devuelve el seno del argumento |
double sinh(double arg); | Devuelve el seno hiperbólico del argumento |
double sqrt(double num); | Devuelve la raíz cuadrada del argumento |
double tan(double arg); | Devuelve la tangente del argumento |
double tanh(double arg); | Devuelve la tangente hiperbólica del argumento |
FUNCIONES DE CARACTERES
Para trabajar con ellas se debe introducir la unidad necesaria ctype.h
#include <ctype.h>
Función | Descripción |
int isalnum(int ch); | Devuelve 0 si el carácter no es alfanumérico |
int isalpha(int ch); | Devuelve 0 si el carácter no es una letra |
int isdigit(int ch); | Devuelve 0 si el carácter no es un nº |
int isgraph(int ch) | Devuelve 0 si el carácter no es imprimible |
int islower(int ch); | Devuelve 0 si el carácter no está en mayúsculas |
int ispunct(int ch); | Devuelve 0 si el carácter no es de puntuación |
int isspace(int ch); | Devuelve 0 si el carácter no es de espaciado |
int issupper(int ch); | Devuelve 0 si el carácter esté en minúsculas |
int isxdigit(int ch); | Devuelve 0 si el carácter no es un dígito hexadecimal |
int tolower(int ch); | Convierte el carácter en minúsculas |
int toupper(int ch); | Convierte el carácter en mayúsculas |
ESTRUCTURA “IF”
-
Esta estructura se utiliza de la siguiente forma:
-
Si condición sentencia1; en caso contrario sentencia2.
-
if(condición) sentencia1; else sentencia 2.
-
También se pueden anidar (colocar una condición dentro de otra):
-
if(condición1) sentencia1; else if(condición2); sentencia2; else if(condición3) sentencia3...
-
También lo podemos hacer para que se tengan que cumplir dos condiciones a la vez para que realice la sentencia, lo que seria la función AND:
-
Si condición1 y condición2 sentencia1 en caso contrario sentencia2.
-
if((condición1)&&(condición2))sentencia1; else sentencia2.
-
Otra forma puede ser que se tenga que cumplir como mínimo una de las condiciones:
-
Si condición1 o condición2 sentencia1; en caso contrario sentencia2.
-
if((condición1)||(condición2))sentencia1; else sentencia2.
-
Por último veamos una negación de la anterior:
-
Si no condición entonces sentencia1; en caso contrario sentencia2.
-
if!(condición)sentencia1; else sentencia2.
ESTRUCTURA “SWITCH”
-
Se utiliza cuando se tiene muchas condiciones anidadas.
-
Su estructura normal es:
-
switch(variable)
{
case Valor1: sentencia1;
break;
case valor2: sentencia(s)2;
break;
...
case ValorN: sentencia(s)N;
break;
default: sentencia(s) finales(es);
}
-
Si no se cumpliera ninguno de los valores, entonces se realizaría la sentencia correspondiente al default.
-
El break es necesario para que realice la sentencia, si no pasaría a la siguiente.
EL “OPERADOR TERNARIO?”:
-
Se utiliza para sustituir expresiones como:
-
if(condición) sentencia1; else sentencia 2.
-
De la forma siguiente, con el único fin de conseguir un código más conciso.
-
(condición)? Sentencia1; sentencia2;
EL “BUCLE FOR”:
-
Se utiliza cuando necesitamos realizar una tarea un det. nº de veces:
-
Su estructura es de la siguiente forma:
-
Desde principio hasta condición de finalización repetir...
-
for(indice=ValorInicial;condición;incremento)sentencia;
-
Donde índice es la variable que va a ir tomando valores a partir del ValorInicial con un increnmento mientras la condición sea verdadera.
-
La parte a repetir puede estar formada por varias sentencias, lo que se pondría {...}.
-
También podemos realizar repeticiones desde el final hasta el principio, como una cuenta atrás:
-
for (indice=ValorFinal;índice>=ValorInicial;Indice--)
EL BUCLE “DO ... WHILE”
-
Ahora el nº de repeticiones no es fijo.
-
Su estructura:
-
Repetir acción mientras condición.
-
do sentencia while condición;
-
La última parte, es decir donde va el while se debe introducir una expresión booleana como en la estructura if.
EL BUCLE “WHILE”
-
La diferencia con el anterior es que ahora se realiza primero la comprobación y luego la acción que se ha de repetir.
-
Su estructura es:
-
Mientras condición repetir acción
-
while (condición) sentencia;
-
Se ve que se compruébala condición antes de la repetición y en caso de que no se cumpla la primera vez, no se ejecuta la sentencia.
BUCLES ANIDADOS:
-
Se utiliza para introducir un bucle dentro de otro.
-
for (indice=ValorInicial1;indice1<ValorFinal1;indice++)...
FUNCIONES
-
Se utilizan para simplificar los programas, agrupando tareas que se han de repetir varias veces en una sola función, ahorrando memoria.
-
Las funciones no devuelven ningún resultado y tienen la misma estructura que el programa principal (se pueden definir variable, constantes, etc..) y su forma sería:
-
TipoDevuelto NombreFunción(ListaParámetros)
{
//...sentencias en C
return Resultado;
}
-
Donde TipoDevuelto corresponde al tipo de datos que debe devolver la función si fuera necesario. NombreFunción es el identificador válido en C que hace referencia a la función y ListaParámetros corresponde ala información que se envía desde la llamada. Por último return devuelve el resultado.
-
El ejemplo más simple es:
-
void NombreFunción(void)
{
...
//sentencias en C que forman el cuerpo de la función
...
}
-
Donde void significa que no tiene que devolver ningún tipo de dato y que no necesita ningún parámetro.
-
En C se deben de citar las funciones antes de su utilización antes de su utilización (en este paso se debe de poner al final ; (punto y coma), esto es lo que se llama Prototipo.
-
Para que un programa que utilice funciones funcione correctamente se debe definir la función y por norma general se realizará al final del programa principal (declaración del cuerpo) esta parte se realiza sin ;(punto y coma).
PASO DE PARÁMETROS
-
El paso de parámetros se utiliza cuando en un mismo programa se quiere utilizar una misma función en dos situaciones diferentes, es decir que el proyecto final sea el mismo, pero con l salvedad de cambiar solo un matiz
-
Un ejemplo de esto sería una función que llamamos InicializarPantalla y lo que pretendemos hacer es que en cada parte de le programa tenga un color de fondo y de letras distinto.
-
El cambio que debemos introducir es, por ejemplo:
-
Void NombreFunción(TipoParámetro1 Nombreparámetro1, TipoParámetro2 NombreParámetro2,...)
-
Lo que se aprecia es que en la declaración del procedimiento se han colocado los parámetros que en cualquier caso podemos cambiar.
Descargar
Enviado por: | Vicente |
Idioma: | castellano |
País: | España |