Anda di halaman 1dari 65

UNIVERSIDAD NACIONAL MAYOR DE SAN MARCOS

FACULTAD DE INGENIERIA DE SISTEMAS E INFORMATICA

CURSO: LENGUAJES Y COMPILADORES


(SESION 2)

Profesor: Mg. Mario Huapaya Chumpitaz


INDICE

UNIDAD I: Arquitectura de un compilador


1. Conceptos básicos
2. Tipos de traductores
3. Lenguaje ensamblador
4. Sistema para el procesamiento de un lenguaje
5. Estructura de un traductor
6. Fases del compilador
7. Estructura del interprete
8. Diferencias entre interprete y compilador
9. Diferencias entre Bytecode y Código Binario
10. Aplicaciones de compiladores e intérprete
11. Descripción del lenguaje
12. Ejemplos
1. Conceptos básicos
Un traductor es un programa
 Secuencia de instrucciones
que traduce un programa
de bajo nivel.
escrito en un lenguaje a un
 Cada tipo de procesador
nuevo programa escrito en otro
tiene su propio conjunto de
lenguaje.
instrucciones de bajo nivel.
 Único lenguaje reconocido
• Escrito en lenguaje de alto por el procesador.
nivel: C, C++,  Extremadamente engorroso
• Visual Basic, etc. para el programador.
• Adecuado para el
programador.
• No es reconocido por el
procesador.

PROGRAMA
PROGRAMA TRADUCTOR OBJETO
FUENTE
1. Conceptos básicos

Compilador. Es aquel traductor que tiene como entrada una


sentencia en lenguaje formal y como salida tiene un fichero
ejecutable, es decir, realiza una traducción de un código de alto
nivel a código máquina (también se entiende por compilador
aquel programa que proporciona un fichero objeto en lugar del
ejecutable final).

Programa
Programa compilador Objeto
Fuente

Mensaje de
Errores
1. Conceptos básicos
METALENGUAJES

Los metalenguajes son


herramientas para la descripción
formal de los lenguajes

Diagramas de transición
Expresiones regulares
Gramáticas
2. Tipos de traductores

a) Traductores de idiomas
b) Compiladores
c) Interpretes
d) Preprocesadores
e) Interpretes de comandos
f) Ensambladores y macroensambladores
g) Conversores fuente – fuente
h) Compiladores cruzado

hola.c hola.exe
#include “stdio.h” 1011100010101
int main(){ 0101010110100
cout<<“hola”; TRADUCTOR 0101011011010
return 0; 0110010100000
} 1101011000110
2. Tipos de traductores

 Ensambladores  Macro ensamblador IBM


 Macro ensamblador de
 Intérpretes Microsoft
 Turbo Editassm
 Compiladores  Turbo Asembler

 Perl
 JavaScript
 Lisp
 VisualBasic
 FORTRAN  SmallTallk
 ALGOL  Java
 C
 C++
 PASCAL
2. Tipos de Traductores

Leng. Fuente ENSAMBLADOR Leng. Objeto


(asembler) (leng.máquina)

Leng. Fuente INTERPRETE Resultados


(Alto nivel)

Leng. Fuente COMPILADOR Leng. Objeto


(Alto nivel)
3. Lenguaje ensamblador

Depende de la máquina por lo


tanto hay un lenguaje máquina
para cada fabricante

Ejemplos de fabricantes

•INTEL
•AMD Versión simbólica de un lenguaje de
•CYRIX máquina:
•TEXAS INSTRUMENTS:
•IBM  Cada código de operación se indica
•THOMPSON por un código simbólico: ADD, MUL...
•NEXGEN
 Asignaciones de memoria se dan con
nombres simbólicos.
3. Lenguaje ensamblador
Ventajas
Velocidad
Eficiencia de tamaño
Flexibilidad
Desventajas
Tiempo de programación
Programas fuentes grandes
Peligro de afectar recursos inesperadamente
Falta de portabilidad
4. Sistema para el procesamiento de un lenguaje
EL PROCESAMIENTO COMPLETO DE UN PROGRAMA FUENTE
POR UN TRADUCTOR
Programa Fuente(PF)

COMPILADOR

Programa Objeto

ENLAZADOR DATOS

Programa Ejecutable MEMORIA

CARGADOR Programa Ejecutable

RESULTADOS
4. Sistema para el procesamiento de un lenguaje
EL PROCESAMIENTO COMPLETO DE UN PROGRAMA

El programa objeto no está completo


Programa Fuente para la ejecución:
• Las funciones han sido
compiladas Independientemente;
COMPILADOR
falta enlazarlas.
• Hace llamadas a funciones que
Programa Objeto
se encuentran en bibliotecas;
falta cargarlas o establecer las
ENLAZADOR DATOS
referencias

Programa Ejecutable MEMORIA

CARGADOR Programa Ejecutable

RESULTADOS
4. Sistema para el procesamiento de un lenguaje
EL PROCESAMIENTO COMPLETO DE UN PROGRAMA

Figura: Funcionamiento de un enlazador


4. Sistema para el procesamiento de un lenguaje
EL PROCESAMIENTO COMPLETO DE UN PROGRAMA

Programa Fuente • El programa ejecutable


normalmente está en disco; para
que se ejecute necesita ser puesto
COMPILADOR en la memoria de la computadora.
• El cargador normalmente pertenece
Programa Objeto al sistema operativo.

ENLAZADOR DATOS

Programa Ejecutable MEMORIA

CARGADOR Programa Ejecutable

RESULTADOS
4. Sistema para el procesamiento de un lenguaje
EL PROCESAMIENTO COMPLETO DE UN PROGRAMA

Figura: Labor realizada por el cargador. El cargador suele ser parte del sistema
operativo
5. Estructura de un traductor
NECESIDAD DE INTERPRETES Y COMPILADORES
Los lenguajes de alto nivel hicieron necesarios los interpretes y
compiladores a los cuales también se les denomina
TRADUCTORES a partir de los años 50.

Desde entonces, gracias al descubrimiento de técnicas


sistemáticas para el manejo de muchas tareas que surgen en la
compilación, al desarrollo de buenos lenguajes de implantación,
entornos de programación y herramientas de software, …..el
diseño y desarrollo de interpretes y compiladores se ha
simplificado enormemente.

El microprocesador de la CPU no entiende un lenguaje de


alto nivel, así que se hace necesario traducirlo a un lenguaje
de bajo nivel como un ensamblador que es la representación
mas directa del código maquina
5. Estructura de un traductor

PROGRAMA FUENTE

ANÁLISIS LÉXICO

ANÁLISIS SINTÁCTICO

TABLA DE MANEJO DE
ANÁLISIS SEMÁNTICO ERRORES
SÍMBOLOS
GENERACIÓN DE CÓDIGO
INTERMEDIO

OPTIMIZACIÓN DE CÓDIGO
INTERMEDIO

PROGRAMA OBJETO
5. Estructura de un traductor

MODELO DE ANALISIS Y SINTESIS DE LA TRADUCCION

TRADUCCION

ANALISIS SINTESIS

LEXICO SINTAXIS SEMANTICA GENERACION


DE CODIGO
5. Estructura de un traductor
AGRUPAR FASES EN UN TRADUCTOR

ETAPA INICIAL ETAPA FINAL


(Front-end) (Back-end)

Análisis léxico Generación de código


Análisis sintáctico intermedio

Análisis semántico Optimización de código


Creación de tabla de símbolos Generación de código objeto

Dependen del lenguaje fuente y son Dependen de la maquina


independientes de la máquina
6. Fases del Compilador

PROGRAMA FUENTE

ANÁLISIS LÉXICO

ANÁLISIS SINTÁCTICO

TABLA DE MANEJO DE
ANÁLISIS SEMÁNTICO ERRORES
SÍMBOLOS
CÓDIGO INTERMEDIO

PROGRAMA OBJETO
6. Fases del compilador

COMPILADOR
Ventaja
• Los programas objeto se ejecutan rápidamente
• La información de mensajes de errores es mas detallada
• En bucles, se genera código equivalente al bucle
Desventajas
• Los programas objetos son poco robustos
• Los programas objeto no se pueden detener
• No son transportables entre distintas máquinas
6. Fases del compilador
PROCESO DE COMPILACION

Prog. Análisis Generación Optimización


Fuente de código

mov a, 1
mov al, a mov al, 1
a:= 1; a= 1
mov b, 2 mov bl, 2
b:=2; b=2
mov bl, b add al, bl
c:=a+b; c=a+b
add al, bl mov c, al
mov c, al
6. Fases del compilador
ANALISIS LEXICOGRAFICO. En esta fase, la cadena de
caracteres que constituye el programa fuente se lee de izquierda
a derecha y se agrupa en componentes léxicos (tokens), que son
secuencias de caracteres que tienen un significado atómico;
además el analizador léxico trabaja con la tabla de símbolos.

Ejemplo: proposición de asignación


comisión= fijo + valor * 8 ;
se agruparían en los componentes léxicos siguientes:
1.- El identificador comisión.
2.- El símbolo de asignación ‘=’.
3.- El identificador fijo.
4.- El signo de suma ‘+’.
5.- El identificador valor.
6.- El signo de multiplicación ‘*’.
7.- El número 8.
8.- El símbolo de fin de sentencia ‘;’.
6. Fases del compilador
ANALISIS LEXICOGRAFICO.

Figura: Transformación realizada por el analizador lexicográfico


6. Fases del compilador
ANALISIS LEXICOGRAFICO.

Figura: Ejemplo de análisis lexicográfico


6. Fases del compilador
ANALISIS LEXICOGRAFICO.
protected void btnProcesarActionPerformed(ActionEvent arg0) {
// Declara variables
int inicio, fin, numero;
// Ingresa los extremos del intervalo
inicio = Integer.parseInt(txtInicio.getText());
fin = Integer.parseInt(txtFin.getText());

// Imprime la lista de pares


numero = inicio;
while (numero <= fin) {
if (numero % 2 == 0)
txtS.append(numero + "\n");
numero++;
}
}

Figura: Ejemplo de análisis lexicográfico


6. Fases del compilador
ANALISIS LEXICOGRAFICO.

Ejercicio: Escriba parte de un programa fuente, utilizando la


estructura de programación: asignación y/o secuenciales,
condicionales, repetitivas de un lenguaje de programación
visual
Solución:
6. Fases del compilador

ANALISIS SINTACTICO

Trabaja con una gramática de contexto libre y genera el árbol


sintáctico que reconoce su sentencia de entrada. En nuestro caso
las categorías gramaticales del análisis léxico son los terminales
de la gramática.

Ejemplo: podemos partir de la gramática:

S <ID> <ASIG> expr <TERM>


Expr <ID>
| <ID> <+> expr
| <ID> <*> expr
| <NUM>
6. Fases del compilador
ANALISIS SINTACTICO

Ejemplo:

Figura: Árbol sintáctico de la sentencia de entrada.


6. Fases del compilador
ANALISIS SINTACTICO

Tipo de gramática que acepta un analizador sintáctico

La gramática que acepta el analizador sintáctico es una gramática de


contexto libre:

Gramática : G (N, T, P, S)
N = No terminales.
T = Terminales.
P = Reglas de Producción.
S = Axioma Inicial.
Ejemplo : Se considera la gramática
que reconoce las operaciones aritméticas

Identificar N, T, P, S ; es decir la gramática formal?


6. Fases del compilador
ANALISIS SINTACTICO
6. Fases del compilador
ANALISIS SINTACTICO

Ejercicio 1:
Analizar la cadena de entrada “cad” dada la gramática siguiente:

Construir el árbol de derivación, cuya entrada es :cad

Solución:
6. Fases del compilador
ANALISIS SINTACTICO

Ejercicio 2:
Supongamos la siguiente gramática que permite generar
expresiones aritméticas donde aparece el operador suma y
multiplicacion y combinar números e identificadores.
Gramática
E → E +E
E→ E*E
E → id
E → num
Para la entrada id + id + id
Solución
6. Fases del compilador
ANALISIS SINTACTICO

Ejercicio 3:

Las convenciones de notación indican que E y A son no terminales, con E


como símbolo inicial. El resto de símbolos son terminales.

Construir el árbol de derivación, cuya entrada es :La cadena – (id + id)


es una frase de la gramática

Solución:
6. Fases del compilador
ANALISIS SEMANTICO. Esta fase revisa el árbol sintáctico junto
con los atributos y la tabla de símbolos para tratar de encontrar
errores semánticos. Para todo esto se analizan los operadores y
operandos de expresiones y proposiciones. Finalmente reúne la
información necesaria sobre los tipos de datos para la fase
posterior de generación de código.

Ejemplo :
(A+B)*(C+D)
El analizador semántico debe determinar que acciones pueden
realizar los operadores aritméticos (+,*) sobre las variables A,B,C
y D.
Así cuando el analizador sintáctico reconoce un operador, tal
como " + " o " * ", llama a una rutina semántica que especifica la
acción que puede llevar a cabo. Esta rutina puede comprobar que
los dos operandos han sido declarados, y que tienen el mismo
tipo. También puede comprobar si a los operandos se les ha
asignado previamente algún valor.
6. Fases del compilador

ANALISIS SEMANTICO.
Ejemplo:
6. Fases del compilador

GENERACION DE CODIGO INTERMEDIO

 Se genera una representación intermedia explícita del PF

 La representación intermedia es como un programa para una


máquina abstracta

 Esta representación debe ser fácil de producir y de traducir al


programa objeto

 Una de ellas es el “código intermedio de 3 direcciones”


(Cada posición de memoria puede actuar como registro)
( Cada instrucción tiene como máximo 3 operandos )

Ejemplo t1 := entradareal (60)


t2 := id3 + t1
t3 := id2 + t2
id1 := t3
6. Fases del compilador
GENERACION DE CODIGO INTERMEDIO

OPTIMIZACION DE CODIGO

 Trata de mejorar el código intermedio para que resulte un


código de máquina más rápido de ejecutar

 En el ejemplo: t1 : = id3 * 60.0


id1 : = id2 + t1
La conversión a real se hace en compilación
No necesita t2 ni t3.

 Compiladores optimadores : La fase de optimación ocupa una


parte significativa del tiempo del compilador

 Hay optimaciones sencillas que mejoran el tiempo de ejecución


del programa sin retardar mucho la compilación
6. Fases del compilador
GENERACION DE CODIGO OBJETO

 La fase final genera código objeto ( en general código de


máquina recolalizable o código ensamblador)

 Se seleccionan las posiciones de memoria para las variables


usadas por el programa .

 Se traduce cada una de las instrucciones intermedias a una


secuencia de instrucciones de máquina

 Un aspecto decisivo es la asignación de variables a registros.


Ejemplo, utilizando los registros 1 y 2:
MOVF id3, R2
MULF % 60.0, R2
MOVF id2, R1
ADDF R2, R1
MOVF R1, id1
6. Fases del compilador
TRATAMIENTO DE RECUPERACION DE ERRORES

 Cada fase puede encontrar errores y debe tratarlo para


continuar con la Compilación, permitiendo detectar más errores

 Las fases de Análisis Léxico, Sintáctico y Semántico manejan


la mayoría de los errores

 En el Análisis Semántico se detectan errores donde la


estructura sintáctica es correcta pero no tiene significado la
operación

 ( Por. ej. sumar dos ID , donde uno es el nombre de una matriz


y el otro un nombre de procedimiento)
6. Fases del compilador
ADMINISTRACION DE LA TABLA DE SIMBOLOS

 TABLA DE SÍMBOLOS
Estructura de datos que contiene un registro por cada
identificador, con los campos para los atributos:
-- Información sobre la memoria asignada
-- tipo
-- ámbito
-- Si es nombre de procedimiento (número, tipo
y método de paso de cada argumento)
 Permite encontrar rápidamente cada ID y almacenar o
consultar datos de ese registro
 En el Análisis Léxico se detectan los ID y se introducen en la
Tabla de Símbolos
 Las fases restantes introducen información sobre los ID y
después la utilizan
6. Fases del compilador
ADMINISTRACION DE LA TABLA DE SIMBOLOS

Figura: Esquema por etapas de un traductor


6. Fases del compilador
CREAR COMPILADOR C PARA 2 SISTEMAS OPERATIVOS DIFERENTES

Front-end

Back-end Back-end
UNIX DOS

Genera código Genera código


máquina para UNIX máquina para DOS
6. Fases del compilador
CREAR TRES COMPILADORES PARA LA MISMA MAQUINA

PASCAL C COBOL

Front-end Front-end Front-end

Back-end

Intel
6. Fase de un compilador
COMPILADOR DE VARIAS PASADAS

Varias fases de la compilación se implementan en un


único paso

Un paso implica una léctura del archivo de entrada y


en una escritura de un archivo de salida

Ventajas
 Favorece la modularidad
 Util cuando los recursos del sistema son
limitados

Desventaja
 Son mas lentos mientras mas pasadas
tengan
6. Fase de un compilador
Un compilador cruzado es
un compilador capaz de crear
TIPOS DE COMPILADORES código ejecutable para otra
plataforma distinta a aquélla
 Ensamblador en la que él se ejecuta
 Compilador cruzado
 Metacompilador Programa que recibe como
 Descompilador entrada las especificaciones
 Autocompilador del lenguaje para el que se
desea obtener un compilador
y genera como salida el
compilador para ese lenguaje

Es un programa de ordenador que


realiza la operación inversa a un
compilador
Compilador escrito en su
propio lenguaje fuente y capaz
de compilarse a sí mismo
7. Estructura del interprete
Interprete. Es como un compilador, solo que la salida es TIPOS DE
una ejecución. El programa de entrada se reconoce y INTERPRETES
ejecuta a la vez. No se produce un resultado físico (código
PURO
máquina) sino lógico (una ejecución)

Programa INTERPRETE Resultados


Fuente

HIBRIDO
Programa
ANALISIS Y
Fuente
SINTESIS

Programa Intermedio

INTERPRETE Resultados
7. Estructura del interprete

PROGRAMA FUENTE

ANÁLISIS LÉXICO

ANÁLISIS SINTÁCTICO
TABLA DE MANEJO DE
SÍMBOLOS ANÁLISIS SEMANTICO ERRORES

GENERACIÓN DE CÓDIGO
INTERMEDIO

OPTIMIZADOR DE CÓDIGO
INTERMEDIO

EJECUCIÓN
7. Estructura del interprete

INTERPRETE
 Ventajas
 Los programas objeto se pueden detener
 Los programas objeto son muy robustos
 Fácilmente transportables entre distintas máquinas
 Un interprete necesita menos memoria que un
compilador
Desventaja
 Los programas objeto se ejecutan de forma lenta
 En bucles, se traduce tantas veces una línea como veces
se repite el bucle
7. Estructura del interprete

PROCESO DEL INTERPRETE

Generación
Prog.Fuente Análisis
de código
mov a, 1
a= 1
mov al, a
a:= 1;
b:=2; mov b, 2
b=2 mov bl, b
c:=a+b;

add al, bl
c=a+b mov c, al
8. Diferencias entre interprete y compilador

INTERPRETE COMPILADOR
 Es un programa que lee línea a  Es un programa que lee
línea un programa escrito en un totalmente un programa escrito en
lenguaje; en lenguaje fuente y lo un lenguaje; el lenguaje fuente, y
va traduciendo a un código lo traduce a un programa
intermedio, para ejecutarlo. equivalente a otro lenguaje,
lenguaje objeto

 Un intérprete traduce el programa  Un programa que ha sido


cuando lo lee, convirtiendo el compilado puede correr por si
código del programa solo, pues en el proceso de
directamente en acciones. compilación se lo transformo en
otro lenguaje (lenguaje máquina).

 La ventaja del intérprete es que  El archivo generado por el


dado cualquier programa se compilador solo funciona en la
puede interpretarlo en cualquier plataforma en donde se lo ha
plataforma (sistema operativo). creado.
8. Diferencias entre interprete y compilador

INTERPRETE COMPILADOR

 No genera un ejecutable  Un archivo compilado puede ser


distribuido fácilmente conociendo la
plataforma, mientras que un archivo
interpretado no funciona si no se tiene el
intérprete.

 El proceso de traducción se realiza  Hablando de la velocidad de ejecución


en cada ejecución un archivo compilado es de 10 a 20
veces más rápido que un archivo
interpretado.

 La ejecución es más lenta, ya que  Genera un ejecutable


para cada línea del programa es
necesario realizar la traducción
8. Diferencias entre interprete y compilador

INTERPRETE COMPILADOR
 Típicamente, los programas interpretados  El proceso de traducción se realiza
son mucho más portables que los una sola vez
compilados, ya que suelen existir
intérpretes del mismo lenguaje en
distintas plataformas. Los programas que
se van a interpretar no suelen ser muy
dependientes de su plataforma de
destino, siendo más portables.

 Los lenguajes interpretados no suelen ser  La ejecución es muy rápida debido a


muy dependientes de la plataforma de que el programa ya ha sido traducido
destino, pero en contrapartida suelen ser a código máquina
menos flexibles y potentes que los
compilados.

 El código fuente es necesario en cada  El ejecutable va dirigido a una


ejecución, así que no puede permanecer plataforma concreta (una CPU, un
en secreto sistema operativo, y quizá alguna otra
consideración), siendo prácticamente
imposible portarlo a otra.
8. Diferencias entre interprete y compilador

INTERPRETE COMPILADOR

 Los errores sintácticos se detectan  Los lenguajes compilados suelen


durante la ejecución, ya que proporcionar al programador
traducción y ejecución se van mecanismos más potentes y
haciendo simultáneamente. Algún flexibles, a costa de una mayor
error sintáctico podría quedar ligazón a la plataforma.
enmascarado, si para una ejecución
concreta no es necesario traducir la
línea que lo contiene. (Algunos
intérpretes son capaces de evitar esto)

 Un programa interpretado con un  Una vez compilado el programa, el


comportamiento torpe normalmente código fuente no es necesario para
puede ser interrumpido sin dificultad, ejecutarlo, así que puede
ya que su ejecución está bajo el permanecer en secreto si se desea.
control del intérprete, y no sólo del
sistema operativo.
9. Diferencias entre Bytecode y Código Binario

Es muy importante entender la diferencia


entre bytecode y código binario (o nativo):

 C compila a código binario, que luego


COMPILADOR
es ejecutado directamente en tu
procesador. Cada instrucción le indica
a tu CPU que mueva cosas alrededor.

 Java compila a bytecode, que luego es


ejecutado en la máquina virtual de INTERPRETE
Java(Java Virtual Machine, ó JVM),
una abstracción de una computadora
que ejecuta programas. Cada
instrucción es entonces manejada por
la JVM, que interactúa con tu
computadora.
9. Diferencias entre Bytecode y Código Binario
 En términos breves: código binario es más
rápido, pero bytecode es más portable y
seguro.

 El código binario se ve distinto,


dependiendo de tu máquina, pero
bytecode se ve igual en todas las
maquinas. Se podría decir que el código
binario está optimizado para tu Python es un
configuración. interprete
Ejemplo:

Python, procede de la siguiente manera:

1. Python compila tu código Python a


bytecode
2. Ese bytecode es entonces
interpretado en la Máquina Virtual
Python
10. Aplicación de compiladores e interprete

 Desarrollo de interfaces textuales


 Tratamiento de ficheros de texto con información
estructurada
 Procesadores de texto
 Diseño e interpretación de lenguajes para el formateo de
texto y descripción de gráficos
 Gestión de base de datos
 Procesamiento del lenguaje natural
 Reconocimiento de formas
11. Descripción del lenguaje

 Estructura de un programa
 Identificadores
 constantes
 Variables
 Vectores de una dimension
 Estructurados (clases)
 Operadores
 Expresiones
 Instrucciones
 Asignacion
 Lectura/ escritura por pantalla
 Sentencias de control de flujo
 Si –sino
 Mientras
 para
 Subprogramas
12. Ejemplos

declaraciones globales
main(){
variables locales
secuencia de sentencias
}
f1(){
variables locales
Estructura de
secuencia de sentencias un programa
}
:
fn(){
variables locales
secuencia de sentencias
}
12. Ejemplos

 Tipos de datos a usar

Caracter
Entero
Float
Cadena

 Declaracion de variables

int i, j, k;
char c, dato;
12. Ejemplos
 Sentencias de asignacion

La forma general de la sentencia de asignacion es:

Nombre_de_variable = expresion;

ejemplos
dato = cantidad;
x=c;

 Constantes

Pueden ser enteras, reales, de caracter o cadena


Ejemplo:
c=‘A’;
cout<<“UNMSM”;
total = 789;
12. Ejemplos

 Operadores

Operadores aritmeticos
Operadores relacionales y logicos
Otros operadores

 Expresiones

Los operadores, las constantes y las variables son los constituyentes de las
expresionesPueden ser enteras, reales, de caracter o cadena
Ejemplo:
a + 5*b
(a >= 0) and ((b+5) > 10)
a
-a * 2 + b
-b + sqrt(b**2 - 4*a*c)
length(s) > 0
12. Ejemplos

 Sentencias

Por ejemplo en C tenemos:

 Sentencias de etiqueta
 Sentencias de expresion
 Sentencia compuesta
 Sentencia de seleccion
 Sentencia de iteracion
 Sentencia de salto
12. Ejercicios

 Funciones y Procedimientos

Las funciones son los bloques constructores de C


y el lugar donde se da toda la actividad del
programa. La forma general de una funcion
es:

Especificador_de_tipo
nombre_de_la_funcion(lista de
parametros)
{
cuerpo de la funcion
}
Muchas Gracias!!!
mhuapaya.chu@gmail.com

Anda mungkin juga menyukai