Академический Документы
Профессиональный Документы
Культура Документы
Conocer todas las estructuras básicas para comenzar a trabajar como Lenguje C,
estructuras de declaración de variables y asignaciones de valores, operaciones
aritméticas, lógicas.*** este no ****
Describir todas las estructuras básicas del Lenguaje C para desarrollar códigos que
permitan el manejo de datos de manera eficiente
Temas
● Expresiones y sentencias
● Variables y palabras reservadas
● Caracteres especiales
● Tipos de datos
● Constantes : Enteras, de caracteres, enumeradas
● Operadores
● Comentarios
● Identación ***Myrle este punto está en el diseño instruccional que ya
entregamos ***
● Expresiones y Sentencias
Expresiones
Expresiones aritméticas
−b + b 2 − 4 ac
x= --------------------
2a
se escribe, en C en la forma:
x=(-b+sqrt((b*b)-(4*a*c)))/(2*a);
Expresiones lógicas
Los valores lógicos son los elementos con los que se forman éstas expresiones;
verdaderos (true, o distintos de 0) y falsos (false, o iguales a 0), y los operadores lógicos
||, && y !. También se pueden emplear los operadores relacionales (<, >, <=, >=, ==, !
=) para producir estos valores lógicos a partir de valores numéricos. Estas expresiones
equivalen siempre a un valor 1 (true) o a un valor 0 (false). Por ejemplo:
a = ((b>c)&&(c>d))||((c==e)||(e==b));
Expresiones generales
(a - b*2.0) && (c != d)
a = b = c = 1;
que equivale a:
a = (b = (c = 1));
Sentencias
Sentencias simples
Ésta es una expresión de algún tipo terminada con un caracter (;), lo que se
considera un caso típico son las declaraciones o las sentencias aritméticas. Por ejemplo:
float real;
espacio = espacio_inicial + velocidad * tiempo;
{
int i = 1, j = 3, k;
double masa;
masa = 3.0;
k = y + j;
}
Variables o identificadores
En general, se aconseja elegir los nombres de las funciones y las variables de forma
que permitan conocer a simple vista qué tipo de variable o función representan,
utilizando para ello tantos caracteres como sean necesarios. Esto ayuda a simplificar en
gran medida la tarea de programación y, sobre todo, de corrección y mantenimiento de
los programas. También es verdad que los nombres largos son más laboriosos de
escribir, pero en general resulta rentable tomarse esa pequeña molestia.
Palabras reservadas en C
Caracteres especiales
● Tipos de datos
short y long
Es normal que el rango de representación ofrecido por un tipo es suficientemente
grande para las necesidades habituales. Sin embargo, en C es posible sugerir al
compilador que utilice más memoria a la hora de almacenar la variable de ese tipo. Esto
se hace con el calificador long:
signed y unsigned
Éstos se utilizan en los tipos char e int para indicarle al compilador que la variable
declarada tomará valores negativos y positivos (signed) o sólo positivos o cero
(unsigned).
static(local)
static(global)
Las variables globales son por defecto accesibles desde cualquier fuente del
programa; si se declara una variable global con el modificador static se impedirá que
Pág. 18 Curso: Lenguaje C Unidad 2: Tipo de datos y
operaciones
Programa de Formación de la Academia de Software Libre
éstas variables sean visibles desde otro fuente. De igual forma, las funciones definidas en
un fuente son utilizables desde cualquier otro. Si se desea impedir que una función sea
llamada desde fuera del fuente en la que se encuentra definida se utilizará el modificador
static.
register
volatile
Este modificador se usa con variables que puedan ser modificadas desde el
exterior del programa por procesos externos. Obliga al compilador a leer de memoria el
valor de la variable siempre que vaya a ser usada, aunque ya tenga dicho valor en algún
registro de alguna lectura anterior. Se utiliza con variables en las que no se sabe con
certeza cuándo se va a modificar su contenido.
volatile int i;
const a = 6;
Nota: es normal inicializar una constante con un valor, ya que no puede ser cambiada de
alguna otra forma.
Constantes de caracteres
Las cadenas de caracteres son representadas encerrando la cadena entre comillas
dobles, un ejemplo de esto sería "hola cocacola". Existen ciertos caracteres que no se
puede, o donde no se considera cómodo, introducir de esta forma, como son los
caracteres de control: tabulador, retorno de carro, entre otros.
Para poderlos introducir hay que utilizar unos códigos que consisten en una barra
invertida y una letra, estos son los principales:
Pág. 18 Curso: Lenguaje C Unidad 2: Tipo de datos y
operaciones
Programa de Formación de la Academia de Software Libre
Código Significado
\n Retorno de carro
\t Tabulador
\” Comillas dobles
\` Comilla simple
\\ Barra invertida
Tabla 2.1 Constantes de cadena
Constantes numéricas
Además de las constantes enteras tipo 234 y en coma flotante de la forma 10.4, a
veces, sobre todo al trabajar a bajo nivel, resulta más cómodo poder introducir la
constante en base 8 (octal) o 16 (hexadecimal) que en base 10. El lenguaje C permite
especificar constantes enteras en hexadecimal u octal, ya que es normal la utilización de
estos sistemas de numeración. Una constante hexadecimal empieza por 0x seguido del
número esa base. De igual forma, una constante octal comienza por 0:
Constantes enumeradas
if(color == rojo)...
if(color == 0)...
● Operadores
Los operadores son símbolos (+, -, *, /, etc.) los cuales cuentan con una función
predefinida (suma, resta, multiplicación, etc.) y que recibe sus argumentos de manera
infija, en el caso de tener 2 argumentos o de manera prefija o postfija, en el caso de
tener uno solo. En C existe una gran variedad de operadores, que pueden ser agrupados
de la siguiente forma:
● Operadores aritméticos
● Operadores relacionales
● Operadores lógicos
● Operadores a nivel de bit (bitwise operators)
● Operadores especiales
Operadores aritméticos
x = 4;
y = x++;
/* Después de esta instrucción x valdrá 5 e */
/* y valdrá 4 (como se veraa continuación). */
x = 4;
/* Un pequeño for */
int i,j;
int x,y;
x = 2004;
y = ++x;
/* x e y valen 2005. */
int x,y
x = 2004;
y = x++;
/* y vale 2004 y x vale 2005 */
Operadores relacionales
Operador Acción
> Mayor que
>= Mayor o igual que
< Menor que
<= Menor o igual que
== Igual
!= Distinto
Operadores lógicos
numero = 2701;
if ( EsPrimo(numero) && (numero > 1000) ){
/* Ejecutara este código si numero */
/* es primo y numero es mayor que 100 */
}
Los operadores lógicos con los que cuenta C son los siguientes:
Operador Acción
&& Conjunción(y)
|| Disyunción(o)
! Negación
De la misma forma que la igualdad, hay que tener especial cuidado con los
operadores && y ||, ya que si se coloca sólo un & ó un |, se está haciendo referencia a
Pág. 18 Curso: Lenguaje C Unidad 2: Tipo de datos y
operaciones
Programa de Formación de la Academia de Software Libre
un “and” ó un “or” a nivel de bit, como resultado el código no llevará acabo lo que se
desea, o puede que algunas veces lo haga y otras veces no.
Para ciertos casos nos puede interesar manipular datos a nivel de bit; por ejemplo
activar o desactivar flags. Un flag es una “variable” que puede tomar 2 valores, por lo
que se suele representar con un bit. Debido a que en C, y en la mayoría de los lenguajes
de programación, no existen tipos predefinidos de un bit, lo que suele hacerse es agrupar
varios flags en una variable de tipo entero (“short int”, “int” o lo que se desee).
Si se quiere tener acceso a estos flags, o si solo se desea activarlos es necesario
utilizar operadores a nivel de bit. Se presenta un ejemplo de este caso
Se necesita especificar lo que una llamada al sistema ``open'' (en POSIX) debe
hacer con el archivo abrir: crearlo si no existe, sobreescribirlo si existe, no
sobreescribirlo, etc.
int fd;
close (fd);
Pág. 18 Curso: Lenguaje C Unidad 2: Tipo de datos y
operaciones
Programa de Formación de la Academia de Software Libre
Operador Acción
& AND a nivel de bit
| OR a nivel de bit
ʌ XOR a nivel de bit
~ Complemento
<< Desplazamiento a la
izquierda
>> Desplazamiento a la
derecha
El operador AND (&): este operador compara dos bits; si los dos son 1 el resultado es
1, en otro caso el resultado será 0. Ejemplo:
c1 = 0x45 --> 01000101
c2 = 0x71 --> 01110001
---------------------------
c1 & c2 = 0x41 --> 01000001
El operador OR (|): este operador compara dos bits; si cualquiera de los dos bits es 1,
entonces el resultado es 1; en otro caso será 0. Ejemplo:
i1 = 0x47 --> 01000111
i2 = 0x53 --> 01010011
---------------------------
i1 | i2 = 0x57 --> 01010111
El operador XOR (ʌ): este operador OR exclusivo o XOR, dará como resultado un 1 si
cualquiera de los dos operandos es 1, pero no los dos a la vez. Ejemplo:
i1 = 0x47 --> 01000111
i2 = 0x53 --> 01010011
---------------------------
Pág. 18 Curso: Lenguaje C Unidad 2: Tipo de datos y
operaciones
Programa de Formación de la Academia de Software Libre
Operadores especiales
El operador de asignación
La asignación se considera una sentencia especial en otros lenguajes de
programación, en C, esto no es así, la asignación es un operador más. Este operador,
tiene como lvalue (left value, el valor a la izquierda del operador) un variable y como
rvalue una expresión válida. Ya que es un operador, el todo es una expresión:
int x,y,z;
x = y = z = 0;
int x;
x = x + 2;
int x;
x += 2;
El operador sizeof
double un_double;
El operador cast
Este operador se considera un operador unario, que hace una conversión explícita
(la fuerza) del tipo de una expresión. Su formato es el siguiente “(nombre_de_tipo)
expresión”, la expresión se convierte al tipo nombrado, siempre que esa conversión sea
posible.
int n; // n es un entero
Con este operador se encadenan varias expresiones. En este caso lvalue y rvalue
son expresiones válidas. El valor resultante de evaluar una expresión del tipo ``(lvalue ,
rvalue)'' es el resultante de evaluar el rvalue (esto no significa que el lvalue no se
evalúe). Ejemplo:
x = ( y = 9, z = 0); // x valdrá 0.
int i, j;
char *cadena = strdup ("hola mundo!");
printf("%s\n", cadena);
for ( i = 0, j = strlen(cadena) - 1; i > j ; i++, j--){
cadena[i] = '*';
cadena[j] = '*';
printf("%s\n", cadena);
}
x = 5 * 2 + 1; // x == 11
y = 5 * (2 + 1); // x == 15
a + b * c = 20
(a + b) * c = 40
a + (b * c)= 20
-Los operadores de mayor prioridad son evaluados antes que los que tienen menor
prioridad.
-Los operadores que tienen la misma prioridad son evaluados de izquierda a derecha, por
lo que:
En a + b - c es evaluado como (a + b) – c
En a - b - c es evaluado como (a - b) – c
● Comentarios
Los comentarios pueden actuar también como separadores de otros tokens propios
del lenguaje C. Una fuente frecuente de errores, no especialmente difíciles de detectar, al
programar en C, es el olvidarse de cerrar un comentario que se ha abierto previamente.
El lenguaje C permite también otro tipo de comentarios, tomado del C++. Todo lo
que va en cualquier línea del código por detrás de la doble barra (//) y hasta el final de la
línea, se considera como un comentario y es ignorado por el compilador. Esta forma es
más cómoda que la anterior para el caso de los comentarios cortos, ya que no hay que
preocuparse de cerrar el comentario, el fin de línea actúa como cierre. En cambio, si un
comentario ocupa varias líneas hay que repetir la doble barra (//) en cada una de éstas.
El último ejemplo podría ponerse en la forma con este segundo procedimiento de
introducir comentarios: