/* Compilador del Lenguaje Micro (Fischer) */ #include <stdio.h> #include <string.h> #include <ctype.h>
|
|
|
- Sebastián Roldán Cárdenas
- hace 8 años
- Vistas:
Transcripción
1 1 /* Compilador del Lenguaje Micro (Fischer) */ #include <stdio.h> #include <string.h> #include <ctype.h> #define NUMESTADOS 15 #define NUMCOLS 13 #define TAMLEX 32+1 #define TAMNOM 20+1 /******************Declaraciones Globales*************************/ FILE * in; typedef enum INICIO, FIN, LEER, ESCRIBIR, ID, CONSTANTE, PARENIZQUIERDO, PARENDERECHO, PUNTOYCOMA, COMA, ASIGNACION, SUMA, RESTA, FDT, ERRORLEXICO TOKEN; typedef struct char identifi[tamlex]; TOKEN t; /* t=0, 1, 2, 3 Palabra Reservada, t=id=4 Identificador (ver enum) */ RegTS; RegTS TS[1000] = "inicio", INICIO, "fin", FIN, "leer", LEER, "escribir", ESCRIBIR, "$", 99 ; typedef struct TOKEN clase; char nombre[tamlex]; int valor; REG_EXPRESION; char buffer[tamlex]; TOKEN tokenactual; int flagtoken = 0; /**********************Prototipos de Funciones************************/ TOKEN scanner(); // el scanner int columna(int c); int estadofinal(int e); void Objetivo(void); // del PAS void Programa(void); void ListaSentencias(void); void Sentencia(void); void ListaIdentificadores(void); void Identificador(REG_EXPRESION * presul); void ListaExpresiones(void); void Expresion(REG_EXPRESION * presul); void Primaria(REG_EXPRESION * presul); void OperadorAditivo(char * presul); REG_EXPRESION ProcesarCte(void); REG_EXPRESION ProcesarId(void);
2 2 char * ProcesarOp(void); void Leer(REG_EXPRESION in); void Escribir(REG_EXPRESION out); REG_EXPRESION GenInfijo(REG_EXPRESION e1, char * op, REG_EXPRESION e2); void Match(TOKEN t); TOKEN ProximoToken(); void ErrorLexico(); void ErrorSintactico(); void Generar(char * co, char * a, char * b, char * c); char * Extraer(REG_EXPRESION * preg); int Buscar(char * id, RegTS * TS, TOKEN * t); void Colocar(char * id, RegTS * TS); void Chequear(char * s); void Comenzar(void); void Terminar(void); void Asignar(REG_EXPRESION izq, REG_EXPRESION der); /***************************Programa Principal************************/ int main(int argc, char * argv[]) TOKEN tok; char nomarchi[tamnom]; int l; /***************************Se abre el Archivo Fuente******************/ // verifica errores posibles if ( argc == 1 ) printf("debe ingresar el nombre del archivo fuente (en lenguaje Micro) en la linea de comandos\n"); return -1; // no puso nombre de archivo fuente if ( argc!= 2 ) printf("numero incorrecto de argumentos\n"); return -1; //los argumentos deben ser 2 strcpy(nomarchi, argv[1]); l = strlen(nomarchi); if ( l > TAMNOM ) printf("nombre incorrecto del Archivo Fuente\n"); return -1; // requiere para compilar un archivo de extensión.m archivo.m if ( nomarchi[l-1]!= 'm' nomarchi[l-2]!= '.' ) printf("nombre incorrecto del Archivo Fuente\n"); return -1; if ( (in = fopen(nomarchi, "r") ) == NULL ) printf("no se pudo abrir archivo fuente\n"); return -1;//no pudo abrir archivo /*************************Inicio Compilacion***************************/ Objetivo(); /**************************Se cierra el Archivo Fuente******************/ fclose(in); return 0;
3 3 /**********Procedimientos de Analisis Sintactico (PAS) *****************/ /**********Procedimientos de Analisis Sintactico (PAS) *****************/ void Objetivo(void) /* <objetivo> -> <programa> FDT #terminar */ Programa(); Match(FDT); Terminar(); void Programa(void) /* <programa> -> #comenzar INICIO <listasentencias> FIN */ Comenzar();//de inicio semántico en caso de corresponder Match(INICIO); ListaSentencias(); Match(FIN); void ListaSentencias(void) /* <listasentencias> -> <sentencia> <sentencia> */ Sentencia(); while ( 1 ) // se repite hasta que retorna al no encontrar sentencia <sentencia> switch ( ProximoToken() ) case ID : case LEER : case ESCRIBIR : Sentencia(); break; default : return; //si no es sentencia termina la funcion // fin del switch // fin del while // fin funcion
4 4 void Sentencia(void) TOKEN tok = ProximoToken(); REG_EXPRESION izq, der; //typedef struct TOKEN clase; char nombre[tamlex]; int valor; REG_EXPRESION; switch ( tok ) case ID : /* <sentencia> -> ID := <expresion> #asignar ; */ Identificador(&izq); Match(ASIGNACION); Expresion(&der); Asignar(izq, der); //genera instrucción de asignacion Match(PUNTOYCOMA); break; case LEER : /* <sentencia> -> LEER ( <listaidentificadores> ) */ Match(LEER); Match(PARENIZQUIERDO); ListaIdentificadores(); Match(PARENDERECHO); Match(PUNTOYCOMA); break; case ESCRIBIR : /* <sentencia> -> ESCRIBIR ( <listaexpresiones> ) */ Match(ESCRIBIR); Match(PARENIZQUIERDO); ListaExpresiones(); Match(PARENDERECHO); Match(PUNTOYCOMA); break; default : return; void ListaIdentificadores(void) /* <listaidentificadores> -> <identificador> #leer_id COMA <identificador> #leer_id */ TOKEN t; REG_EXPRESION reg; Identificador(®); Leer(reg); for ( t = ProximoToken(); t == COMA; t = ProximoToken() ) Match(COMA); Identificador(®); Leer(reg);
5 5 void Identificador(REG_EXPRESION * presul) /* <identificador> -> ID #procesar_id */ Match(ID); *presul = ProcesarId();//rutina semantica void ListaExpresiones(void) /* <listaexpresiones> -> <expresion> #escribir_exp COMA <expresion> #escribir_exp */ TOKEN t; REG_EXPRESION reg; Expresion(®); Escribir(reg); for ( t = ProximoToken(); t == COMA; t = ProximoToken() ) Match(COMA); Expresion(®); Escribir(reg); void Expresion(REG_EXPRESION * presul) /* <expresion> -> <primaria> <operadoraditivo> <primaria> #gen_infijo */ REG_EXPRESION operandoizq, operandoder; char op[tamlex]; TOKEN t; Primaria(&operandoIzq); for ( t = ProximoToken(); t == SUMA t == RESTA; t = ProximoToken() ) OperadorAditivo(op); Primaria(&operandoDer); operandoizq = GenInfijo(operandoIzq, op, operandoder); *presul = operandoizq; void Primaria(REG_EXPRESION * presul) TOKEN tok = ProximoToken(); switch ( tok ) case ID : /* <primaria> -> <identificador> */ Identificador(presul); break; case CONSTANTE : /* <primaria> -> CONSTANTE #procesar_cte */ Match(CONSTANTE); *presul = ProcesarCte(); break; case PARENIZQUIERDO : /* <primaria> -> PARENIZQUIERDO <expresion> PARENDERECHO Match(PARENIZQUIERDO); Expresion(presul); Match(PARENDERECHO); break; default : return;
6 void OperadorAditivo(char * presul) /* <operadoraditivo> -> SUMA #procesar_op RESTA #procesar_op */ TOKEN t = ProximoToken(); if ( t == SUMA t == RESTA ) Match(t); strcpy(presul, ProcesarOp()); else ErrorSintactico(t); 6
7 7 /**********************Rutinas Semanticas******************************/ REG_EXPRESION ProcesarCte(void) /* Convierte cadena que representa numero a entero y construye un registro semantico */ REG_EXPRESION reg; reg.clase = CONSTANTE; strcpy(reg.nombre, buffer); sscanf(buffer, "%d", ®.valor); return reg; REG_EXPRESION ProcesarId(void) /* Declara ID y construye el correspondiente registro semantico */ REG_EXPRESION reg; Chequear(buffer); //function auxiliar reg.clase = ID; strcpy(reg.nombre, buffer); return reg; char * ProcesarOp(void) /* Declara OP y construye el correspondiente registro semantico */ return buffer; void Leer(REG_EXPRESION in) /* Genera la instruccion para leer */ Generar("Read", in.nombre, "Entera", ""); void Escribir(REG_EXPRESION out) /* Genera la instruccion para escribir */ Generar("Write", Extraer(&out), "Entera", "");
8 REG_EXPRESION GenInfijo(REG_EXPRESION e1, char * op, REG_EXPRESION e2) /* Genera la instruccion para una operacion infija y construye un registro semantico con el resultado */ REG_EXPRESION reg; static unsigned int numtemp = 1; char cadtemp[tamlex] ="Temp&"; char cadnum[tamlex]; char cadop[tamlex]; if ( op[0] == '-' ) strcpy(cadop, "Restar"); if ( op[0] == '+' ) strcpy(cadop, "Sumar"); sprintf(cadnum, "%d", numtemp); numtemp++; strcat(cadtemp, cadnum); if ( e1.clase == ID) Chequear(Extraer(&e1)); if ( e2.clase == ID) Chequear(Extraer(&e2)); Chequear(cadTemp); Generar(cadOp, Extraer(&e1), Extraer(&e2), cadtemp); strcpy(reg.nombre, cadtemp); return reg; 8
9 9 /***************Funciones Auxiliares**********************************/ void Match(TOKEN t) if (!(t == ProximoToken()) ) ErrorSintactico(); flagtoken = 0; TOKEN ProximoToken() if (!flagtoken ) tokenactual = scanner(); if ( tokenactual == ERRORLEXICO ) ErrorLexico(); flagtoken = 1; if ( tokenactual == ID ) Buscar(buffer, TS, &tokenactual); return tokenactual; void ErrorLexico() printf("error Lexico\n"); void ErrorSintactico() printf("error Sintactico\n"); void Generar(char * co, char * a, char * b, char * c) /* Produce la salida de la instruccion para la MV por stdout */ printf("%s %s%c%s%c%s\n", co, a, ',', b, ',', c); char * Extraer(REG_EXPRESION * preg) /* Retorna la cadena del registro semantico */ return preg->nombre;
10 10 int Buscar(char * id, RegTS * TS, TOKEN * t) /* Determina si un identificador esta en la TS */ int i = 0; while ( strcmp("$", TS[i].identifi) ) if (!strcmp(id, TS[i].identifi) ) *t = TS[i].t; return 1; i++; return 0; void Colocar(char * id, RegTS * TS) /* Agrega un identificador a la TS */ int i = 4; while ( strcmp("$", TS[i].identifi) ) i++; if ( i < 999 ) strcpy(ts[i].identifi, id ); TS[i].t = ID; strcpy(ts[++i].identifi, "$" );
11 11 void Chequear(char * s) /* Si la cadena No esta en la Tabla de Simbolos la agrega, y si es el nombre de una variable genera la instruccion */ TOKEN t; if (!Buscar(s, TS, &t) ) Colocar(s, TS); Generar("Declara", s, "Entera", ""); void Comenzar(void) /* Inicializaciones Semanticas */ void Terminar(void) /* Genera la instruccion para terminar la ejecucion del programa */ Generar("Detiene", "", "", ""); void Asignar(REG_EXPRESION izq, REG_EXPRESION der) /* Genera la instruccion para la asignacion */ Generar("Almacena", Extraer(&der), izq.nombre, ""); /**************************Scanner************************************/ TOKEN scanner() int tabla[numestados][numcols] = L D + - ( ), ; : = EOF OTRO 0 1, 3, 5, 6, 7, 8, 9, 10, 11, 14, 13, 0, 14, 1 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2 ID 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 3 4, 3, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4 CTE 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, , 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 6-14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 7 ( 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 8 ) 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 9, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 10 ; 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 11 14, 14, 14, 14, 14, 14, 14, 14, 14, 12, 14, 14, 14, 12 ASIG 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 13 fdt 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14 Err 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14 ; int car; int col;
12 12 int estado = 0; int i = 0; do car = fgetc(in); col = columna(car); estado = tabla[estado][col]; if ( col!= 11 ) //si es espacio no lo agrega al buffer buffer[i] = car; i++; while (!estadofinal(estado) &&!(estado == 14) ); buffer[i] = '\0'; //complete la cadena switch ( estado ) case 2 : if ( col!= 11 ) //si el carácter espureo no es blanco ungetc(car, in); // lo retorna al flujo buffer[i-1] = '\0'; return ID; case 4 : if ( col!= 11 ) ungetc(car, in); buffer[i-1] = '\0'; return CONSTANTE; case 5 : return SUMA; case 6 : return RESTA; case 7 : return PARENIZQUIERDO; case 8 : return PARENDERECHO; case 9 : return COMA; case 10 : return PUNTOYCOMA; case 12 : return ASIGNACION; case 13 : return FDT; case 14 : return ERRORLEXICO; return 0; int estadofinal(int e) if ( e == 0 e == 1 e == 3 e == 11 e == 14 ) return 0; return 1;
13 int columna(int c) if ( isalpha(c) ) return 0; if ( isdigit(c) ) return 1; if ( c == '+' ) return 2; if ( c == '-' ) return 3; if ( c == '(' ) return 4; if ( c == ')' ) return 5; if ( c == ',' ) return 6; if ( c == ';' ) return 7; if ( c == ':' ) return 8; if ( c == '=' ) return 9; if ( c == EOF ) return 10; if ( isspace(c) ) return 11; return 12; /*************Fin Scanner**********************************************/ 13
/**********************Prototipos de ciones************************/ TOKEN scanner(); int columna(int c);
/* Compilador del Lenguaje Micro (Fischer) */ #include #include #include #define NUMESTADOS 15 #define NUMCOLS 13 #define TAMLEX 32+1 #define TAMNOM 20+1 /******************Declaraciones
DEFINICIÓN FORMAL DE UN AFP
Los AUTÓMATAS FINITOS CON PILA además de reconocer a los Lenguajes Regulares, tienen la capacidad de reconocer a los LICs, como las expresiones aritméticas y las sentencias de un Lenguaje de Programación.
Diagrama de transiciones del autómata. Tabla de transiciones
Universidad Nacional Autónoma de México Facultad de Ingeniería Compiladores Grupo 4, Semestre 2016-1 Analizador Léxico en C Diagrama de transiciones del autómata letra letra 1 0 3 e 4 5 6 e 2 espacio Tabla
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
Algoritmo, Estructuras y Programación I Ing. Marglorie Colina
Unidad II: Fundamentos de la Programación Estructurada Algoritmo, Estructuras y Programación I Ing. Marglorie Colina Estructura General de un Programa Zona de ficheros de cabecera de las librerías Zona
Sintaxis de C Ing. Jose Maria Sola Dr. Oscar Ricardo Bruno
1.1. Gramática Léxica 1.1.1. Elementos Léxicos Sintaxis de C Ing. Jose Maria Sola Dr. Oscar Ricardo Bruno ->
Tema 05: Elementos de un programa en C
Tema 05: Elementos de un programa en C M. en C. Edgardo Adrián Franco Martínez http://www.eafranco.com [email protected] @edfrancom edgardoadrianfrancom Estructuras de datos (Prof. Edgardo A. Franco) 1
Analizador Léxico en ANSI C
Compiladores 1 Argueta Cortes Jairo I. Universidad Nacional Autónoma de México Facultad de Ingeniería Compiladores Grupo 1 en ANSI C ALUMNOS: ARGUETA CORTES JAIRO I. MENDOZA GAYTAN JOSE TRINIDAD PROFESORA:
Tipos de Datos en C. Palabras reservadas en C
Tipos de Datos en C Tipo Tamaño de bits Rango char 8-128 a 127 unsigned char 8 0 a 255 signed char 8-128 a 127 int 16 32768 a 32767 unsigned int 16 0 a 65535 signed int 16 Igual que int short int 16 Igual
Introducción a la Programación
Introducción a la Programación Fundamentos de Programación Ingeniería Informática en Sistemas de Información Alicia Troncoso 1 Contenido l Introducción l Mi primer programa l Etapas a seguir en la programación
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
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
8- LEX-Expresiones regulares
8- LEX-Expresiones regulares Objetivos: Utilizar la herramienta KEX para trabajar con expresiones regulares Recursos: Maquina virtual Linux distribución Bodhi LXterminal y FLEX Introducción Flex le permite
Descripción de un Programa
Unidad 2 Descripción de un Programa 1 El Lenguaje C (1) El lenguaje C fue creado en 1972 por Ken L. Thompson y Dennis M. Ritchie en los Laboratorios Bell. Es evolución de un lenguaje más antiguo: B (a
Introducción al lenguaje C
Introducción al lenguaje C Programación 2 Profesorado de Informática CeRP del Suroeste, Colonia, Uruguay 15 de marzo de 2016 Programación 2 Introducción al lenguaje C 15 de marzo de 2016 1 / 34 Objetivos
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
Lenguaje C. República Bolivariana de Venezuela Fundación Misión Sucre Aldea Fray Pedro de Agreda Introducción a la Programación III
República Bolivariana de Venezuela Fundación Misión Sucre Aldea Fray Pedro de Agreda Introducción a la Programación III Lenguaje C 1 Puntos previos Los códigos fuentes generados en C requieren ser compilados
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
Práctica 1: Intérprete de mandatos. Sistemas Operativos Área de Arquitectura y Tecnología de Computadores
Práctica 1: Intérprete de mandatos Introducción Desarrollo de un intérprete de mandatos (minishell) en UNIX/Linux en lenguaje C. Debe permitir: Ejecución de mandatos simples ls, cp, mv, rm, etc. Ejecución
Fundamentos de programación
Fundamentos de programación Estructuras de Control Estructuras de control Estructuras de control Estructura secuencial Estructura alternativa Sentencias if, if else Sentencias if else anidadas El operador
Tema 5 Tabla de Símbolos
Traductores, Compiladores e Intérpretes 1 Tema 5 También se la llama tabla de nombres o tabla de identificadores y tiene dos funciones principales: - Efectuar chequeos semánticos. - Generación de código.
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
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
PROGRAMACION ESTRUCTURADA: Tema 1. El lenguaje de programación C
PROGRAMACION ESTRUCTURADA: Tema 1. El lenguaje de programación C Presenta: David Martínez Torres Universidad Tecnológica de la Mixteca Instituto de Computación Oficina No. 37 [email protected] Contenido
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)
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
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:
Laboratorio de Arquitectura de Redes. Introducción al lenguaje C
Laboratorio de Arquitectura de Redes Introducción al lenguaje C Introducción al lenguaje C Introducción Características del lenguaje C Funciones en C Identificadores o etiquetas Las librerías y el linkado
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
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
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
Introducción al Lenguaje de Programación C
Introducción al Lenguaje de Programación C Andrés Arcia Departamento de Computación Escuela de Ingeniería de Sistemas Facultad de Ingeniería Universidad de Los Andes Lenguaje de Programación C Fue diseñado
Universidad Autónoma del Estado de México 2016, Año del 60 Aniversario de la Universidad Autónoma del Estado de México
Universidad Autónoma del Estado de México 2016, Año del 60 Aniversario de la Universidad Autónoma del Estado de México Unidad Académica Profesional Tianguistenco Ingeniería de Software Estructura de Datos
Programación I Funciones
1 Funciones Iván Cantador 2 Funciones: definición, sintaxis, ejemplos (I) Una funciónes un bloque de sentencias identificado con un nombre que se ejecutan de manera secuencial ofreciendo una funcionalidad
Tema 13: Apuntadores en C
Tema 13: Apuntadores en C M. en C. Edgardo Adrián Franco Martínez http://www.eafranco.com [email protected] @edfrancom edgardoadrianfrancom Estructuras de datos (Prof. Edgardo A. Franco) 1 Contenido Introducción
Programación Básica Estructuras de Datos y Funciones en C
Arturo Vega González [email protected] Division de Ciencias e Ingenierías Universidad de Guanajuato Campus León Sesión 8 Universidad de Guanajuato, DCI, Campus León 1 / 33 Contenido 1 Estructuras de Datos
Uso Pseudocódigo Diagrama de flujo Codificación
Uso Pseudocódigo Diagrama de flujo Codificación Inicio INICIO #include #include int main(void) Fin FIN Declaración de variables TIPO DE VARIABLE V 1, V 2,, V N ; int v1,v2,,vn; float
UNIDAD 1. Algoritmo se define como un conjunto de instrucciones que la computadora debe seguir para resolver un problema.
UNIDAD 1 1.1 Definición de Algoritmo La palabra algoritmo se deriva de la traducción al latín del nombre Muhammad Musa Al-khawarizmi, un matemático y astrónomo árabe que en el siglo IX escribió un tratado
Programación En Lenguaje C
Programación En Lenguaje C Introducción Básica para Primero de Bachillerato TECNOLOGÍA DE LA INFORMACIÓN IES PALAS ATENEA Lenguaje C Estructurado Secuencial De alto Nivel Altamente portable Necesita un
7.3. Estructura de un programa
TEMA 7 ALGORITMOS Y PROGRAMAS. ESTRUCTURA DE UN PROGRAMA 7.1. Algoritmos 7.2. Compilación 7.3. Estructura de un programa 7.1. Algoritmos Objetivo: Resolver problemas mediante computadoras (usando el lenguaje
INTRODUCCIÓN AL LENGUAJE C
INTRODUCCIÓN AL LENGUAJE C Fundamentos de Informática EUP ULPGC Jose Torres 1 de 36 Historia de C Precursores: muchas ideas provienen de BCPL (Martin Richards, 1967) y de B (Ken Thompson, 1970) C fue diseñado
Funciones Definición de función
Funciones Definición de función Una función es un bloque de código que realiza una tarea específica. Una función es una porción de programa, identificable mediante un nombre, que realiza determinadas tareas
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 }
Estructuras de Datos Estáticas. Diseñar y programar en lenguaje C soluciones utilizando estructuras de datos estáticas
Fundación Misión Sucre Colegio Universitario de Caracas Taller 2: Estructuras de Datos Estáticas Objetivo Diseñar y programar en lenguaje C soluciones utilizando estructuras de datos estáticas Contenido
Introducción al lenguaje C
Introducción al lenguaje C Ampliación de Informática Belarmino Pulido Junquera Índice 1. Presentación del lenguaje C 2. Estructura de un programa en C 3. Tipos de datos escalares 4. Operadores básicos
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
INTRODUCCIÓN AL LENGUAJE C++
Transparencias del libro Rodríguez Artalejo, M., González-Calero, P.A., Gómez Martín, M.A.: Estructuras de datos, un enfoque moderno. Editorial Complutense 2011. TEMA 0 INTRODUCCIÓN AL LENGUAJE C++ El
Examen Principios de Programación Febrero 2012
Por favor siga las siguientes indicaciones: Escriba con lápiz. Escriba su nombre y número de documento en todas las hojas que entregue. Numere las hojas e indique el total de hojas en la primera de ellas.
LENGUAJE. Tema 2 Elementos de un programa
LENGUAJE Tema 2 Elementos de un programa ELEMENTOS DE UN PROGRAMA Comentarios. Identificadores. Constantes. Variables. Operadores. Sentencias o instrucciones. COMENTARIOS Los comentarios en C pueden ocupar
Analizador Léxico. Programación II Margarita Álvarez. Analizador Léxico - Funciones
Analizador Léxico Programación II Margarita Álvarez Analizador Léxico - Funciones Función Principal Leer carácter por carácter de la entrada y elaborar como salida una secuencia de componentes léxicos
Es un lenguaje estructurado, tiene una abundante cantidad de operadores y tipos de datos.
Lenguaje C Un poco de historia C es un lenguaje de propósito general, es decir, se pueden desarrollar aplicaciones de diversas áreas. Dentro de sus principales características podemos mencionar que: Es
UNIVERSIDAD AUTÓNOMA DE BAJA CALIFORNIA FACULTAD DE CIENCIAS PRACTICA DE PROCESOS HERRAMIENTAS
UNIVERSIDAD AUTÓNOMA DE BAJA CALIFORNIA FACULTAD DE CIENCIAS PRACTICA DE PROCESOS HERRAMIENTAS Caso 1: 1.- Necesitamos un cd o Dvd para grabar alguna de las versiones de livecd de Linux. 2.- Liga de una
Taller de Sistemas Operativos Introducción
Taller de Sistemas Operativos Introducción Escuela de Ingeniería Civil en Informática Universidad de Valparaíso, Chile http:// Conceptos generales 2 Proceso stdin Descriptor Flujo (FILE*) 0 stdout 1 Proceso
Introducción a los generadores de analizadores léxicos y sintácticos FLEX y BISON: Implementación de una pequeña calculadora
Introducción a los generadores de analizadores léxicos y sintácticos FLEX y BISON: Implementación de una pequeña calculadora Objetivo Con la ayuda de FLEX, el generador automático de analizadores léxicos,
Archivos en lenguaje C
Archivos en lenguaje C Los archivos, a diferencia de las estructuras de datos conocidas hasta ahora (variables simples, arreglos) son estructuras de datos almacenadas de manera permanente (discos rígidos,
Ejercicios de la sesión 4 de C resueltos
Ejercicios de la sesión 4 de C resueltos 1. Usando el procedimiento del ejercicio 2 del seminario anterior, escribe un programa que multiplique dos matrices A y B leídas de ficheros, la primera de tamaño
Tema 2: Análisis léxico
Tema 2: Análisis léxico Procesamiento de Lenguajes Dept. de Lenguajes y Sistemas Informáticos Universidad de Alicante Procesamiento de Lenguajes Tema 2: Análisis léxico 1 / 22 Fundamentos del análisis
EDITRAN/TR. Windows/Unix. Manual de referencia
EDITRAN/TR Windows/Unix Manual de referencia INDRA 30 de octubre de 2014 ÍNDICE 1. INTRODUCCIÓN.... 1-1 2. INTERFAZ DE PROGRAMACIÓN.... 2-1 2.1. DESCRIPCION... 2-1 2.2. FUNCIONES DE ENVIO Y RECEPCION...
PROGRAMACION / Clave: 11214
PRACTICA 10. Programas en DevC++ 1.- Programa que imprima las tablas de multiplicar del 1 al 10, se deberá hacer una pausa entre tabla y tabla de multiplicar. 2.- Programa que se repita N cantidad de veces
Tema ADQUISICIÓN Y TRATAMIENTO DE DATOS. Departamento de Ciencias de la Computación e IA. Subprogramas en C
Tema ADQUISICIÓN Y TRATAMIENTO DE DATOS Departamento de Ciencias de la Computación e IA Subprogramas en C Objetivo Una vez que tengamos un programa que resuelva un problema concreto, ser capaces de usarlo
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
Codificación en C. Como pasar de Pseudocódigo a C (con pequeños trucos de C++)
Codificación en C Como pasar de Pseudocódigo a C (con pequeños trucos de C++) Plantilla Librerias Constantes Algoritmo #include #include #define PI 3.1416 int main(void){ /*Variables*/
TEORÍA. definition TAG. PROPERTIES ID expr EXTENDS ID FIN_TAG. DELAYED : expr
Examen de Traductores, Intérpretes y Compiladores. Convocatoria ordinaria de Septiembre de 2004 3 er Curso de I.T. Informática de Sistemas. Apellidos, Nombre: Calificación: TEORÍA 1.- Escribir una gramática
UTN FRBA Algoritmos y Estructura de Datos Examen Final 18/07/2014. Apellido y nombre: Legajo: Cursó con Prof:
UTN FRBA Algoritmos y Estructura de Datos Examen Final 18/07/2014 Distancias entre localidades Temas evaluados: Resolución de problemas, estructuras de datos, matrices, y lenguaje de programación Contexto
Estructura de datos y Programación
Estructura de datos y Programación Tema: Conceptos Básicos- Estructuras de control - Arreglos Ing. Analia Méndez Ing. Raquel Zarco Año: 2012 ELEMENTOS DE UN PROGRAMA EN JAVA El programa Java consta de
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
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
Estructura Selectiva Múltiple
Estructura Selectiva Múltiple La estructura que se va a describir a continuación desarrolla una función similar a la de la selectiva doble con múltiples ramificaciones, aunque como se puede ver presenta
OBJETIVOS. Explicar el manejo de archivos de texto. Explicar el manejo de archivos binarios. Desarrollar programas que usen archivos.
/ OBJETIVOS Explicar el manejo de archivos de texto. Explicar el manejo de archivos binarios. Desarrollar programas que usen archivos. LABORATORIO 6 MANEJO DE ARCHIVOS DE TEXTO Y BINARIOS Msc. Walter Fernandez
Fundamentos de Programación 2017-I
Fundamentos de Programación 2017-I Fundamentos para la construcción de código a partir del algoritmo Objetivo: El alumno construirá programas utilizando el lenguaje de programación C a través de un análisis
Punteros. Programación en C 1
Punteros Programación en C 1 Índice Variables y direcciones de memoria. Punteros definición, declaración e inicialización. Punteros declaración, asignación y dereferencia. Puntero nulo, tipo void. Aritmética
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.
Unidad III Análisis Léxico. M.C. Juan Carlos Olivares Rojas
Unidad III Análisis Léxico M.C. Juan Carlos Olivares Rojas Agenda 3.1 Introducción a los Autómatas finitos y expresiones regulares. 3.2 Analizador de léxico. 3.3 Manejo de localidades temporales de memoria
Tema 5. Análisis semántico
Departamento de Tecnologías de la Información Tema 5 Análisis semántico Ciencias de la Computación e Inteligencia Artificial Índice 5.1 Características del análisis semántico 5.2 Gramáticas atribuidas
Objetivos Que el estudiante logre conocer, comprender y manejar conceptos y técnicas vinculados con el Analizador Léxico, para lo cual debe:
09:19 1 2 Temas Funciones del Analizador Léxico Manejo de buffers de entrada Especificación y reconocimiento de tokens Generación automática de Analizadores Léxicos Objetivos Que el estudiante logre conocer,
Módulo. = Asignación = = Comp. de igualdad!= Com. de desigualdad <= Comp. menor o igual >= Comp. mayor o igual AND lógico OR lógica.
EQUIVALENCIAS BÁSICAS ENTRE PASCAL Y C A continuación se presentan algunas equivalencias básicas entre estos lenguajes de programación : Operadores en lenguaje C: Operador Descripción % Módulo = Asignación
08 Análisis léxico IV
2 Contenido Expresiones regulares Lenguaje generado por una expresión regular Precedencia de las operaciones con las expresiones regulares Ejemplos Definiciones regulares Extensiones de las expresiones
TEMA 4. ESTRUCTURAS DE CONTROL
M.P. Sesmero, P. de Toledo, F.J. Ordoñez, J. Gómez-Romero, J.A. Iglesias, J.L. Mira Programación TEMA 4. ESTRUCTURAS DE CONTROL Grado en Ingeniería en Tecnologías Industriales Programación CONTENIDOS 4.1.
Cuales son los tipos de instrucciones que se utilizan en la programación?
EXAMEN NIVEL PREUNI/UNI Cuales son los tipos de instrucciones que se utilizan en la programación? a) Instrucciones afirmativas e instrucciones negativas b) Instrucciones entrada, instrucciones afirmativas
Unidad II Fundamentos de C++ M.C. Juan Carlos Olivares Rojas
Unidad II Fundamentos de C++ M.C. Juan Carlos Olivares Rojas Agenda 2.1 Familiarización con el ambiente de programación 2.2 Análisis de la estructura de un programa 2.3 Envío de mensajes a la salida estándar
Realizar el ejercicio anterior utilizando Punteros
PUNTEROS Y ARRAYS En C existe una relación entre punteros y arrays tal que cualquier operación que se pueda realizar mediante la indexación de un arrays, se puede realizar también con punteros. Para clarificar
Lección 3 Sentencias de control
3.1. INTRODUCCIÓN - Hasta aquí: ejecución secuencial de los programas. - Aquí vamos a ver: Lección 3 Sentencias de control Sentencias de control Sentencias condicionales: if- y switch-case Sirven para
UTN FRBA Algoritmos y Estructura de Datos Examen Final 13/02/2015. Apellido y nombre: Legajo: Cursó con Prof:
Sistema para el Seguimiento de Jugadores de Fútbol Temas evaluados: Resolución de problemas, estructuras de datos, archivos, listas, y lenguaje de programación. Contexto Usted es parte de un equipo que
Java. Introducción a la Programación Orientada a Objetos
Java Java es un lenguaje de programación presentado en 1995 enfocado a: soportar los fundamentos de la programación orientada a objetos. generar código independiente de la arquitectura de la computadora
Ejercicio Sockets Suma Resta. Descripción
Ejercicio Sockets Suma Resta Siguiendo con nuestra propuesta de construir embriones de servicios, como hemos hecho en la práctica programando un embrión de Telnet, un embrión de cliente de un servidor
