Codificación

Instrucciones

Las instrucciones son construidas en oraciones ('statements').  Por lo general cada oración ocupa un registro ('record') y cada registro contiene una sola oración.


Tipos de oraciones

  • Asignación - Utilizada para codificar un cómputo, un proceso o un movimiento interno de información.  Corresponde al rectángulo del flujograma.

  • Entrada/Salida - Utilizada para codificar una entrada o una salida.  Corresponde al paralelogramo del flujograma.

  • Control - Utilizada para codificar una alteración al orden normal de la ejecución; entendiéndose que el orden normal de la ejecución es el orden de las oraciones.  Corresponde al diamante y al hexágono del flujograma.

  • Especificación - Utilizada para brindar información al compilador sobre el programa.  No es traducida a lenguaje de máquina y por esto se dice que no es ejecutable.  No tiene correspondencia en el flujograma.


Composición de un programa

  • "principio"

  • "documentación"

  • "declaración de variables"

  • "oraciones"

  • "final"

   Si el lenguaje no provee para alguna de estas partes, las mismas se incluyen como comentarios en el programa.


Lenguajes de alto nivel

  • FORTRAN, COBOL, ALGOL, PL/I, RPG, BASIC, PASCAL, ADA, C, C++, otros

Historia del lenguaje C

  • 1960 - ALGOL - primer lenguaje de alto nivel bien estructurado y algorítmico

  • 1963 - CPL - "Combined Programming Language" desarrollado en Cambridge; combinando ALGOL y lenguaje simbólico

  • 1967 - BCPL "Basic Combined Programming Language" Martin Richards

  • 1970 - B - Ken Thompson en AT&T's Bell Laboratories

  • 1972 - C - Dennis Ritchie en AT&T's Bell Laboratories

     Lenguaje de alto nivel que evolucionó según las necesidades de los programadores de sistemas, especialmente del sistema operativo UNIX.  Basado en el lenguaje "ALGOL".

     Una de sus características principales es la de permitir la introducción de instrucciones al estilo del Lenguaje Simbólico, basado en mnemónicos; y la de poder enviar y recibir códigos especiales de las diferentes unidades de entrada y salida.


Descripción

Características generales

     Un programa en "C" consiste de líneas de hasta 255 columnas de largo.  Cada oración termina con el signo de punto y coma (;).  Las oraciones se agrupan por medio de corchetes: {}.  Contiene treinta y dos (32) palabras reservadas: 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.


Caracteres disponibles

ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz 01234567B9+-*/.,=:;(){}[]<>|~$&%!?@\_"' y el espacio en blanco

Composición

     Antes de comenzar el programa se incluyen directrices al compilador sobre las bibliotecas que debe buscar para encontrar las funciones utilizadas en el programa.  Por ejemplo :

#include<stdlib.h>
#include<stdio.h>
#include<math.h>
.


Registro de codificación

  • Los espacios en blanco pueden afectar la interpretación de la instrucción.  Las líneas pueden ser de hasta 255 columnas.  Se puede comenzar y terminar en cualquier columna.

  • Número (etiqueta) de oración - nombre seguido del signo cólon (:).  Oración termina con el signo de punto y coma (;)

  • Las oraciones se agrupan entre corchetes {}.

  • Los comentarios comienzan con /* y terminan con */ ó en el caso de C++ comienzan con // y terminan al final del registro.

EJEMPLO :

int main( void )

{

   Documentación, como comentarios

   Declaraciones

   Oraciones

}

Constantes

  • Valores intrínsecos.  Valores que se representan ellos mismos.  El compilador les reserva espacio en memoria, que contendrá su valor al comenzar la ejecución del programa.

Constantes de punto fijo

  • Ausencia del punto decimal; ocupan 16 bites.

  • Si se comienza con el número cero es tomada en el sistema numérico octal.

  • Si se comienza con la secuencia 0X ó 0x es tomada en el sistema numérico hexadecimal.

  • Si se termina con la letra l ó L es tomada como una constante en punto fijo largo que ocupa 32 bites.

  • Si se termina con la letra u ó U es tomada como una constante en punto fijo sin signo.


Constantes de punto flotante

  • Presencia del punto decimal.

  • Notación e ó E donde la letra e ó E representa por diez a la.  A la izquierda de la letra e ó E debe ir una constante en punto flotante y a la derecha una constante en punto fijo.

  • Si se termina con la letra f ó F es tomada como una constante en punto flotante de precisión sencilla que ocupa 32 bites.

  • Si se termina con la letra l ó L es tomada como una constante en punto flotante de precisión doble largo que ocupa 96 bites.

  • Si no se termina con la letra f ó F ó l ó L es tomada como una constante en punto flotante de precisión doble que ocupa 64 bites.


Constantes no numéricas (alfanuméricas)

  • "literal" ó 'letra'

Constantes no numéricas (lógicas)

  • 0 representa falso; cualquier otro valor es tomado como cierto.

Variables

  • Nombres asociados con valores desconocidos o que cambian durante la ejecución de un programa.  El compilador les reserva espacio en memoria, cuyo contenido es desconocido al comenzar la ejecución.
  • Nombre de una (1) a treinta y una (31) letras y/o dígitos, la primera de las cuales tiene que ser una letra.


  • Punto Fijo

  • Son declaradas de punto fijo mediante la oración de especificación :
    int lista de variables; ó
    long int lista de variables; ó
    short int lista de variables; ó
    unsigned int lista de variables;

  • donde la lista de variables es una serie de nombres de variables separadas por coma.


  • Punto Flotante

  • Son declaradas de punto flotante, precisión sencilla, mediante la oración de especificación :
    float lista de variables;

  • Son declaradas de punto flotante, precisión doble, mediante la oración de especificación :
    double lista de variables; ó
    long float lista de variables;

  • Son declaradas de punto flotante, precisión doble larga, mediante la oración de especificación :
    long double lista de variables;


  • Alfanuméricas

  • Son declaradas alfanuméricas mediante la oración de especificación : char lista de variables;


  • Lógicas

  • No existen; se usan en punto fijo.


Operadores aritméticos binarios

  • Toda operación tiene que ser explícitamente indicada mediante su codificación.

codificación operación Jerarquía Precedencia
+ suma 2 =>
- resta 2 =>
* multiplicación1 =>
/ división 1 =>
% módulo (residuo) 1 =>


  • El primer operando debe aparecer a la izquierda del operador y el segundo operando debe aparecer a la derecha del operador.

  • La jeraquía es utilizada cuando aparecen varios operadores en una misma expresión.

  • La precedencia es utilizada cuando aparecen varios operadores de la misma jerarquía en una misma expresión.


Funciones

  • Nombres de funciones predefinidas en el lenguaje o definidas en el programa.  Por ahora utilizaremos solamente las predefinidas.
  • Después del nombre de la función se incluyen, entre paréntesis, los argumentos.
  • Son evaluadas antes que los operadores aritméticos.
  • abs(....) => valor absoluto en punto fijo
  • atan(....) => tangente inversa
  • cos(....) => coseno de un ángulo en radianes
  • exp(....) => constante de Napier (e = 2.718281....) elevada
  • fabs(....) => valor absoluto en punto flotante
  • log(....) => logaritmo natural
  • log10(....) => logaritmo común
  • pow(....,...) => elevar el primer argumento al segundo argumento
  • sin(....) => seno de un ángulo en radianes
  • sqrt(....) => raíz cuadrada
  • tan(....) => tangente de un ángulo en radianes

Expresiones aritméticas

  • constante numérica

  • variable numérica

  • expresión aritmética operador aritmético expresión aritmética

  • ( expresión aritmética )

  • nombre de función( expresión aritimética )

Evaluación de expresiones aritméticas

  • Expresiones de punto fijo (sencillo, corto, largo, sin signo) son aquellas donde todos y cada uno sus componentes son punto fijo (sencillo, corto, largo, sin signo).
  • Producen un resultado en punto fijo (sencillo, corto, largo, sin signo).

  • Ejemplos :

3 + 2 => 5

3 - 2 => 1

3 * 2 => 6

3 / 2 => 1

3 % 2 => 1

  • Expresiones de punto flotante (sencillo, doble, doble largo) son aquellas donde todos y cada uno de sus componentes son de punto flotante (sencillo, doble, doble largo).
  • Producen un resultado en punto flotante (sencillo, doble, doble largo).

  • Ejemplos :


3.0 + 2.0 => 5.0

3.0 - 2.0 => 1.0

3.0 * 2.0 => 6.0

3.0 / 2.0 => 1.5

3.0 % 2.0 => no está permitido

  • Expresiones mixtas son aquellas que contienen componentes de punto fijo (sencillo, corto, largo, sin signo) y componentes de punto flotante (sencillo, doble, doble largo).
  • La cantidad en punto fijo corto es convertida a punto fijo sencillo en el preciso momento antes de realizarse el cómputo.
  • La cantidad en punto fijo sin signo es convertida a punto fijo sencillo en el preciso momento antes de realizarse el cómputo.
  • La cantidad en punto fijo sencillo es convertida a punto fijo largo en el preciso momento antes de realizarse el cómputo.
  • La cantidad en punto fijo (sencillo, corto, largo , sin signo) es convertida a punto flotante en el preciso momento antes de realizarse el cómputo.
  • La cantidad en punto flotante sencilla es convertida a doble en el preciso momento antes de realizarse el cómputo.
  • La cantidad en doble es convertida a doble largo en el preciso momento antes de realizarse el cómputo.

  • Ejemplos :


3 + 2.0 => 3.0 + 2.0 => 5.0

3 - 2.0 => 3.0 - 2.0 => 1.0

3 * 2.0 => 3.0 * 2.0 => 6.0

3 / 2.0 => 3.0 / 2.0 => 1.5

3.0 + 2 => 3.0 + 2.0 => 5.0

3.0 - 2 => 3.0 - 2.0 => 1.0

3.0 * 2 => 3.0 * 2.0 => 6.0

3.0 / 2 => 3.0 / 2.0 => 1.5

  • Más Ejemplos :

100.0 / 3.0 => 33.33333333333333

100.0f / 3.0f => 33.33333f

pow( 3.0, 2.0 ) => 8.999999999999998

pow( 3.0f, 2.0f ) => 8.999998f

pow( 3.0, 2 ) => 9.0 (este último caso es la excepción a la regla)

pow( punto flotante, punto fijo ) => no es mixto, no hay conversión; el valor en punto flotante es multiplicado por si mismo las veces que indique el valor en punto fijo.

Límites

-127 < short int < 127
0 < unsigned short int < 256
-32767 < int < 32767
0 < unsigned int < 65536
-2147483647 < long int < 2147483647
0 < unsigned long int < 4294967296
float- 7 dígitos significativos
-38 < exponente < 38
double - 16 dígitos significativos
-308 < exponente < 308
long double - 20 dígitos significativos
-4932 < exponente < 4932

Ejemplos de codificación        Ejemplos de evaluación


Última modificación : viernes 21 de mayo de 1999

©Derechos Reservados - 1991 - Prof. H. D. A. Cabassa