viernes, 3 de diciembre de 2010

Examen Extraordinario

Como recomendación de la Dra. Eliza Schaeffer, aquí está el examen:


Primera parte

1. ¿A qué se refiere la semántica?
    Las reglas que determina el significado de los programas constituyen la semántica de los lenguajes de programación.


2. ¿Qué es una expresión regular?
     Expresión que define un conjnto de cadenas sin enumerar sus elementos.

3. ¿Cómo se le conoce a una subrutina que se llama a sí misma?
   Función Recursiva

4. ¿Cuáles son los paradigmas de programación?
    -Imperativos
    -Lógicos
    -Funcionales
    -Orientado a Objetos

5. ¿Qué es un lenguaje funcional?
     paradigma de programación declarativa basado en la utilización de funciones aritméticas que no maneja datos mutables o de estado. 


6. Menciona 3 lenguajes script.
    Python, Perl, Javascript

7. ¿A qué se refiere el léxico?
    Son las palabras usadas en el lenguaje de programación. Como el diccionario.

8. ¿Qué es el cálculo lambda?
  es un sistema formal diseñado para investigar la definición de función, la noción de aplicación de funciones y la recursión. Fue introducido por Alonzo Church
  
9. ¿ Cuál es la diferencia entre un compilador y un interprete?
   - Compilador: analiza el programa fuente y lo traduce a otro equivalente escrito en otro lenguaje (por ejemplo, en el lenguaje de la máquina). 
Intérprete: analiza el programa fuente y lo ejecuta directamente, sin generar ningún código equivalente. 

10. ¿Qué propósito tienen los ciclos?
Reducir el código en el programa para simplificar su ejecución.


Referencias:
http://www.xuletas.es/ficha/lenguajes-de-programacion-sintaxis-semantica-y-jerarquia/
http://es.wikipedia.org/wiki/Expresión_regular
http://es.wikipedia.org/wiki/Paradigma_de_programación
http://it.ciidit.uanl.mx/~sara/pres/lp/lpcolor_s4.pdf
 http://es.wikipedia.org/wiki/Cálculo_lambda
http://www.todo-programacion.com.ar/archives/2005/04/interpretes_y_c.html








Segunda parte


1. Con qué instrucción se compila x.cpp en Linux?


g++ temp.cpp

2. ¿Qué es Oz?
    Un lenguaje multiparadigma


3. ¿Cómo se llama una variable que guarda una direccion de memoria?
   puntero


4. ¿Como se representa en un diagrama de flujo la selección?
   (rombo con dos salidas )


5. ¿A qué se refiere this en Java?
Hace referencia al objeto sobre el cual se está trabajando. Para que las acciones que realicemos se hagan únicamente sobre ese objeto.


6 Menciona 3 lenguajes imperativos.
Pascal, C, Fortran


7. Qué es un lenguaje lógico?
La programacion lógica consiste en la aplicación del corpus de conocimiento sobre lógica para el diseño de lenguajes de programación


8. ¿Cuál es la palabra reservada en C que define una enumeración?
enum


9. ¿Qué es un objeto?
Una instancia. Cada subrutina es un objeto.


10. ¿Qué es un lenguaje multiparadiga?
Un lenguaje de programación multiparadigma es el cual soporta más de un paradigma de programación. Según lo describe Bjarne Stroustrup, permiten crear “programas usando más de un estilo de programación”.






http://es.wikipedia.org/wiki/Lenguaje_de_programación_multiparadigma
http://es.wikipedia.org/wiki/Programación_lógica

TIPOS DE DATOS - PROYECTO FINAL

http://www.youtube.com/watch?v=_c_rAlxfmvc

Lenguajes Funcionales

R

Se trata de un proyecto de software libre, resultado de la implementación de GNU del premiado lenguaje S. R y S-Plus son, probablemente, los dos lenguajes más utilizados en investigación por la comunidad estadística. 
Proporciona un amplio abanico de herramientas estadísticas y gráficas.Permite que los usuarios lo extiendan definiendo sus propias funciones. De hecho, gran parte de las funciones de R están escritas en el mismo R, aunque para algoritmos computacionalmente exigentes es posible desarrollar bibliotecas en C,C++ o Fortran. 

- EJEMPLO -

x <- seq(1:20)
y <- c
(3,2.5,6,1.38,2.25,2.36,2.14,1.38,3.5,4.3,3.8,1.95,1.78,3.24,2.67,2.01,2,3.1,2.46,1.56)
par(bg = "lightyellow", col.axis = "blue", mar = c(4, 4, 3, 1))
plot(x, y, xlab = "Agente", ylab = "Tiempos (min)", 
xlim = c(0, 20), ylim = c(0, 7), pch = 18, col = "red", bg = "black")
title("Tiempos en llamadas por agente")






_____________________________________


LISP

Quisiera agregar lo que mejor se me quedó de la clase de LISP, doctora: vulgarmente LISP es Lots of Idiotic Stupid Parentesis. Ahora formalmente, LISP es una familia de programación de computadora de tipo funcional con una sintaxis completamente entre parentesis. Fue creado originalmente como una notación matemática práctica par alos programas de computadora basada en el cálculo lambda de Alonzo Church. Se convirtió rápidamente en el lenguaje de programación favorito en la investifación de la inteligencia artificial. El nombre deriva de LISt Processing (Proceso de listas). La intercambiabilidad del código y los datos también da a LISP su instantáneamente reconocible sintaxis.

- EJEMPLO -

(define (bien e) cond((eq e 2) (print "Hola mundo"))   define: define 
funciones
(t(print "Adios mundo"))))                                           print: entrada y salida


Muy simple el común hola mundo. Como dijimos, su sintaxis es completamente entre paréntesis.

Lenguajes Orientados a Objetos

C ++

Lenguaje de programación diseñado a mediados de los años 1980 por Bjame Stroustrup. Este se creo con la intención de extender C con mecanismos que permitieran manipular objetos. Posteriormente se añadieron facilidades de programación genérica, que se sumó a los otros dos paradigmas que ya estaban admitidos (programación estructurada y la programación orientada a objetos). Por esto se suele decir que el C++ es un lenguaje de programación multiparadigmas. El nombre C++ fue propuesto por Rick Mascitti en el año 1983, cuando un lenguaje fue utilizado por primera vez fuera de un laboratorio científico. Antes se había usado el nombre C con clases. En C++, la expresión "C++" significa incrementeo de C.

-  EJEMPLO -

#include <stdio.h>
main()
{
char nombre[40];
int calif1,calif2,calif3,calif4,prome;

printf("Nombre del Alumno: ");flushall;gets(nombre);
printf("Calificación 1: ");scanf("%d",&calif1);
printf("Calificación 2: ");scanf("%d",&calif2);
printf("Calificación 3: ");scanf("%d",&calif3);
printf("Calificación 4: ");scanf("%d",&calif4);
prome=(calif1+calif2+calif3+calif4)/4;
printf("Nombre: %s\n",nombre);
printf("Promedio: %d",prome);
return(0);
}

En el programa se hace un arreglo llamado nombre para almacenar 40 nombres. Se declaran las variables enteras de las 4 calificaciones. Se piden tales calificaiones, se suman, se dividen entre cuatro, y obtenemos el promedio.


JAVA

Toma mucha de su sintaxis de C y C++, pero tiene un modelo de objetos más simple y elimina herramientas de bajo nivel, que suelen inducir a muchos errores, como la manipulación directa de punteros o memoria. Las aplicaciones Java están típicamente compiladas en un bytecode, aunque la compilación en código máquina nativo también es posible. En el tiempo de ejecución, el bytecode es normalmente interpretado o compilado a código nativo para la ejecución, aunque la ejecución directa por hardware del bytecode por un procesador Java también es posible.

- EJEMPLO -

public class HelloWorld {

    public static void main(String[] args) {
        System.out.println("Hello, World");
    }

}
En java, el nombre de la clase principal debe ser igual al nombre del archivo.
La impresión es mediante println. Todo se maneja por clases.

jueves, 2 de diciembre de 2010

Lenguajes Script

PYTHON

Python es un lenguaje de programación creado por Guido van Rossum a principios de los 90. Tiene en una sintaxis muy limpia y que favorece un código legible. Es un Lenguaje de programación multiparadigma ya que soporta orientación a objetos, programación imperativa y, en menor medida, programación funcional. Se trata de un lenguaje interpretado o script, usa tipado dinámico, es fuertemente tipado y es multiplataforma.
La sintaxis de python es tan sencilla y cercana al lenguaje natural que los programas elaborados en python parecen pseudocodigo.


import random

def adv2(n):

#Obtengamos la incógnita
x = random.choice(range(n)) + 1

int = 0
sel = 0

while (sel != x):
int = int + 1

sel = input("Introduzca número > ")

if (sel > x):
print "Prueba uno más pequeño..."
elif (sel < x) :
print "Prueba uno más grande..."
else:
print "Felicidades, lo has hecho en",int,"intentos"


(linea 1) En este caso se tuvo que importar la función random para obtener un numero aleatorio.
(linea 5) Los comentarios se hacen anteponiendo #.
(linea 8) Las asignaciones son muy simples, como en el caso de int = 0. No se necesitan puntos y coma al final de las sentencias.
(linea 17) Para imprimir algo en pantalla solo usamos print y encerramos entre “ ” las palabras a imprimir.
(linea 18) Elif es una contracción de ELSE IF por lo tanto, en este caso elif significa: “si no, si sel es menor que x”

                               ______________________________________________________

PERL

if ( $#ARGV == 0 ) {
die "Args: a b\n";
}
elsif ( $#ARGV == 1 ) {
$a = $ARGV[0];
$b = $ARGV[1];
}
else {
print "De el valor de a = ";
$a = <STDIN>; chop $a;
print "De el valor de b = ";
$b = <STDIN>; chop $b;
}
$c = $a + $b;
print "$a + $b = $c\n"





Su lógica es simple: si se da un solo argumento, $#ARGV == 0, el programa termina. Si se dan dos argumentos al programa, $#ARGV == 1, estos son n´umeros que se van a sumar. Y si no se dan argumentos se pregunta por cada número. Al final imprime los dos números y su suma.




lunes, 22 de noviembre de 2010

Lenguajes multiparadigma

GO

Dado que han pasado 10 años en los que no se ha creado un nuevo lenguaje de programación, Google quiso dar este paso - o salto - de crear un nuevo lenguaje de programación, ya que considera que si el mundo de la web y la computación ha cambiado drásticamente, pero no así los lenguajes de programación. 
Go proviene de la fusión de varios lenguajes de familias de donde desciende C. Además contiene elementos de Python. 

- EJEMPLO -
  package main

  import fmt "fmt"  // Package implementing formatted I/O.



  func main() {
  fmt.Printf("Hello from Stephen, Doctora Sara \n")
   }






Todo archivo fuente de Go declara a qué paquete pertenece, mediante la palabra reservada package.  Esta declaración también se usa para importar otros paquetes. En este caso importa el paquete fmt para ganar acceso al ya conocido Printf.


Las funciones se ingresan con la palabra func. La funcion principal main (dentro del paquete llamado main) es donde el programa empieza a correr.


En Go los comentarios se hacen de la misma manera que en C++   (  //    o   /**/  )




__________________________________________________

OZ

Lenguaje de programación multiparadigma, esotérico (o exótico: En general, estos lenguajes poseen una sintaxis muy básica con un alfabeto muy restringido). Originalmente desarrollado en el laboratorio de programación de sistemas en la universidad de saarland por Gert Smolka y sus estudiantes a comienzos de 1990. 
Contiene una forma simple y bien hecha de la mayoría de los conceptos de los principales paradogmas de programación, incluyendo programación lógica, funcional, imperativa, orientada a objetos, con restricciones, distribuida, concurrente. 
Es un lenguaje orientado a la concuerrencia, es decir, hace a la concurrencia fácil de usar y eficiente. 


- EJEMPLO-

El hola mundo es muy sencillo en oz:

{Browse 'Hola Mundo'}


Otro ejemplo:

local I F C in
   I = 5
   F = 5
.5
   C = 
&t
   {Browse [I F C]}
end

Este programa introduce tres variables. Asigna un entero a I, un flotante a F, y a C el caracter t. Luego imrpime (browse) la lista que contiene I, F y C.

viernes, 19 de noviembre de 2010

Lenguajes Imperativos

Pascal

Pascal es un lenguaje ordinario de alto nivel que es ampliamente usado como un programa para empezar o para aprender. Actualmente Pascal es preferido por sobre otros lenguajes, y puede ser util para resolver problemas tecnicos. No es necesario aprender otro lenguaje más fácil para empezar a aprender Pascal, o algún otro de este tipo. Es un lenguaje de programación muy facil y te ayuda a entender los básicos del mundo de la programación. Ademas te ayuda enormemente para empezar a aprender el lenguaje de programación C.

- EJEMPLO -
Program lesson3_Program1;

Uses Crt; 

Var PD, Dname, Cmodel : String;
    CostPD, TCostPD, Distance : Real; 
  

Begin
 textbackground(white); 
 ClrScr; 
 TextColor(blue); 
 TCostPD := 0; 
 Writeln('This program prompts you to '+
        +'input the cost per litre of');
 Writeln('the petrol/diesel you spend in and '+
          +'the average distance you travel');
 Writeln('with your car every week. Then, '+
          +'the computer calculates the total cost');
 Writeln('you spend in fuel every week.');
 Readkey; {program move on as soon as a key is pressed}
 ClrScr;
 GotoXy(28,3); 
 Write('Diesel or Petrol? Type p or d: ');
 PD := Readkey; 
 GotoXy(30,4);
 Write('Name Of Driver: ');
 Readln(Dname);
 GotoXy(30,5);
 Write('Car Model: ');
 Readln(Cmodel);
 GotoXy(29,6);
 Write('Cost of Diesel/Petrol: (£) ');
 Readln(CostPD);
 GotoXy(8,7);
 Writeln('Average distance you travel with '+
          +'your car every week: (kilometres) ');
 Readln(Distance);
 ClrScr;
 GotoXy(28,3);
 Writeln('Name of Driver:',Dname);
 GotoXy(31,4); Delay(500);
 Writeln('Car Model:',Cmodel);
 GotoXy(32,5); Delay(500);
 Writeln('Diesel/Petrol:',PD);
 GotoXy(8,6); Delay(500);
 Writeln('Average distance covered '+
        +'every week: ',Distance:1:2,'Km');
 GotoXy(25,7); Delay(500);
 Writeln('Cost of ',PD,' per litre: £',CostPD:1:2,'/litre');
 Writeln; Delay(500);
 Writeln;
 TCostPD := Distance * CostPD;
 GotoXy(21,10);
 Writeln('Total cost of ',PD,' per week:£',TCostPD:1:2);
 TCostPD := 0;
 GotoXy(21,12);
 Writeln('Total cost of ',PD,' per week:'+
        +'£',(Distance * CostPD):1:2);
 GotoXy(18,14);
 Writeln('Total cost of ',PD,' per week:£',Distance * CostPD);
 readln;
End. 


__________________________________

Aunque no parezca, el programa no es puro copy-paste.

 Los programas en pascal generalmente se inician con la palabra reservada program, pero se puede omitir. Toda sentencia debe terminar con   (;) - aunque hay unas excepciones (begin, por ejemplo).

Uses es la palabra reservada para declarar las librerías. En este caso se usa la librería Crt donde se incluyen el textbackground, Textcolor, Clrscr, Gotoxy, Readkey, Delay, y en otros casos Halt. Más abajo explico cada uno en su respectiva linea)


 Var  Se declaran las variables del programa, separadas por comas. Despues de las variables van dos puntos (:) y en seguida se declara el tipo de dato. (String, Real, char, etc.)

 Begin Cada función principal comienza así.
 Textbackground - Podemos cambiar color de fondo.
 TextColor Cambiar el color de letra (En estos dos ultimos casos, se puede usar tanto el color, como un numero que represente ese color).
 ClrScr Se limpia la pantalla. (Similar a lo usado en C)
 TCostPD: Se asigna el valor de cero a esta variable. La asignacion se hace por medio de :=

Writeln equivale a Printf. Una variante es Write que la unica diferencia es que Writeln brinca una linea para escribir. Aqui los caracteres a escribir se encierran entre comas invertidas (´) Cuando se va a hacer uso de una variable almacenada, se cierran las comas invertidas, se pone una coma (,) y se escribe el nombre de la variable que se usará. En caso de que se seguirá escribiendo mas texto para imprimir en la pantalla, lo separas con otra coma, y comienzas de nuevo con comas invertidas.

GotoXy Similar a C. Envia el texto que escribas en seguida, a la esa posicion en X e Y.

Readkey Si se pone solo, sirve para detener el programa hasta presionar enter. Se le puede asignar una variable.

Al finalizar todas las sentencias, se escribe Readln; (con su respectivo punto y coma). El cual equivale a detener la pantalla.

Todo programa finaliza con End.



Este programa calcula el costo total que gastas en combustible cada semana.
Comienza preguntandote si usas Diesel o Petroleo. Ahi se usa el Readkey para clickear D o P, segun el caso.
Te pide ingresar tu nombre, modelo de auto, costo del diesel o petroleo y la distancia promedio que viajas cada semana.

[  Sinceramente no entendi eso de: CostPD:1:2, etc.(porque de hecho va cambiando, no es lo mismo en cada que lo vuelven a escribir).] 

Al final te imprime Tu nombre, el modelo de tu auto, si usaste diesel o petroleo, la distancia promedio que recorres cada semana, el costo por litro; El costo total de diesel/petroleo por semana - y te lo vuelve a imprimir en notacion cientifica -.


Ahi se ve solo la primer parte del programa. Estaba largo! En mi programa cambie a español lo que se imprime en pantalla. Aquí está el resultado de lo que hice:



FORTRAN

Del inglés: FORmula TRANsalting. Lenguaje de alto nivel de propósito general, procedimental e imperativo. Adaptado principalmente al calculo numerico y a la camputacion cientifica.

- EJEMPLO -

      write (*,*) 'Escribe primera calificacion'
      read  (*,*) c1
      write (*,*) 'Escribe segunda calificacion:'
      read  (*,*) c2

      prom = (c1+c2)/2
      write (*,*) 'Tu promedio es: ',prom
      
      stop
      end

Muy simple el fortran, no hay tanta sintaxis que seguir. No se necesitan puntos y comas al finalizar las sentencias. el programa siempre lleva el end al final. El stop no es necesario.





Aquí está el programa corrido


miércoles, 18 de agosto de 2010

 METALENGUAJE 
BNF
________

La notación BNF se usa para describir sintácticamente lenguajes de programación.

La definición formal de un LP se conoce como gramática.

Una gramática se compone de un conjunto de reglas que definen palabras y unidades sintácticas.

Una gramatica formal es una que usa una notación definida (o metalenguaje) de manera escrita).

Cuando se considera una estructura de una oración en Español, se le describe por lo general como una secuencia de categorías:

sujeto | verbo | predicado

Podemos decir que una oración puede ser declarativa o interrogativa, esto se denota:

< oración > ::= < declarativa > | < interrogativa >

____________________


donde "::=" significa "se define cómo" y "|" significa "o" ; comparándolo con el lenguaje usado en las gramáticas formales, las palabras encerradas entre <palabra>  deben ser definidas; 

"::=" equivale a "->" y "|" tiene el mismo significado. 

en nuestro metalenguaje:
<oración> ::= <declarativa> | <interrogativa>
<declarativa> ::= <sujeto> <verbo> <complemento>
<sujeto> ::= <artículo> <nombre>
-
<interrogativa> ::= ¿ <verbo> <sujeto> <predicado> 


Esta notación específica se conoce como BNF (Backus Naur Form) desarrollada por John Backus alrededor de 1960. 
_____________



Para expresar repetición se usa la recursividad, por ejemplo:

<entero> ::= <entero> <dígito> | <dígito>

define a un entero como una secuencia de dígitos, con a lo menos un dígito.

A pesar de su estructura sencilla, BNF sirve para definir casi todos los lenguajes de programación.

____________________


Notación BNF extendida: Las extensiones siguientes permiten realizar descripciones más fáciles de los lenguajes:

  
      Sintaxis   
      Significado
     ::= 
      se define como 
     t' 
      el símbolo terminal t
     <nt> 
      el símbolo no terminal nt 
     (...)
     usado para agrupar  
     *
    cero o más repeticiones del elemento anterior 
     +
     una o más repeticiones del elemento anterior 
     [...] 
     elemento discrecional 
      | 
      alternativa de varias formas sintácticas válidas




_____________________


Diagramas sintácticos

Los diagramas sintácticos son una forma gráfica de expresar la BNF extendida. Cada regla está representada por un camino que va desde la entrada ubicada a la izquierda, hasta la salida, ubicada a la derecha. Cualquier trayecto desde la entrada a la salida representa un string generado por esa regla.
Las categorías sintácticas (no-terminales) se representan por rectángulos y los símbolos terminales por círculos u óvalos. Ejemplo:
Entero


________________________



SEGUNDO REPORTE

Manual para el lenguaje de programación Alef


Alef es un lenguaje de programación concurrente diseñado para sistemas de software. El manejo de excepciones, gestión de procesos y primitivas de sincronización son ejecutadas por el lenguaje. Los programas pueden ser escritos usando tanto variable compartida y paso de mensajes paradigmas.
En cuanto a las expresiones utiliza la misma sintaxis que C, pero el sistema de tipos es sustancialmente diferente. Alef apoya la programación orientada a objetos mediante la herencia estática y ocultar información. El lenguaje no ofrezcan servicios de recogida de basura, lo que los programas se espera que atiendan su propia memoria.
1 léxica
Compilación comienza con una fase del proceso previo. Un preprocesador C ANSI se utiliza. El preprocesador realiza archivo de inclusión y sustitución de macro. Los comentarios y las líneas que empiezan con el carácter # son consumidos por el preprocesador. El preprocesador produce una secuencia de fichas para el compilador.
1,1 Tokens
El analizador léxico clasifica fichas como: datos, typenames, palabras clave, constantes y operadores. Los créditos son separados por espacios en blanco, que se ignora en la fuente excepto cuando sea necesario a las secuencias separadas de fichas que de otro modo serían ambiguas. El analizador léxico es codicioso: si las fichas se han consumido hasta un determinado carácter, entonces el siguiente token se la cadena más larga posterior de caracteres que constituye un símbolo jurídica.




1.2 Palabras reservadas
Las siguientes palabras son reservados por el idioma y no se pueden utilizar como identificadores:

ADT Aggr Alloc
alt se rompen
chan caso de bytes
comprobar continuar por defecto
hacer otra enumeración
extern float de
goto si int
Ninguna pelusa pasante
aumentar la par proc
sint retorno de rescate
sizeof cambio de tarea
typeof typedef tupla
unalloc ulint uint
unión vacío SINA
mientras Zerox

Los siguientes símbolos se utilizan como separadores y los operadores en el lenguaje:

+ - / =
> <! %
Y |? .
"'()
[] ()
*;



Las siguientes secuencias de caracteres multi-se utilizan como operadores:

+ = -= / = *=
% = & = | = ^ =
<<=>> = ==! =
- <- -> + +
::: =


1,3 Comentarios
Los comentarios son eliminados por el preprocesador. Un comentario empieza con los caracteres / * y termina a los caracteres * /. Un comentario puede incluir cualquier secuencia de caracteres, incluyendo / *. Los comentarios no se anidan.
1.4 Identificadores
Un identificador, también llamado nombre de léxico, es cualquier secuencia de caracteres alfa numéricos y el guión bajo _ carácter. Identificadores no pueden comenzar con un dígito. Identificadores distinguen entre mayúsculas y minúsculas. Todos los personajes son importantes. Identificadores comienzan con la cadena ALEF están reservados para su uso por el sistema de ejecución.
1.5 Constantes
Hay cinco tipos de constantes: constantes: const enteros carácter flotante const const const cadena-runa-cadena-const Una constante entera es una secuencia de dígitos. Un prefijo puede ser usado para modificar la base de un número. Prefijos definidos , bases, y establece dígitos son:

ninguno decimales 0-9
0x hexadecimales 0-9 AF AF
octal 0 0-7

Una constante de carácter contiene uno o más caracteres rodeado de comillas simple '. Si la constante contiene dos o más personajes de la primera debe ser el \ carácter de escape. La siguiente tabla muestra los caracteres válidos después de un escape y el valor de la constante:

0 NUL Null carácter
n NL Newline
CR r Retorno de carro
HT t tabulador horizontal
b BS Retroceso
F FF Avance
un pitido BEL
v ficha VT vertical
\ \ Barra invertida
"" Doble cotización
Las constantes de caracteres tienen el tipo int.


1.6 Programas
Un programa de Alef es una lista de declaraciones almacenados en uno o más archivos de código fuente. Las declaraciones introducir identificadores. Los identificadores pueden definir variables, tipos, funciones, prototipos de funciones, o los encuestadores. Identificadores han asociado clases de almacenamiento y su alcance (véase la sección 2). Para funciones y variables declaradas en el ámbito de archivo de la clase de almacenamiento determina si una definición se puede acceder desde otro archivo.
1.7 Procesos y Tareas
El proceso se utiliza el término para referirse a un hilo programado preventiva de la ejecución. Un proceso puede contener varias tareas. Una tarea es una forma preventiva, programada coroutine no dentro de un proceso. El modelo de memoria no define el intercambio de memoria entre procesos. En un equipo los procesos de memoria compartida normalmente comparten el mismo espacio de direcciones. En un multicomputador procesos pueden estar ubicados físicamente en los nodos distantes con acceso sólo a la memoria local. En tal sistema de procesos no compartiría el mismo espacio de direcciones, y debe comunicarse mediante paso de mensajes.
Un grupo de tareas de ejecución en el contexto de un proceso se define como en el mismo espacio de direcciones. Las tareas se han programado durante la comunicación y las operaciones de sincronización. El hilo término se utiliza allí donde la distinción entre un proceso y una tarea no es importante.
2 Definiciones y declaraciones
Una declaración introduce un identificador y especifica su tipo. Una definición es una declaración de que se reserva, de almacenamiento de un identificador. Un objeto es un área de memoria de tipo conocido producido por una definición. Prototipos de funciones, declaraciones de variables precedida por extern y especificadores de tipo son declaraciones. Las declaraciones de funciones con los órganos y las declaraciones de variable son ejemplos de definiciones.
2.1 Ámbito de aplicación
Los identificadores dentro de un programa tiene alcance. Hay cuatro niveles de alcance: local, función, tipo y disposición:
Un identificador local se declara en el comienzo de un bloque. Un local tiene alcance a partir de su declaración a la final del bloque en el que se hayan declarado.
identificadores de excepción y las etiquetas tienen el ámbito de una función. Estos identificadores se puede hacer referencia desde el inicio de una función a su fin, independientemente de la posición de la declaración.
Un miembro de un tipo complejo está en el ámbito sólo cuando un operador de desreferencia. O -> se aplica a un objeto del tipo. Tipo de miembros ocultos tienen un ámbito especial y sólo puede hacer referencia a miembros de la función del tipo.
Todas las definiciones fuera de un cuerpo de la función tienen el alcance de archivo. declaraciones sin reservas en el ámbito de archivo tiene la clase de almacenamiento estático.


2.2 Almacenamiento clases
Hay tres clases de almacenamiento: automático, de parámetros y estático. Automática objetos se crean en el acceso al bloque en el que hayan sido declarados. El valor de un indefinido es automático en la creación. Las variables automáticas son destruidos en la salida por categorías. Los parámetros son creados por la invocación de función y se destruyen a salir de la función. Los objetos estáticos existen desde la invocación del programa hasta que se termine. Los objetos estáticos que no han sido inicializadas tienen el valor 0.


Ejemplo
(int, byte*, byte)
func()
{
return (10, "hello", ’c’);
}
void
main()
{
int a;
byte* str;
byte c;
(a, str, c) = func();
}