Bienvenidos A nuestro foro, espero que os guste


    Teoria tema 2

    Comparte
    avatar
    javat
    Admin

    Mensajes : 16
    Fecha de inscripción : 26/11/2009
    Edad : 29
    Localización : Doctoral

    Teoria tema 2

    Mensaje  javat el Sáb Nov 28, 2009 2:38 pm


    Aquí esta el tema 2, igual falta algunos ejemplos porque los he copiado en la libreta y no en word pero hay bastante cosas.


    TEMA 2: SINTAXIS BÁSICA EN C
    2.1 INTRODUCCIÓN
    A. ELEMENTOS DE C
    Cuando se escribe en C se utiliza un conjunto de caracteres. Este conjunto está compuesto por: letras minúsculas y mayúsculas. Dígitos de sistemas de enumeración. Separadores. Caracteres especiales.
    A los elementos fundamentales a partir de los que se construyen los programas se les conoce como léxico del lenguaje. Hacen falta unas reglas para combinar e interpretar ese léxico. A esas reglas se les llama sintaxis. Hay que dejar claro algunos conceptos previos:
    1. componentes léxicos (TOKEN) es la unidad fundamental de un código fuente en C. Puede ser un carácter o un conjunto de caracteres y es la unidad más pequeña que el compilador no puede dividir. Los TOKEN están definidos main * {}.
    2. La palabra reservada: es un componente léxico que tiene un significado predefinido que entiende el compilador de C y no puede cambiarse. Un ejemplo de palabra reservada es while.
    3. Tipos de datos. básicamente hay tres tipos, el primer tipo es:

    Carácter: es un elemento del conjunto de caracteres que maneja C.
    Cadena de caracteres: Es una secuencia de caracteres.
    Números: El C puede manejar números de distintos tipos.
    4. Número en C: hay dos tipos principales: entero y reales.
    5. Expresión: es una combinación de operandos y operadores. Cada una de las expresiones tiene un valor.
    6. Sentencias en C: La sentencia especifican y controlan el flujo de ejecución de un programa. Una sentencia puede componerse de palabras reservadas, expresiones y otras sentencias. Toda sentencia en C acaba en ; (ejemplo kk=5+i;). Existen sentencias denominadas sentencias compuestas que están formadas por un conjunto de sentencias y están delimitadas por {} ejem:
    {
    Sentencia1
    Sentencia2
    Sentencia3
    }
    También se les suele llamar bloques de sentencias o bloques de códigos.

    NUESTRO PRIMER PROGRAMA EN C

    # include <stdio.h>
    Main ()
    {
    Printf(“mi primer programa en c.\n”;
    }
    Del main decir que es la función principal del programa. Del include decir que lo que hace esa línea es agregar código que se encuentra en el fichero stdio.h. Del printf decir que sirve para imprimir un mensaje por pantalla. Y el abrir y cerrar llave sirve para indicar el inicio y el final de sentencia.

    Examen:
    ESTRUCTURA DE UN PROGRAMA EN C
    ENCABEZAMIENTO
    Directivas del procesador
    Bloques del programador


    FUNCION MAIN

    sentencias

    OTRAS FUNCIONES

    Función x
    sentencias
    Función y
    sentencias








    }Funcion principal



    }Otras funciones








    Encabezamiento: son las líneas anteriores al main y encabezan el programa. Están las directivas que se pasan al procesador de C. estas directivas empiezan por almohadilla (#), también se añaden aspectos del programa y autor. En el encabezamiento podemos encontrar declaraciones de variables globales o declaración de función del programa.

    Main: Todos los programas en C están formados por una o varias funciones. Todo programa en C debe contener la función main, la cual es la primera en la ejecución. Son funciones definidas por el programador.

    Incluir comentarios en un programa es algo muy aconsejable pues ayuda a entender el programa a cualquier persona aunque no sea el programador. Los comentarios son fragmentos de texto que el compilador los pasan por alto y los comentarios van entre los símbolos /* comentario */.

    Para manejar un programa en C igual que en otro lenguaje se sirve de variables y constantes. Una variable representa una dirección de memoria del ordenador donde se almacena un dato que puede ser modificado y recuperador en cualquier momento. Las constantes son iguales a las variables con la salvedad de que no pueden ser modificadas durante la ejecución. Toda variable consta de dos partes:
    1) Nombre o identificador: se suele utilizar un nombre relacionado con lo que se almacena. El nombre de una variable no puede empezar por número y no pueden utilizarse las palabras reservadas. Destacar también que los nombres de las variables son sensibles a las minúsculas y a las mayúsculas.
    2) Tipos de variables: Hay básicamente tres tipos de datos que desglosaremos en mayor profundidad más adelante.

    2.2 Variables y constantes
    A. Tipos de datos
    Se proporciona cuatro tipos básicos de datos para almacenar caracteres y números (enteros y reales). Antes de utilizar una variable hay que declararla. Los tipos básicos son:
    1. El char: se utiliza para almacenar un carácter del conjunto de caracteres disponible por ejemplo. Declarar-> Char letra; declarar y asignar->char t=’p’; asignar-> letra =’p’.
    2. Int: se utiliza para almacenar números enteros. La forma de usarla es la misma que char pero en lugar de poner char hay que poner int. Int p=3; int kk;
    3. Float: se utiliza para almacenar los números reales con precisión simple. Los números reales tienen una parte entera y una parte decimal. Float real=25,37;
    4. Double: se utiliza para almacenar los números reales con precisión doble. La diferencia con el float es que utiliza mayor cantidad de bytes para almacenar el valor y guarda números más grandes.

    Hay otro tipo básico denominado sin valor o void. Tres casos donde se puede utilizar:
    1. Para declarar una función que no devuelve valor alguno. Void al);
    2. Para declarar una función que no tiene parámetros. Void a(void);
    3. Para crear punteros genéricos. Void *a;
    Los cuatro tipos básicos anteriores pueden modificarse añadiendo los modificadores o calificadores de tipo que hay: signed, unsigned, long y short. Estos calificadores se aplican a los tipos de variable.
    Int char double float
    Signed Signed
    Unsigned unsigned
    long long
    short





    En el ejemplo (libreta) se mostrará en mensaje y a continuación el formato entero con signo. Eso lo indica el porcentaje d (% d). A esto se le conoce como especificador de formato y sirve para indicarle a la función printf con qué formato debe ser visualizado el dato que vamos a imprimir. Los principales especificadores de formato son los siguientes:
    ESPECIFICADOR FORMATO DE SALIDA
    % d Entero con signo en base decimal
    % c Carácter individual
    % s Cadena de caracteres
    % e Nº real con signo utilizando notación científica
    % f Nº real con signo
    % g Nº real con signo utilizando %e o %f
    % o Entero sin signo en base octal
    % n Entero sin signo con base decimal
    % x Entero sin signo con base hexadecimal

    Ejemplo: printf (“%d”, a);
    Hemos visto que se puede almacenar un carácter. ¿Y si quiero almacenar un conjunto de caracteres? ¿o un conjunto de enteros? La solución es el vector o array. La declaración de un vector es igual a la de una variable con la salvedad que tenemos que indicar el número de elementos. Ejemplo: En c -> char línea[100]; En pseudocódigo -> carácter línea [100].
    Char hoja [26];-> carácter hoja [26]
    Int a [7]; -> entero a[7]
    Los elementos dentro del vector se almacenan en posiciones que van desde la 0 hasta la N-1. Siendo N el tamaño del vector.
    Posición= Nº de elemento-1 -> 3= 4-1
    Para acceder a un elemento, se pone el nombre de la variable que es un vector y entre corchetes la posición del elemento que queremos leer o escribir.
    A los vectores se les dice que son unidimensionales o de una dimensión. Pero se pueden crear de muchas dimensiones. Si tiene dos dimensiones se llama matriz.
    (pseudocódigo) Entero Matriz [3](fila) [3] (columna);




    (c) Int matrix [3][3];
    También se pueden declarar punteros a tipos de variables. Un puntero es una variable en la que se almacena una dirección de memoria. Para realizar la declaración de un puntero, es necesario indicar el tipo de la variable a la que va a apuntar así como el nombre de la variable, colocándole un * delante.
    Una constante es una variable que no se puede modificar durante la ejecución de un programa. Const int a=10;
    Constante entera a=10;
    Por otra parte en C existe un tipo esencial de datos para realizar enumeraciones de elementos. A este tipo se les llama enum y asigna valores enteros secuenciales a una lista de elementos como en un vector

    2.2 B Conversión de tipos:
    #include <stdio.h>
    Main()
    {
    Float precio, pago;
    Int peras=2;
    Precio=1,5;
    Pago= peras x precio;
    Printf (“se pagan % f euros\n”, pago);
    }

    La conversión de tipos en C se realiza de dos maneras: implícita y explícita.
    Conversión implícita de tipos: lo normal es realizar operaciones del mismo tipo pero se pueden mezclar dos o más tipos de variables en una expresión matemática. En esos casos el compilador realiza lo que se conoce como una conversión implícita de tipos, y se hace antes de realizar la operación. Las variables de rango inferior se convierten al rango del tipo superior. Las reglas básicas de la conversión de tipos son:
     En cualquier operación con dos variables de diferentes tipos se convierte la variable de menor tamaño en el tipo de la variable de mayor tamaño. A este tipo de conversión se le llama promoción.
     El rango de los tipos de menor a mayor es: char(carácter) int(entero) long (entero largo) float (real) doublé (real largo). El rango de los unsigned es igual al mencionado.
     Al asignar el resultado final de una expresión a una variable, esta variable se reconvierte al tipo de dicha variable. Este proceso puede ser por promoción o en cambio por pérdida de rango dependiendo de la variable a la que se le asigna el resultado.
    El proceso de promoción suele pasar inadvertido pero cuando hay pérdida de rango, puede ocasionar serios problemas puesto que los tipos de datos más pequeños pueden no tener capacidad para almacenar el resultado de una expresión.


    Cuando se realiza una conversión de un tipo mayor a uno menor mediante una asignación, se cumplen las siguientes reglas:
    1. Un float se convierte a int truncando la parte fraccional.
    2. Un doublé se convierte en float mediante una operación de redondeo.
    3. Una de tipo long se convierte en un short o en un char eliminando los bytes en el orden superior.

    Conversión explícita de tipos:

    Se puede realizar la conversión explícita de tipos o también llamada conversión forzosa. Se realiza mediante una sentencia denominada casting. Ejemplo:
    #include <stdio.h>
    Main()
    {
    Int resultado;
    Resultado= 2.5+2.8; ->5,3 (se trunca el 0,3)
    Printf(“resultado=%d\n”,resultado); ->5
    Resultado=(int)2.5+(int)2.8; ->2+2
    Printf(“resultado=%d\n”,resultado);4
    }

    2.2 C. ESTRUCTURA DE DATOS O REGISTRO.

    C posee un tipo de dato más complejo que permite la agrupación de variables de igual o distinto tipo bajo un mismo nombre.
    A esa agrupación se le conoce como estructura de datos o registro. Se lleva a cabo mediante la sentencia struct.

    Struct identificador
    {
    Tipo valores1;
    Tipo valores2;
    ……
    }
    pseudocodigo
    Estructura Persona
    Ristra nombre
    Ristra apellido1
    Ristra apellido2
    Entero edad
    Ristra dirección
    Entero a[8]
    Fin estructura.

    Declarar pseudocodigo
    Persona A;
    A.nombre=”cristian”;
    Escribir A.edad
    Leer A.dirección
    A.a[2]=”3”;

    Declarar en C
    Struct persona
    {
    Char[30]nombre;
    Char[50] apellidos;
    Int edad;
    }

    Tipo de registro
    Struct persona a;

      Fecha y hora actual: Mar Oct 17, 2017 7:46 am