Compiladores: Análisis léxico
|
|
|
- Ana María Felisa Castellanos Quiroga
- hace 8 años
- Vistas:
Transcripción
1 Compiladores: Análisis léxico Francisco J Ballesteros LSUB, URJC Page 1 of 90
2 Analizador léxico Identificar tokens en la cadena de entrada procesar los ficheros de entrada generar la entrada para el parser Ignorar comentarios Mantener la idea de fichero-número de línea para mensajes de error Page 2 of 90
3 Analizador léxico Al definir el lenguaje tendremos que definir una gramática para el mismo Los elementos básicos de la gramática son los tokens Page 3 of 90
4 Analizador léxico Token palabras reservadas identificadores números signos de puntuación El conjunto de tokens depende del lenguaje en cuestión Usaremos palabras reservadas en el análisis sintáctico Normalmente ignoramos el espacio en blanco El valor de un token o lexema es el string para el mismo Page 4 of 90
5 Tokens Para C, por ejemplo LPAREN ( RPAREN ) IF if IDENT main SCOL ; PLUS + PLUSEQ +=... Page 5 of 90
6 Tokens Para printf FMT % DECARG d STRARG s PCENT %% CHARS... Por ejemplo %d, %%d Nos da FMT DECARG CHARS(", ") PCENT CHARS("d") Entre paréntesis van los lexemas Page 6 of 90
7 Tokens Otro ejemplo x*2+3 Nos podría dar VAR("x") MULT NUM(2) ADD NUM(3) Page 7 of 90
8 Tokens Otro ejemplo pi*2+3 Nos podría dar PI MULT NUM(2) ADD NUM(3) Esta vez pi no es una variable, está reservado. Page 8 of 90
9 Tokens Otro ejemplo, expresiones regulares: [ab]+.*\.c$ Podríamos tener los tokens LBRA CHR('a') CHR('b') RBRA PLUS DOT STAR CHR('.') CHR('c') ETEXT O tal vez LBRA STR("ab") RBRA PLUS DOT STAR STR(".c") ETEXT O tal vez SET("ab") PLUS DOT STAR CHR('.') CHR('c') ETEXT Todo depende de cómo hagamos el lenguaje Page 9 of 90
10 Tokens Un token tiene identificador único (ID, LBRA, RBRA,...) lexema o valor (3.5, main,...) Muchas veces fichero y número de línea (para errores) Page 10 of 90
11 Tokens Podemos meter la pata al definirlos Por ej, en C++ Vector<Number> cin >> x Vector<Vector<Number>> Es el último? >> o? > > C++ no lo sabe y por eso no compila Page 11 of 90
12 Una calculadora Expresiones sencillas y no ambiguas tales como... # esto es un comentario ( 5 * 3 ) / 5 / 7 2 * pi abs ( 2 * pi ) Por ahora sólo pi y abs como predefinidos. Page 12 of 90
13 Una calculadora Ya hay dudas: -3 2 * No hay cambio de signo. - 2*1 // no válido. Page 13 of 90
14 Una calculadora: Tokens NUM LPAREN RPAREN ADD SUB MUL DIV PI ABS Page 14 of 90
15 Una calculadora: Tokens Valor de los tokens: NUM -> valor como float con signo Y el resto nada LPAREN RPAREN ADD SUB MUL DIV PI ABS El comentario lo eliminamos y no es un token Page 15 of 90
16 Ejemplo: # esto es un comentario ( 5 * 3 ) / 5 / 7 2 * pi abs ( 2 * pi ) nos da NUM(3) ADD NUM(4) LPAREN NUM(5) MUL NUM(3) RPAREN ADD NUM(43) NUM(4) DIV NUM(5) DIV NUM(7) NUM(2) MUL PI ABS LPAREN NUM(2) MUL PI RPAREN Page 16 of 90
17 Un trozo de un lenguaje Sentencias sencillas { print x; print y; print z; x = "texto"; if x == "texto" {... for x in "a" "b" "c" { print x; Page 17 of 90
18 Un trozo de un lenguaje { print x; print y; print z; x = "texto"; if x == "texto" {... for x in "a" "b" "c" { print x; Tokens: LBRA RBRA SCOL EQ EQEQ PRINT FOR IF NAME STR Page 18 of 90
19 Un trozo de un lenguaje Valores de los tokens: NAME -> x STR -> "texto" El resto ninguno Page 19 of 90
20 Expresiones regulares Sólo expresiones sencillas abc a b c. [0-9] ([0-9] [a-z])* Page 20 of 90
21 Expresiones regulares abc a b c. [0-9] ([0-9] [a-z])* Tokens CHR OR ANY RANGE LPAREN RPAREN STAR Page 21 of 90
22 Expresiones regulares Valor de los tokens CHR -> a RANGE -> 0-9 Y el resto ninguno Page 22 of 90
23 Construcción de un scanner Tenemos que pasar de texto a tokens leyendo de izquierda a derecha normalmente se permite mirar un char adelante cada token corresponde a un string hay que ver hasta dónde llega cada uno Page 23 of 90
24 Construcción de un scanner Podríamos describir cada token con una expresión regular teniendo cuidado de evitar ambigüedad probar en cada punto de la entrada cada expresión devolver el token que encaja con la expresión En esto se basa lex(1), pero es más fácil. Page 24 of 90
25 Lenguajes y alfabetos Un lenguaje es un conjunto de strings (los válidos en el lenguaje) Los strings son secuencias de símbolos de un alfabeto No todos los strings pertenecen al lenguaje A = {símbolos válidos en el lenguaje L(A) = {strings de A válidos Page 25 of 90
26 Tokens, lenguajes y alfabetos Para tener un scanner podemos definir un lenguaje para los lexemas lexema: "valor" de los tokens Por ejemplo NUM -?[0-9]+(\.[0-9]+) // LPAREN \( // ( RPAREN \) // ) ADD \+ // + SUB - // - MUL \* // * DIV / // / PI pi // pi ABS abs // abs Nos da (-?[0-9]+(\.[0-9]+)) \( \) \+ - \* / pi abs Page 26 of 90
27 Tokens, lenguajes y alfabetos En este lenguaje podemos reconocer las cadenas sin depender del contexto en que están empleando expresiones regulares Es un lenguaje regular Page 27 of 90
28 Lenguajes y autómatas Un atómata finito es una máquina que acepta cadenas Un lenguaje regular es reconocible por un atómata finito Un lenguaje regular es describible con una expresión regular Una expresión regular es implementable con un autómata finito Page 28 of 90
29 Expresión regular Definida recursivamente Siendo x un char y a y b expresiones regulares: L(x) = { x, siendo x cualquier char salvo \, (, ),.,, *,? L(\x) = { x L((a)) = L(a) L(.) = { cualquier char L(ab) = { la de L(a) concatenado con lb de L(b) L(a b) = L(a) U L(b) L(a*) = { "" U L(a) U L(aa) U L(aaa) U... Page 29 of 90
30 Autómata finito En este lenguaje podemos reconocer las cadenas utilizando un autómata finito Para reconocerlo: partimos de un estado inicial en cada carácter de la entrada transitamos a otro estado algunos de los estados son finales si terminamos y no hay estado final, tenemos un error Un error es una cadena no reconocida Page 30 of 90
31 Lenguaje para tokens de calculadora Ejemplo, el lenguaje que describe los tokens de # esto es un comentario ( 5 * 3 ) / 5 / 7 2 * pi abs ( 2 * pi ) que son NUM LPAREN RPAREN ADD SUB MUL DIV PI ABS puesto que ignoramos comentarios y espacio y en blanco! Page 31 of 90
32 Lenguaje para tokens de calculadora Podríamos describirlo como la expresión regular LTC = (-?[0-9]+(\.[0-9]+)) \( \) \+ - \* / pi abs que reconoce entre otros ( 5 * 3 ) abs pi Page 32 of 90
33 Autómata para LTC Para definir un atómata finito partimos de un estado inicial para cada estado y símbolo en la entrada transitamos a otro estado indicamos qué estados son finales Si no está definida una transición, no reconocemos ese caso. El automáta es: alfabeto de entrada conjunto de estados (con inicial y finales) conjunto de transiciones Page 33 of 90
34 Autómata para LTC Por ejemplo, para abs Podríamos definir Page 34 of 90
35 Autómata para LTC O lo que es lo mismo Page 35 of 90
36 Autómata para LTC Y para pi abs Page 36 of 90
37 Autómata para LTC Por ejemplo, para nuestros números 4 54 Podríamos definir Page 37 of 90
38 Autómata para LTC Y con decimales Podríamos definir Page 38 of 90
39 Autómata para LTC Y con decimales y signo opcional Podríamos definir Page 39 of 90
40 Autómata para LTC Todo junto Page 40 of 90
41 Autómata para LTC Está todo? No Nos falta (, ), +, -, * y / Y tenemos problemas -3-3 Hay algo de ambigüedad. Page 41 of 90
42 Ambigüedad -3-3 Podemos decidir entre signo y resta mirando si sigue un dígito o no. Page 42 of 90
43 Ambigüedad En general podemos Utilizar la cadena más larga que encaja Utilizar la primera de las subexpresiones si hay varias En nuestro ejemplo en realidad no hay ambigüedad: hay no determinismo Page 43 of 90
44 No determinismo Necitamos un atómata finito no determinista Hay dos transiciones válidas para - Page 44 of 90
45 Atómata finito no determinista Podemos tener transiciones en la cadena vacía para el signo Page 45 of 90
46 Autómata para LTC Page 46 of 90
47 Scan de nombres En lugar de utilizar estados para reconocer todos los nombres Podemos reconocer un nombre en general Y buscar el nombre en una tabla para ver si está reservado Esto se hace si hay muchas palabras reservadas (keywords) O si son varias pero son largas Page 47 of 90
48 Autómatas Finitos Deterministas (AFD, o DFA) una única transición por estado y entrada Finitos no deterministas (AFND, o NFA) varias transiciones posibles transiciones con la cadena vacía (se puede transitar o no) Page 48 of 90
49 Autómatas para expresiones regulares NFA para x Page 49 of 90
50 Autómatas para expresiones regulares NFA para re1 re2 Page 50 of 90
51 Autómatas para expresiones regulares NFA para re1 re2 Page 51 of 90
52 Autómatas para expresiones regulares NFA para re1? Page 52 of 90
53 Autómatas para expresiones regulares NFA para re1 * Page 53 of 90
54 Autómatas para expresiones regulares NFA para c(a b)* Page 54 of 90
55 Autómatas para expresiones regulares NFA para c(a b)* Y podemos simplificarlo Page 55 of 90
56 Construir un DFA desde un NFA Es fácil pero tedioso: los estados del DFA son los conjuntos de estados alcanzados en el NFA empezar en el estado inicial del NFA para cada posible transición NFA: transitar al estado del DFA para el cjto de estados NFA alcanzado si tenemos un estado final del NFA, el estado es final. Page 56 of 90
57 Implementar un DFA Podemos utilizar una tabla Columnas para los estados Filas para la entradas Nuevos estados como valores La función de estado toma una entrada y devuelve el nuevo estado Hasta que la entrada se acepta Page 57 of 90
58 Dónde estábamos? Queríamos un scanner para la calculadora Y para eso hicimos un NFA para el lenguaje de sus tokens (que a su vez son tokens de otro lenguaje!) Page 58 of 90
59 Scanner para la calculadora Page 59 of 90
60 Scanner para la calculadora Podemos implementar directamente el autómata Usando lex(1) y dándole las expresiones regulares o mejor escribiendo en Go el código para el autómata si hay muchos nombres usaríamos una tabla. va a quedar pequeño y rápido Page 60 of 90
61 Scanner para la calculadora Primero la entrada... var text = `3 + (4.3 * abs(-1 * pi))` func main() { fmt.printf("scanning %s\n", text) txt := NewStrText(text) for { r, err := txt.get() if err!= nil { fmt.printf("got err %s\n", err) break fmt.printf("got %c\n", r) Run Page 61 of 90
62 Scanner para la calculadora Qué es la entrada para nosotros? type Text interface { Get() (rune, error) Unget() error Utilizaremos Unget para look-ahead De hecho, go tiene un interface (io.runescanner) definido para esto. Page 62 of 90
63 Scanner para la calculadora Tokens type TokId int type Tok struct { Id TokId Num float64 // token id values const ( None TokId = iota Num Lparen Rparen Add Sub Mul Div Pi Abs ) Page 63 of 90
64 Scanner para la calculadora Lexer type Lexer interface { // return next token Scan() (Tok, error) // Look ahead one token Peek() (Tok, error) Page 64 of 90
65 Scanner para la calculadora Lex type lex struct { in Text saved Tok func NewLex(t Text) Lexer { return &lex{in: t Page 65 of 90
66 Scanner para la calculadora Lex func (l *lex) Peek() (Tok, error) { tok, err := l.scan() l.saved = tok return tok, err func (l *lex) Scan() (Tok, error) { if l.saved.id!= None { x := l.saved l.saved = Tok{ return x, nil if err := l.skipblanks(); err!= nil { return Tok{, err return l.nexttok() Page 66 of 90
67 Scanner para la calculadora Lex func (l *lex) skipblanks() error { for { c, err := l.in.get() if err!= nil { return err if c!= ' ' && c!= '\t' && c!= '\n' { l.in.unget() return nil Page 67 of 90
68 Scanner para la calculadora Lex func (l *lex) nexttok() (Tok, error) { c, err := l.in.get() if err!= nil { return Tok{, err switch { case c == '+': return Tok{Id:Add, nil case c == '-': return Tok{Id:Sub, nil case c == '*': return Tok{Id:Mul, nil case c == '/': return Tok{Id:Div, nil case c >= '0' && c <= '9': l.in.unget() return l.scannum() case c == 'p': l.in.unget() return l.scanpi() case c == 'a': l.in.unget() return l.scanabs() return Tok{, fmt.errorf("wrong input at char %c", c) Page 68 of 90
69 Scanner para la calculadora Lex, números func (l *lex) scannum() (Tok, error) { n, err := l.scanint() if err!= nil { return Tok{, err c, err := l.in.get() if err!= nil { return Tok{Id: Num, Num: n, nil if c!= '.' { l.in.unget() return Tok{Id: Num, Num: n, nil dec, err := l.scandec() if err!= nil { return Tok{, err return Tok{Id: Num, Num: n+dec, nil Page 69 of 90
70 Scanner para la calculadora Lex, números func (l *lex) scanint() (float64, error) { r := 0.0 some := false for { c, err := l.in.get() if some && err == io.eof { return r, nil if err!= nil { return r, err if c <= '0' c >= '9' { l.in.unget() return r, nil r *= 10 r += float64(int(c) - int('0')) some = true Page 70 of 90
71 Scanner para la calculadora Lex, números func (l *lex) scandec() (float64, error) { r := 0.0 d := 1.0 some := false for { c, err := l.in.get() if some && err == io.eof { return r, nil if err!= nil { return r, err if c <= '0' c >= '9' { l.in.unget() return r, nil n := int(c) - int('0') r += float64(n) / d d *= 10.0 some = true Page 71 of 90
72 Scanner para la calculadora Listo func main() { text := `3 + (41.32 * abs(-1 * pi))` fmt.printf("scanning %s\n", text) txt := NewStrText(text) l := NewLex(txt) for { t, err := l.scan() if err!= nil { fmt.printf("got err %s\n", err) break fmt.printf("got tok %s\tnum %v\n", t.id, t.num) Run Ojo a bug en SUB! Page 72 of 90
73 Scanner para la calculadora: fixed func (l *lex) nexttok() (Tok, error) { c, err := l.in.get() if err!= nil { return Tok{, err switch { case c == '+': return Tok{Id:Add, nil case c == '-': n, _ := l.in.get() l.in.unget() if n >= '0' && n <= '9' { t, err := l.scannum() t.num *= -1 return t, err return Tok{Id:Sub, nil case c == '*': return Tok{Id:Mul, nil case c == '/': return Tok{Id:Div, nil case c == '(': return Tok{Id:Lparen, nil case c == ')': return Tok{Id:Rparen, nil case c >= '0' && c <= '9': l.in.unget() return l.scannum() case c == 'p': l.in.unget() Page 73 of 90
74 Scanner para la calculadora: fixed Y ahora func main() { text := `3 - (41.32 * abs(-1 * pi))` fmt.printf("scanning %s\n", text) txt := NewStrText(text) l := NewLex(txt) for { t, err := l.scan() if err!= nil { fmt.printf("got err %s\n", err) break fmt.printf("got tok %s\tnum %v\n", t.id, t.num) Run Page 74 of 90
75 Comentarios func (l *lex) skipblanks() error { for { c, err := l.in.get() if err!= nil { return err if c == '#' { for c!= '\n' { if c, err = l.in.get(); err!= nil { return err if c!= ' ' && c!= '\t' && c!= '\n' { l.in.unget() return nil Page 75 of 90
76 Comentarios func main() { text := ` # comentario 3 - (41.32 * abs(-1 * pi)) ` fmt.printf("scanning %s\n", text) txt := NewStrText(text) l := NewLex(txt) for { t, err := l.scan() if err!= nil { fmt.printf("got err %s\n", err) break fmt.printf("got tok %s\tnum %v\n", t.id, t.num) Run Page 76 of 90
77 Comentarios La parte delicada es reconocerlos sin que sea ambiguo si es otro token. a / b vs a // b Se hace que el autómata se coma todo desde el token de principio de comentario hasta el de fin de comentario Page 77 of 90
78 Scanner para sentencias sencillas # comentario { print x; print y; print z; x = "texto"; if x == "texto" {... for x in "a" "b" "c" { print x; Esta vez mantendremos nombre de fichero y número de línea Y guardaremos el lexema Page 78 of 90
79 Scanner para sentencias sencillas Tokens type TokId int type Tok struct { Id TokId Val string Ln int // token id values const ( None TokId = iota Str Lbra Rbra Eq Cmp Id Scol Print If For In ) Page 79 of 90
80 Scanner para sentencias sencillas Nuevo lex type lex struct { in Text saved Tok ln int val []rune func NewLex(t Text) Lexer { return &lex{in: t, ln: 1 Page 80 of 90
81 Scanner para sentencias sencillas SkipBlanks cuenta líneas ahora func (l *lex) skipblanks() error { for { c, err := l.in.get() if err!= nil { return err if c == '#' { for c!= '\n' { if c, err = l.in.get(); err!= nil { return err if c == '\n' { l.ln++ if c!= ' ' && c!= '\t' && c!= '\n' { l.in.unget() return nil if c == '\n' { l.ln++ Page 81 of 90
82 Scanner para sentencias sencillas Scan y peek como antes func (l *lex) Peek() (Tok, error) { tok, err := l.scan() l.saved = tok return tok, err func (l *lex) Scan() (Tok, error) { if l.saved.id!= None { x := l.saved l.saved = Tok{ return x, nil if err := l.skipblanks(); err!= nil { return Tok{, err return l.nexttok() Page 82 of 90
83 Scanner para sentencias sencillas NextTok es nuestro scanner utilizando got para acumular caracteres que nos gustan y tambien gottok para terminar con el token actual func (l *lex) got(r rune) { l.val = append(l.val, r) func (l *lex) gottok(id TokId) Tok { t := Tok{ Id: id, Val: string(l.val), Ln: l.ln, l.val = nil return t Page 83 of 90
84 Scanner para sentencias sencillas La parte fácil func (l *lex) nexttok() (Tok, error) { c, err := l.in.get() if err!= nil { return Tok{, err switch { case c == '{': l.got('{'); return l.gottok(lbra), nil case c == '': l.got(''); return l.gottok(rbra), nil case c == ';': l.got(';'); return l.gottok(scol), nil Page 84 of 90
85 Scanner para sentencias sencillas Los strings... func (l *lex) nexttok() (Tok, error) { c, err := l.in.get() if err!= nil { return Tok{, err switch { case c == '"': for { c, err := l.in.get() if err!= nil { return Tok{, err if c == '"' { return l.gottok(str), nil l.got(c) //str Page 85 of 90
86 Scanner para sentencias sencillas Asignación y comparación func (l *lex) nexttok() (Tok, error) { c, err := l.in.get() if err!= nil { return Tok{, err switch { case c == '=': l.got('=') n, _ := l.in.get() if n == '=' { l.got('=') return l.gottok(cmp), nil l.in.unget() return l.gottok(eq), nil Page 86 of 90
87 Scanner para sentencias sencillas Identificadores y keywords Vamos a usar una tabla de keywords var keywords = map[string]tokid { "print": Print, "if": If, "for": For, "in": In, Page 87 of 90
88 Scanner para sentencias sencillas Identificadores y keywords func (l *lex) nexttok() (Tok, error) { c, err := l.in.get() if err!= nil { return Tok{, err switch { case unicode.isletter(c): l.got(c) for { c, err := l.in.get() if err!= nil { return Tok{, err if!unicode.isletter(c) &&!unicode.isnumber(c) { l.in.unget() t := l.gottok(id) if id, ok := keywords[t.val]; ok { t.id = id return t, nil l.got(c) Page 88 of 90
89 Scanner para sentencias sencillas Y listo: var keywords = map[string]tokid { "print": Print, "if": If, "for": For, "in": In, var text = ` { print x; print y; print z; x = "texto"; if x == "texto" { print xxx; for x in "a" "b" "c" { print x; ` func main() { fmt.printf("scanning %s\n", text) txt := NewStrText(text) l := NewLex(txt) for { t, err := l.scan() if err!= nil { fmt.printf("got err %s\n", err) break fmt.printf("ln %d tok %s\t '%v'\n", t.ln, t.id, t.val) Run Page 89 of 90
90 Questions? Francisco J Ballesteros LSUB, URJC ( Page 90 of 90
Compiladores: Parsing ascendente
Compiladores: Parsing ascendente Francisco J Ballesteros LSUB, URJC Page 1 of 64 Parsing ascendente Normalmente utilizaremos parsers descendentes para problemas pequeños cuando podemos escribir uno predictivo
Elementos de un programa en C
Elementos de un programa en C Un programa en C consta de uno o más archivos. Un archivo es traducido en diferentes fases. La primera fase es el preprocesado, que realiza la inclusión de archivos y la sustitución
Las Etapas de la Compilación
Las de la Compilación El en la Compilación Universidad de Cantabria Outline 1 El Problema 2 Las y el Qué pasos son necesarios dar para hallar la estructura de un programa? En qué pasos podemos dividirlos
Elementos léxicos del lenguaje de programación Java
Elementos léxicos del lenguaje de programación Java Elementos léxicos del lenguaje de programación Java Palabras reservadas Identificadores Literales Operadores Delimitadores Comentarios Apéndices Operadores
LEX. Las definiciones y subrutinas son opcionales. El segundo %% es opcional pero el primer %% indica el comienzo de las reglas.
LEX Estructura de un programa en LEX { definiciones { reglas { subrutinas del usuario Las definiciones y subrutinas son opcionales. El segundo es opcional pero el primer indica el comienzo de las reglas.
Variables. Una variable no es más que un nombre simbólico que identifica una dirección de memoria: vs.
Variables Una variable no es más que un nombre simbólico que identifica una dirección de memoria: Suma el contenido de la posición 3001 y la 3002 y lo almacenas en la posición 3003 vs. total = cantidad1
Estructuras de Datos Declaraciones Tipos de Datos
Departamento de Informática Universidad Técnica Federico Santa María Estructuras de Datos Declaraciones Tipos de Datos Temas: 2-3-4 IWI-131, paralelo 01 Profesor: Teddy Alfaro O. Lenguaje de Programación
Todo programa en 'C' consta de una o más funciones, una de las cuales se llama main.
LENGUAJE C CARACTERISTICAS DEL LENGUAJE 'C' El lenguaje 'C' se conoce como un lenguaje compilado. Existen dos tipos de lenguaje: interpretados y compilados. Los interpretados son aquellos que necesitan
Variables. Una variable no es más que un nombre simbólico que identifica una dirección de memoria: vs.
Variables Una variable no es más que un nombre simbólico que identifica una dirección de memoria: Suma el contenido de la posición 3001 y la 3002 y lo almacenas en la posición 3003 vs. total = cantidad1
Programación en C. Algoritmo y Estructura de Datos. Ing. M. Laura López. Programación en C
Algoritmo y Estructura de Datos Ing. M. Laura López 1 Estructura de un programa en C 2 Estructura de un programa en C #include Archivos de cabecera # define Definición de constantes Declaraciones Globales
Procesadores de lenguaje Tema 2 Análisis léxico
Procesadores de lenguaje Tema 2 Análisis léxico Departamento de Ciencias de la Computación Universidad de Alcalá de Henares Resumen del tema Objetivo: comprender la estructura, organización y funcionamiento
Introducción a Java LSUB. 30 de enero de 2013 GSYC
Introducción a Java LSUB GSYC 30 de enero de 2013 (cc) 2013 Laboratorio de Sistemas, Algunos derechos reservados. Este trabajo se entrega bajo la licencia Creative Commons Reconocimiento - NoComercial
Lenguaje C Elementos de un Programa. Ing. Hugo Fdo. Velasco Peña Universidad Nacional 2006
Lenguaje C Elementos de un Programa Ing. Hugo Fdo. Velasco Peña Universidad Nacional 2006 Objetivos Conocer los elementos que conforman un programa en C 1. Elementos léxicos de un Programa Cuando el programa
Generador de analizadores léxicos FLEX
Generador de analizadores léxicos FLEX Procesadores de Lenguajes 4 o Informática PL curso 2008-2009 (CCIA) CCIA Octubre 2008 PL 0809 (CCIA) Introducción a FLEX Octubre-2008 1 / 12 Uso de FLEX FLEX: traduce
Se guardan en archivos con extencion c y los cabezales con extension h
Se guardan en archivos con extencion c y los cabezales con extension h Tipos de Variables: Tipo Tamaño(bytes) Limite inferior Limite superior char 1 -- -- unsigned char 1 0 255 short int 2-32768 +32767
Unidad Didáctica 2. Elementos básicos del lenguaje Java Tipos, declaraciones, expresiones y asignaciones
Unidad Didáctica 2 Elementos básicos del lenguaje Java Tipos, declaraciones, expresiones y asignaciones Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos Versión 1.0.3 Índice
Centro Asociado Palma de Mallorca. Antonio Rivero Cuesta
Centro Asociado Palma de Mallorca Antonio Rivero Cuesta La Sintaxis de Java I... 5 Tipos de datos... 6 Tipos de datos simples... 7 Operadores... 11 Operadores Aritméticos... 12 Operadores relacionales...
GUÍA BÁSICA DE SCHEME v.4
Esta guía básica pretende ser una introducción elemental al lenguaje de programación Scheme. Se presenta como una guía de comienzo rápido de tal forma que permita conocer de una forma muy esquemática los
TEMA 2. EL LENGUAJE C. ELEMENTOS BÁSICOS
TEMA 2. EL LENGUAJE C. ELEMENTOS BÁSICOS Una vez que ya sabes crear tus propios programas, vamos a analizar los fundamentos del lenguaje de programación C. Este capítulo incluye además los siguientes temas:
Desde los programas más simples escritos en un lenguaje de programación suelen realizar tres tareas en forma secuencial.
Tipos de Datos Desde los programas más simples escritos en un lenguaje de programación suelen realizar tres tareas en forma secuencial. Entrada de datos Procesamientos de datos Salida de resultados Los
Manual de turbo pascal
Universidad Nacional Experimental De Los Llanos Occidentales Ezequiel Zamora UNELLEZ-Barinas Manual de turbo pascal Bachilleres: Martinez Ninibeth C.I:20.867.002 Mora Yaco C.I:17.205.073 Estructura de
Preliminares. Tipos de variables y Expresiones
Preliminares. Tipos de variables y Expresiones Felipe Osorio Instituto de Estadística Pontificia Universidad Católica de Valparaíso Marzo 5, 2015 1 / 20 Preliminares Computadoras desarrollan tareas a un
Agenda. BNF y EBNF Brevemente, lo necesario para especificar el lenguaje sobre el que vamos a trabajar.
Agenda BNF y EBNF Brevemente, lo necesario para especificar el lenguaje sobre el que vamos a trabajar. JLEX y JCUP Breve descripción del las herramientas para generar el parser o analizador sintáctico.
Ficha de Aprendizaje N 13
Ficha de Aprendizaje N 13 Curso: Lógica y lenguaje de programación Tema: Fundamentos de programación Duración: 2 horas pedagógicas Logros de aprendizaje Identifica los diferentes tipos de operadores que
Programación: QBASIC
1. QBASIC Programación: QBASIC Guía del alumno Qbasic es una versión moderna del lenguaje BASIC. Se trata de un lenguaje de alto nivel. En un lenguaje de alto nivel las instrucciones tienen un formato
UNIVERSIDAD DE SEVILLA PRÁCTICAS DE LABORATORIO ANÁLISIS SINTÁCTICO (1) LENGUAJES FORMALES Y AUTÓMATAS CURSO 2006/2007
UNIVERSIDAD DE SEVILLA E. T. S. INGENIERÍA INFORMÁTICA LENGUAJES Y SISTEMAS INFORMÁTICOS PRÁCTICAS DE LABORATORIO ANÁLISIS SINTÁCTICO (1) LENGUAJES FORMALES Y AUTÓMATAS CURSO 2006/2007 Qué es el análisis
Programación. Test Autoevaluación Tema 3
Programación Test Autoevaluación Tema 3 Autores: M. Paz Sesmero Lorente Paula de Toledo Heras Fco. Javier Ordoñez Morales Juan Gómez Romero José A. Iglesias Martínez José Luis Mira Peidro SOLUCIONES 1.
INTRODUCCIóN A LA PROGRAMACIóN APUNTES DE JAVA APUNTES DE JAVA
APUNTES DE JAVA FUNCIONAMIENTO DE UN PROGRAMA Assembler Ensamblador Ejecuta Programador Programa fuente BASIC Interprete Ejecuta C, C++, Pascal Compilador Compila Ejecuta Programa fuente Programa Objeto
Identificadores, palabras reservadas, tipos de datos, operadores aritméticos y el sistema estándar de salida en Java
Identificadores, palabras reservadas, tipos de datos, operadores aritméticos y el sistema estándar de salida en Java Identificadores Las variables se utilizan en programación para almacenar temporalmente
Elementos léxicos del lenguaje de programación C
Elementos léxicos del lenguaje de programación C Elementos léxicos de los lenguajes de programación (tokens) Palabras reservadas Identificadores Literales Operadores Delimitadores Comentarios Apéndices
Lección 2 Introducción al lenguaje C
Lección Introducción al lenguaje C Decimal Binario Hexadecimal A B C D E F Octal Equivalencia entre decimal, binario, hexadecimal y octal. Código ASCII (American Standard Code for Information Interchange)
Programación Estructurada
Programación Estructurada PROGRAMACIÓN ESTRUCTURADA 1 Sesión No. 2 Nombre: El lenguaje de programación C Contextualización Una constante en todos los lenguajes de programación (viejos y nuevos) es la implementación
Analista Universitario en Sistemas. Taller de Programación II. Instituto Politécnico Superior. Trabajo Final
Trabajo Final 1 Objetivo Comprender (en gran parte) un programa desarrollado en: C++ (Core ) Generador de código / Ejecución de comandos Flex (Lex) Lexer Genera un Analizador Léxico en C http://en.wikipedia.org/wiki/lex_(software)
Uso avanzado de punteros
Uso avanzado de punteros Mario Medina C. [email protected] Punteros Contienen direcciones de memoria Punteros a tipos de datos simples int, char, float, double Punteros a estructuras Punteros a vectores
Contenido. Capítulo 1. Introducción a lenguaje C 1
Contenido Capítulo 1. Introducción a lenguaje C 1 Introducción... 2 Qué es un lenguaje de programación?... 2 Tipos de lenguajes de programación... 2 Introducción a lenguaje C... 2 Historia de lenguaje
TEMA 7: Ficheros. TEMA 7: Ficheros. 7.1.-Concepto de fichero
TEMA 7: Ficheros 7.1.-Concepto de fichero Todas las estructuras de datos que hemos visto hasta ahora utilizan memoria principal. Esto tiene dos limitaciones importantes: 1. Los datos desaparecen cuando
El lenguaje C. 1. Identificadores, constantes y variables
Principios de Programación El lenguaje C 1. Identificadores, constantes y variables 1.1. Conceptos de memoria Los nombres de variable como x, y, suma corresponden a localizaciones o posiciones en la memoria
LENGUAJE. Tema 1 - Introducción
LENGUAJE Tema 1 - Introducción HISTORIA DEL LENGUAJE C El lenguaje de programación C fue creado por Dennis Ritchie cuando trabajaba en Bell Laboratories de AT&T junto con Ken Thompson en el diseño del
Programación en Pascal
Programación en Pascal Segunda parte de la asignatura. El profesor: Nombre:. Despacho: Edificio de la ETSII 2ª Planta. Correo electrónico: [email protected]. Miércoles, Viernes: 3.30 a 5.30. Objetivos: Aprender
PHP: Lenguaje de programación
Francisco J. Martín Mateos Carmen Graciani Diaz Dpto. Ciencias de la Computación e Inteligencia Artificial Universidad de Sevilla Tipos de datos Enteros Con base decimal: 45, -43 Con base octal: 043, -054
Computabilidad y Lenguajes Formales: Autómatas Finitos
300CIG007 Computabilidad y Lenguajes Formales: Autómatas Finitos Pontificia Universidad Javeriana Cali Ingeniería de Sistemas y Computación Prof. Gloria Inés Alvarez V. No Determinismo Hasta ahora cada
Tema 1.3. Un lenguaje mínimo y su procesador: Restricciones contextuales
Tema 1.3. Un lenguaje mínimo y su procesador: Restricciones contextuales Profesor Federico Peinado Elaboración del material José Luis Sia Federico Peinado Facultad de Informática Universidad Complutense
Introducción a Java LSUB. 15 de enero de 2015 GSYC
Introducción a LSUB GSYC 15 de enero de 2015 (cc) 2014 Laboratorio de Sistemas, Algunos derechos reservados. Este trabajo se entrega bajo la licencia Creative Commons Reconocimiento - NoComercial - SinObraDerivada
Programa Java. El lenguaje de programación Java. Comentarios. Programa Java. Palabras reservadas. Identificadores
El lenguaje de programación Java Programa Java Un programa Java está formado por un conjunto de clases que interactúan entre sí La clase es la unidad básica de programación La ejecución depende de la clase
EQUIVALENCIAS EN C DE CONSTRUCCIONES SECUENICIALES EN PSEUDOCÓDIGO
EQUIVALENCIAS EN C DE CONSTRUCCIONES SECUENICIALES EN PSEUDOCÓDIGO TIPOS DE DATOS BÁSICOS: Tipo Tipo Tamaño aproximado en bits Rango mínimo Carácter char 8 0 a 55 Entero int 16-3767 a 3767 Real float 3
CONCEPTOS BASICOS DEL LENGUAJE JAVA
CONCEPTOS BASICOS DEL LENGUAJE JAVA NOMENCLATURA GENERAL En Java se distinguen las letras mayúsculas y minúsculas. Las reglas del lenguaje respecto a los nombres de variables son muy amplias y permiten
Informática I. While & do While
Asignatura: Informática I Trabajo práctico Nº5 While & do While Estructura repetitiva MIENTRAS o while En C la sentencia while (condición o expresión) instrucciones; es seguramente la más utilizada. La
Scripting en el cliente: Javascript. Tecnologías Web
Scripting en el cliente: Javascript Tecnologías Web Motivación Por qué usar JavaScript? Permite crear efectos atractivos visualmente Permite crear sitios WEB que se visualicen de la misma manera en distintos
Generador de analizadores sintácticos BISON
Generador de analizadores sintácticos BISON PROCESADORES DE LENGUAJES 4 o Informática http://ccia.ei.uvigo.es/docencia/pl noviembre-2008 2008 ccia PL 1. Introducción Traduce la especificación de una gramática
Carlos Montenegro. Programación Orientada a Objetos Proyecto Curricular de Ingeniería de Sistemas
2 - Introducción al lenguaje Java, identificadores y comentarios. Carlos Montenegro Programación Orientada a Objetos Proyecto Curricular de Ingeniería de Sistemas 1. Introducción: Java tiene como todos
1 Estructura básica de un programa C++
Elementos básicos de un lenguaje de alto nivel: C++ CONTENIDOS 1. Estructura básica de un programa C++. 2. Tipos de datos simples. 3. Constantes y variables en C++. Declaración. 4. Operadores y expresiones.
Compiladores: Análisis Sintáctico. Pontificia Universidad Javeriana Cali Ingenieria de Sistemas y Computación Prof. Gloria Inés Alvarez V.
Compiladores: Análisis Sintáctico Pontificia Universidad Javeriana Cali Ingenieria de Sistemas y Computación Prof. Gloria Inés Alvarez V. Sintaxis Define la estructura del lenguaje Ejemplo: Jerarquía en
Lenguaje de Programación: Go
Centro de Investigación y de Estudios Avanzados del I.P.N 9 de Noviembre de 2011 Go Es un lenguaje de programación de propósito general que es promovido por: Rob Pike, Robert Griesemer, Ken Thompson, Russ
Tema 3. Tipos de datos simples
Tema 3. Tipos de datos simples Contenido del tema: Concepto de tipo. Tipos simples. Operadores. Expresiones. Semántica. Tipos y expresiones en lenguaje C++ Francisco J. Veredas Dpto. Lenguajes y Ciencias
Unidad II: Análisis semántico
Unidad II: Análisis semántico Se compone de un conjunto de rutinas independientes, llamadas por los analizadores morfológico y sintáctico. El análisis semántico utiliza como entrada el árbol sintáctico
Temas. Objetivo. Que el estudiante logre: 1) Identificar conceptos constructivos de la Teoría de la Computabilidad. 2) Definir autómatas de pila.
0 Temas Definición de autómata de pila Autómata de pila determinístico y no determinístico Objetivo Que el estudiante logre: 1) Identificar conceptos constructivos de la Teoría de la Computabilidad. 2)
LABORATORIO DE PROCESADORES DE LENGUAJE Curso: Práctica 2: Analizador léxico/sintáctico/semántico con Flex y Bison
LABORATORIO DE PROCESADORES DE LENGUAJE Curso: 2008-2009 Práctica 2: Analizador léxico/sintáctico/semántico con Flex y Bison Planteamiento del problema En esta práctica se trata de realizar, mediante el
TRADUCTORES, COMPILADORES E INTÉRPRETES. EJERCICIOS TEMA 5, 6, 7 y 8.
TRADUCTORES, COMPILADORES E INTÉRPRETES. EJERCICIOS TEMA 5, 6, 7 y 8. 1.) (HOLUB). Escribir un traductor que reconozca definiciones de C siguiendo el estilo antiguo, tal como: prueba(uno, dos, tres, cuatro,
Unidad 4. Autómatas de Pila
Unidad 4. Autómatas de Pila Una de las limitaciones de los AF es que no pueden reconocer el lenguaje {0 n 1 n } debido a que no se puede registrar para todo n con un número finito de estados. Otro lenguaje
Lenguaje de programación C. Introducción
Lenguaje de programación C Introducción 1 Elementos del lenguaje C Colección de funciones Estas funciones contienen declaraciones, sentencias, expresiones y otros elementos que en conjunto indican a la
SENA Distrito Capital Centro de Electricidad, Electrónica y Telecomunicaciones ADSI - Ing. Espec. Javier Vaquiro
SENA Distrito Capital Centro de Electricidad, Electrónica y Telecomunicaciones ADSI - Ing. Espec. Javier Vaquiro 1. Sintaxis básica 2. Tipos de datos 3. Variables 4. Constantes 5. Expresiones y operadores
El lenguaje de Programación C. Fernando J. Pereda <[email protected]>
El lenguaje de Programación C Fernando J. Pereda Por qué aprender C? Portable y muy extendido Estándar (C89, C99) El lenguaje de los sistemas Un lenguaje fácil (no, no es broma) Por
Constantes. Las constantes no cambian durante la ejecucion de un programa en C++, en C++ existen 4 tipos de constantes:
Constantes Las constantes se pueden declarar con la palabra reservada const y se le asigna un valor en el momento de la declaracion, este valor no se puede modificar durante el programa y cualquier intento
GUÍA BÁSICA DE FLEX Y BISON
GUÍA BÁSICA DE FLEX Y BISON PRÁCTICAS COMPILADORES 4º INGENIERÍA INFORMÁTICA / 1º MÁSTER EN INFORMÁTICA Curso 2011/2012 LEX/FLEX: GENERADOR DE ANALIZADORES LÉXICOS 1. Introducción Lex es una de las herramientas
LA ESTRUCTURA DE DATOS PILA EN JAVA. CLASE STACK DEL API JAVA. EJEMPLO Y EJERCICIOS RESUELTOS. (CU00923C)
APRENDERAPROGRAMAR.COM LA ESTRUCTURA DE DATOS PILA EN JAVA. CLASE STACK DEL API JAVA. EJEMPLO Y EJERCICIOS RESUELTOS. (CU00923C) Sección: Cursos Categoría: Lenguaje de programación Java nivel avanzado
GRAMATICAS LIBRES DEL CONTEXTO
GRMTICS LIBRES DEL CONTEXTO Estas gramáticas, conocidas también como gramáticas de tipo 2 o gramáticas independientes del contexto, son las que generan los lenguajes libres o independientes del contexto.
Universidad de Pamplona Materia: Programación 1 Docente: Ing. Lusbin Raúl Vargas LENGUAJE C ESTRUCTURA DE UN PROGRAMA EN C
Universidad de Pamplona Materia: Programación 1 Docente: Ing. Lusbin Raúl Vargas LENGUAJE C ESTRUCTURA DE UN PROGRAMA EN C Directivas del procesador Main() { Declaraciones Definiciones proposiciones }
PROCESADORES DE LENGUAJE EXAMEN FINAL 8-JUNIO-07
PROCESADORES DE LENGUAJE EXAMEN FINAL 8-JUNIO-07 1. En qué método de análisis sintáctico puede suceder que en la construcción del árbol de derivación de las posibles expansiones de un símbolo no terminal
UNIVERSIDAD DE LOS ANDES NUCLEO UNIVERSITARIO RAFAEL RANGEL (NURR) DEPARTAMENTO DE FISICA Y MATEMATICA AREA COMPUTACION TRUJILLO EDO.
UNIVERSIDAD DE LOS ANDES NUCLEO UNIVERSITARIO RAFAEL RANGEL (NURR) DEPARTAMENTO DE FISICA Y MATEMATICA AREA COMPUTACION TRUJILLO EDO. TRUJILLO 1.- Resumen de Prog1 Comentarios es C++ Declaraciones de variables.
Lo que necesitaremos para programar en Java, será un editor de texto o IDE y la JDK.
Introducción Java surgió en 1991 dentro de la empresa Sun Microsystems como un lenguaje de programación sencillo y universal destinado a electrodomésticos. La reducida potencia de cálculo y memoria de
Programación 1 Tema 3. Información, datos, operaciones y expresiones
Programación 1 Tema 3 Información, datos, operaciones y expresiones Índice Datos y tipos de datos Datos primitivos en C++ Expresiones e instrucción de asignación Datos y tipos de datos Problema información
Algoritmos. Medios de expresión de un algoritmo. Diagrama de flujo
Algoritmos En general, no hay una definición formal de algoritmo. Muchos autores los señalan como listas de instrucciones para resolver un problema abstracto, es decir, que un número finito de pasos convierten
PROGRAMA INSTRUCCIONAL AUTOMATAS Y LENGUAJES FORMALES
UNIVERSIDAD FERMIN TORO VICE RECTORADO ACADEMICO UNIVERSIDAD FACULTAD DE INGENIERIA ESCUELA DE MANTENIMIENTO MECÁNICO ESCUELA DE TELECOMUNICACIONES ESCUELA DE ELÉCTRICA ESCUELA DE COMPUTACIÓN PROGRAMA
Lenguaje C. Tipos de Datos Simples y Estructuras de Control
Lenguaje C Tipos de Datos Simples y Estructuras de Control Lenguaje C C es un lenguaje de programación creado en 1972 por Dennis M. Ritchie en los Laboratorios Bell como evolución del anterior lenguaje
Estatutos de Control C# Estatutos de Decisión (Selección)
SELECCIÓN Estatutos de Control C# Estatutos de Decisión (Selección) IF Condición THEN Estatuto1 ELSE Estatuto2 Estatuto1 Statement Condición... Antes de ver esta presentación: Lee el Capítulo correspondiente
PROGRAMACIÓN ORIENTADA A OBJETOS (L40629) Sabino Miranda-Jiménez
PROGRAMACIÓN ORIENTADA A OBJETOS (L40629) Sabino Miranda-Jiménez Elementos de lenguaje: Identificadores Tipos de datos 2 Tipos de datos primitivos 3 Tipos de datos referenciados Clases Interfaces Arrays
Resumen de Sintaxis en C
1 Tipos, operadores y expresiones Resumen de Sintaxis en C Identificadores: Formados por letras, números y '_'. Los primeros 31 caracteres son significativos (dependiente del compilador). Las mayúsculas
1 ELEMENTOS BASICOS DEL LENGUAJE
1 ELEMENTOS SICOS DEL LENGUJE Contenido: Variables su declaracion y asignacion Caracteres en java Secuencias de escape y comentarios Tipos de datos Operadores aritméticos, relacionales y lógicos Entrada
Procesadores de Lenguaje
Procesadores de Lenguaje Repaso TALF Cristina Tîrnăucă Dept. Matesco, Universidad de Cantabria Fac. Ciencias Ing. Informática Primavera de 2013 La Jerarquía de Chomsky Cuatro niveles de lenguajes formales
JavaScript. Contenidos. Introducción El lenguaje Validación de formularios. Programación en Internet 2005-2006. DLSI - Universidad de Alicante 1
Departamento de Lenguajes y Sistemas Informáticos JavaScript Programación en Internet Curso 2005-2006 Contenidos Introducción El lenguaje Validación de formularios DLSI - Universidad de Alicante 1 Introducción
Programación estructurada (Introducción a lenguaje C)
Programación estructurada (Introducción a lenguaje C) M. en C. Sergio Luis Pérez Pérez UAM CUAJIMALPA, MÉXICO, D. F. Trimestre 15-I Sergio Luis Pérez (UAM CUAJIMALPA) Curso de programación estructurada
Lenguajes de programación
Lenguajes de programación Un computador solo entiende lenguaje binario Un procesador tiene un conjunto finito de operaciones binarias Un programa de computador es una secuencia de estas instrucciones Etapas
Profs. Carlos Pérez y Ricardo Monascal
TRADUCTORES E INTERPRETADORES Clase 0: Introducción al Curso Quiénes somos? Prof. Carlos Pérez [email protected] Prof. Ricardo Monascal [email protected] Oficina: MYS-228A (Sí, es la misma) Recursos
Principios de Computadoras II
Departamento de Ingeniería Electrónica y Computadoras Operadores y Expresiones [email protected] Primer programa en Java 2 Comentarios en Java Comentario tradicional (multi-línea) Comentario de línea Comentario
Enteros. Son los números que no contienen componentes fraccionarios y, por tanto, no contienen punto decimal.
LENGUAJE DE PROGRAMACIÓN TURBO PASCAL El lenguaje de programación de alto nivel Pascal fue diseñado el 1968 por Niklaus Wirth con una finalidad eminentemente pedagógica El 1983, el Pascal fue estandarizado
Tema: Autómata de Pila
Facultad: Ingeniería Escuela: Computación Asignatura: Compiladores 1 Tema: Autómata de Pila Contenido La presente guía aborda los autómatas de pila, y se enfoca en la aplicación que se le puede dar a estas
FUNDAMENTOS DE INFORMÁTICA
FUNDAMENTOS DE INFORMÁTICA Tema 1 Introducción a la Programación en Visual Basic Departamento de Ingeniería de Sistemas y Automática Universidad de Vigo undamentos de Informática. Departamento de Ingeniería
En este artículo vamos a conocer los tipos de datos que podemos manejar programando en C.
El primer objetivo de un programa informático es el manejo de datos. Un dato es toda aquella información que se puede tratar en un programa informático. En este artículo vamos a conocer los tipos de datos
Programación de Computadores 4 Iteraciones y Decisiones. Prof. Javier Cañas. Universidad Técnica Federico Santa María Departamento de Informática
Programación de Computadores 4 Iteraciones y Decisiones Prof. Javier Cañas Universidad Técnica Federico Santa María Departamento de Informática Contenido 1 Introducción 2 Operadores Relacionales y Lógicos
TEMA 8: Gestión dinámica de memoria
TEMA 8: Gestión dinámica de memoria 8.1.-Tipo de datos puntero Hasta ahora, los tipos de datos que hemos visto (a excepción de strings y ficheros) eran estructuras de datos estáticas, es decir, estructuras
Tema 3 Elementos básicos de programación
Representación de Datos y Aplicaciones Tema 3 Elementos básicos de programación Natividad Martínez Madrid [email protected] Objetivos del tema 3 Conocer la estructura básica de un programa Java Comprender
ANÁLISIS SEMÁNTICO. Especificación formal: Semántica Operacional, semántica denotacional, semántica Axiomática, Gramáticas con Atributos.
ANÁLISIS SEMÁNTICO El análisis semántico dota de un significado coherente a lo que hemos hecho en el análisis sintáctico. El chequeo semántico se encarga de que los tipos que intervienen en las expresiones
Introducción a C++ y Code::Blocks
Introducción a C++ y Práctica Imperativo Clase 1 Luis Agustín Nieto Departamento de Computación, FCEyN,Universidad de Buenos Aires. 28 de mayo de 2010 Menu de esta Tarde Funcional Vs. Imperativo (Intérprete
TEMA 8: ESTRUCTURAS DE DATOS COMPLEJAS 1 VECTORES ESTÁTICOS 2 2 CADENAS O VECTORES DE CARACTERES 6 3 PASO DE CADENAS Y ARRAYS A FUNCIONES 8
TEMA 8: ESTRUCTURAS DE DATOS COMPLEJAS 1 VECTORES ESTÁTICOS 2 1.1 VECTORES O ARRAYS UNIDIMENSIONALES 2 1.2 ARRAYS MULTIDIMENSIONALES 3 1.3 INICIALIZACIÓN DE ARRAYS 4 1.3.1 INICIALIZACIÓN DE ARRAYS SIN
Autómatas de Pila y Lenguajes Incontextuales
Autómatas de Pila y Lenguajes Incontextuales Elvira Mayordomo Universidad de Zaragoza 5 de noviembre de 2012 Contenido de este tema 1. Introducción a los autómatas de pila 2. Definiciones 3. Equivalencia
TEMA 4. ELEMENTOS BÁSICOS DE PROGRAMACIÓN
TEMA 4. ELEMENTOS BÁSICOS DE PROGRAMACIÓN 4.1 Definiciones y palabras reservadas básicas del C El lenguaje C++ está compuesto por: 32 palabras clave (estándar ANSI), comunes a todos los compiladores de
Curso de Programación Avanzada en C
Curso de Programación Avanzada en C Copyright, 1996 Universidad Sim on Bol ivar 1 Prof. Mariela J. Curiel Contenido del Curso Conceptos BásicosB Estructuras de Control Arreglos Otros tipos de datos derivados
Tema 2. El lenguaje JAVA
Tema 2. El lenguaje JAVA Nomenclatura habitual Variables Tipos de variables Tipos primitivos Referencias Arrays Operadores Operadores de Java Precedencia de operadores Sentencias de control Sentencias
