historia de lenguaje


lenguaje C nació en los Laboratorios Bell de AT and T y ha sido asociado con el sistema operativo UNIX, ya que su desarrollo se realizó en este sistema y debido a que tanto UNIX como el propio compilador C y la casi totalidad de los programas y herramientas de UNIX, fueron escritos en C. 

El lenguaje C fue creado entre los años 1970 y 1972 por Brian Kernighan y Dennos Ritchie para escribir el código del sistema operativo UNIX. Fue uno de los lenguajes de programación mas aceptados por los programadores, por que hace una conjugación en lenguaje de alto nivel y lenguaje máquina. El lenguaje C es el resultado de un proceso de desarrollo que inició con un lenguaje denominado BCPL. Este influenció a otro llamado B (inventado por Ken Thompson). En los años 70; éste lenguaje llevó a la aparición del C; este lenguaje solo es una modificación del lenguaje B. El lenguaje C se llama de esta forma debido a que su predecesor fue llamado B.
La novedad que proporcionó el lenguaje C sobre el B fue el diseño de tipos y estructuras de datos. Los tipos estructurados básicos de C son las estructuras, las uniones, y los arrayas. Estos permiten la definición y declaración de tipos de mayor complejidad.
El lenguaje C se encuentra en la jerarquía de lenguajes en un nivel intermedio entre Pascal y el Ensamblador. Pretende ser un lenguaje de alto nivel con la versatilidad del bajo nivel. 


          Estructura e un programa

Un programa en C consta de una o más funciones, la función principal se llama main. Cada función debe contener: cabecera, argumentos y sentencias.


Todo programa en C consta de una o más funciones, una de las cuales se llama main. El programa comienza en la función main, desde la cual es posible llamar a otras funciones.

Cada función estará formada por la cabecera de la función, compuesta por el nombre de la misma y la lista de argumentos, la declaración de las variables a utilizar y la secuencia de sentencias a ejecutar

tipos de datos c.

Tipos de datos básicos

C ofrece tres tipos de datos básicos:

  • Números enteros definidos con la palabra clave int

  • Letras o caracteres definidos con la palabra clave char

  • Números reales o en coma flotante definidos con las palabras claves float o double

  • Enteros

Se definen con int y admiten de forma opcional dos prefijos modificadores:

  • short y long: Modifica el tamaño en bits del entero. Existen por tanto tres tipos de enteros: intshort int (que se puede abreviar como short), y long int (que se puede abreviar como long).

    El lenguaje C no define tamaños fijos para sus tipos de datos básicos. Lo único que garantiza es que un short int tiene un tamaño menor o igual que un int y este a su vez un tamaño menor o igual a un long int. Esta característica del lenguaje ha complicado la creación de programas que sean compatibles entre varias plataformas.

  • unsigned: define un número natural (mayor o igual a cero).

  • Sugerencia

    En tu entorno de desarrollo crea un fichero de texto con la siguiente estructura (puedes simplemente copiar y pegar el texto del siguiente cuadro):

    int main() 
    {
    
    }

    Inserta en la función main varias definiciones de enteros para probar todas las combinaciones posibles (hasta diez). Para comprobar que la sintaxis utilizada es correcta abre una ventana con el intérprete de comandos y, en la carpeta donde se encuentra el fichero creado, ejecuta el comando gcc -Wall -o programa fichero.c reemplazando fichero.c por el nombre del fichero que has creado. Si el comando no imprime mensaje alguno por pantalla, tu programa es correcto. Verás que el compilador genera un fichero con extensión .o, puedes borrarlo.


Declaración de variables en C y C++ 

El artículo de hoy lo vamos a dedicar a un tema esencial en cualquier lenguaje de programación, como son las variables, en concreto vamos a ver cómo declarar variables en C y C++.

nde podemos guardar información, y dependiendo del tipo de variable que nosotros necesitemos, ese espacio ocupara mas o menos tamaño en la memoria.

Para poder usar una variable en un programa, previamente hay que definirla con un tipo y un identificador (es decir, un nombre para la variable). Importante tener en cuenta que en C y C++ todas las variables se deben declarar antes de su uso, si no, se producirá un error de compilación

Por ejemplo:
                         int numero;

En la linea anterior definimos una variable de tipo entero que se llama numero, seguidamente hay que añadir un punto y coma a la expresión:
  1. El punto y coma cumple dos funciones, la primera indicarle al compilador de C++ que esa linea ya ha terminado y la segunda transforma la expresión en una instrucción que se ejecutará en el programa.

    Cuando se llegue a esa linea, el programa reservará espacio de memoria según el tipo de variable para poder escribir y leer valores.

    A continuación se muestra un programa donde solo declara variables de tipos distinto

  2. int main()
    {
      char caracter;
      short valor;
      int numero;
      long numeroMasLargo;
      float numeroRealFloat;
      double numeroRealDoble;
    
      // fin
      return 0;
    }
  3. Sin embargo declarar una cadena en C/C++ es un poco más complicado.

    Una cadena en C++ es un conjunto de caracteres, o valores de tipo char, terminados con el carácter nulo, es decir el valor numérico 0. Internamente, en el ordenador, se almacenan en posiciones consecutivas de memoria. Este tipo de estructuras recibe un tratamiento muy especial, ya que es de gran utilidad y su uso es continuo.

    La manera de definir una cadena es la siguiente:

    char <nombre> [longitud];

    Cuando se declara una cadena hay que tener en cuenta que tendremos que reservar una posición para almacenar el carácter nulo que indica en final de la cadena, de modo que si queremos almacenar la cadena “HOLA”, tendremos que declarar la cadena como:

    char Saludo[5];

    Las cuatro primeras posiciones se usan para almacenar los caracteres “HOLA” y la posición extra, para el carácter nulo.

    También nos será posible hacer referencia a cada uno de los caracteres individuales que componen la cadena, simplemente indicando la posición. Por ejemplo el tercer carácter de nuestra cadena de ejemplo será la ‘L’, podemos hacer referencia a él como

    Saludo[2];

    Es muy importante tener presente que en C++, los índices tomarán valores empezando siempre en cero, así el primer carácter de nuestra cadena sería Saludo[0], que es la letra ‘H’.

    A modo de ejemplo la manera correcta de asignar una cadena es:

    char Saludo[5];
    Saludo[0] = 'H';
    Saludo[1] = 'O';
    Saludo[2] = 'L';
    Saludo[3] = 'A';
    Saludo[4] = 0
operadores
  1. Operadores en C

    Operadores de asignación

    La operación más importante en cualquier lenguaje de programación es la asignación:

    DdFCDescripción
    =Asignación

    En C hay muchos operadores de asignación que serán en realidad simplificaciones de expresiones más complejas, como las auto-operaciones (+=-=*=/=&=, ...) y los pre/post incrementos/decrementos (++--).

    En general estas expresiones no podrán ser utilizadas en los diagramas de flujo.

    Operadores aritméticos

    Cabe destacar que se diferencian la división entera y la división real, según los operandos.

    DdFCDescripción
    ++Suma, adición
    --Resta, sutracción
    .*Multiplicación, producto
    Div/Cociente división entera
    Mod%Resto división entera
    //División

    Operadores relacionales

    DdFCDescripción
    >>Mayor
    >=Mayor o igual
    <<Menor
    <=Menor o igual
    ===Igual
    !=Diferente

    Operadores lógicos

    Los operandos son considerados falsos (valor 0) ó ciertos (valor distinto de 0). El resultado siempre es 0 ó 1.

    DdFCDescripción
    ^&&And, y, conjunción
    ||Or, o, disyunción
    ¬!Not, no, negación

    Para estudiar el resultado se utilizan las tablas de verdad.

    Operadores bit a bit

    Afectan a los operandos bit a bit, por lo que se aplica la operación lógica a cada uno de ellos. El resultado bit a bit es 0 ó 1 pero la composición de estos resultados no tiene porqué ser 0 ó 1, como era el caso en los operadores lógicos.

    DdFCDescripción
    AndBB&And bit a bit
    OrBB|Or bit a bit
    CompBB~Complemento a uno o negación bit a bit
    XorBB^O-exclusiva bit a bit

    Las tablas de verdad, aplicadas bit a bit a los operandos, son:


    Operador condicional

    Es un operador ternario, es decir, tiene tres operandos.

    Su funcionamiento es el siguiente: para una ejecución ? e1 : e2 siendo ce1 y e2 tres expresiones,

    • Se evalúa c
      • Si el resultado es cierto (es decir, distinto de cero)
        • se evalúa e1 y éste sera el resultado.
      • Si no (el resultado es falso o cero)
        • se evalúa e2 y éste sera el resultado.

    Ejemplos. Para x = 4y = 2z = 7:

    • La expresión x >= 5? 1:0 se evalúa a 1
    • La expresión x >= 5? y:z se evalúa a 7
    • La expresión x <= 5? y:z se evalúa a 2
    • La expresión x ? z+y:z-y se evalúa a 9
    • La expresión x >= 0 ? sqrt(x):0 se evalúa a 2.0 (sqrt: raíz cuadrada, prototipo en math.h

    Entrada y salida de datos en C

    El lenguaje C va acompañado de una colección de funciones de biblioteca que incluye un cierto número de funciones de entrada/salida. Como norma general, el archivo de cabecera requerido para la entrada/salida estándar se llama stdio.h, entre todas las funciones que contiene algunas de las más usadas son: getchar, putchar, scanf, printf, gets y puts. Estas seis funciones permiten la transferencia de información entre la computadora y los dispositivos de entrada/salida estándar tales como un teclado y un monitor.

    En las siguientes subsecciones se describen únicamente las características básicas de las funciones getchar, putchar, scanf, printf, gets y puts..

    Entrada de un carácter: función getchar

    Mediante la función de biblioteca getchar se puede conseguir la entrada de un carácter a través del dispositivo de entrada estándar, usualmente el teclado. Su sintaxis es

    variable = getchar();

    donde variable es alguna variable de tipo carácter declarada previamente.

    1. Ejemplo 1.17:

    char c;

    c=getchar();

    En la primera instrucción se declara la variable c de tipo carácter. La segunda instrucción hace que se lea del dispositivo de entrada estándar un carácter y entonces se le asigne a c.

    Salida de un carácter: función putchar

    Mediante la función de biblioteca putchar se puede conseguir la salida de un carácter a través del dispositivo de salida estándar, usualmente el monitor. Su sintaxis es

    putchar(variable);

    donde variable es alguna variable de tipo carácter declarada previamente.

    1. Ejemplo 1.18:

    char c='a';

    putchar(c);

    En la primera instrucción se declara la variable c de tipo carácter. La segunda instrucción hace que se visualice el valor de c en el dispositivo de salida estándar (monitor).

    Introducción de datos: función scanf

    Mediante la función de biblioteca scanf se puede introducir datos en la computadora a través del dispositivo de entrada estándar. Esta función permite introducir cualquier combinación de valores numéricos, caracteres sueltos y cadenas de caracteres. La función devuelve el número de datos que se han conseguido introducir correctamente. Su sintaxis es

    scanf(cadena de control,arg1,arg2,...,argN);

    donde cadena de control hace referencia a una cadena de caracteres que contiene cierta información sobre el formato de los datos y arg1,arg2,...,argN son argumentos (punteros) que indican la direcciones de memoria donde se encuentran los datos.

    En la cadena de control se incluyen grupos individuales de caracteres, con un grupo de caracteres por cada dato de entrada. Cada grupo de caracteres debe comenzar con el signo de porcentaje %. En su forma más sencilla, un grupo de caracteres estará formado por el signo de porcentaje, seguido de un carácter de conversión que indica el tipo de dato correspondiente. En la Tabla 1.8 se muestran los caracteres de conversión de los datos de entrada de uso común.

    Los argumentos pueden ser variables o arrays, y sus tipos deben coincidir con los indicados por los grupos de caracteres correspondientes en la cadena de control. Cada nombre de variable debe ser precedido por un ampersand (&), salvo en el caso de los arrays.

    Carácter de conversión

    Significado del dato

    c

    Carácter

    d

    Entero decimal

    e

    Coma flotante

    f

    Coma flotante

    g

    Coma flotante

    h

    Entero corto

    o

    Entero octal

    s

    Cadena de caracteres seguida de un carácter de espaciado.

    u

    Entero decimal sin signo

    [...]

    Cadena de caracteres que puede incluir caracteres de espaciado.



    Tabla 1.8: Caracteres de conversión de los datos de entrada de uso común

    1. Ejemplo 1.19:

    #include <stdio.h>

    main()

    {

    char concepto[20];

    int no_partida;

    float coste;

    scanf("%s %d %f", concepto, &no_partida, &coste);

    }

    Dentro de la función scanf de este programa, la cadena de control es "%s %d %f". Contiene tres grupos de caracteres. El primer grupo, %s, indica que el primer argumento (concepto) representa a una cadena de caracteres. El segundo grupo, %d, indica que el segundo argumento (&no_partida) representa un valor entero decimal, y el tercer grupo, %f, indica que el tercer argumento (&coste) representa un valor en coma flotante.

    Obsérvese, que las variables numéricas no_partida y coste van precedidas por ampersands dentro de la función scanf. Sin embargo, delante de concepto no hay ampersand, ya que concepto es el nombre del array.

    Escritura de datos: función printf

    Mediante la función de biblioteca printf se puede escribir datos en el dispositivo de salida estándar. Esta función permite escribir cualquier combinación de valores numéricos, caracteres sueltos y cadenas de caracteres. Su sintaxis es

    printf(cadena de control,arg1,arg2,...,argN);

    donde cadena de control hace referencia a una cadena de caracteres que contiene información sobre el formato de salida y arg1,arg2,...,argN son argumentos que representan los datos de salida.

    La cadena de control está compuesta por grupos de caracteres, con un grupo de caracteres por cada dato de salida. Cada grupo de caracteres debe empezar por un signo de porcentaje (%). En su forma sencilla, un grupo de caracteres consistirá en el signo de porcentaje seguido de un carácter de conversión que indica el tipo de dato correspondiente. En la Tabla 1.9 se muestran los caracteres de conversión de los datos de salida de uso común.

    Carácter de conversión

    Significado del dato visualizado

    c

    Carácter

    d

    Entero decimal con signo

    e

    Coma flotante con exponente

    f

    Coma flotante sin exponente

    g

    Coma flotante con o sin exponente según el caso. No se visualizan ni lo ceros finales ni el punto decimal cuando no es necesario.

    i

    Entero con signo

    o

    Entero octal, sin el cero inicial

    s

    Cadena de caracteres

    u

    Entero decimal sin signo

    x

    Entero hexadecimal sin el prefijo 0x



    Tabla 1.9: Caracteres de conversión de los datos de salida de uso común

    1. Ejemplo 1.20:

    #include <stdio.h>

    main()

    {

    char concepto[20]="cremallera";

    int no_partida=12345;

    float coste=0.05;

    printf("%s %d %f", concepto, no_partida, coste);

    }

    Dentro de la función printf de este programa, la cadena de control es "%s %d %f". Contiene tres grupos de caracteres. El primer grupo, %s, indica que el primer argumento (concepto) representa a una cadena de caracteres. El segundo grupo, %d, indica que el segundo argumento (no_partida) representa un valor entero decimal, y el tercer grupo, %f, indica que el tercer argumento (coste) representa un valor en coma flotante.

    El resultado de la ejecución de estas instrucciones del programa es visualizar en el monitor la siguiente salida:

    cremallera 12345 0.050000

    Las funciones gets y puts

    La función de biblioteca gets permite leer una cadena de caracteres desde el dispositivo de entrada estándar. Su sintaxis es

    gets(variable);

    donde variable debe ser una cadena de caracteres

    La función de biblioteca puts permite visualizar una cadena de caracteres en el dispositivo de salida estándar. Su sintaxis es

    puts(variable);

    donde variable debe ser una cadena de caracteres

    1. Ejemplo 1.21:

    /*El siguiente código permite leer y escribir una línea de texto*/

    #include <stdio.h>

    main()

    {

    char linea[80];

    gets(linea);

    puts(linea);



  2. fuente:informacion:disenowebakus.net/estructura-programa.php#:~:text=Todo%20programa%20en%20C%20consta,las%20cuales%20se%20llama%20main.&text=Cada%20función%20estará%20fohttp://ocw.innova.uned.es/ocwuniversia/Ing_tecnico_infor_sistemas/SO_II/contenidos_html/ims_import/page_06.htm#:~:text=Como%20norma%20general%2C%20el%

Comentarios

Entradas más populares de este blog

estructura de control

conceptos BASICOS C+