Calificación:
  • 0 voto(s) - 0 Media
  • 1
  • 2
  • 3
  • 4
  • 5
Apuntes de C
#1
IMPORTANTE

Este Post no pretende ser un Curso de C, tan sólo unos apuntes de C, así que iremos directo al grano...
Y no es un Curso de C porque no diremos aquello de...


C fue creado por Brian Kernighan y Dennis Ritchie en 1972 en los laboratorios Bell

y que Dennis creó el primer compilador de C para un DEC PDP-11 con un sistema operativo Unix, y que C proviene de un lenguaje anterior, el lenguaje BCPL escrito por Martin Richards (1967) , del cual Ken Thompson realizó un lenguaje llamado B (1970), y que por eso este se llama C  

Vaya!!! ya lo he dicho no?  Feliz
Bueno, ya puestos contaremos toda la historia  Feliz

Supongo que os preguntareis que había antes del BCPL de Martin Richards?

pues el lenguaje CPL , Combined Programming Language (Universidad de Londres 1963)
pero era un lenguaje con un juego de instrucciones demasiado amplio que lo hacia muy dificil de aprender

y antes que el CPL?

El CPL se desarrolló inspirandose en ALGOL (1960) , ALGOL-60 (Algorithmic Language , Lenguaje Algorítmico)

Algol fue popular en las universidades pero no fue ampliamente utilizado fuera de estas, desarrollado por un comité internacional que pretendía desarrollar un lenguaje con un nivel más alto que el Fortran

Fortran (Formula Translating System, 1957)  John Backus de IBM 

Backus fue el encargado de dirigir el proyecto de investigación en IBM para la realización de un lenguaje de Alto Nivel especializado en el cálculo numérico

Y estos son lenguajes que han influido en C 
como pueden ver en los siguientes gráficos hay otros lenguajes y otras ramas...
pero es a partir del Fortran dónde "Nace" de alguna manera C  

[Imagen: lenguajes_program...historia-543ab37.png]

[Imagen: genealogy-of-high...anguages-543ac53.jpg]

[Imagen: family-543ac80.png]

Volviendo al C, C es un lenguaje que se considera de nivel medio, está cerca de la máquina y cerca del programador,
ya que combina elementos de lenguaje de alto nivel, esto significa más comprensible para el programador, con funcionalidades propias de lenguajes de bajo nivel como el ensamblador, ya que con C el programador puede acceder a los recursos de la máquina a bajo nivel (manejo directo de bits)

A partir de su creación, aparecieron distintas versiones de C, cada una con distintas características, y con ello apareció también la necesidad de unificar todas esas versiones, así surgió el Standard de C, el ANSI-C, que establece una serie de características que todo compilador de C debe cumplir, para que todos los programas desarrollados en C sean portables entre distintos ordenadores



Estos Apuntes se irán ampliando poco a poco, no se puede escribir en este hilo
porque sólo son apuntes y no un debate Boina
Si alguien encuentra un error o quiere comentar algo puede utilizar un hilo de Debate para comunicarlo
Responder
#2
Código:
/* Comentario - Hola Mundo */

#include <stdio.h>

void main()
{
printf("Hola Mundo\n");
}



/*Comentario - Hola Mundo */

Un comentario no se compila, se emplea para describir trozos de código o simplemente para anotar información adicional o para anular código, puede incluir varias líneas

#include

La directiva include le indica al preprocesador que incluya en el programa otro archivo en este caso el stdio.h, este archivo contiene las definiciones de entrada y salida de la biblioteca de C, como printf aparte de este hay otros archivos que contienen otras definiciones de funciones

Si se utiliza < stdio.h> se le está diciendo al compilador que busque el archivo en la biblioteca del compilador
Si se utiliza "stdio.h" se le está diciendo al compilador que busque en el directorio actual 

void main()
{

}


main es la función principal, es la primera en ejecutarse, todos los programas en C tienen una
void (vacío) indica que la función no devolverá nada

Es más interesante y correcto poner un int en vez de un void para que devuelva un valor hay que incluir un return 0;
si el programa acaba correctamente devolverá un 0 y en caso contrario se suele utilizar un 1 o -1 para indicar que no acabado correctamente

los paréntesis vacíos () indica que no hay parámetros

{}  las llaves indican el comienzo de una función y su final

printf("Hola Mundo\n");

La función printf nos muestra un mensaje en la pantalla

\n es un carácter de escape que sirve para hacer un salto de línea

; es la forma que utiliza C para separar una instrucción de otra... NO te olvides ponerlo!!!
Responder
#3
Proceso de Compilación


[Imagen: compilacion-543f5c4.gif]

Identificadores


Combinación de letras, números y carácter de subrayado, teniendo en cuenta que no puede empezar por un número, tampoco se pueden poner espacios
C distingue entre mayusculas y minusculas

variable1
Variable1
_Variable

aunque pueden tener el tamaño que quieran, el estándar ANSI sólo reconoce los primeros 31 caracteres si se superan se considerará el mismo identificador


I_12345678901234567890123456789A
I_12345678901234567890123456789B

Se recomienda que no superen los 6 caracteres si va formar parte de un proceso de enlazado (variables o nombres de función que pueden ser usados por distintos archivos)



Palabras Clave Reservadas

Estas palabras no pueden ser utilizadas como identificadores, ya que tienen un significado ya definido en el lenguaje


auto, break, case, char, const, continue, default, do , double, else, enum , extern, float, for, goto, if, int, long, register, return, short, signed, sizeof, static, struct, switch, typedef, union, unsigned, void, volatile, while



Tipos de Datos

5 tipos de datos fundamentales


char carácter 

int entero

float real

double real de doble precisión

void sin valor



Modificadores de Tipos 
  • short           entero corto

  • long            entero largo y doble largo

  • unsigned     entero sin signo

  • signed         entero con signo


Combinación de tipos de datos con modificadores

char   -128 a 127

unsigned char   0 a 255

signed char   -128 a 127

int   -32768 a 32767

unsigned int   0 a 65535

signed int   -32768 a 32767

short int   -32768 a 32767

unsigned short int   0 a 65535

signed short int   -32768 a 32767

long int   -2147483648 a 2147483647

signed long int   -2147483648 a 2147483647

unsigned long int   0 a 4294967295

float   6 dígitos de precisión

double   10 dígitos de precisión

long double 10 dígitos de precisión
Responder
#4
Declaración de variables y alcance


Las variables pueden ser declaradas básicamente en cuatro lugares

- Fuera de todas las funciones del programa - Variables Globales - Accesibles desde cualquier parte del programa
- Dentro de una función - Variables Locales - Accesibles sólo para la función en la que se declara
- Como parámetros a la función - Accesibles de la misma forma que si se declaran dentro de la función
- Dentro de un bloque de código - Accesibles sólo dentro del bloque donde se ha declarado 

Especificadores de Almacenamiento


Existen 4  especificadores de almacenamiento y  preceden al tipo de dato de la variable

auto     Variable local (por defecto)
extern  Variable externa
static    Variable estática
register Variable registro

auto se utiliza para declarar una variable local que solamente existe cuando estemos dentro del bloque del programa donde se declara, dado que por defecto toda variable local es auto, no suele usarse

extern Se utiliza en los programas compuestos por varios módulos, se utiliza sobre Variables Globales
si una variable se declara como extern, el compilador no crea un almacenamiento en memoria para ella, ya que entiende que ya ha sido declarada en otro módulo del programa

static 
en  Variable Locales indica que debe almacenarse de forma permanente en memoria, como si fuera una variable local, pero su alcance es el que corresponde a una variable Local, el efecto que consigue es que la variable conserve su valor entre llamadas a la función.

En Variable Globales indica que esa Variable Global es Local al módulo del programa donde se declara y por tanto no será conocida por ningún otro módulo del programa

register
Se aplica sólo a variables locales de tipo char e int ya que este especificador indica al compilador que en caso de ser posible mantenga esa variable en un registro de la CPU y no cree un espacio en la memoria, en caso de no ser posible creará el espacio en memoria

Se utiliza normalmente para contadores de bucles porque los registros de la CPU son mucho más rápidos que la Memoria, pero sólo se utilizarán si hay algún registro libre en ese momento.
Responder


Salto de foro:


Usuarios navegando en este tema: 1 invitado(s)