0% encontró este documento útil (0 votos)
32 vistas24 páginas

Lenguaje C

El lenguaje C, creado por Denis Ritchie en 1972, es un lenguaje de programación de nivel medio utilizado para desarrollar el sistema operativo UNIX, conocido por su flexibilidad y portabilidad. La programación en C implica escribir código fuente, compilarlo, y depurarlo, utilizando variables, tipos de datos y funciones, lo que permite una gran modularidad y eficiencia. Además, el lenguaje incluye características como la conversión automática de tipos y el uso de constantes, facilitando la creación de programas robustos y eficientes.

Cargado por

cesarpavluk
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
32 vistas24 páginas

Lenguaje C

El lenguaje C, creado por Denis Ritchie en 1972, es un lenguaje de programación de nivel medio utilizado para desarrollar el sistema operativo UNIX, conocido por su flexibilidad y portabilidad. La programación en C implica escribir código fuente, compilarlo, y depurarlo, utilizando variables, tipos de datos y funciones, lo que permite una gran modularidad y eficiencia. Además, el lenguaje incluye características como la conversión automática de tipos y el uso de constantes, facilitando la creación de programas robustos y eficientes.

Cargado por

cesarpavluk
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd

El Lenguaje C.

 Fue creado por Denis Ritchie en los Laboratorios Bell Telephone en 1972.
 Tenia como finalidad ser usado para crear el sistema operativo UNIX.
 Es poderoso y flexible de ahí su rápida difusión.
 Fue estandarizado por el American National Standards Institute (ANSI)
 Es un lenguaje de nivel medio: combina elementos de lenguajes de alto nivel
con la funcionalidad del ensamblador. Esto le permite hacer cosas que otros
lenguajes de alto nivel no pueden, como la manipulación de bits, bytes,
direcciones y es tan fácil de usar como cualquier otro lenguaje de alto nivel.
 Se puede incorporar órdenes en lenguaje ensamblador en medio de un
programa escrito en C (el programa ya no se podrá llevar a otros ordenadores
que no usen el mismo lenguaje ensamblador).
 Es muy portable, es decir, es posible adaptar el software escrito para un tipo
de ordenador en otro e incluso con diferentes sistemas operativos.
 Es un lenguaje de pocas palabras tiene solo 32 palabras clave.
 Es modular, usa mucho funciones.
 Tiene bibliotecas con funciones incorporadas, esto aumenta su potencia.
 A veces es complicado encontrar errores.
Pasos para crear un programa en C.

Programa: Algoritmo (secuencia no ambigua, finita y ordenada de
instrucciones para la resolución de un determinado problema)
traducido a un lenguaje de programación, de modo que un
ordenador es capaz de ejecutarlo.


Programación: Elaboración de un programa de manera que éste
Correcto Un programa será correcto si hace lo que debe hacer, de modo
sea: que se deben especificar de manera muy clara cuáles son los
datos sobre los que se trabajarán y lo que se debe hacer con ellos. Todo
debe ser documentado y probado antes de desarrollarlo.
◦ Eficiente Debe consumir la menor cantidad de recursos (tiempo y/o
memoria) posible.
◦ Claro Es muy importante la claridad y legibilidad de todo programa,
ya que facilitará al máximo la tarea de mantenimiento posterior del
software.
◦ Modular Los programas suelen subdividirse en subprogramas (módulos),
para reducir la complejidad de aquella parte que se está implementando y
facilitar la reutilización de código.
Pasos para la elaboración y ejecución de un programa:
Los pasos a seguir los podemos resumir de la siguiente manera:
1 Escribir el código fuente con un editor de texto sin formato.
2 Compilar el fichero fuente
3 Si se producen errores de sintaxis (o warnings) volver al editor y
eliminar los errores de sintaxis.
4 Si no hay errores se obtendrá el código objeto y el enlazador
construirá el archivo ejecutable.
5 Una vez tengamos el archivo ejecutable, será el sistema operativo
el encargado de colocar el programa en la memoria central y
ejecutarlo.
6 Comprobar el funcionamiento del programa.
7 Si se detecta errores o un mal funcionamiento del programa,
activar el debugger para analizar el programa y ejecutarlo sentencia
a sentencia.
8 Una vez que hayamos encontrado la causa del error, volveremos
al editor y lo corregimos.
9 El proceso de compilar, enlazar y ejecutar el programa lo
repetiremos hasta que no se produzcan errores.
Programa fuente: Es una serie de
enunciados o comandos escrito en un
lenguaje de alto nivel que se usan para
darle instrucciones a la computadora.
El mismo es un texto sin formato y se
lo guarda con extensión c. Necesita ser
traducido a código máquina para poder
ser ejecutado.

Compilador: Programa encargado de


traducir los programas fuentes escritos
en un lenguaje de alto nivel a lenguaje
máquina y de comprobar que las
llamadas a las funciones de librería se
realizan correctamente. Genera un
archivo objeto con extensión obj.

Programa (o código) objeto: Es el


programa fuente traducido (por el
compilador) a código máquina. Aún no es
directamente ejecutable.
Librerías son una colección de códigos (funciones) ya programados
y traducidos a código máquina (código objeto), listo para utilizar en
un programa y que facilita la labor del programador.

Linker (montador o enlazador): Es el programa encargado de


insertar al programa objeto el código máquina de las funciones de
las librerías (archivos de biblioteca) usadas en el programa y
realizar el proceso de montaje, que producirá un programa
ejecutable .exe.

Programa Ejecutable: Traducción completa a código máquina,


realizada por el enlazador, del programa fuente
y que ya es directamente ejecutable.
Primer programa en C
#include <stdio.h> #include <..> es una directiva del preprocesador, indica que
#include <stdlib.h> debe incluir, antes de la compilación el contenido del archivo
#include <conio.h> indicado. En este caso, el archivo stdio.h. Este archivo es un
archivo de cabecera de la librería stdio el cual contiene
int main(void)
prototipos, macros y constantes usados por la librería. Esta
{
librería esta incluida en cualquier compilador que usemos y
printf("Hola!\n");
return 0;
nos permite llamar a la función printf.
getch(); printf es la función que se encarga de mostrar un texto en
} pantalla. Es la responsable de que hayamos necesitado
escribir ese "include" al principio del programa.
int main (void) main debe existir siempre e indica el punto en el que realmente
comenzará a funcionar el programa. Después de "main" van dos llaves { y }, que delimitan
el bloque más importante: el cuerpo del programa, int delante indica que la función main
va a devolver un número entero y (void) indica que a la función no le entrego ningún dato.

getch() es una función que espera que se presione una tecla, se encuentra dentro de la
librería conio.h, para poder agregarla se deberá incluir el archivo de cabecera
correspondiente. Se puede agregar a un programa para evitar que salga del mismo
hasta que se presione una tecla cualquiera.
Cada enunciado termina con ;
return 0 es el valor que devuelve la función
/*Programa para calcular el producto de dos números*/
#include<stdio.h>
#include<conio.h>
int producto (int x, int y);/*esto es el prototipo de la función*/ int
main(void)
{
int a,b,c;
/*pide el primer numero*/
printf("Entre un numero entre 1 y 100 : ");
scanf("%d",&a);
/*pide el segundo numero*/
printf("\nEntre otro numero entre 1 y 100 : ");
scanf("%d",&b);
/*calcula el producto y lo muestra*/
c=producto(a,b); /*Aca se usa la función*/
printf("\n%d veces %d es = %d \n",a,b,c);
getch();
return 0;
}
/*Esto es la definición de la función*/
/*Funcion que cuando la llamo regresa el producto*/
int producto(int x,int y)
{
return (x * y);
}
 Los programas trabajan con distintos tipos de datos que pueden
ser números o caracteres.
 Y los mismos a su vez pueden ser variables o constantes a lo
largo del programa.
Variables
Una variable es un nombre para identificar una (o varias) posiciones
de memoria donde el programa guarda los distintos valores de una
misma entidad.
•El nombre de las variables pude incluir letras, números y el
carácter _.
•El primer carácter debe ser letra.
•Las mayúsculas y las minúsculas son distintas letras.
•No se pueden usar palabras clave como nombres de variables. •No
se pueden usar mas de 31 caracteres.
•Se aconseja usar letras minúsculas.
•Se aconseja usar nombres que tengan que ver con la función
en el programa.
Palabras clave:
auto default float register struct volatil
break do for return switch e
case double goto short typedef while
char else if signed union
const enum int sideof unsigned
continue extern long static void

Tipo de Variable Punto Flotante


TIPO BYTES VALOR VALOR
MINIMO MAXIMO
float 4 3.4E-38 3.4E+38
double 8 1.7E-308 1.7E+308
long double 10 3.4E-4932 3.4E+4932

Las variables de punto flotante son SIEMPRE con signo, y en el caso que el
exponente sea positivo puede obviarse el signo del mismo.
Tipos de Variables Enteras
TIPO BYTES VALOR MINIMO VALOR MAXIMO
signed char 1 -128 127
unsigned char 1 0 255
signed short 2 -32.768 +32.767
unsigned short 2 0 +65.535
signed int 2 -32.768 +32.767
unsigned int 2 0 +65.535
signed long 4 -2.147.483.648 +2.147.483.647
unsigned long 4 0 +4.294.967.295
Si se omite el calificador delante del tipo de la variable entera, éste se
adopta por omisión (default) como "signed".
La norma ANSI C no establece taxativamente la cantidad de bytes que ocupa
cada tipo de variable, sino tan sólo que un "long" no ocupe menos memoria
que un "int" y este no ocupe menos que un "short", los alcances de los
mismos pueden variar de compilador en compilador
Variables tipo carácter
El lenguaje C guarda los caracteres como números de 8 bits de acuerdo a la norma
ASCII extendido, que asigna a cada carácter un número comprendido entre 0 y 255
(un byte de 8 bits) Es común entonces que las variables que vayan a alojar
caracteres sean definidas como: char c;.
Sin embargo, también funciona de manera correcta definirla como int c;.
Las variables del tipo carácter también pueden ser inicializadas en su definición, por
ejemplo es válido escribir: char c=97; para que c contenga el valor ASCII de la letra
"a", esto nos obliga a recordar dichos códigos. Existe una manera más directa de
asignar un carácter a una variable; la siguiente inicialización es idéntica a la
anterior: char c = 'a';.
Si delimitamos un carácter con comilla simple, el compilador entenderá que debe
suplantarlo por su correspondiente código numérico. Lamentablemente existen una
serie de caracteres que no son imprimibles, en otras palabras que cuando editemos
nuestro programa fuente (archivo de texto) nos resultará difícil de asignarlas a una
variable ya que el editor las toma como un COMANDO y no como un carácter. Un
caso típico sería el de "nueva línea" ó ENTER.
Con el fin de tener acceso a los mismos es que aparecen ciertas secuencias de
escape convencionales. Su uso es idéntico al de los caracteres normales así para
resolver el caso de una asignación de "nueva línea" se escribirá: char c = '\n';.
/* Programa para obtener el tamaño de */
/* variables del C en bytes */
#include <stdio.h>
#include <conio.h>
int main( )
{
printf( "\nchar \t\t%d bytes", sizeof( char ));
printf( "\nint \t\t%d bytes", sizeof( int ));
printf( "\nshort \t\t%d bytes", sizeof( short ));
printf( "\nlong \t\t%d bytes", sizeof ( long ));
printf( "\nunsigned char \t%d bytes", sizeof( unsigned char ));
printf( "\nunsigned int \t%d bytes" , sizeof( unsigned int )) ;
printf( "\nunsigned short \t%d bytes" , sizeof( unsigned short ));
printf( "\nunsigned long \t%d bytes", sizeof( unsigned long));
printf( "\nfloat \t\t%d bytes", sizeof ( float ));
printf( "\nlong double \t%d bytes", sizeof ( long double ));
printf( "\ndouble \t\t%d bytes \n", sizeof( double ));
getch();
return 0;
}
Declaración de las variables
Antes de usar una variable se la debe declarar informándole al compilador el
nombre, el tipo de variable y ocasionalmente un valor específico, para que el
compilador destine cierta cantidad de memoria para guardarlas.
nombre_de_tipo nombre_de_variable=valor_de_variable;
nom_de_tipo nom_de_var1=val_de_var1, nom_de_var2=val_de_var2;
int contador;
unsigned char i=0;
double porcentaje, iva_importado=10.1;

typedef permite usar un nombre alternativo a un tipo de dato


existente, esto hace mas entendible al programa.

typedef int entero;


entero contador=0;
Conversión automática de tipos
Cuando dos o mas tipos de variables distintas se encuentran en una misma operación o expresión
matemática , ocurre una conversión automática del tipo de las variables.
Reglas de conversión (previamente a la realización de dicha operación):
• 1) Las variables del tipo char o short se convierten en int
• 2) Las variables del tipo float se convierten en double
• 3) Si alguno de los operandos es de mayor precisión que los demás , estos se convierten al tipo de aquel y
el resultado es del mismo tipo.
• 4) Si no se aplica la regla anterior y un operando es del tipo unsigned el otro se convierte en unsigned y el
resultado es de este tipo.

En las asignaciones, por ejemplo valor1=valor2;


Posteriormente al cálculo del resultado de valor2 (según las reglas antes descriptas), el tipo de este se iguala
al del valor1. El resultado no se verá afectado si el tipo de valor1 es igual o superior al del valor2, en caso
contrario se efectuará un truncamiento o redondeo, según sea el caso. Por ejemplo, el pasaje de float a int
provoca el truncamiento de la parte fraccionaria, en cambio de double a float se hace por redondeo.

Conversión explicita de tipos (casting)


Las conversiones automáticas pueden ser controladas a gusto por el programador, imponiendo el tipo de
variable al resultado de una operación.
(<nombre de tipo>)<expresión>
double d , e , f = 2.33 ; int i = 6 ;
e=f*i;
d = (int) ( f * i ) ;
e es 13.98 y d es 13.00.
Si la operación es d = (int) f * i; el resultado será el mismo?
Constantes
Es una posición de almacenamiento de datos cuyo valor no cambia una vez compilado el
programa.
Es conveniente usar letras mayúsculas al definirla para diferenciarla de las variables.
Ej unsigned int BASE 10;
const es un modificador del tipo de variable que le indica al compilador que dicho valor es
una constante, si a lo largo del programa se lo quiere modificar, el compilador indica un
error.
Ej const unsigned int BASE = 10;
También se pueden declarar constantes usando contenidos simbólicos. El compilador, en el
momento de crear el ejecutable, reemplazará el símbolo por el valor asignado.
Se usa la directiva al compilador #define su sintaxis es la siguiente: #define
nombre_constante valor
Ej #define BASE 10
A fin de tener control sobre el tipo de las constantes, se aplican la siguientes reglas :
• Una variable expresada como entera (sin parte decimal) es tomada como tal salvo que se
la siga de las letras F o L (mayúsculas o minúsculas)
• Una variable con parte decimal es tomada siempre como DOUBLE, salvo que se la siga de
la letra F ó L
• Si en cualquiera de los casos anteriores agregamos la letra U o u la constante queda
calificada como UNSIGNED (consiguiendo mayor alcance
• Una variable numérica que comienza con "0" es tomado como OCTAL
• Una variable numérica que comienza con "0x" o "0X" es tomada como hexadecimal
Enunciados, expresiones y operadores
Un enunciado es una indicación completa que da instrucciones a la
computadora para ejecutar alguna tarea. Por lo general ocupan una sola
línea y terminan con un punto y coma. Ej x=2+3;
Un enunciado compuesto es un conjunto de dos o mas enunciados encerrados
entre llaves.
Una expresión es cualquier cosa que evalúa un valor numérico.
Un operador es un símbolo que da instrucciones al C para que ejecute alguna
operación o acción en uno o mas operandos.

Operador de asignación:
Es el signo =. Ej x=y; esto indica que el valor de y es asignado a x. Del lado
derecho puede haber un expresión y del lado izquierdo solo puede haber una
variable.

SIMBOLO DESCRIPCION EJEMPLO ORDEN DE EVAL

= igual a a=b 13

op= pseudocodigo a += b 13

=?: asig.condicional a = (c>b)?d:e 12


Una operación aritmética o de bit cualquiera (simbolizada por OP )
a = (a) OP (b) ;
puede escribirse en forma abreviada como :
a OP= b ;
Por ejemplo
a += b ; /* equivale : a = a + b */
a -= b ; /* equivale : a = a - b */
a *= b ; /* equivale : a = a * b */
a /= b ; /* equivale : a = a / b */
a %= b ; /* equivale : a = a % b */

ASIGNACION CONDICIONAL:
var1 = ( operación relacional o lógica ) ? (var2) : (var3) ;
de acuerdo al resultado de la operación condicional se asignará a var1 el
valor de var2 o var3. Si aquella es CIERTA será var1= var2 y si diera FALSO
, var1 = var3 .
Por ejemplo, si quisiéramos asignar a c el menor de los valores a o b ,
bastará con escribir :
c=(a<b)?a:b;
OPERADORES ARITMETICOS
SIMBOLO DESCRIPCION EJEMPLO ORDEN DE EVAL.

+ SUMA a+b 3
- RESTA a-b 3
* MULTIPLICACION a*b 2
/ DIVISION a/b 2
% RESTO DIVISION a%b 2
- SIGNO -a 2

SIMBOLO DESCRIPCION EJEMPLO ORDEN DE EVAL

++ incremento ++i o i++ 1

-- decremento --i o i-- 1

Pueden tener un solo operando o dos, tienen un solo operando los


operadores de incremento decremento y signo. Los restantes tienen
dos operandos.
x++; es equivalente a x=x+1;
x–; es equivalente a x=x-1;
Solo se puede aplicar a variables.
x++ modo postfijo modifica el operando después de usarlo
Ej x=10; y=x++; /*y=10 x=11*/
++x modo prefijo modifica el operando antes de usarlo
Ej x=10; y=++x; /*y=11 x=11*/
-x; le cambia el signo a x.

x%y; se usa para calcular el resto del cociente entre dos números enteros, no
puede ser usado en variables del tipo flotante.
Ej x=11; y=x%3; /* y=2 */
OPERADORES DE MANEJO DE BITS
Estos operadores muestran una de las armas más potentes del
lenguaje C , permiten modificar bit a bit las variables . Debemos
anticipar que estos operadores sólo se aplican a variables del tipo
char, short, int y long y no pueden ser usados con float o double.

SIMBOLO DESCRIPCION EJEMPLO ORDEN DE EVAL.

& AND a&b 7

| OR a|b 9

^ XOR a^b 8

<< DESPLAZAMIENTO A LA a << b 4


IZQUIERDA
>> DESPLAZAMIENTO A LA a >> b 4
DERECHA
~ NOT (COMPLEMENTO A ~a 1
UNO)
OPERADORES RELACIONALES
Todas las operaciones relacionales dan sólo dos posibles
resultados : verdadero o falso . En el lenguaje C, falso queda
representado por un valor entero nulo (cero) y verdadero por
cualquier número distinto de cero

SIMBOLO DESCRIPCION EJEMPLO ORDEN DE EVAL

< menor que (a < b) 5

> mayor que (a >b) 5

< = menor o igual que (a <= b) 5

>= mayor o igual que ( a >= b ) 5

= = igual que ( a == b) 6

!= distinto que ( a != b) 6
OPERADORES LOGICOS
Estos operadores permiten realizar conectividad lógica entre operadores relacionales,
los resultados obtenidos siembre serán verdadero o falso

SIMBOLO DESCRIPCION EJEMPLO ORDEN DE EVAL

&& Y (AND) (a>b) && (c < d) 10

|| O (OR) (a>b) || (c < d) 11

! NEGACION (NOT) !(a>b) 1


Precedencia de operaciones:
En primer lugar se realizarán las operaciones indicadas entre
paréntesis. Si hay varios niveles de paréntesis se ejecutan de
adentro hacia afuera.
Luego las restantes según el orden indicado en cada una de las
tablas. Si tuvieran igual orden se analizan de izquierda a derecha.
Para evitar errores en los cálculos es conveniente usar paréntesis,
sin limitación de anidamiento, los que fuerzan a realizar primero las
operaciones incluidas en ellos . Los paréntesis no disminuyen la
velocidad a la que se ejecuta el programa sino que tan sólo obligan
al compilador a realizar las operaciones en un orden dado, por lo
que es una buena costumbre utilizarlos.
Comentarios:
Un comentario puede empezar en una línea y terminar en otra distinta,
así:
/* Este es un comentario
que ocupa más de una línea */
O también:
// Este es un comentario hasta fin de línea.

Héctor Albano Diego Codevilla

También podría gustarte