Resolução dos exercícios de YACC das aulas práticas de Processamento de linguagens LEX/YACC. Maria João Tinoco Varanda Pereira
|
|
- Yan Mirandela Paranhos
- 6 Há anos
- Visualizações:
Transcrição
1 Resolução dos exercícios de YACC das aulas práticas de Processamento de linguagens LEX/YACC Maria João Tinoco Varanda Pereira Junho 2003
2 2
3 Capítulo 1 Exercícios de YACC 1.1 Enunciados 1. Considere um texto que pretende representar um conjunto de alunos da seguinte forma: joao 1233 (15,14,16,10) teresa 1478 (12,11,17,12) Para cada aluno consta o seu nome, o seu número de identificação e uma sequência de notas. O programa deverá reconhecer este texto e deverá indicar para cada aluno o seu nome e a média das notas. 2. Considere uma linguagem de descrição de máquinas de estados: ROLDANA parada e1 (x>3) = andar andar e2 (x<3) = parada BOTAO activo e2 (a<5) = desactivo Esta linguagem permite a descrição de várias máquinas, indicando para cada uma delas o nome e um conjunto de transições de estado. Cada transição de estado é caracterizada por um estado inicial, por um evento que deve ocorrer para que a transição seja efectuada (opcional), por uma condição e por um estado final. Pretende-se construir um tradutor que reconheça um texto fonte com estas características e produza um texto final com o seguinte formato: Nome: ROLDANA if ( estado==parada && e1 && x>3) {estado=andar if ( estado==andar && e2 && x<3) {estado=parada Nome: BOTAO if ( estado==activo && e2 && a<5) {estado=desactivo 3. Altere o programa anterior de forma a que para cada máquina surja apenas o seu conjunto de estados: Nome: ROLDANA Estados: parada, andar Nome: BOTAO Estados: activo, desactivo 3
4 CAPÍTULO 1. EXERCÍCIOS DE YACC a) Implemente este exercício sem recorrer a nenhuma estrutura auxiliar. b) Implemente este exercício recorrendo a uma lista ligada simples para coleccionar os estados. 4. Construa um programa LEX/YACC que implemente uma calculadora. Alguns exemplos de texto fonte e texto final são apresentados na tabela abaixo. Considere que são apenas possíveis operações Inicial Final (* 2 (+ 4 5)) 18 (* ( ) 4 5) 120 de soma e multiplicação, que o número de operandos pode tomar qualquer valor acima de dois e são do tipo inteiro. 5. Construa um programa em LEX/YACC que aceite um texto que representa o calendário de exames de um curso: lp 17: /2 io 18: /2 pl 11: /2 O programa deve também listar para cada dia os exames que irão decorrer e, para cada sala, a hora e dia em que estão ocupadas. 6. Pretende-se construir um reconhecedor de uma linguagem de descrição de desenhos que permita guardar toda essa informação numa estrutura para mais tarde se proceder ao seu desenho. O texto fonte terá que ter o seguinte formato: janela: Q 20 * 20 porta: R 40 * 20 sol: C 100 * 100 Q (quadrado) R (rectângulo) C (círculo) 7. Construa um calculador de expressões usando programas LEX/YACC para reconhecer as expressões de entrada. Os operadores disponíveis serão: % (percentagem) +,-,*,/, permitindo o uso de parêntesis para forçar prioridades a expressão deverá finalizar com. e os operandos devem ser do tipo inteiro. 8. Considere uma linguagem que permite definir as posições de segmentos de recta e de pedaços de texto. Cada segmento de recta é definido pelas coordenadas do ponto inicial, pelo declive e pelo comprimento. Cada texto é um conjunto de caracteres entre aspas que poderão ocupar mais do que uma linha. Para cada texto são também indicadas as coordenadas da posição inicial. Pretende-se construir um reconhecedor para esta linguagem e um tradutor que imprima na saída as coordenadas iniciais e finais de cada segmento de recta, assim como, as coordenadas iniciais dos textos. As coordenadas finais de um segmento são calculadas da seguinte forma: xf = xi + comprimento * cos(declive) yf = yi + comprimento * sin(declive) Nota: As unidades do comprimento poderão ser em centímetros ou polegadas (polegada=3,5cm). Exemplo de um texto fonte: LINHA (3,5) (0.5) (20 cm) TEXTO (10,15) Olá LINHA (10,20) (1.7) (10 inch) 4
5 1.1. ENUNCIADOS Texto de saída: Recta [(3.00,5.00),(20.55,14.59)] O texto Olá começa na posiç~ao (10.00,15.00) Recta [(10.00,20.00),(5.49,54.71)] 9. Considere a seguinte situação: Para fácil acesso por todos através da internet, pretende-se produzir, automaticamente, um dicionário em html, com a classificação gramatical de cada palavra, origem (quando conhecida), significados e (para cada caso semântico) sinónimos e exemplos de utilização. Para o efeito deve ser: a) definida uma linguagem que permita declarar cada palavra, descrevendo toda a informação conhecida (relatada no parágrafo acima) e disponível sobre ela b) desenvolvido um processador para essa linguagem que, após ler e validar as declarações referidas, faça o seu reconhecimento e gere uma página html para cada palavra definida, bem como uma página inicial com o índice (por ordem alfabética) de todas as palavras introduzidas (ligando cada uma à respectiva página). O gerador das páginas html correspondentes ao índice e a cada palavra, terá de dotar cada página com os botões de navegação (realizados na forma de links) necessários para avançar para a palavra seguinte ou anterior e saltar para a página inicial, bem como saltar para as palavras indicadas como sinónimos (caso também estejam definidas no dicionário). Além disso, deve validar que o dicionário tenha pelo menos uma palavra e que não hajam repetições de definições da mesma palavra. 5
6 CAPÍTULO Resoluções Exercício 1 FICHEIRO LEX EXERCÍCIOS DE YACC [0-9]+ {yylval.num=atoi(yytext) return(n) [a-za-z]+ {strcpy(yylval.s,yytext) return(id) [(),] {return(yytext[0]) [ \n\t] yywrap(){return(1) FICHEIRO YACC #define MAX_STR 60 % %start gra %union{ char s[max_str+1] int num %token <s> ID %token <num> N %token ( ), %type <num> notas gra : linhas linhas : linha linhas linha linha : aluno ident ( notas ) {printf("media:%f\n",$4/4.0) aluno : ID {printf("nome:%s\n",$1) ident : N {printf("identificacao:%d\n",$1) notas : N {printf("primeiro:%d\n",$1) $$ = $1 notas, N {printf("outros:%d\n",$3) $$ = $1 + $3 main() {yyparse() yyerror() {printf("erro sintactico") return(0) 6
7 1.2. RESOLUÇÕES Exercício 2 FICHEIRO LEX PALAVRA ([A-Z]+) ID_CHARS ([a-z]+) EV ([a-z][0-9]) CD ([><0-9a-zA-Z]+) {ID_CHARS {strcpy(yylval.str,yytext) return(estado) {PALAVRA {strcpy(yylval.str,yytext) return(nome) {EV {strcpy(yylval.str,yytext) return(evento) {CD {strcpy(yylval.str,yytext) return(cond) [\(\)\=] {return(yytext[0]) [ \n\t]. {printf("caracter Invalido\n") yywrap() {return(1) FICHEIRO YACC %start descricao %union{ char str[20] %token <str> ESTADO %token <str> NOME %token <str> COND %token <str> EVENTO %token ( ) = descricao : maquinas maquinas : maquinas maquina maquina maquina : NOME {printf("nome:%s\n",$1) prods prods : prods prod prod prod : ESTADO EVENTO ( COND ) = ESTADO {printf("if(estado==%s && %s && %s) {estado= %s\n",$1,$2,$4,$7) #include <string.h> main() {yyparse() yyerror() {printf("erro SINTACTICO") return(0) 7
8 CAPÍTULO 1. Exercício 3a) FICHEIRO YACC EXERCÍCIOS DE YACC %start descricao %union{ char str[20] %token <str> ESTADO %token <str> NOME %token <str> COND %token <str> EVENTO %token ( ) = %type <str> prod %type <str> prods descricao: maquinas maquinas : maquinas maquina maquina maquina : NOME prods {printf("nome:%s\n",$1) printf("estados:%s\n",$2) prods : prods prod {sprintf($$,"%s,%s",$1,$2) prod {sprintf($$,"%s",$1) prod : ESTADO EVENTO ( COND ) = ESTADO {sprintf($$,"%s,%s",$1,$7) #include <string.h> main() {yyparse() yyerror() {printf("erro SINTACTICO") return(0) 8
9 1.2. RESOLUÇÕES Exercício 3b) FICHEIRO YACC #include <stdio.h> typedef struct cel{ char *estado struct cel *next *seq seq lista % %start descricao %union{ char str[20] %token <str> ESTADO %token <str> NOME %token <str> COND %token <str> EVENTO %token ( ) = descricao : maquinas maquinas : maquinas maquina maquina maquina : NOME prods {printf("nome:%s\n",$1) lista=imprimir(lista) prods : prods prod prod prod : ESTADO EVENTO ( COND ) = ESTADO {lista=insere(lista,$1) lista=insere(lista,$7) #include <string.h> seq imprimir(seq s){ for(s!=nulls=s->next) printf("%s",s->estado) return((seq)null) seq insere(seq s,char *est){ if(s==null){ s=malloc(sizeof(struct cel)) s->estado = malloc(20) strcpy(s->estado,est) s->next=null else if (strcmp(s->estado,est)) s->next=insere(s->next,est) return(s) main() {yyparse() yyerror() {printf("erro SINTACTICO") return(0) ou... 9
10 CAPÍTULO 1. EXERCÍCIOS DE YACC #include <stdio.h> char *lista[20] int max=0 % %start descricao %union{ char str[20] %token <str> ESTADO %token <str> NOME %token <str> COND %token <str> EVENTO %token ( ) = descricao : maquinas maquinas : maquinas maquina maquina maquina : NOME prods {printf("nome:%s\n",$1) imprimir(lista) prods : prods prod prod prod : ESTADO EVENTO ( COND ) = ESTADO {insere(lista,$1) insere(lista,$7) #include <string.h> int existe(char **l,char * est){ int i for(i=0i<maxi++){ if(!strcmp(l[i],est)) return(1) return(0) insere(char **l,char *est){ if(!existe(l,est)) { l[max]=malloc(20) strcpy(l[max],est) max++ imprimir(char **l){ int i for(i=0i<maxi++){printf("%s,",l[i]) printf("\n") max=0 main(){yyparse() yyerror(){printf("erro SINTACTICO") return(0) 10
11 1.2. RESOLUÇÕES Exercício 4 FICHEIRO LEX [+-]?[0-9]+ {yylval.ival=atoi(yytext) return (INTEIRO) [\(\)\*\+] {return(yytext[0]). \n yywrap(){return(1) FICHEIRO YACC #include <stdio.h> typedef struct cel{ int at struct cel *next *seq % %start axioma %union{ int ival seq seqv %token <ival> INTEIRO %token ( ) * + %type <ival> sexp %type <seqv> lista axioma : axioma sexp {printf("=%d\n",$2) sexp {printf("=%d\n",$1) sexp : INTEIRO {$$ = $1 ( + lista ) {$$ = soma($3) ( * lista ) {$$ = prod($3) lista : lista sexp {$$ = cons($2,$1) {$$ = makelista() int soma(s) /*calcula soma e liberta a lista*/ seq s { int som = 0 seq aux for(s!=nullaux=s,s=s->next,free(aux)) som += s->at return(som) int prod(s) /* calcula produto e liberta lista*/ seq s { int pro=1 seq aux 11
12 CAPÍTULO 1. EXERCÍCIOS DE YACC for(s!=nullaux=s,s=s->next,free(aux)) pro *= s->at return(pro) seq makelista() {return((seq)null) seq cons(ele,s) seq s int ele { seq aux aux=(seq) malloc(sizeof(struct cel)) aux->at = ele aux->next = s return(aux) main(){yyparse() yyerror(){return(0) 12
13 1.2. RESOLUÇÕES Exercício 5 FICHEIRO LEX int primeiravez=1 % LETRAS ([a-za-z]+) SALAS ([0-9]+) HORAS ([0-9:]+) DIAS ([/0-9]+) WS ([ \n\t]*) %START A B C D if(primeiravez==1) {primeiravez=0 BEGIN A % <A>{WS[a-zA-Z]+ {strcpy(yylval.str,yytext) BEGIN B return(disciplina) <B>{WS[0-9:]+ {strcpy(yylval.str,yytext) BEGIN C return(hora) <C>{WS[0-9]+ {strcpy(yylval.str,yytext) BEGIN D return(sala) <D>{WS[/0-9]* {strcpy(yylval.str,yytext) return(dia)begin A #include <string.h> yywrap() {return(1) FICHEIRO YACC #define MAX_STR 30 % %start calendario %union{ char str[max_str+1] %token <str> DISCIPLINA %token <str> HORA %token <str> SALA %token <str> DIA %type <str> exame %type <str> exames calendario : exames {printf("%s",$1) exames : exames exame {sprintf($$,"%s,%s",$1,$2) exame {sprintf($$,"%s",$1) exame : DISCIPLINA HORA SALA DIA {sprintf($$,"%s",$3) if(!strcmp($4,"18/2")) printf("disciplina:%s\n",$1) main(){yyparse() yyerror(){printf("erro SINTACTICO") return(0) 13
14 CAPÍTULO 1. Exercício 6 FICHEIRO LEX EXERCÍCIOS DE YACC [0-9]+ {yylval.nm=atoi(yytext) return(num) [RQTC] {yylval.ch=yytext[0] return(letra) [a-za-z]+ {strcpy(yylval.str,yytext) return(id) [:\*] {return(yytext[0]) [ \n\t]. {printf("caracter invalido") yywrap(){return(1) FICHEIRO YACC #include <stdio.h> typedef struct cel{ char *ident char *tipo char *dim struct cel *nextinfo, *seq seq lista=null % %start desenhos %union{ char str[30] int nm char ch %token <str> ID %token <nm> NUM %token <ch> LETRA %type <ch> tipo %type <str> dim desenhos : desenho {lista=imprimir(lista) desenho : desenho figura figura figura : ID : tipo dim {printf("nome:%s",$1) lista=cons($1,$3,$4,lista) tipo : LETRA {$$=$1 dim : NUM {sprintf($$,"%d",$1) dim * NUM {sprintf($$,"%s,%d",$1,$3) #include <string.h> main(){yyparse() yyerror(){printf("erro SINTACTICO") return(0) seq cons(char *id,char letra,char *d,seq l){ seq aux aux=(seq) malloc(sizeof(struct cel)) 14
15 1.2. RESOLUÇÕES aux->ident=malloc(20) strcpy(aux->ident,id) aux->tipo=malloc(20) if (letra== R ) strcpy(aux->tipo,"rectangulo") else if (letra== Q ) strcpy(aux->tipo,"quadrado") else if (letra== T ) strcpy(aux->tipo,"triangulo") else if (letra== C ) strcpy(aux->tipo,"circulo") aux->dim=malloc(20) strcpy(aux->dim,d) aux->next=l return(aux) seq imprimir(seq l){ for(l!=nulll=l->next){ printf("%s",l->ident) printf("%s",l->tipo) printf("%s",l->dim) return((seq)null) 15
16 CAPÍTULO 1. Exercício 7 FICHEIRO LEX EXERCÍCIOS DE YACC [0-9]+ {yylval.i=atoi(yytext) return TINT [()/*+%\-\n.] {return(yytext[0]) " " yywrap() {return(1) FICHEIRO YACC int ant=0 % %token TINT %union{int i %type <i> TINT E E1 E2 L : E \n {printf("%d\n> ",$1)ant=$1 L E : E % {$$ = $1/100 E + E2 {$$ = $1 + $3 E - E2 {$$ = $1 - $3 E2 {$$ = $1 E2 : E2 * E1 {$$ = $1 * $3 E2 / E1 {$$ = $1 / $3 E1 {$$ = $1 E1 : TINT {$$=$1 ( E ) {$$ = $2 + E1 {$$ = $2 - E1 {$$ = $2. {$$=ant main(){ yyparse() yyerror(char *s){ fprintf(stderr,"erro %s detectado (%s) \n",s,yytext) 16
17 1.2. RESOLUÇÕES Exercício 8 FICHEIRO LEX #include <stdlib.h> char buf[100] char *s % %option yylineno %x STR \) return ) \( return ( \ return \, return, \" {BEGIN STR s=buf <STR>\\n {*s++= \n <STR>\\t <STR>\" {*s++= \t {*s=0 BEGIN 0 yylval.cval=buf return STRING <STR>. { *s++=*yytext LINHA return LINHA TEXTO return TEXTO inch return inch cm return cm [1-9][0-9]*\.[0-9]* { yylval.fval = atof(yytext) return NUMERO [0-9]\.[0-9]* { yylval.fval = atof(yytext) return NUMERO [1-9][0-9]* { yylval.fval = atof(yytext) return NUMERO 0 {yylval.fval = 0 return NUMERO [ \t\n]*. printf("erro léxico, linha %d\n",yylineno) int yywrap() {return 1 FICHEIRO YACC #include <math.h> #define TCNVINCH 3.5 % 17
18 CAPÍTULO 1. EXERCÍCIOS DE YACC %union { float fval char *cval enum {mcm, minch tval struct ponto {float x, y pval %start grafico %token LINHA TEXTO %token <fval> NUMERO %token <cval> STRING %token inch cm %type <fval> comp decl %type <tval> unid %type <pval> loc grafico : grafico comando comando : linha texto linha : LINHA loc decl comp {float x = $2.x + $4 * (cos((double)($3))) float y = $2.y + $4 * (sin((double)($3))) printf("recta [(%5.2f,%5.2f),(%5.2f,%5.2f)]\n", $2.x,$2.y,x,y) texto : TEXTO loc STRING {printf("o texto:\"%s\" começa na posiçao (%5.2f,%5.2f)\n",$3,$2.x,$2.y) loc : ( NUMERO, NUMERO ) {$$.x=$2 $$.y=$4 decl : ( NUMERO ) {$$ = $2 comp : ( NUMERO unid ) { switch($3){ case minch: unid : inch {$$ = minch cm {$$ = mcm main(){yyparse() yyerror(){printf("erro sintáctico\n") return(0) case mcm: $$=$2 break default: $$=0 $$=$2*TCNVINCH break 18
Processamento de Linguagens I LESI + LMCC (3 o ano)
Processamento de Linguagens I LESI + LMCC (3 o ano) 3 o Ficha Prática Ano Lectivo de 05/06 1 Objectivos Este ficha prática contém 1 exercício para ser resolvido nas aulas teórico-práticas com vista a consolidar
Leia maisResolução dos exercícios de LEX das aulas práticas de Processamento de linguagens LEX/YACC. Maria João Tinoco Varanda Pereira
Resolução dos exercícios de LEX das aulas práticas de Processamento de linguagens LEX/YACC Maria João Tinoco Varanda Pereira Março 2003 2 Capítulo 1 Exercícios de LEX 1.1 Resoluções 1. Usando o Lex, construa
Leia maisLinguagens de Programação I
Linguagens de Programação I Tema # 4 Operadores em C Susana M Iglesias FUNÇÕES ENTRADA-SAÍDA I/O printf(), utilizada para enviar dados ao dispositivo de saída padrão (stdout), scanf(), utilizada para ler
Leia maisProcessamento de Linguagens I LESI + LMCC (3Âo ano)
Processamento de Linguagens I LESI + LMCC (3Âo ano) 2Âa Ficha Prática Ano Lectivo de 05/06 1 Objectivos Este ficha prática contém exercícios para serem resolvidos nas aulas teórico-práticas com vista a
Leia maisQuestão Aula Tipo - Flex+Bison
Questão Aula Tipo - Flex+Bison Uma nova rede social de microblogging, es0lo Twi,er, pretende receber mensagens em bloco, usando um ficheiro de texto. Para isso, começou por definir os formatos disponíveis
Leia maisProgramação Estruturada
Programação Estruturada Introdução à linguagem C Professores Emílio Francesquini e Carla Negri Lintzmayer 2018.Q3 Centro de Matemática, Computação e Cognição Universidade Federal do ABC Programação estruturada
Leia maisComputação Informática
Computação Informática Linguagem C Matrizes em C Aula N. 05 Prof. SIMÃO Jean Marcelo SIMÃO 1 Estrutura de Dados Homogênea matrizes Uma matriz computacional é um váriável composta capaz de armazenar uma
Leia maisProgramação 1. Atribuição, operadores aritméticos, entrada de dados. Técnico em Eletrônica Semestre 5 02
Programação 1 Atribuição, operadores aritméticos, entrada de dados Técnico em Eletrônica Semestre 5 02 Armazenando na memória tipo de variável #include #include main() { int ano; Declaração
Leia maisAlgoritmos e Programação
Algoritmos e Programação Aula 3 Introdução a Linguagem C Profa. Marina Gomes marinagomes@unipampa.edu.br 1 Aula de Hoje - Criar programas simples em C utilizando a estrutura básica; - Declarar variáveis;
Leia mais3. Linguagem de Programação C
Introdução à Computação I IBM1006 3. Linguagem de Programação C Prof. Renato Tinós Departamento de Computação e Matemática (FFCLRP/USP) 1 Principais Tópicos 3.2. Estrutura de Programas e Representação
Leia maisEstruturas. K&R: Capitulo 6. Estruturas IAED, 2014/2015. Introdução às Estruturas Estruturas e Funções Vectores de Estruturas Typedef Exemplo
Estruturas K&R: Capitulo 6 Estruturas Introdução às Estruturas Estruturas e Funções Vectores de Estruturas Typedef Exemplo 2 1 Motivação Definir uma representação agregada na linguagem C para manipular
Leia maisINF 1620 P2-23/10/04 Questão 1 Nome:
INF 1620 P2-23/10/04 Questão 1 Considere um tipo abstrato de dados para representar uma disciplina da PUC-Rio, com as seguintes informações: Nome da disciplina: com até 50 caracteres Código da disciplina:
Leia maisESTRUTURAS CONDICIONAIS. Baseado nos slides de autoria de Rosely Sanches e Simone Senger de Souza
ESTRUTURAS CONDICIONAIS Baseado nos slides de autoria de Rosely Sanches e Simone Senger de Souza Estruturas de Controle ESTRUTURA SEQUENCIAL ESTRUTURA CONDICIONAL ESTRUTURA DE REPETIÇÃO 2 Estruturas Condicionais
Leia maisINF 1620 P2-14/10/05 Questão 1 Nome:
INF 1620 P2-14/10/05 Questão 1 Considere um cadastro de produtos de um estoque, com as seguintes informações para cada produto: Código de identificação do produto: representado por um valor inteiro Nome
Leia maisESTRUTURAS CONDICIONAIS. Introdução à Ciência da ComputaçãoI Simone Senger de Souza
ESTRUTURAS CONDICIONAIS Introdução à Ciência da ComputaçãoI Simone Senger de Souza Estruturas de Controle ESTRUTURA SEQUENCIAL ESTRUTURA CONDICIONAL ESTRUTURA DE REPETIÇÃO 2 Estruturas Condicionais Estrutura
Leia maisINF 1620 P1-16/09/06 Questão 1 Nome:
INF 1620 P1-16/09/06 Questão 1 Considerando a fórmula para o cálculo da distância entre dois pontos (x 1, y 1 ) e (x 2, y 2 ) apresentada a seguir: d = (x 2 " x 1 ) 2 + (y 2 " y 1 ) 2 (a) Escreva uma função
Leia mais#include <stdio.h> Void main() { printf( Cheguei!\n"); } INTRODUÇÃO A LINGUAGEM C
#include Void main() { printf( Cheguei!\n"); } INTRODUÇÃO A LINGUAGEM C ANTES DO C ERA A LINGUAGEM B B foi essencialmente uma simplificação da linguagem BCPL. B só tinha um tipo de dado, que
Leia maisProgramação I PRG Engenharia de Telecomunicações 2ª Fase Professor: Cleber Jorge Amaral
Programação I PRG29002 Engenharia de Telecomunicações 2ª Fase Professor: Cleber Jorge Amaral 2016-1 Revisão da aula anterior Linguagens compiladas vs interpretadas Para que servem as bibliotecas? O que
Leia maisAula 2 Comandos de Decisão
Departamento de Sistemas de Computação Universidade de São Paulo SSC 502 Laboratório de Introdução a Ciência de Computação I Aula 2 Comandos de Decisão Responsável Prof. Seiji Isotani (sisotani@icmc.usp.br)
Leia maisLegibilidade do código fonte
Sumário Legibilidade do código fonte Exemplos Normas Instrução switch Sintaxe e Semântica Exemplo Tipos enumerados Exemplo Programação 2007/2008 DEEC-IST 1 Legibilidade do código fonte Exemplo: Considere
Leia maisProgramação de Computadores I Introdução ao C PROFESSORA CINTIA CAETANO
Programação de Computadores I Introdução ao C PROFESSORA CINTIA CAETANO Introdução Criada em 1972, por Dennis Ritchie; Centro de Pesquisas da Bell Laboratories; Para utilização no S.O. UNIX; C é uma linguagem
Leia maisimprimir seus quadrados.
1) Dada uma seqüência de números inteiros não-nulos, seguida por 0, imprimir seus quadrados. int numero, /* usada para leitura da sequencia */ quadrado; /* guarda o quadrado do numero lido */ printf("\n\tcalculo
Leia maisINF 1620 P1-18/09/04 Questão 1 Nome:
INF 1620 P1-18/09/04 Questão 1 Considerando a definição da série harmônica abaixo: H n =1+ 1 2 + 1 3 + 1 4 + 1 5 + K+ 1 n (a) Escreva uma função que calcule o valor de H n dado o número de termos da série
Leia maisINF 1620 P2-17/05/08 Questão 1 Nome:
INF 620 P2-7/05/08 Questão Considere um cadastro de produtos de um estoque, com as seguintes informações: Código de Identificação do produto: representado por um número inteiro Nome do produto: com até
Leia maisINF 1620 P3-25/11/05 Questão 1 Nome:
INF 1620 P3-25/11/05 Questão 1 Dizemos que uma matriz quadrada é um quadrado mágico se a soma dos elementos de cada linha, a soma dos elementos de cada coluna e a soma dos elementos de sua diagonal principal
Leia maisA linguagem C (visão histórica)
A linguagem C (visão histórica) A linguagem C é uma linguagem de programação desenvolvida no ínício dos anos 70 por Dennis Ritchie, que trabalhava nos laboratórios Bell e que também inciou em paralelo,
Leia mais1ª versão. #include <stdio.h> #include <string.h> #include <stdlib.h> #define maxdiscos 1000
#include #include #include #define maxdiscos 1000 typedef struct { char nomeautor[80]; char nomedisco[100]; int numdiscosvendidos; DISCO; 1ª versão int main() { DISCO listadiscos[maxdiscos];
Leia maisComputação 2. Aula Profª. Fabiany Listas Duplamente Encadeadas
Computação 2 Aula 10.1 Listas Duplamente Encadeadas Profª. Fabiany fabianyl@utfpr.edu.br ListaEncadeada.h #ifndef _LISTAENCADEADA_H_ #define _LISTAENCADEADA_H_ #include #include #include
Leia maisVetores II. Strings Leitura e exibição Biblioteca string.h Operações com Strings. Matrizes Definição de Acesso Operações com Matrizes
Strings Leitura e exibição Biblioteca string.h Operações com Strings Matrizes Definição de Acesso Operações com Matrizes Utilidade da String Facilidade de manipulação de um grande conjunto de caracteres
Leia maisUniversidade Estadual de Mato Grosso do Sul Ciência da Computação Algoritmos e Estruturas de Dados I (AED-I) Prof. Nilton
Universidade Estadual de Mato Grosso do Sul Ciência da Computação Algoritmos e Estruturas de Dados I (AED-I) Prof. Nilton nilton@comp.uems.br Introdução A linguagem C foi inventada por Dennis Ritchie e
Leia maisINF 1620 P1-04/10/03 Questão 1 Nome:
INF 1620 P1-04/10/03 Questão 1 a) Implemente uma função para calcular as raízes de uma equação do segundo grau do tipo ax 2 +bx+c=0. O protótipo dessa função deve ser: void raizes (float a, float b, float
Leia maisINF 1620 P3-29/06/04 Questão 1 Nome:
INF 1620 P3-29/06/04 Questão 1 Considere um arquivo texto que descreve um conjunto de retângulos e círculos. Cada linha do arquivo contém a descrição de uma figura. O primeiro caractere da linha indica
Leia maisResumo da matéria: - Sintaxe da definição duma função C: - Diagramas sintácticos do if e dos mecanismos de ciclos em C:
Aula de PGI 15.4.2014 Exercícios que envolvem ciclos e funções Resumo da matéria: - Sintaxe da definição duma função C: tipovalorretorno nomedafuncao( tipo nomevar, tipo nomevar1 ){ int v; // Aqui consta
Leia maisProgramação de Computadores II
Programação de Computadores II 2017.2 Relembrando... Linguagem C Relembrando... Linguagem C Declaração básica de um programa Relembrando... Linguagem C Declaração básica de um programa include Relembrando...
Leia maisEstruturas de Dados Aula 6: Cadeias de 28/03/2010
Estruturas de Dados Aula 6: Cadeias de Caracteres 28/03/2010 Caracteres Caracteres são representados internamente por códigos numéricos Tipo char (inteiro pequeno ) 1 byte (8 bits) 256 caracteres possíveis
Leia maisEstruturas de Dados Aula 6: Cadeias de Caracteres
Estruturas de Dados Aula 6: Cadeias de Caracteres Caracteres Caracteres são representados internamente por códigos numéricos Tipo char (inteiro pequeno ) 1 byte (8 bits) 256 caracteres possíveis Códigos
Leia maisINF 1620 P4-01/07/08 Questão 1 Nome:
INF 1620 P4-01/07/08 Questão 1 Escreva uma função em C que receba duas strings, cujos caracteres estão ordenados em ordem crescente, e retorne uma nova string alocada dinamicamente, que contém todos os
Leia maisComputadores Digitais 2. Prof. Rodrigo de Souza Couto
Computadores Digitais 2 Linguagens de Programação DEL-Poli/UFRJ Prof. Miguel Campista Aula de Hoje Tipos Estruturados Tipo estrutura Definição de novos tipos Aninhamento de Estruturas Vetores de estruturas
Leia maisAula 02 -Introdução àlinguagc Programação: Estrutura-Seleção. OPL e IC1 Prof: Anilton Joaquim da Silva
Aula 02 -Introdução àlinguagc Programação: Estrutura-Seleção OPL e IC1 Prof: Anilton Joaquim da Silva Anilton.ufu@outlook.com 1 Estrutura de Seleção Até agora não aprendemos a dizer para o computador Se
Leia maisIntrodução à Linguagem C
Engenharia de CONTROLE e AUTOMAÇÃO Introdução à Linguagem C Aula 02 DPEE 1038 Estrutura de Dados para Automação Curso de Engenharia de Controle e Automação Universidade Federal de Santa Maria beltrame@mail.ufsm.br
Leia maisLinguagem C. IF61A/IF71A - Computação 1 Prof. Leonelo Almeida. Universidade Tecnológica Federal do Paraná
Linguagem C IF61A/IF71A - Computação 1 Prof. Leonelo Almeida Universidade Tecnológica Federal do Paraná Até agora... Sabemos construir algoritmos que tenham: Variáveis Comandos sequenciais Entrada e saída
Leia maisMódulo 3 Controle de Fluxo
Estruturas de Dados Módulo 3 Controle de Fluxo 16/8/2005 (c) Marco A. Casanova - PUC-Rio 1 Referências Waldemar Celes, Renato Cerqueira, José Lucas Rangel, Introdução a Estruturas de Dados, Editora Campus
Leia maisHello World. Linguagem C. Tipos de Dados. Palavras Reservadas. Operadores Aritméticos. Pré e pós incremento e pré e pós decremento
Hello World Linguagem C printf("hello world!\n"); main é a função principal, a execução do programa começa por ela printf é uma função usada para enviar dados para o vídeo Palavras Reservadas auto double
Leia maisCurso de C. Declaração de Variáveis 18/3/ :48 1
Curso de C Declaração de Variáveis 18/3/2008 15:48 1 Declaração de Variáveis Objetivos: Aprender como: Criar variáveis Atribuir um valor inicial à variável Escolher um nome para a variável 18/3/2008 15:48
Leia maisAnhanguera Educacional S.A. Centro Universitário Ibero-Americano
O C++ foi inicialmente desenvolvido por Bjarne Stroustrup durante a década de 1980 com o objetivo de melhorar a linguagem de programação C, mantendo a compatibilidade com esta linguagem. Exemplos de Aplicações
Leia maisUNIVERSIDADE LUSÓFONA DE HUMANIDADES E TECNOLOGIAS 2º Semestre 2013/2014
UNIVERSIDADE LUSÓFONA DE HUMANIDADES E TECNOLOGIAS 2º Semestre 2013/2014 Programação em C 18/06/2014 Leia com atenção as perguntas e justifique cuidadosamente todas as respostas 1. Qual o objetivo de uma
Leia maisComputação 2. Aula 7. Profª. Fabiany Ponteiros
Computação 2 Aula 7 Ponteiros Profª. Fabiany fabianyl@utfpr.edu.br O que são Ponteiros? Um ponteiro é uma variável que contém um endereço de memória. Este endereço é normalmente a posição de uma outra
Leia maisCURSO SUPERIOR DE TECNOLOGIA EM ANÁLISE E DESENVOLVIMENTO DE SISTEMAS DISCIPLINA : INTRODUÇÃO À LÓGICA DE PROGRAMAÇÃO ASSUNTO: C
CURSO SUPERIOR DE TECNOLOGIA EM ANÁLISE E DESENVOLVIMENTO DE SISTEMAS DISCIPLINA : INTRODUÇÃO À LÓGICA DE PROGRAMAÇÃO ASSUNTO: C PROFESSOR : Romilson Lopes Sampaio Estruturas de Repetição São três estruturas
Leia maisAluno: Valor Nota Q1 3.0 Q2 2.5 Q3 2.5 Q4 2.0 Total 10.0
P4 Programação II 2012.2 Departamento de Informática/PUC- Rio Aluno: Matrícula: Turma: 1. A prova é sem consulta e sem perguntas. A interpretação do enunciado faz parte da prova. 2. A prova deve ser completamente
Leia maisLógica e Linguagem de Programação Convertendo um algoritmo em pseudocódigo para a linguagem C Professor: Danilo Giacobo
Lógica e Linguagem de Programação Convertendo um algoritmo em pseudocódigo para a linguagem C Professor: Danilo Giacobo Este documento explica como transformar um algoritmo escrito na forma pseudocódigo
Leia maisIntrodução a Programação. Tipos Estruturados de Dados
Introdução a Programação Tipos Estruturados de Dados Tópicos da Aula Hoje aprenderemos a trabalhar com tipos de dados mais complexos Tipos Primitivos x Tipos Estruturados Conceito de Tipos Estruturados
Leia maisDisciplina de Algoritmos e Programação
Disciplina de Algoritmos e Programação Último Conteúdo Estruturas de condição Estrutura condicional simples Utilização da estrutura de condição if com expressões lógicas simples Utilização do comando if
Leia maisIntrodução à Linguagem C
Introdução à Linguagem C Eduardo Simões de Albuquerque Instituto de Informática UFG 13/03/2006 1 História Inventada e desenvolvida por Dennis Ritchie em um DEC- PDP 11 Originária de: BCPL desenvolvida
Leia maisBásico: estrutura de programa, sintaxe Interface com linha de comando
Programação em C Sintaxe Básico: estrutura de programa, sintaxe Interface com linha de comando Preprocessamento e compilação Makefiles Ponteiros e estruturas Bibliotecas, ficheiros include e funções Referências
Leia maisINF 1620 P1-17/09/05 Questão 1 Nome:
INF 1620 P1-17/09/05 Questão 1 Considere as equações de movimento para calcular a posição (s) e velocidade (v) de uma partícula em um determinado instante t, dado sua aceleração a, posição inicial s 0
Leia maisConceitos básicos. Computação eletrônica: Gurvan Huiban
Computação eletrônica: Conceitos básicos Gurvan Huiban ghuiban@cin.ufpe.br Plano de aula 1 Estrutura de um programa em C 2 Variáveis e constantes 3 Comandos de entrada e saída Estrutura de um programa
Leia maisTAD: Tipo Abstrato de Dados (parte 2)
TAD: Tipo Abstrato de Dados (parte 2) SCC0502 Algoritmos e Estruturas de Dados I Programa em C pode ser dividido em vários arquivos Arquivos fonte com extensão.c Denominados de módulos Cada módulo deve
Leia maisLinguagem C. Ponteiros. Alex Vidigal Bastos.
Linguagem C Ponteiros Alex Vidigal Bastos alexvbh@gmail.com Ponteiros Ponteiros são variáveis que contém endereços. Estas variáveis apontam para algum determinado endereço da memória. Em geral, o ponteiro
Leia maisProgramação de Computadores
Programação de Computadores Apresentação da Disciplina Prof. Fabio Henrique N. Abe fabio.henrique.abe@gmail.com 99642-5002 http://www.comp.uems.br/~fhna/ Programação de Computadores Carga Horária da Disciplina
Leia maisPrática - Linguagem C. Exercícios - Desenvolvendo um pequeno projeto
Universidade Federal Rural de Pernambuco - UFRPE Departamento de Estatística e Informática - DEINFO DISCIPLINA: Paradigmas de Programação PROFESSOR: Gláucya Carreiro Boechat Prática - Linguagem C Exercícios
Leia maisLinguagens e Programação BISON. Paulo Proença
Linguagens e Programação BISON BISON Gerador de analisadores sintáticos. Converte uma gramática independente de contexto LARL(1) 1 num programa C capaz de processar frases da linguagem. Gramática LARL(1)
Leia maisMétodos Computacionais. Tipos Estruturados
Métodos Computacionais Tipos Estruturados Tipos Estruturados C oferece tipos primitivos que servem para representar valores simples Reais (float, double), inteiros (int), caracter (char) C oferece também
Leia maisLinguagens de Programação
Linguagens de Programação 128 13 129 Linguagens de Programação Uma linguagem de programação é um vocabulário e um conjunto de regras gramaticais usadas para escrever programas de computador. Esses programas
Leia maisStrings. Introdução. Definição de strings. Criação/Declaração de strings. Inicialização de strings. Manipulação de strings. Exemplos.
Introdução Definição de strings. Criação/Declaração de strings. Inicialização de strings. Manipulação de strings. Exemplos. 1 definições Uma string é uma sequência, um conjunto, ou uma cadeia de caracteres.
Leia maisTAD: Tipo Abstrato de Dados (parte 2)
TAD: Tipo Abstrato de Dados (parte 2) SCC0202 Algoritmos e Estruturas de Dados I Prof. Thiago A. S. Pardo Modularização em C Programa em C pode ser dividido em vários arquivos Arquivos fonte com extensão.c
Leia maisO que faz/o que é Como usar Como funciona Formato geral do Arquivo Submetido ao Lex ER estendidas Exemplos The Lex & YACC page:
O que faz/o que é Como usar Como funciona Formato geral do Arquivo Submetido ao Lex ER estendidas Exemplos The Lex & YACC page: http://dinosaur.compilertools.net/ 1 O que faz Lex gera programas (em C)
Leia maisUtiliza Expressões Regulares (ER) Estendidas para definir a especificação da análise léxica desejada
O que faz/o que é Como usar Como funciona Formato geral do Arquivo Submetido ao Lex ER estendidas Exemplos The Lex & YACC page: http://dinosaur.compilertools.net/ 1 O que faz Lex gera programas (em C)
Leia maisUSP - ICMC - SSC SSC o. Semestre Disciplina de Introdução à Computação para Engenharia Ambiental
USP - ICMC - SSC SSC 0301-2o. Semestre 2013 Disciplina de Introdução à Computação para Engenharia Ambiental Prof. Dr. Fernando Santos Osório LRM - Laboratório de Robótica Móvel do ICMC / CROB-SC Email:
Leia maisINF 1620 P1-11/04/08 Questão 1 Nome:
INF 1620 P1-11/04/08 Questão 1 Nas Olimpíadas, em uma determinada modalidade esportiva, os competidores recebem a nota de quatro jurados e a nota final é o resultado da média das quatro notas menos um
Leia maisLinguagem C (estruturas condicionais)
Linguagem C (estruturas condicionais) André Tavares da Silva atavares@joinville.udesc.br Comandos de Controle de Fluxo Todos os comandos devem ser terminados com um ;. { e são usados para delimitar um
Leia maisINF 1620 P3-27/11/04 Questão 1 Nome:
INF 1620 P3-27/11/04 Questão 1 Considere um arquivo texto com as notas dos alunos de uma disciplina. Os dados de cada aluno são armazenados em duas linhas do arquivo: uma com o seu nome (cadeia com até
Leia mais3. Linguagem de Programação C
Introdução à Computação I IBM1006 3. Linguagem de Programação C Prof. Renato Tinós Departamento de Computação e Matemática (FFCLRP/USP) 1 Principais Tópicos 3.5. Vetores 3.5.1. Vetores 3.5.2. Strings 3.5.3.
Leia maisIntrodução à Programação. Expressões Booleanas e Comandos Condicionais
Introdução à Programação Expressões Booleanas e Comandos Condicionais Comandos Condicionais Misture os ingredientes Unte forma com manteiga Despeje a mistura na forma Algoritmo para preparação de bolo
Leia maisModulo 3: Else, Case, For...
PROGRAMAÇÃO DE COMPUTADORES V - TCC- 00.323 Modulo 3: Else, Case, For... Aura - Erick aconci@ic.uff.br, erickr@id.uff.br Roteiro Mais Comandos Condicionais Estrutura de Repetição Contável 2 Exemplo de
Leia mais1 d=
O que faz/o que é Como usar / Como funciona Formato geral do Arquivo Submetido ao Lex ER estendidas / Exemplos The Lex & YACC page: http://dinosaur.compilertools.net/ Flex: versão livre http://simplesamples.info/c++/flex.php
Leia maisLinguagem de Programação I. Aula 06 Linguagem C: Tipos de Dados
Linguagem de Programação I Aula 06 Linguagem C: Tipos de Dados Da Aula Anterior Linguagens de Programação A Linguagem C: Como tudo começou Principais características da Linguagem C O primeiro programa
Leia maisINF 1620 P4 11/12/06 Questão 1 Nome:
INF 1620 P4 11/12/06 Questão 1 Considere que o cálculo da multa para o pagamento de um determinado imposto varia de acordo com a tabela a seguir: Valor do Imposto Original Multa por mês de atraso até R$
Leia maisVetores e Strings. 4. Funções Básicas para manipulação de Strings. A função gets() lê uma string do teclado. Sua forma geral é:
4. Funções Básicas para manipulação de Strings - gets A função gets() lê uma string do teclado. Sua forma geral é: gets (nome_da_string); 187 - gets (continuação) Exemplo: Vetores e Strings 188 #include
Leia maisLinguagem C Princípios Básicos (parte 1)
Linguagem C Princípios Básicos (parte 1) Objetivos O principal objetivo deste artigo é explicar alguns conceitos fundamentais de programação em C. No final será implementado um programa envolvendo todos
Leia maisEstruturas da linguagem C. 1. Identificadores, tipos primitivos, variáveis e constantes, operadores e expressões.
1 Estruturas da linguagem C 1. Identificadores, tipos primitivos, variáveis e constantes, operadores e expressões. Identificadores Os identificadores seguem a duas regras: 1. Devem ser começados por letras
Leia maisDepartamento de Informática - PUC-Rio INF 1007 Programação 2 P3 23/06/2010
Departamento de Informática - PUC-Rio INF 1007 Programação 2 P3 23/06/2010 Aluno: Instruções: 1) Escreva seu nome completo, matrícula e turma em todas as folhas desta prova; 2) A prova deve ser completamente
Leia maisProgramação de Computadores II
Programação de Computadores II 2018.2 Bibliotecas Biblioteca é uma conjunto de subprogramas utilizados na programação que contém código e dados auxiliares externos ao programa principal, o que permite
Leia maisFundamentos de Programação 1
Fundamentos de Programação 1 Linguagem C Arquivos Seqüências ou de Texto. Slides 18 Prof. SIMÃO Jean Marcelo SIMÃO 1 Arquivo de Escrita 1 fopen ( nome.txt", "w" ); fputc ( caracter, arquivo); 2 #include
Leia maisLinguagem de Programação C
Linguagem de Programação C Aula 08 Diogo Pinheiro Fernandes Pedrosa Universidade Federal Rural do Semiárido Departamento de Ciências Exatas e Naturais 13 de novembro de 2009 Introdução O que é uma linguagem
Leia maisESTRUTURAS COMPOSTAS
ESTRUTURAS COMPOSTAS Variáveis Compostas Unidimensionais VETOR Clique para adicionar texto Profa. Dra. Elisa Yumi Nakagawa 1. Semestre de 2017 Slides inicialmente preparados pela Profa. Rosely Sanches
Leia maisListas (cont.) K&R: Capitulo 6. Lista Simplesmente Ligada IAED, 2012/2013. Conjunto de nós. Cada nó contém. head NULL. typedef struct node {
Listas (cont.) K&R: Capitulo 6 Lista Simplesmente Ligada Conjunto de nós head NULL Cada nó contém Informação útil Ponteiro para o próimo nó typedef struct node Item item; struct node *net; *link; Item
Leia maisC++ - Matrizes. Observ.: C++ não avisa quando o limite de uma matriz foi excedido. Providenciar a verificação é responsabilidade do programador.
C++ - Matrizes É um conjunto de variáveis, do mesmo tipo, referenciadas por um único nome, onde cada variável é diferenciada por meio de um número entre colchetes chamado índice. Declaração : tipo nome
Leia maisLógica de Programação I
Gilson de Souza Carvalho gaucho.gilson@hotmail.com 1 Comando Switch O comando Switch pode ser visto como uma especialização do comando if. Foi criado para facilitar um uso particular de comandos if encadeados.
Leia maisLinguagem de Programação. Thiago Leite Francisco Barretto
Linguagem de Programação Thiago Leite Francisco Barretto SCHILDT, H. C Completo e Total. 3ª Edição. São Paulo: Makron, 1997. Bibliografia Ementa
Leia maisAlgoritmos e Técnicas de Programação. Professora: Luciana Faria
Algoritmos e Técnicas de Programação Professora: Luciana Faria Estrutura de Controle Múltipla: Switch...case Switch... case Atribui o valor da direita à variável da esquerda Permite que várias condições
Leia maisAlgoritmos RESUMO - LINGUAGEM C
Algoritmos RESUMO - LINGUAGEM C 1 Sintaxe da linguagem C Componentes reconhecidos pela linguagem C (sintaxe da linguagem): tipos propriedades dos dados; declarações partes do programa, podendo dar significado
Leia maisLex Adaptação da obra original de Tom Niemann
LEX Lex Adaptação da obra original de Tom Niemann Durante a primeira fase, o compilador lê a entrada e converte as strings na origem para os tokens. Com expressões regulares, podemos especificar padrões
Leia maisProgramação Estruturada Prof. Rodrigo Hausen Agregados de Dados Heterogêneos (structs)
Programação Estruturada Prof. Rodrigo Hausen http://progest.compscinet.org Agregados de Dados Heterogêneos (structs) 1 AGREGADO HOMOGÊNEO Um agregado homogêneo de dados é um conjunto de dados que são necessariamente
Leia maisMC-102 Aula 21 Registros
MC-102 Aula 21 Registros Instituto de Computação Unicamp 27 de Outubro de 2016 Roteiro 1 Registros Declarando um novo tipo de Registro Acessando os campos de um Registro Lendo e Escrevendo Registros Atribuição
Leia maisMódulo 8 Tipos Estruturados
Estruturas de Dados Módulo 8 Tipos Estruturados 9/8/2005 (c) Dept. Informática - PUC-Rio 1 Referências Waldemar Celes, Renato Cerqueira, José Lucas Rangel, Introdução a Estruturas de Dados, Editora Campus
Leia maisUtilização da Linguagem C
Histórico Criada em 1972 por Dennis Ritchie Usada no desenvolvimento do sistema operacional Unix no Bell Labs C foi derivada da linguagem B, desenvolvida por Ken Thompson Linguagem procedural de alto nível
Leia mais5 - COMANDOS DE CONTROLE DE PROGRAMA Em C existem os comandos de decisões, os comandos de iteração (ou de laços) e os comandos de desvios.
3636363636363636363636363636363636363636363636363636 5 - COMANDOS DE CONTROLE DE PROGRAMA Em C existem os comandos de decisões, os comandos de iteração (ou de laços) e os comandos de desvios. 5.1 - Comandos
Leia maisLinguagem C. Linguagem artificial e formal usada para comunicar instruções ao computador. Proposta por Dennis Ritchie entre 1969 e 1973.
Aula 2 05/03/2015 Linguagem C Linguagem artificial e formal usada para comunicar instruções ao computador. Proposta por Dennis Ritchie entre 1969 e 1973. Um programa em C é Texto que segue as regras formais
Leia maisTipos de Dados Definidos Pelo Usuário. Estruturas Uniões Enumerações O Comando sizeof O Comando typedef
Tipos de Dados Definidos Pelo Usuário Uniões Enumerações O Comando sizeof O Comando typedef Uma estrutura agrupa várias variáveis numa só. Funciona como uma ficha pessoal que tenha nome, telefone e endereço.
Leia mais