Correção de Erros II: Simulador de Códigos Reed-Solomon
|
|
- Sônia de Lacerda Lacerda
- 8 Há anos
- Visualizações:
Transcrição
1 Correção de Erros II: Simulador de Códigos Reed-Solomon Embora sejam famosos por sua eficácia na correção de erros de símbolos, com aplicações em diversas áreas da engenharia, os códigos de Reed-Solomon são pouco conhecidos em profundidade, o que dificulta a sua implementação prática. Visando a esclarecer sua lógica e os mecanismos internos de codificação e decodificação, esta série de tutoriais tem como objetivo apresentar o desenvolvimento de um simulador genérico para códigos de Reed-Solomon. Os tutoriais foram preparados a partir do trabalho de conclusão de curso Desenvolvimento de um Simulador de Codificação-Decodificação Reed-Solomon, elaborado pelos autores, e apresentado à Coordenação de Pós-graduação Lato Sensu do Inatel como requisito parcial para a obtenção do Certificado de Conclusão do Curso de Engenharia de Sistemas de TV Digital e IPTV. Foi orientador do trabalho o Prof. Dr. Geraldo Gil R. Gomes. Este tutorial parte II apresenta inicialmente a biblioteca desenvolvida em linguagem de programação Java contendo as classes para realização de álgebra de Campos de Galois, e a seguir apresenta o simulador propriamente dito e as conclusões do trabalho realizado. Daniel Cursi Junior Engenheiro Eletroeletrônico pela Fundação Educacional de Barretos (SP, 1987), também é graduado em Administração de Empresas com ênfase mercadológica pelo IMESB-VC de Bebedouro (SP, 1998), pós-graduado em Administração de Empresas (MBA) pela Fundace/USP de Ribeirão Preto e pós-graduado em Televisão Digital pelo Inatel de Santa Rita do Sapucai (MG). Desde 1993 é sócio de uma empresa do Setor de Telecomunicações, prestando serviços de consultoria e manutenção de sistemas de retransmissão de televisão aberta. cursi@cursi.com.br 1
2 Júlio Tanomaru Engenheiro Eletrônico pelo Instituto Tecnológico de Aeronáutica (ITA, 1986), completou o mestrado como bolsista do governo japonês na Universidade de Tokushima (Japão, 1992). Com pesquisas centradas em aplicações de Inteligência Computacional em Engenharia, obteve o título de Doutor em Engenharia na mesma universidade em Atuou como Professor Auxiliar na Universidade de Tokushima (Japão). Após deixar a universidade, atuou como Gerente de Projetos de software na Fujitsu Tokushima Systems Engineering. Atualmente é Professor no Centro Universitário Unilins, onde leciona diversas disciplinas relacionadas à Engenharia de Computação e Eletrônica. jtanomaru@uol.com.br Categorias: Telefonia Celular, TV e Rádio Nível: Introdutório Enfoque: Técnico Duração: 15 minutos Publicado em: 30/08/2010 2
3 Correção de Erros II: Introdução Motivação Isoladamente ou em conjunto com outras formas de codificação, os códigos de Reed-Solomon estão certamente entre os códigos corretores de erros com maior número de aplicações práticas. Embora muito conhecidos pelo nome e por suas principais características, poucos são os que compreendem seu funcionamento interno a ponto de poder implementá-los desde o início. Isso se deve a vários fatores, incluindo: o entendimento de sua lógica demanda conhecimentos de álgebra de conjuntos finitos; há falta de material de referência que explique como implementar decodificadores práticos; a maior parte dos livros mostra somente exemplos simples, que podem ser resolvidos à mão com uso de álgebra, e não entra em detalhes sobre como fazer implementações práticas em software ou hardware. O desejo de entender a fundo o funcionamento dos códigos de Reed-Solomon constitui a principal motivação deste trabalho. Além de permitir sua real utilização prática, esse entendimento profundo possibilita a otimização e melhoria dos códigos, comparação de algoritmos de decodificação, e até mesmo a implementação em hardware utilizando tecnologias de hardware reconfigurável como os FPGA (Field Programmable Gate Arrays). Objetivo Este trabalho tem o objetivo prático de implementar um simulador em software de códigos de Reed-Solomon, facilitando o entendimento dessa importante categoria de códigos. Para isso, os procedimentos de codificação e decodificação são estudados em detalhe e é desenvolvida uma biblioteca de classes na linguagem de programação Java. O simulador consiste numa aplicação Java com interface gráfica rica e intuitiva, permitindo simulações de códigos Reed-Solomon com grande variedade de parâmetros. A biblioteca de classes é totalmente original, desenvolvida a partir do zero, e é disponibilizada gratuitamente a interessados. As classes e seus métodos foram escritos de modo a facilitar sua compreensão e utilização, sem grande ênfase à eficiência de execução. Tutoriais O tutorial parte I apresentou os fundamentos teóricos dos códigos Reed-Solomon, detalhando suas características, aspectos teóricos dos campos finitos e a codificação e decodificação desses códigos. Este tutorial parte II apresenta inicialmente a biblioteca desenvolvida em linguagem de programação Java contendo as classes para realização de álgebra de Campos de Galois, e a seguir apresenta o simulador propriamente dito e as conclusões do trabalho realizado. 3
4 Correção de Erros II: Biblioteca de Classes Foi desenvolvida uma biblioteca de classes para implementação do simulador de uma forma flexível e extensível. A linguagem de programação Java foi escolhida por ser poderosa e pelo fato de haver excelentes ferramentas gratuitas de desenvolvimento. Além disso, o programa resultante é independente da plataforma de execução, ou seja, tem portabilidade. As classes foram desenvolvidas seguindo os bons padrões de Programação Orientada a Objetos e foram incluídas num pacote chamado srs. O código-fonte foi documentado extensivamente e é fornecido na íntegra no Apêndice A. Embora sejam muitas as classes do pacote desenvolvido, esta seção apresenta a descrição das três classes principais: CampoDeGalois (que utiliza a classe CircuitoLFSR) Codificador e Decodificador. Campos de Galois Os campos de Galois e sua aritmética devem ser implementados num computador de forma consideravelmente diferente dos procedimentos manuais descritos na seção Campos Finitos do tutorial parte I, que somente se prestam para campos de pequenas dimensões e fins didáticos. Para implementação foram projetadas duas classes em Java: CampoDeGalois e CircuitoLFSR. Classe CampoDeGalois A classe chamada CampoDeGalois gera os elementos de campos de extensão do tipo GF(2 m ) a partir do polinômio primitivo e dá suporte às operações aritméticas de adição e multiplicação para elementos expressos tanto na forma exponencial quanto na forma polinomial. Para proporcionar uma implementação eciente foram utilizadas tabelas de consulta (look-up tables) para rápida conversão entre as formas polinomial e exponencial; o uso dessas tabelas impõe a restrição prática 2 <= m <= 16, mas esse fato não representa um empecilho à simulação, atendendo à maioria dos casos reais de utilização de códigos Reed-Solomon. A classe CampoDeGalois tem o seguinte construtor: CampoDeGalois(int m, int f): onde m é a dimensão do campo de extensão GF(2 m ) e f é um inteiro contendo todos os coeficientes do polinômio primitivo. O construtor inicializa o circuito de registradores de deslocamento, gera todos os elementos do campo e inicializa tabelas internas utilizadas para implementar as operações aritméticas de forma eficiente. O bit menos significativo de f corresponde ao coeficiente f 0 na Equação 15 do tutorial parte I, o bit seguinte corresponde a f 1, e assim por diante. Para gerar os elementos do campo, um objeto CampoDeGalois possui como campo privado uma instância da classe CircuitoLFSR. Os elementos do campo são gerados em sequência e os resultados alimentam duas tabelas de consulta, também armazenadas como campos privados, chamadas tablog e tabinvlog. Essas tabelas, ambas com comprimento 2 m 1, são usadas para permitir a conversão rápida entre as formas exponencial e polinomial, conforme explicado abaixo: 4
5 tablog[]: usa como índice a representação polinomial de um elemento do campo, de 1 a 2 m 1, e mapeia o expoente da representação exponencial do elemento correspondente. Para o exemplo da tabela 1, tablog[1] = 0, tablog [2] = 1, e assim por diante. tabinvlog[]: serve para fazer o mapeamento inverso de tablog, ou seja, recebe como índice o expoente de a na notação exponencial de um elemento e o mapeia para o correspondente valor na notação polinomial. Como os campos GF(2 m ) são cíclicos, os índices válidos vão de 0 a 2 m 2. Usando essas tabelas, o produto de dois elementos na representação polinomial pode ser obtido somando os logaritmos das formas exponenciais (em módulo 2m 1, para evitar índices inválidos) e depois encontrando o logaritmo inverso correspondente. Ou seja, um produto de dois elementos na forma polinomial é implementado com duas consultas à tabela tablog, uma operação de módulo e uma consulta à tabinvlog. Por exemplo, a tabela 1 mostra as duas tabelas de consulta para um campo GF(16). Alguns exemplos de multiplicação de elementos na forma polinomial são dados abaixo: Tabela 1: Tabelas logarítmicas para o campo GF(16) gerado pelo polinômio f(x) = 1+X +X4 i tablog [i] tabinvlog [i] Os resultados acima são consistentes com as multiplicações das formas exponenciais, pois, conforme pode ser verificado na tabela 1, temos: Na implementação de operações aritméticas, o elemento 0 deve ser tratado à parte, como um caso especial, uma vez que, a rigor, a entrada correspondente a tablog [0] seria 1. Na prática, adotou-se um valor negativo declarado como a constante MENOS_INFINITO ( 1, de fato) para representar esse caso, tomando o cuidado para que tanto a multiplicação quanto a adição funcionem coerentemente. Para realizar as operações aritméticas de dois elementos do campo expressos na forma exponencial foram escritos os seguintes métodos na classe CampoDeGalois: int adicionaexp(int exp1, int exp2): adiciona dois elementos na forma exponencial. int subtraiexp(int exp1, int exp2): subtrai dois elementos na forma exponencial. 5
6 int multiplicaexp(int exp1, int exp2): multiplica dois elementos na forma exponencial. int divideexp(int exp1, int exp2): divide dois elementos na forma exponencial. Esses métodos recebem como argumentos os expoentes dos elementos e retornam o expoente do resultado. O valor MENOS_INFINITO é usado para designar o elemento nulo (a - = 0). A subtração foi fornecida somente para completar o conjunto de operações aritméticas, haja vista que adição e subtração são equivalentes no domínio binário. De modo correspondente, as operações aritméticas entre dois elementos expressos na forma polinomial são implementadas pelos seguintes métodos: int adicionapol(int elemento1, int elemento2): adiciona dois elementos na forma polinomial. int subtraipol(int elemento1, int elemento2): subtrai dois elementos na forma polinomial. int multiplicapol(int elemento1, int elemento2): multiplica dois elementos na forma polinomial. int dividepol(int elemento1, int elemento2): divide dois elementos na forma polinomial. Eles recebem e retornam valores expressos na forma polinomial. Além disso, foram também escritos vários métodos auxiliares: String listabits(int num): converte um número inteiro numa cadeia de caracteres de 0's e 1's correspondente à sua notação binária. String obtempolinomioprimitivo(): gera uma descrição do polinômio primitivo do campo. String obtemdadosdocampo(): retorna uma descrição em texto do campo de Galois indicando o campo e o polinômio primitivo que o gerou. int [] [] geratabadicao(): gera a tabela de adição de dois elementos na forma exponencial. int [] [] geratabmultiplicacao(): gera a tabela de multiplicação de dois elementos na forma exponencial. Finalmente, os seguintes métodos foram escritos para saída de dados no console: void imprimeelementos(): imprime uma tabela com todos os elementos do campo na forma exponencial e polinomial. void imprimetabadicao(): imprime a tabela de adição de elementos na forma exponencial. void imprimetabmultiplicacao(): imprime a tabela de multiplicação de elementos na forma exponencial. Classe CircuitoLFSR Construir o campo através do procedimento descrito na seção Polinômios Primitivos do tutorial parte I não é prático para implementação em um programa de computador. É muito mais conveniente usar a idéia do gerador de elementos usando um conjunto de registradores de deslocamento com realimentação do bit mais significativo, em que o padrão de realimentação é dado pelos coeficientes do polinômio primitivo usado para gerar os elementos do campo, conforme explicado na seção Circuito Gerador do tutorial parte I. Esse circuito é chamado de LFSR (Linear Feedback Shift Register) e pode ser facilmente simulado num programa de computador. Para o campo GF(16) usado como exemplo na seção Polinômios Primitivos do tutorial parte I, o gerador utilizando um LFSR é ilustrado na figura. 6
7 Exemplos de Resultados Figura 1: Circuito para geração dos elementos do campo de Galois GF(16) gerado pelo polinômio f(x) = 1 + X + X4 com o papel Durante a fase de desenvolvimento, a classe Testador foi usada para verificar o funcionamento das principais classes. As figuras 2, 3 e 4 mostram os resultados parciais (elementos do campo, tabela de adição e tabela de multiplicação, respectivamente) do teste de um campo de extensão de Galois. Figura 2: Elementos do campo de Galois GF(16) gerado pelo polinômio f(x) = 1 + X + X4 7
8 Figura 3: Resultado de imprimetabadicao() para o campo de Galois GF(16) gerado pelo polinômio f(x) = 1 + X + X4 Figura 4: Resultado de imprimetabmultiplicacao() para o campo de Galois GF(16) gerado pelo polinômio f(x) = 1 + X + X4 Codificador Reed-Solomon O codificador de Reed-Solomon foi implementado pela classe Codificador. Foi utilizada a implementação sistemática usando um registrador de deslocamento linear com retroalimentação (LFSR, Linear Feedback Shift Register ), de maneira similar à usada para gerar os elementos do campo. A classe Codificador tem o seguinte construtor: Codificador(CampoDeGalois c, int n, int k): recebe uma referência ao campo de extensão de 8
9 Galois usado para gerar os símbolos do código, o número de símbolos de saída e de entrada do codificador; internamente, chama o método constroipolinomiogerador(false) e determina os coeficientes do polinômio gerador do código. Construção do Polinômio Gerador do Código Para um código R-S (n, k) com capacidade de correção de t símbolos, o polinômio gerador tem a forma mostrada na Equação 36 do tutorial parte I, que é repetida aqui: g(x) = g 0 + g 1 X + g 2 X g 2t 1 X 2t 1 + X 2t (1) Especificando o campo de extensão de Galois e a capacidade de correção de erros de símbolo do código, t, o polinômio gerador de código pode ser construído a partir da Equação 37 do tutorial parte I. Os seguintes métodos da classe Codificador são relacionados ao polinômio gerador do código: void constroipolinomiogerador(boolean depura): gera os coeficientes do polinômio gerador do código a partir do campo de extensão de Galois e dos parâmetros do codificador. String obtempolinomiogerador(boolean formatoexponencial): gera uma representação em String do polinômio gerador do código na forma de um polinômio em X public int [] getpolinomiogerador(): retorna um arranjo com todos os coeficientes do polinômio gerador do código. Codificação de Dados Uma vez que o polinômio gerador de código tenha sido determinado, o que é feito no construtor da classe, o projeto do codificador está concluído. O codificador é implementado com o circuito LFSR ilustrado na figura 3 do tutorial parte I, e reproduzido na figura 5 a seguir. Figura 5: Codificador Reed-Solomon Conforme se vê na figura, os coeficientes g i do polinômio gerador são utilizados na retroalimentação; como tanto os coeficientes como os símbolos são elementos do campo de extensão de Galois, todas as multiplicações e adições devem ser feitas utilizando a álgebra do campo. O processo de codificação é implementado pelo método codifica, descrito abaixo: 9
10 PalavraDeSimbolos codifica(palavradesimbolos mensagem): recebe uma palavra de dados e gera uma palavra-código. Nota: Para aumentar a versatilidade da biblioteca, foram criados alguns tipos especiais de dados. Por exemplo, a classe PalavraDeSimbolos empacota tudo o que necessário para interpretar uma palavra de símbolos, ou seja, além dos dados (símbolos) e sua quantidade, a notação utilizada (exponencial ou polinomial), o campo de extensão de Galois sobre o qual os símbolos foram gerados e um indicativo do tipo da palavra (dados, palavra-código, palavra de erro, palavra corrompida ou recebida, ou palavra decodificada). Decodificador de Reed-Solomon O processo de decodificação é realizado pela classe Decodificador, que constitui a classe mais complexa do programa do ponto de vista de desenvolvimento. O processo de decodificação utiliza o algoritmo de Berlekamp-Massey, juntamente com o procedimento de Chien e a fórmula de Forney, conforme explicado anteriormente. Esta classe tem o seguinte construtor: Decodificador(CampoDeGalois c, int n, int k): recebe uma referência ao campo de extensão de Galois usado para gerar os símbolos do código, o número de símbolos de saída e de entrada do codificador. A classe tem um único método: ResultadoDecodificacao decodifica(palavradesimbolos r): realiza todo o processo de decodificação; o método recebe a palavra de símbolos corrompida e retorna um objeto contendo, além dos resultados finais da decodificação, os mais importantes resultados intermediários, incluindo os valores de todas as síndromes e os polinômios localizador e avaliador de erros. 10
11 Correção de Erros II: Simulador de Códigos R-S Simulador de Códigos Reed-Solomon Esta seção explica o funcionamento do simulador. Como se trata de uma aplicação Java, o programa independe da plataforma de hardware e software na qual é executado e não há necessidade de instaladores. Por praticidade, o programa é fornecido na forma de um único arquivo de extensão.jar (Java Archive), que já contém todas as bibliotecas necessárias e não necessita ser descompactado ou instalado. Para facilitar a execução do programa em ambiente Windows, é fornecido um atalho com o ícone ilustrado na figura 6. A interface gráfica do simulador foi concebida para ser intuitiva e sua operação é dividida em guias ou abas, resumidas na tabela 2. As seguintes seções apresentam uma explicação detalhada dessas guias. Figura 6: Ícone do simulador de Reed-Solomon Tabela 2: Guias da interface gráfica do simulador Nome da guia Função Campo de Galois Permite a especificação dos parâmetros do campo de extensão de Galois para definição dos símbolos usados no código Elementos do Apresenta uma tabela com todos os símbolos nas notações Campo exponencial e polinomial, além de um conversor entre as Tabelas Aritméticas Codificador Simulação Sobre o simulador Especificação do Campo de Extensão de Galois notações e uma calculadora Apresenta as tabelas de adições e subtrações de todos os elementos do campo de extensão nas notações exponencial e polinomial Permite a especificação da capacidade de correção de erros do código e, a partir desse parâmetro, seleciona o polinômio gerador do código e constrói o codificador É a principal tela do simulador, permitindo especificar os dados de entrada do codificador, os erros a serem introduzidos na palavra-código, e a visualização de resultados intermediários e final do processo de decodificação, tanto na notação exponencial como na polinomial Fornece dados para contato com o autor Ao iniciar o simulador, a primeira tela apresentada permite a especificação dos parâmetros do Campo de 11
12 Extensão de Galois usado para definição dos símbolos utilizados pelo codificador Reed- Solomon. Esta tela é ilustrada na figura 7, que permite a especificação do número de bits por símbolo e a seleção do polinômio primitivo. Especificação do Número de Bits por Símbolo Figura 7: Tela inicial do simulador O número de bits por símbolo (a dimensão do campo de extensão) pode ser selecionado através de um controle deslizante ou rotativo. O limite superior do número de bits por símbolo foi escolhido como 8 porque valores superiores não são utilizados na maior parte das aplicações práticas de interesse. Além disso, como o simulador tem fins instrutivos, valores superiores tornariam difícil e tediosa a introdução e visualização dos dados, pois haveria tabelas com muitos elementos. Finalmente, como o número de símbolos é dado por 2 m, onde m é o número de bits por símbolo, a imposição da restrição m <= 8 facilita a implementação das operações de logaritmo e antilogaritmo discretos através de tabelas de consulta. A figura 8 mostra um exemplo de especificação de um campo GF(2 7 ) com polinômio primitivo f(x) = 1 + X 2 + X 5 + X 6 + X 7. 12
13 Seleção do Polinômio Primitivo Figura 8: Exemplo de especificação do campo de extensão de Galois À medida que o usuário seleciona o número de bits por símbolo do campo de extensão de Galois, a tabela com os polinômios primitivos que podem ser usados para gerar os elementos do campo vai sendo atualizada. Essa tabela apresenta todos os polinômios possíveis (incluído os polinômios recíprocos) da dimensão selecionada e foi baseada em [8]. O usuário deve selecionar um dos polinô- mios apresentados através do uso do mouse ou das teclas de setas, e depois clicar no botão Gerar Campo de Extensão, sendo então automaticamente direcionado à guia seguinte do simulador. Manipulação dos Elementos do Campo de Extensão Esta guia, ilustrada na figura 9, consiste em três partes distintas: uma tabela apresentando todos os elementos do campo de extensão nas notações exponencial e polinomial, um conversor entre notações, e uma calculadora para aritmética no campo de extensão. 13
14 Tabela dos Elementos do Campo de Extensão Figura 9: Guia de elementos do campo de extensão Todos os elementos do campo de extensão são apresentados nesta tabela nas notações exponencial e polinomial, sendo que na notação polinomial, os elementos são mostrados nas bases decimal e binária. Conversor de Notação O conversor de notação faz exatamente o esperado, convertendo um elemento entre as notações exponencial (à esquerda) e polinomial (à direita), e vice-versa. Na notação exponencial, especifica-se o expoente de a; na notação polinomial, o elemento é especificado em base decimal. Basta introduzir o valor a converter no campo apropriado e pressionar o botão de conversão. Na notação exponencial, não há limite para o expoente que pode ser introduzido. Qualquer valor, inclusive negativo, é aceito. Já na notação polinomial, somente são aceitos valores entre 0 e 2 m 1, inclusive. Calculadora A calculadora permite operações aritméticas com elementos do campo expressos na notação exponencial ou polinomial. As operações disponíveis são adição, subtração (na realidade, adição e subtração são a mesma operação), multiplicação, divisão, inversão e potenciação. O resultado é expresso na mesma notação dos operandos e dentro da faixa {0, a,..., a 2m-2 } para notação exponencial, ou {0, 1,..., 2 m 1} para notação polinomial. Visualização das Tabelas Aritméticas 14
15 Esta guia apresenta as tabelas de adição e multiplicação entre dois elementos não-nulos do campo de extensão, conforme ilustrado na figura 10. As barras de rolagem horizontal e vertical podem ser utilizadas para visualização de grandes tabelas e a notação dos elementos pode ser alterada a qualquer instante. Figura 10: Guia de tabelas aritméticas para adições e multiplicações de elementos do campo de extensão Especificação dos Parâmetros do Codificador Reed-Solomon O simulador assume que n, número de símbolos da palavra-código (saída do decodificador) seja igual a 2 m 1, que é o caso mais típico. Resta então somente a especificação do número de símbolos de entrada do codificador, k. No simulador, isso é especificado indiretamente, através do parâmetro t, a capacidade de correção de erros de símbolo do código. O valor de t pode ser especificado através de um controle deslizante ou rotativo, por conveniência. Os limites da faixa de seleção de valores possíveis da capacidade de correção do código são determinados dinamicamente quando os campos de extensão são definidos, na Guia do Campo de Galois. Isso é ilustrado na figura 11, que traz um exemplo de codificador R-S(127, 87), com capacidade de correção de erros t =
16 Figura 11: Guia de especificação do codificador Reed-Solomon Quando se escolhe a capacidade de correção de erros do código, o número de símbolos de entrada do codificador e a taxa de código são automaticamente atualizados. Além disso, o polinômio gerador de código é automaticamente calculado e exibido na parte inferior da tela. Escolhido o codificador, clica-se no botão Confirmar, que leva à Guia de Simulação, descrita a seguir. Simulação dos Processos de Codificação, Introdução de Erros e Decodificação Esta é a guia mais complexa, onde de fato ocorre a simulação de todo processo de codificação e decodificação. A explicação em detalhes é dada a seguir, mas na parte direita da interface gráfica destacam-se cinco tabelas horizontais, todas com uma linha e várias colunas. Essas tabelas representam todas as palavras de símbolos envolvidas na codificação e decodificação: os dados de entrada, a palavracódigo, a palavra de erros, a palavra-código corrompida pelos erros, e a palavra decodificada. Essas tabelas podem ser editáveis ou não, e podem apresentar mais de uma cor, conforme explicado abaixo. A parte superior das tabelas mostra índices. A convenção aqui adotada é que os símbolos que chegam primeiro ao codificador (e, portanto, saem primeiro também) têm os menores índices e, consequentemente, correspondem aos coeficientes dos maiores expoentes de X, quando a palavra for expressa na forma de um polinômio. Especificação de Dados de Entrada Primeiramente, deve ser escolhida a notação em que serão apresentados os símbolos, conforme mostrado na figura 12, gerada para um codificador RS(127, 87). Note que é exibida uma mensagem indicando os limites dos valores válidos para entrada de dados. No caso da notação exponencial, o usuário deve introduzir os expoentes de a, que variam entre 0 e 126. Além disso, o valor 1 foi adotado para permitir a introdução do elemento nulo na notação exponencial. A mensagem varia apropriadamente, de acordo com 16
17 a notação selecionada e com o número de bits por símbolo. Figura 12: Especificação dos dados de entrada do codificador Os dados na entrada do codificador podem ser introduzidos manualmente ou gerados aleatoriamente. No primeiro caso, cada um dos k símbolos deve ser introduzido individualmente, o que pode ser tedioso para muitos símbolos. Conforme explicado acima, caso a notação exponencial seja selecionada, o usuário deve introduzir os expoentes de a; quando um dado for introduzido e o usuário selecionar outra célula da tabela, automaticamente o valor introduzido é convertido em expoente e exibido como tal. No caso de geração aleatória de dados, basta selecionar a opção correspondente e clicar no botão Gerar. Geração da Palavra-Código Após os dados terem sido introduzidos manualmente ou gerados aleatoriamente, basta clicar no botão Codificar. Os dados são validados e, caso haja algum problema (por exemplo, dado não especificado), a célula problemática recebe o foco do teclado, permitindo a correção. Se a validação for bem sucedida, os dados são codificados pelo codificador Reed-Solomon e a palavra-código resultante é exibida na tabela apropriada; a parte da palavra-código que corresponde à palavra original de dados é destacada com fundo colorido. Introdução de Erros Para permitir a simulação de um canal ruidoso de transmissão ou uma falha de armazenamento/leitura de dados, o usuário pode introduzir erros na palavra código. Isso é feito através da especificação da palavra de erros. Figura 13: Especificação dos erros a inserir na palavra-código Inicialmente, o número de erros de símbolo a introduzir deve ser especificado usando um controle rotativo. É óbvio que, como a capacidade de correção de erros do código já deve ter sido especificada previamente na Guia do Codificador, não há sentido em especificar um número de erros que supere a 17
18 capacidade do código. A seguir, seleciona-se entre a introdução manual ou a geração aleatória de erros. No caso da introdução manual, o usuário deve clicar na posição onde deseja inserir um erro e então introduzir o valor desejado de magnitude do erro; na geração aleatória, isso é feito automaticamente. Terminada a especificação da palavra de erros, clica-se no botão Inserir Erros e Decodificar, que inicia o processo de validação dos dados, caso os erros tenham sido introduzidos manualmente. Após a validação, os erros especificados são somados à palavra-código, gerando uma palavra corrompida, e é iniciado o processo de decodificação, descrito a seguir. Resultados da Decodificação O simulador realiza a decodificação utilizando o algoritmo de Berlekamp-Massey e apresenta resultados intermediários e finais do processo de decodificação, conforme ilustrado na figura 14. Figura 14: Resultados do processo de decodificação No canto inferior esquerdo da tela é apresentada uma lista com os valores de todas as síndromes, na notação escolhida. Os polinômios localizador e avaliador de erros são apresentados em forma algébrica, bem como o número de erros detectados, a palavra-código decodificada (com a porção correspondente aos dados destacada com fundo colorido) e uma mensagem indicando sucesso ou falha. 18
19 Correção de Erros II: Considerações finais Conclusão Embora os códigos de Reed-Solomon estejam seguramente entre os mais populares e eficazes códigos corretores de erros, com aplicações práticas em campos variados, compreender o seu funcionamento interno a ponto de permitir uma implementação em software ou hardware é uma tarefa complicada. Além do entendimento de álgebra de conjuntos finitos, é necessário compreender programação; além disso, são feitos muitos cálculos tediosos e sujeitos a erros. Resultados Obtidos Este trabalho atingiu o seu objetivo de desenvolver um simulador completo com interface gráfica rica e intuitiva. O simulador permite um entendimento maior da álgebra de campos de Galois e a especificação completa do codificador de Reed-Solomon. Além disso, o usuário pode gerar palavras-código a partir de dados especificados ou produzidos aleatoriamente, introduzir erros e verificar os resultados do processo de decodificação. A decodificação é realizada utilizando o algoritmo de Berlekamp-Massey, conforme explicado em detalhes no tutorial parte I. Além do resultado final do processo de decodificação, o simulador mostra os principais resultados intermediários: os valores de todas as síndromes e as expressões algébricas dos polinômios localizador e avaliador de erros. O simulador mostra todo o processo de codificação e decodificação que, além de constituir uma ferramenta completa para estudo, pode ser aplicada profissionalmente no desenvolvimento de sistemas utilizando codificação Reed-Solomon. Para a implementação do simulador de uma forma flexível, que permita reutilização do código fonte, atualizações e extensões, foi implementada uma biblioteca de classes relacionadas à codificação de Reed-Solomon. Essa biblioteca foi escrita a partir do zero, com ênfase didática e utilizando os bons conceitos de programação orientada a objetos, e foi documentada extensivamente no padrão documental de Java, JavaDoc. Outra característica do sistema desenvolvido é a utilização de uma biblioteca LATEX para exibição das expressões matemáticas de forma elegante e profissional. Obviamente isso se traduziu num grau maior de dificuldade no desenvolvimento, mas o esforço foi plenamente recompensado pelo aspecto da interface gráfica resultante. Últimas Considerações Não há ferramentas similares àquela que foi desenvolvida neste trabalho que sejam do conhecimento destes autores. Para nossa surpresa e satisfação, professores e pesquisadores estrangeiros já manifestaram interesse tanto no simulador quanto na biblioteca de classes, encorajando-nos a traduzir o software para o inglês. Dentre outras possíveis extensões do sistema, podemos citar: Implementação de outros algoritmos de decodificação, tais como Sugiyama-Kasahara-Hirasawa- Namekawa e Guruswami-Sudan, com classes e métodos correspondentes na biblioteca. 19
20 Implementação de módulos gráficos para visualização da operação dos circuitos de deslocamento utilizados tanto para produção dos elementos do campo de extensão de Galois quanto para a codificação Reed-Solomon. Extensão do simulador para incluir outros elementos de codificação de canal como, por exemplo, codificador convolucional. Referências [1] Richard E. Blahut. A universal reed-solomon decoder. IBM Journal of Research and Development, 28(2): , March [2] C. K. P. Clarke. Reed-solomon error correction. Technical report, BBC Research & Development, [3] D. C. Gorenstein and N. Zierler. A class of error-correcting codes in p m symbols. Journal of SIAM, 9: , [4] V. Guruswami and M. Sudan. Improved decoding of reed-solomon and algebraic-geometry codes. IEEE Transactions on Information Theory, 45: , [5] W. Cary Huffman and Vera Pless. Fundamentals of Error Correcting Codes. Cambridge University Press, [6] Bruce Maggs. Decoding reed-solomon codes. Lecture notes, October [7] J. L. Massey. Shift-register synthesis and bch decoding. IEEE Transactions on Information Theory, 15: , [8] Todd K. Moon. Error Correction Coding: Mathematical Methods and Algorithms. Wiley- Interscience, [9] I. S Reed and G. Solomon. Polynomial codes over certain finite fields. SIAM Journal of Applied Math., 8: , [10] Bernard Sklar. Digital Communications: Fundamentals and Applications. Prentice-Hall, 2 edition, [11] Shyue-Win Wei and Che-Ho Wei. High-speed decoder of reed-solomon codes. IEEE Transactions on Communications, 11(41): , November [12] S. Hirasawa Y. Sugiyama, M. Kasahara and T. Namekawa. A method of solving a key equation for decoding goppa codes. Information and Control, 27:87-99,
21 Correção de Erros II: Teste seu entendimento 1. Qual foi o objetivo de implementação de uma biblioteca de classes? Para implementar o simulador de uma forma flexível, que permita reutilização do código fonte, atualizações e extensões. Para usar ferramentas de software proprietárias. Para fornecer código em linguagem Assembly. Não havia nenhum objetivo específico para essa decisão de projeto. 2. Quais é o objetivo do conversor de notação? Converter um elemento entre as notações exponencial e polinomial. Converter um elemento entre as notações exponencial e polinomial, e vice-versa. Converter um elemento entre as notações polinomial e exponencial. Converter um elemento entre as notações de símbolos e números binários. 3. Qual foi a biblioteca utilizada para exibição de expressões matemáticas? EasyPrototype JavaFx Mockflow LATEX 21
Codificação de Canal
Laboratório de Processamento de Sinais Laboratório de Sistemas Embarcados Universidade Federal do Pará 26 de janeiro de 2012 Sumário 1 Introdução a 2 Códigos de Blocos Lineares 3 Códigos Cíclicos Introdução
Leia mais&XUVRGH,QWURGXomRDR (GLWRUGH3ODQLOKDV([FHO
Universidade Federal de Viçosa Departamento de Informática &XUVRGH,QWURGXomRDR (GLWRUGH3ODQLOKDV([FHO Flaviano Aguiar Liziane Santos Soares Jugurta Lisboa Filho (Orientador) PROJETO UNESC@LA Setembro de
Leia maisHCT Compatibilidade Manual do Usuário
HCT Compatibilidade Manual do Usuário Índice Introdução...3 HCT Compatibilidade...3 Librix...3 Execução do Programa...4 Seleção de Testes...4 Testes Manuais...6 Teste de Teclado...6 Teste de Vídeo...7
Leia maisOrganização e Arquitetura de Computadores I
Organização e Arquitetura de Computadores I Aritmética Computacional Slide 1 Sumário Unidade Lógica e Aritmética Representação de Números Inteiros Aritmética de Números Inteiros Representação de Números
Leia maisIntrodução. A Informação e sua Representação (Parte III) Universidade Federal de Campina Grande Departamento de Sistemas e Computação
Universidade Federal de Campina Grande Departamento de Sistemas e Computação Introdução à Computação A Informação e sua Representação (Parte III) Prof.a Joseana Macêdo Fechine Régis de Araújo joseana@computacao.ufcg.edu.br
Leia maisManual SAGe Versão 1.2 (a partir da versão 12.08.01)
Manual SAGe Versão 1.2 (a partir da versão 12.08.01) Submissão de Relatórios Científicos Sumário Introdução... 2 Elaboração do Relatório Científico... 3 Submissão do Relatório Científico... 14 Operação
Leia maisLaboratório - Uso da calculadora do Windows com endereços de rede
Laboratório - Uso da calculadora do Windows com endereços de rede Objetivos Parte 1: Acesso à Calculadora do Windows Parte 2: Converter entre os sistemas numéricos Parte 3: Converter endereços IPv4 de
Leia mais1.1. Organização de um Sistema Computacional
1. INTRODUÇÃO 1.1. Organização de um Sistema Computacional Desde a antiguidade, o homem vem desenvolvendo dispositivos elétricoeletrônicos (hardware) que funciona com base em instruções e que são capazes
Leia maisSistemas de Numerações.
Matemática Profº: Carlos Roberto da Silva; Lourival Pereira Martins. Sistema de numeração: Binário, Octal, Decimal, Hexadecimal; Sistema de numeração: Conversões; Sistemas de Numerações. Nosso sistema
Leia maisStatus. Barra de Título. Barra de Menu. Barra de. Ferramentas Padrão. Caixa de nomes. Barra de. Ferramentas de Formatação. Indicadores de Coluna
O que é uma planilha eletrônica? É um aplicativo que oferece recursos para manipular dados organizados em tabelas. A partir deles pode-se gerar gráficos facilitando a análise e interpretação dos dados
Leia maisNoções de. Microsoft SQL Server. Microsoft SQL Server
Noções de 1 Considerações Iniciais Basicamente existem dois tipos de usuários do SQL Server: Implementadores Administradores 2 1 Implementadores Utilizam o SQL Server para criar e alterar base de dados
Leia maisOrientação a Objetos
1. Domínio e Aplicação Orientação a Objetos Um domínio é composto pelas entidades, informações e processos relacionados a um determinado contexto. Uma aplicação pode ser desenvolvida para automatizar ou
Leia mais3 Sistemas de Numeração:
3 Sistemas de Numeração: Os computadores eletrônicos têm como base para seu funcionamento a utilização de eletricidade. Diferente de outras máquinas que a presença ou ausência de eletricidade apenas significam
Leia maisAritmética Binária e. Bernardo Nunes Gonçalves
Aritmética Binária e Complemento a Base Bernardo Nunes Gonçalves Sumário Soma e multiplicação binária Subtração e divisão binária Representação com sinal Sinal e magnitude Complemento a base. Adição binária
Leia mais2. Representação Numérica
2. Representação Numérica 2.1 Introdução A fim se realizarmos de maneira prática qualquer operação com números, nós precisamos representa-los em uma determinada base numérica. O que isso significa? Vamos
Leia maisSistemas de Numeração. Engenharia da Computação 3 Período Alex Vidigal Bastos
UNIPAC Sistemas Digitais Sistemas de Numeração Engenharia da Computação 3 Período Alex Vidigal Bastos 1 Agenda Objetivos Introdução Sistema Binário Sistema Octal Sistema Hexadecimal Aritméticas no Sistema
Leia maisAMBIENTE PARA AUXILIAR O DESENVOLVIMENTO DE PROGRAMAS MONOLÍTICOS
UNIVERSIDADE REGIONAL DE BLUMENAU CENTRO DE CIÊNCIAS EXATAS E NATURAIS CURSO DE CIÊNCIAS DA COMPUTAÇÃO BACHARELADO AMBIENTE PARA AUXILIAR O DESENVOLVIMENTO DE PROGRAMAS MONOLÍTICOS Orientando: Oliver Mário
Leia maisROTEIRO PARA TREINAMENTO DO SAGRES DIÁRIO Guia do Docente
Conceito ROTEIRO PARA TREINAMENTO DO SAGRES DIÁRIO Guia do Docente O Sagres Diário é uma ferramenta que disponibiliza rotinas que facilitam a comunicação entre a comunidade Docente e Discente de uma instituição,
Leia maisCircuitos Digitais. Conteúdo. Sistema de Numeração e Códigos :: Conversões de Binário para Decimal SISTEMA DE NUMERAÇÃO E CÓDIGOS
Ciência da Computação Sistemas de Numeração e Conversões Prof. Sergio Ribeiro Material adaptado das aulas do Prof. José Maria da UFPI Conteúdo Conversões de binário para decimal. Conversões de decimal
Leia maisGoogle Drive. Passos. Configurando o Google Drive
Google Drive um sistema de armazenagem de arquivos ligado à sua conta Google e acessível via Internet, desta forma você pode acessar seus arquivos a partir de qualquer dispositivo que tenha acesso à Internet.
Leia maisMÉTODOS DISCRETOS EM TELEMÁTICA
1 MÉTODOS DISCRETOS EM TELEMÁTICA MATEMÁTICA DISCRETA Profa. Marcia Mahon Grupo de Pesquisas em Comunicações - CODEC Departamento de Eletrônica e Sistemas - UFPE Outubro 2003 2 CONTEÚDO 1 - Introdução
Leia maisSistemas de numeração
E Sistemas de numeração Aqui estão apenas números ratificados. William Shakespeare A natureza tem algum tipo de sistema de coordenadas geométrico-aritmético, porque a natureza tem todos os tipos de modelos.
Leia maisORGANIZAÇÃO DE COMPUTADORES MÓDULO 13
ORGANIZAÇÃO DE COMPUTADORES MÓDULO 13 Índice 1. Circuitos Digitais - Continuação...3 1.1. Por que Binário?... 3 1.2. Conversão entre Bases... 3 2 1. CIRCUITOS DIGITAIS - CONTINUAÇÃO 1.1. POR QUE BINÁRIO?
Leia maisManual do sistema SMARsa Web
Manual do sistema SMARsa Web Módulo Gestão de atividades RS/OS Requisição de serviço/ordem de serviço 1 Sumário INTRODUÇÃO...3 OBJETIVO...3 Bem-vindo ao sistema SMARsa WEB: Módulo gestão de atividades...4
Leia maisMicrosoft Office PowerPoint 2007
INTRODUÇÃO AO MICROSOFT POWERPOINT 2007 O Microsoft Office PowerPoint 2007 é um programa destinado à criação de apresentação através de Slides. A apresentação é um conjunto de Sides que são exibidos em
Leia maisAula 4 Pseudocódigo Tipos de Dados, Expressões e Variáveis
1. TIPOS DE DADOS Todo o trabalho realizado por um computador é baseado na manipulação das informações contidas em sua memória. Estas informações podem ser classificadas em dois tipos: As instruções, que
Leia maisCICLO DE APERFEIÇOAMENTO PROFISSIONAL DOS SERVIDORES MUNICIPAIS DE MARICÁ- RJ EDITOR DE TEXTO - WORD
Faculdade de Administração, Ciências Contábeis e Turismo Pós-Graduação em Gestão de Negócios CICLO DE APERFEIÇOAMENTO PROFISSIONAL DOS SERVIDORES MUNICIPAIS DE MARICÁ- RJ EDITOR DE TEXTO - WORD EMENTA
Leia maisPRINCÍPIOS DE INFORMÁTICA PRÁTICA 08 1. OBJETIVO 2. BASE TEÓRICA. 2.1 Criando Mapas no Excel. 2.2 Utilizando o Mapa
PRINCÍPIOS DE INFORMÁTICA PRÁTICA 08 1. OBJETIVO Aprender a utilizar mapas, colocar filtros em tabelas e a criar tabelas e gráficos dinâmicos no MS-Excel. Esse roteiro foi escrito inicialmente para o Excel
Leia maisOrganização de Computadores. Cálculos Binários e Conversão entre Bases Aritmética Binária
Organização de Computadores Capítulo 4 Cálculos Binários e Conversão entre Bases Aritmética Binária Material de apoio 2 Esclarecimentos Esse material é de apoio para as aulas da disciplina e não substitui
Leia mais1. Apresentação. 1.1. Objetivos
1.1. Objetivos 1. Apresentação Neste capítulo estão descritos os objetivos gerais do livro, os requisitos desejáveis do estudante para que possa utilizá-lo eficientemente, e os recursos necessários em
Leia maisTutorial do Iniciante. Excel Básico 2010
Tutorial do Iniciante Excel Básico 2010 O QUE HÁ DE NOVO O Microsoft Excel 2010 é um programa de edição de planilhas eletrônicas muito usado no mercado de trabalho para realizar diversas funções como;
Leia maisA lógica de programação ajuda a facilitar o desenvolvimento dos futuros programas que você desenvolverá.
INTRODUÇÃO A lógica de programação é extremamente necessária para as pessoas que queiram trabalhar na área de programação, seja em qualquer linguagem de programação, como por exemplo: Pascal, Visual Basic,
Leia maisComo gerar arquivos para Sphinx Operador
Como gerar arquivos para Sphinx Operador Pré-requisitos: Lista das questões Formulário multimídia Visões O Sphinx Operador é um sistema específico para digitação de respostas e visualização de resultados
Leia maisConstrutor de sites SoftPixel GUIA RÁPIDO - 1 -
GUIA RÁPIDO - 1 - Sumário Introdução...3 Por que utilizar o Construtor de Sites?...3 Vantagens do Construtor de Sites...3 Conceitos básicos...3 Configuração básica do site...5 Definindo o layout/template
Leia maisManual de Utilização das Funções Básicas do Sistema ClinicWeb
Manual de Utilização das Funções Básicas do Sistema ClinicWeb Dezembro/2012 2 Manual de Utilização das Funções Básicas do Sistema ClinicWeb Sumário de Informações do Documento Título do Documento: Resumo:
Leia maisTreinamento em BrOffice.org Calc
Treinamento em BrOffice.org Calc 1 Índice I. INTRODUÇÃO...3 II. NÚMEROS, TEXTOS, FÓRMULAS E DATAS...4 III. MENUS BÁSICOS...5 1. Arquivo...5 2. Editar...5 3. Formatar...5 IV. FÓRMULAS...8 V. REFERÊNCIAS
Leia maisTutorial Gerar arquivo PDF. Gerando um documento pdf com várias imagens 1- Inserir imagem no Word
Tutorial Gerar arquivo PDF. Com o objetivo de simplificar e diminuir o tamanho de arquivos anexos nos projetos, elaboramos um pequeno tutorial mostrando como gerar um único arquivo no formato pdf contendo
Leia maisProcesso de Controle das Reposições da loja
Processo de Controle das Reposições da loja Getway 2015 Processo de Reposição de Mercadorias Manual Processo de Reposição de Mercadorias. O processo de reposição de mercadorias para o Profit foi definido
Leia maisPORTAL DE COMPRAS SÃO JOSÉ DO RIO PRETO
Compra Direta - Guia do Fornecedor PORTAL DE COMPRAS SÃO JOSÉ DO RIO PRETO Página As informações contidas neste documento, incluindo quaisquer URLs e outras possíveis referências a web sites, estão sujeitas
Leia maisComo Gerar documento em PDF com várias Imagens
Como Gerar documento em PDF com várias Imagens Para Gerar documento em PDF com várias Imagens, temos que seguir dois passos: 1. Inserir Imagens no Word 2. Gerar PDF a partir de documento do Word 1- Inserir
Leia maisMicrosoft Excel 2007
Microsoft Excel 2007 O Microsoft Excel é um aplicativo para a construção e edição de planilhas eletrônicas, que permite o trabalho com: formulários, tabelas, gráficos e outros. 2.1 CONCEITOS INICIAIS:
Leia maisManual do usuário. Softcall Java. versão 1.0.5
Manual do usuário Softcall Java versão 1.0.5 Sumário Iniciando SoftCall...3 Tela Principal...3 Configurando o SoftCall...4 Agenda...5 Incluindo um contato...5 Procurando um contato...6 Apagando um contato...6
Leia maisAPOSTILA DE EXCEL 2007
APOSTILA DE EXCEL 2007 1. Introdução Quando você cria uma planilha nova, a tela do computador é dividida em linhas e colunas, formando uma grade. A interseção de uma linha e de uma coluna é chamada de
Leia maisBarra de ferramentas padrão. Barra de formatação. Barra de desenho Painel de Tarefas
Microsoft Power Point 2003 No Microsoft PowerPoint 2003, você cria sua apresentação usando apenas um arquivo, ele contém tudo o que você precisa uma estrutura para sua apresentação, os slides, o material
Leia maisMicrosoft Office Excel 2007
1 Microsoft Office Excel 2007 O Excel é um programa dedicado a criação de planilhas de cálculos, além de fornecer gráficos, função de banco de dados e outros. 1. Layout do Excel 2007 O Microsoft Excel
Leia maisUNIVERSIDADE FEDERAL DE SANTA CATARINA EEL5105 Circuitos e Técnicas Digitais Prof. Eduardo L. O. Batista
UNIVERSIDADE FEDERAL DE SANTA CATARINA EEL5105 Circuitos e Técnicas Digitais Prof. Eduardo L. O. Batista EXPERIMENTO 1 INTRODUÇÃO AO LABORATÓRIO A. Introdução O Quartus II é um software utilizado para
Leia maisSumário do Plano de Testes
ICOL Versão 12.1 Plano de Testes Sumário do Plano de Testes 1. Escopo...2 2. Implementações...2 CR3085 Restrição de Ambientes...3 CR3091 Restrição de Intervalos...9 CR3096 Períodos...10 CR3111 Curvas Histórico...11
Leia maisCONSTRUÇÃO DE BLOG COM O BLOGGER
CONSTRUÇÃO DE BLOG COM O BLOGGER Blog é uma abreviação de weblog, qualquer registro frequênte de informações pode ser considerado um blog (últimas notícias de um jornal online por exemplo). A maioria das
Leia maisLidar com números e estatísticas não é fácil. Reunir esses números numa apresentação pode ser ainda mais complicado.
, ()! $ Lidar com números e estatísticas não é fácil. Reunir esses números numa apresentação pode ser ainda mais complicado. Uma estratégia muito utilizada para organizar visualmente informações numéricas
Leia maisTabela e Gráficos Dinâmicos Como estruturar dinamicamente dados no Excel
Tabela e Gráficos Dinâmicos Como estruturar! Para que serve a Tabela e o Gráfico Dinâmico?! Como criar uma Tabela Dinâmica?! Como criar um Gráfico Dinâmico?! Como podemos atualizar dos dados da Tabela
Leia mais3. O NIVEL DA LINGUAGEM DE MONTAGEM
3. O NIVEL DA LINGUAGEM DE MONTAGEM Nas aulas anteriores tivemos a oportunidade de discutir dois diferentes níveis presentes na maioria dos computadores atuais. Nesta aula dedica-se a outro nível que também
Leia maisArquitetura de Rede de Computadores
TCP/IP Roteamento Arquitetura de Rede de Prof. Pedro Neto Aracaju Sergipe - 2011 Ementa da Disciplina 4. Roteamento i. Máscara de Rede ii. Sub-Redes iii. Números Binários e Máscara de Sub-Rede iv. O Roteador
Leia maisTabela de Símbolos. Análise Semântica A Tabela de Símbolos. Principais Operações. Estrutura da Tabela de Símbolos. Declarações 11/6/2008
Tabela de Símbolos Análise Semântica A Tabela de Símbolos Fabiano Baldo Após a árvore de derivação, a tabela de símbolos é o principal atributo herdado em um compilador. É possível, mas não necessário,
Leia maisCaso já seja usuário do SCAW siga as instruções a partir da página X.
Caso já seja usuário do SCAW siga as instruções a partir da página X. Para iniciar o sistema dê um duplo clique no ícone, que se encontra na área de trabalho. 1 Login do sistema. Esta é a tela de login
Leia maisAula 02 Excel 2010. Operações Básicas
Aula 02 Excel 2010 Professor: Bruno Gomes Disciplina: Informática Básica Curso: Gestão de Turismo Sumário da aula: 1. Operações básicas; 2. Utilizando Funções; 3. Funções Lógicas; 4. Gráficos no Excel;
Leia maisMICROSOFT OFFICE EXCEL 2007
LEIAME Nenhuma informação da APOSTILA - MICROSOFT OFFICE EXCEL 2007 poderá ser copiada, movida ou modificada sem autorização prévia e escrita do autor. MICROSOFT OFFICE EXCEL 2007 Efetue cálculos, analise
Leia mais2. OPERADORES... 6 3. ALGORITMOS, FLUXOGRAMAS E PROGRAMAS... 8 4. FUNÇÕES... 10
1. TIPOS DE DADOS... 3 1.1 DEFINIÇÃO DE DADOS... 3 1.2 - DEFINIÇÃO DE VARIÁVEIS... 3 1.3 - VARIÁVEIS EM C... 3 1.3.1. NOME DAS VARIÁVEIS... 3 1.3.2 - TIPOS BÁSICOS... 3 1.3.3 DECLARAÇÃO DE VARIÁVEIS...
Leia maisDadas a base e a altura de um triangulo, determinar sua área.
Disciplina Lógica de Programação Visual Ana Rita Dutra dos Santos Especialista em Novas Tecnologias aplicadas a Educação Mestranda em Informática aplicada a Educação ana.santos@qi.edu.br Conceitos Preliminares
Leia maisSumário 1. SOBRE O NFGoiana DESKTOP... 3 1.1. Apresentação... 3 1.2. Informações do sistema... 3 1.3. Acessando o NFGoiana Desktop... 3 1.4.
1 Sumário 1. SOBRE O NFGoiana DESKTOP... 3 1.1. Apresentação... 3 1.2. Informações do sistema... 3 1.3. Acessando o NFGoiana Desktop... 3 1.4. Interface do sistema... 4 1.4.1. Janela Principal... 4 1.5.
Leia maisApostila de Fundamentos de Programação I. Prof.: André Luiz Montevecchi
Apostila de Fundamentos de Programação I Prof: André Luiz Montevecchi Introdução O mundo atual é dependente da tecnologia O uso intenso de diversos aparatos tecnológicos é parte integrante do nosso dia-a-dia
Leia mais1. Sistemas de numeração
1. Sistemas de numeração Quando mencionamos sistemas de numeração estamos nos referindo à utilização de um sistema para representar uma numeração, ou seja, uma quantidade. Sistematizar algo seria organizar,
Leia maisRepresentação de Dados
Representação de Dados Introdução Todos sabemos que existem diferentes tipos de números: fraccionários, inteiros positivos e negativos, etc. Torna-se necessária a representação destes dados em sistema
Leia maisInstruções para a atividade
1/13 Instruções para a atividade 1. Orientações gerais. Leia atentamente: a. Esta é uma atividade contínua, baseada nos recursos do MS Excel. Foi idealizada para que a ferramenta em questão possa ter seus
Leia mais02 - Usando o SiteMaster - Informações importantes
01 - Apresentação do SiteMaster - News Edition O SiteMaster foi desenvolvido para ser um sistema simples de gerenciamento de notícias, instalado em seu próprio computador e com configuração simplificada,
Leia maisLição 1 Introdução à programação de computadores
Lição Introdução à programação de computadores Introdução à Programação I Objetivos Ao final desta lição, o estudante será capaz de: Identificar os diferentes componentes de um computador Conhecer linguagens
Leia maisGUIA RÁPIDO SISTEMA ANTIFURTO THEFT DETERRENT
GUIA RÁPIDO SISTEMA ANTIFURTO THEFT DETERRENT SUMÁRIO Prefácio... 1 A quem se destina... 1 Nomenclatura utilizada neste documento... 1 Tela de login... 2 Tela Inicial... 4 Gestão de Dispositivo Acompanhar
Leia maisCálculo Numérico Aula 1: Computação numérica. Tipos de Erros. Aritmética de ponto flutuante
Cálculo Numérico Aula : Computação numérica. Tipos de Erros. Aritmética de ponto flutuante Computação Numérica - O que é Cálculo Numérico? Cálculo numérico é uma metodologia para resolver problemas matemáticos
Leia maisMONTAGEM DE PROCESSO VIRTUAL
Manual de Procedimentos - SISPREV WEB MONTAGEM DE PROCESSO VIRTUAL 1/15 O treinamento com o Manual de Procedimentos É com muita satisfação que a Agenda Assessoria prepara este manual para você que trabalha
Leia mais1. NÍVEL CONVENCIONAL DE MÁQUINA
1. NÍVEL CONVENCIONAL DE MÁQUINA Relembrando a nossa matéria de Arquitetura de Computadores, a arquitetura de Computadores se divide em vários níveis como já estudamos anteriormente. Ou seja: o Nível 0
Leia maisATENÇÃO: * Arquivos com tamanho superior a 500 KB NÃO SERÃO ACEITOS * SOMENTE serão aceitos documentos do formato: PDF
TUTORIAL DE DIGITALIZAÇÃO DIRIGIDO AO USO DO PROCESSO ELETRÔNICO Adaptado do tutorial elaborado pelo colega MAICON FALCÃO, operador de computador da subseção judiciária de Rio Grande. Introdução Este tutorial
Leia maisANDRÉ APARECIDO DA SILVA APOSTILA BÁSICA SOBRE O POWERPOINT 2007
ANDRÉ APARECIDO DA SILVA APOSTILA BÁSICA SOBRE O POWERPOINT 2007 CURITIBA 2015 2 SUMÁRIO INTRODUÇÃO AO MICROSOFT POWERPOINT 2007... 3 JANELA PRINCIPAL... 3 1 - BOTÃO OFFICE... 4 2 - FERRAMENTAS DE ACESSO
Leia maisÍNDICE... 2 INTRODUÇÃO... 4
Mic crosoft Excel 201 0 ÍNDICE ÍNDICE... 2 INTRODUÇÃO... 4 Interface... 4 Guias de Planilha... 5 Movimentação na planilha... 6 Entrada de textos e números... 7 Congelando painéis... 8 Comentários nas Células...
Leia maisManual do Visualizador NF e KEY BEST
Manual do Visualizador NF e KEY BEST Versão 1.0 Maio/2011 INDICE SOBRE O VISUALIZADOR...................................................... 02 RISCOS POSSÍVEIS PARA O EMITENTE DA NOTA FISCAL ELETRÔNICA.................
Leia maisInstalação: permite baixar o pacote de instalação do agente de coleta do sistema.
O que é o projeto O PROINFODATA - programa de coleta de dados do projeto ProInfo/MEC de inclusão digital nas escolas públicas brasileiras tem como objetivo acompanhar o estado de funcionamento dos laboratórios
Leia maisARQUITETURA DE COMPUTADORES. Sistemas de Numeração. 1 Arquitetura de Computadores
ARQUITETURA DE COMPUTADORES Sistemas de Numeração 1 Sistemas de Numeração e Conversão de Base Sistema Decimal É o nosso sistema natural. Dígitos 0,1,2,3,4,5,6,7,8 e 9. Números superiores a 9; convencionamos
Leia maisVersão 2.2.0 PIMACO AUTOADESIVOS LTDA. Assistente Pimaco + 2.2.0. Ajuda ao Usuário
Versão 2.2.0 PIMACO AUTOADESIVOS LTDA. Assistente Pimaco + 2.2.0 Ajuda ao Usuário A S S I S T E N T E P I M A C O + 2.2.0 Ajuda ao usuário Índice 1. BÁSICO 1 1. INICIANDO O APLICATIVO 2 2. O AMBIENTE DE
Leia maisO Windows 7 é um sistema operacional desenvolvido pela Microsoft.
Introdução ao Microsoft Windows 7 O Windows 7 é um sistema operacional desenvolvido pela Microsoft. Visualmente o Windows 7 possui uma interface muito intuitiva, facilitando a experiência individual do
Leia maisSISTEMAS DIGITAIS Prof. Ricardo Rodrigues Barcelar http://www.ricardobarcelar.com
- Aula 1 - SISTEMA DE NUMERAÇÃO BINÁRIA E DECIMAL Todos os computadores são formados por circuitos digitais, onde as informações e os dados são codificados com dois níveis de tensão, pelo que o seu sistema
Leia maisDarkStat para BrazilFW
DarkStat para BrazilFW ÍNDICE Índice Página 1 O que é o DarkStat Página 2 DarkStat e a inicialização do sistema Página 2 DarkStat e a finalização do sistema Página 2 Tela Principal do DarkStat Página 3
Leia maisUnidade 5: Sistemas de Representação
Arquitetura e Organização de Computadores Atualização: 9/8/ Unidade 5: Sistemas de Representação Números de Ponto Flutuante IEEE 754/8 e Caracteres ASCII Prof. Daniel Caetano Objetivo: Compreender a representação
Leia maisModelagemde Software Orientadaa Objetos com UML
Modelagemde Software Orientadaa Objetos com UML André Maués Brabo Pereira Departamento de Engenharia Civil Universidade Federal Fluminense Colaborando para a disciplina CIV 2802 Sistemas Gráficos para
Leia maisFabio Bento fbento@ifes.edu.br
Fabio Bento fbento@ifes.edu.br Eletrônica Digital Sistemas de Numeração e Códigos 1. Conversões de Binário para Decimal 2. Conversões de Decimal para Binário 3. Sistema de Numeração Hexadecimal 4. Código
Leia maisFluxo de trabalho do Capture Pro Software: Indexação de OCR e separação de documentos de código de correção
Este procedimento corresponde ao fluxo de trabalho de Indexação de OCR com separação de código de correção no programa de treinamento do Capture Pro Software. As etapas do procedimento encontram-se na
Leia maisGUIA RÁPIDO DE UTILIZAÇÃO DO PORTAL DO AFRAFEP SAÚDE
GUIA RÁPIDO DE UTILIZAÇÃO DO PORTAL DO AFRAFEP SAÚDE INTRODUÇÃO O portal do Afrafep Saúde é um sistema WEB integrado ao sistema HEALTH*Tools. O site consiste em uma área onde os Usuários e a Rede Credenciada,
Leia maisUNIVERSIDADE GAMA FILHO Laboratório de Controle I - MATLAB
NOME: UNIVERSIDADE GAMA FILHO Laboratório de Controle I - MATLAB O que é o Matlab? O Matlab é um sistema para cálculo científico que proporciona um ambiente de fácil utilização com uma notação intuitiva,
Leia maisUniversidade Federal de Santa Maria UFSM Centro de Tecnologia CT. Power Point. Básico
Universidade Federal de Santa Maria UFSM Centro de Tecnologia CT Power Point Básico Santa Maria, julho de 2006 O Power Point é um aplicativo do Microsoft Office direcionado à criação de apresentações.
Leia maisLÓGICA DE PROGRAMAÇÃO PARA ENGENHARIA INTRODUÇÃO À ORGANIZAÇÃO DE COMPUTADORES
LÓGICA DE PROGRAMAÇÃO PARA ENGENHARIA INTRODUÇÃO À ORGANIZAÇÃO DE COMPUTADORES Prof. Dr. Daniel Caetano 2012-1 Objetivos Apresentar o funcionamento do computador Apresentar a função da memória e dos dispositivos
Leia maisProfessor: Macêdo Firmino Disciplina: Sistemas Operacionais de Rede
Professor: Macêdo Firmino Disciplina: Sistemas Operacionais de Rede O sistema de nome de domínio (DNS) é um sistema que nomeia computadores e serviços de rede e é organizado em uma hierarquia de domínios.
Leia maisAjuda ao SciEn-Produção 1. 1. O Artigo Científico da Pesquisa Experimental
Ajuda ao SciEn-Produção 1 Este texto de ajuda contém três partes: a parte 1 indica em linhas gerais o que deve ser esclarecido em cada uma das seções da estrutura de um artigo cientifico relatando uma
Leia maisAlgoritmos I Aula 13 Java: Tipos básicos, variáveis, atribuições e expressões
Algoritmos I Aula 13 Java: Tipos básicos, variáveis, atribuições e expressões Professor: Max Pereira http://paginas.unisul.br/max.pereira Ciência da Computação Primeiro Programa em Java public class OlaPessoal
Leia maisGUIA DE REDAÇÃO PARA TRABALHO DE EM974
GUIA DE REDAÇÃO PARA TRABALHO DE EM974 CONSIDERAÇÕES GERAIS O objetivo deste documento é informar a estrutura e a informação esperadas num texto de Trabalho de Graduação. O conteúdo do texto deverá ser
Leia maisGuia Site Empresarial
Guia Site Empresarial Índice 1 - Fazer Fatura... 2 1.1 - Fazer uma nova fatura por valores de crédito... 2 1.2 - Fazer fatura alterando limites dos cartões... 6 1.3 - Fazer fatura repetindo última solicitação
Leia maisO PaperPort 12 Special Edition (SE) possui uma grande variedade de novos e valiosos recursos que ajudam a gerenciar seus documentos.
Bem-vindo! O Nuance PaperPort é um pacote de aplicativos para gerenciamento de documentos da área de trabalho que ajuda o usuário a digitalizar, organizar, acessar, compartilhar e gerenciar documentos
Leia maisExemplo de Subtração Binária
Exemplo de Subtração Binária Exercícios Converta para binário e efetue as seguintes operações: a) 37 10 30 10 b) 83 10 82 10 c) 63 8 34 8 d) 77 8 11 8 e) BB 16 AA 16 f) C43 16 195 16 3.5.3 Divisão binária:
Leia maisArcSoft MediaConverter
ArcSoft MediaConverter User Manual Português 1 201004 Índice Índice... 2 1. Índice... 3 1.1 Requisitos do sistema... 4 1.2 Extras... 4 2. Convertendo arquivos... 7 2.1 Passo1: Selecionar mídia... 7 2.1.1
Leia maisCAPÍTULO 3 - TIPOS DE DADOS E IDENTIFICADORES
CAPÍTULO 3 - TIPOS DE DADOS E IDENTIFICADORES 3.1 - IDENTIFICADORES Os objetos que usamos no nosso algoritmo são uma representação simbólica de um valor de dado. Assim, quando executamos a seguinte instrução:
Leia maisLista de Exercícios. Vetores
Lista de Exercícios Vetores LINGUAGEM DE PROGRAMAÇÃO PROF. EDUARDO SILVESTRI. WWW.EDUARDOSILVESTRI.COM.BR ATUALIZADO EM: 13/03/2007 Página 1/1 1. Faça um programa que crie um vetor de inteiros de 50 posições
Leia maisATRIBUTOS PRIVADOS 6. ENCAPSULAMENTO MÉTODOS PRIVADOS MÉTODOS PRIVADOS
ATRIBUTOS PRIVADOS Podemos usar o modificador private, para tornar um atributo privado, obtendo um controle centralizado Definimos métodos para implementar todas as lógicas que utilizam ou modificam o
Leia maisAlgoritmos e Programação (Prática) Profa. Andreza Leite andreza.leite@univasf.edu.br
(Prática) Profa. Andreza Leite andreza.leite@univasf.edu.br Introdução O computador como ferramenta indispensável: Faz parte das nossas vidas; Por si só não faz nada de útil; Grande capacidade de resolução
Leia maisAlgoritmos: Lógica para desenvolvimento de programação de computadores. Autor: José Augusto Manzano. Capítulo 1 Abordagem Contextual
Algoritmos: Lógica para desenvolvimento de programação de computadores Autor: José Augusto Manzano Capítulo 1 Abordagem Contextual 1.1. Definições Básicas Raciocínio lógico depende de vários fatores para
Leia mais