Resultados para: “Informática e Tecnologia”
Título | Autor | Editora | Formato | Comprar item avulso | Adicionar à Pasta | |
---|---|---|---|---|---|---|
Capítulo 6. Entrada e saída |
Simon Monk | Artmed | PDF Criptografado | |||
CAPÍTULO 6 Entrada e saída O Arduino trata da chamada computação física. Isso significa ligar circuitos eletrônicos à placa do Arduino. Portanto, é necessário que você compreenda a usar as várias opções de conexão dos seus pinos. As saídas podem ser digitais, apresentando valores de 0 volts ou 5 volts, ou analógicas, apresentando qualquer valor entre 0 e 5 volts – embora não seja tão simples assim, como veremos. Por outro lado, as entradas podem ser digitais (verificar se um botão foi apertado ou não) ou analógicas (verificar o valor medido por um sensor luminoso). Em um livro que trata basicamente de software e não de hardware, procuraremos não nos envolver com discussões aprofundadas de eletrônica. Neste capítulo, entretanto seria útil se você pudesse dispor de um multímetro e de um pedaço de fio rígido para compreender melhor o que está acontecendo. OBJETIVOS DE APRENDIZAGEM Entender como funcionam as saídas e as entradas digitais. Aprender a estabelecer a comunicação entre o Arduino e um computador PC. Ver todos os capítulos |
||||||
Capítulo 8. Armazenamento de dados |
Simon Monk | Artmed | PDF Criptografado | |||
CAPÍTULO 8 Armazenamento de dados Quando você atribui valores às variáveis, esses dados são conservados na memória somente enquanto a placa do Arduino estiver ligada. No momento em que você desligá-lo ou der reset, todos os dados serão perdidos. Neste capítulo, iremos examinar algumas maneiras de conservar esses dados. OBJETIVOS DE APRENDIZAGEM Aprender maneiras de armazenar dados depois de desligar o Arduino. Aprender a armazenar dados na memória flash. Aprender a usar a memória EEPROM para armazenar dados permanentes que podem ser alterados. Aprender o modo mais eficiente de representar os dados quando eles são maiores que o espaço disponível. Monk_C08.indd 111 31/05/2017 09:50:16 112 PROGRAMAÇÃO COM ARDUINO Constantes Se os dados que você desejar armazenar são sempre os mesmos, então você poderá simplesmente inicializar os dados toda vez que o Arduino começar a executar um sketch. Um exemplo dessa abordagem é o caso do array de letras do seu tradutor de código Morse do Ver todos os capítulos |
||||||
Capítulo 4. Funções |
Simon Monk | Artmed | PDF Criptografado | |||
CAPÍTULO 4 Funções Este capítulo dedica-se principalmente aos tipos de função que você mesmo pode escrever. Estas funções são diferentes das funções internas, tais como digitalwrite e delay, que já foram predefinidas para você. A razão pela qual você precisa saber como escrever as suas próprias funções é que, quando os sketches começam a se tornar complicados, as funções setup e loop crescem até se tornarem longas e complexas, ficando difícil de entender a maneira como funcionam. O maior problema no desenvolvimento de software de qualquer tipo é saber lidar com a complexidade. Os melhores programadores escrevem software que é fácil de ser lido e compreendido, requerendo pouca explicação. As funções são uma ferramenta chave para criar sketches de fácil compreensão. Elas podem ser modificadas sem dificuldade e sem risco de a coisa toda se transformar em uma grande confusão. OBJETIVOS DE APRENDIZAGEM Entender o que é uma função. Aprender como passar parâmetros a funções. Ver todos os capítulos |
||||||
Capítulo 11. C++ e bibiliotecas |
Simon Monk | Artmed | PDF Criptografado | |||
CAPÍTULO 11 C++ e bibliotecas Os Arduinos são simples microcontroladores. Na maior parte do tempo, os sketches de Arduino são bem pequenos, de modo que o uso da linguagem C de programação funciona muito bem. Entretanto, a linguagem de programação do Arduino é, na realidade, C++ em vez de C. A linguagem C++ é uma extensão da linguagem C e contém algo denominado orientação a objeto. OBJETIVOS DE APRENDIZAGEM Aprender alguns fundamentos da linguagem C++ e de orientação a objeto. Examinar mais de perto a biblioteca LCD. Criar uma biblioteca simples para entender os conceitos que estão por trás. Monk_C11.indd 163 31/05/2017 09:52:02 164 PROGRAMAÇÃO COM ARDUINO Orientação a objeto Este é apenas um pequeno livro, de modo que uma explicação aprofundada da linguagem C++ de programação está além de seus propósitos. No entanto, o livro cobrirá alguns fundamentos de C++ e de orientação a objeto, sabendo que o seu objetivo principal é aumentar o encapsulamento dos programas. O encapsulamento mantém juntas as coisas relevantes, algo que torna a linguagem C++ muito adequada para escrever bibliotecas como as que você usou nos sketches de Ethernet e de LCD em capítulos anteriores. Ver todos os capítulos |
||||||
Capítulo 1. Este é o Arduino |
Simon Monk | Artmed | PDF Criptografado | |||
CAPÍTULO 1 Este é o Arduino O Arduino é uma plataforma de microcontrolador que atraiu a imaginação dos entusiastas de eletrônica. Sua facilidade de uso e sua natureza aberta fazem dele uma ótima opção para qualquer um que queira realizar projetos eletrônicos. Basicamente, permite que você conecte circuitos eletrônicos a seus terminais, permitindo que ele controle coisas – como, por exemplo, ligar ou desligar dispositivos, como lâmpadas e motores, ou medir grandezas físicas, como luz e temperatura. Essa é a razão pela qual algumas vezes dizemos que o Arduino realiza uma computação física (concreta). Como os Arduinos podem ser conectados a um computador por meio de um cabo USB (universal serial bus, ou barramento serial universal), isso significa também que você pode usar o Arduino como placa de interface e controlar esses mesmos dispositivos a partir de seu computador. OBJETIVOS DE APRENDIZAGEM Conhecer microcontroladores e placas de desenvolvimento. Conhecer uma placa de Arduino. Ver todos os capítulos |
Título | Autor | Editora | Formato | Comprar item avulso | Adicionar à Pasta | |
---|---|---|---|---|---|---|
15. Adição de Controladoras aos Slots da Motherboard |
PAIXÃO, Renato Rodrigues | Editora Saraiva | PDF Criptografado | |||
Adição de Controladoras aos Slots da Motherboard 15 Para começar Neste capítulo será apresentado o procedimento para a instalação de uma placa adicional em um slot vago da motherboard. Como a adição de placas é comum mesmo em PCs mais antigos, não nos limitaremos à instalação de uma placa atual PCIe (ou PCI-X), mas daremos uma olhada em outros padrões de placas e aprenderemos alguns conceitos fundamentais. 15.1 Conceitos fundamentais A expansão dos recursos de um PC, tais como aceleradoras de vídeo, controladoras especiais de áudio (som), fax/modem, conectividade de redes (LAN), placas controladoras customizadas (por exemplo, uma placa desenvolvida especialmente para controlar os robôs soldadores em uma linha de montagem de veículos), é feita por interfaces implementadas na motherboard, isto é, por meio de slots ou portas do tipo USB. É importante salientar que o slot está interligado ao chipset por um barramento apropriado. Por exemplo, os slots PCI de uma motherboard estão interconectados ao chipset por um único barramento PCI. O mesmo vale para os demais slots e barramentos, exceto PCI Express que possuem barramentos distintos e exclusivos para cada slot que está integrado na motherboard. Ver todos os capítulos |
||||||
10. Instalação do Processador |
PAIXÃO, Renato Rodrigues | Editora Saraiva | PDF Criptografado | |||
Instalação do Processador 10 Para começar Neste capítulo serão apresentadas as etapas necessárias para se instalar um processador Intel® Core™ i3 com encapsulamento FC-LGA1150 em uma motherboard Asus® H81M-C/BR. 10.1 Procedimento inicial Antes de iniciar, tome os seguintes cuidados: » Livre-se das cargas eletrostáticas, conforme descrito no Capítulo 4. » Use a pulseira contra EDS durante todo o processo de montagem do PC. » Ao retirar o processador de sua embalagem, manipule-o somente pelas bordas e não toque nos pinos ou terminais dele. » Seja extremamente cuidadoso com o processador. Não o deixe cair nem o raspe em outros corpos, pois poderá danificá-lo permanentemente. 10.2 Instalação de processadores Intel®, Socket LGA 1150 As etapas aqui descritas podem ser seguidas para a maioria dos processadores Intel® encapsulados em FC-LGA (Flip Chip - Land Grid Array), em suma, desde o Pentium® 4 até os mais recentes 79 Ver todos os capítulos |
||||||
17. Conexão dos Cabos Externos no PC |
PAIXÃO, Renato Rodrigues | Editora Saraiva | PDF Criptografado | |||
Conexão dos Cabos Externos no PC 17 Para começar O foco deste capítulo está na identificação dos conectores externos da parte traseira do gabinete e, também, na conexão dos cabos externos para que o PC possa ser colocado em operação, tão logo tais conexões sejam concluídas. 17.1 Parte interna do gabinete, verifi cação Antes de iniciar o processo de identificação e conexão dos cabos externos do PC, verifique: » » » » » » » Todos os cabos de sinais internos estão encaixados adequadamente em seus respectivos conectores? Todas as placas adicionais estão devidamente conectadas em seus respectivos slots? Todos os suportes metálicos das placas estão parafusados corretamente na estrutura do gabinete? Os drives HDD, CD, DVD etc. estão bem fixados na estrutura do gabinete? Todos os cabos de alimentação estão corretamente conectados? Todos os cabos de sinalização do painel frontal estão devidamente conectados? Ver todos os capítulos |
||||||
9. Jumpers da Motherboard |
PAIXÃO, Renato Rodrigues | Editora Saraiva | PDF Criptografado | |||
Jumpers da Motherboard 9 Para começar A finalidade principal deste capítulo é mostrar como funciona um jumper e o seu strap, conjunto esse que está presente em todas as motherboards e, também, como configurar a motherboard por meio dos jumpers integrados nela. 9.1 Jumper e strap Antes de iniciar a configuração de uma motherboard, é importante saber como funciona o conjunto jumper e strap, pois praticamente todas as motherboards possuem jumpers integrados que são usados para configurá-las ou, ao menos, para limpar a CMOS RAM que armazena os parâmetros de configuração de BIOS. Atualmente, a maioria das motherboards explora os recursos da própria BIOS para configurar os componentes instalados nela, tais como o processador, a DRAM, os dispositivos de I/O, a placa de vídeo, entre outros. Esse tipo de configuração, por meio da BIOS, extingue a necessidade de jumpers exclusivos e destinados à configuração dos componentes integrados nela, liberando espaço para uma motherboard mais compacta. Ver todos os capítulos |
||||||
7. Gabinete PC |
PAIXÃO, Renato Rodrigues | Editora Saraiva | PDF Criptografado | |||
Gabinete PC 7 Para começar Este capítulo tem como objetivo apresentar o gabinete que será usado para a montagem do novo PC, isto é, as partes internas e externas do gabinete serão identificadas. Ademais, será mostrado como instalar nele uma fonte chaveada compatível. 7.1 O gabinete O gabinete escolhido para a integração dos componentes do PC é o modelo Full Tower ATX, que possui nove compartimentos, sendo quatro de 5 ¼”, três de 3 ½” e dois de 2 ½”. Apenas os compartimentos de 5 ¼” possuem acesso tanto pela parte interna como pela parte externa. O chassi para a fixação da motherboard é do tipo fixo. As Figuras 7.1 e 7.2 apresentam esse gabinete. 4 X compartimentos de 5 ¼” 2 X USB 1 X P2 (entrada de áudio) rosa 1 X P2 (saída de áudio) verde Botão de reset Botão liga/desliga Figura 7.1 - Gabinete ATX Full Tower - visão frontal. 59 Espaço destinado para a instalação da fonte chaveada padrão ATX. Ver todos os capítulos |
Título | Autor | Editora | Formato | Comprar item avulso | Adicionar à Pasta | |
---|---|---|---|---|---|---|
3.7 Valores primitivos imutáveis e referências de objeto mutáveis |
Flanagan David | Grupo A | PDF Criptografado | |||
Capítulo 3 Tipos, valores e variáveis 43 Note que é possível (mas quase nunca necessário ou útil) criar objetos wrapper explicitamente, chamando as construtoras String(), Number() ou Boolean(): var var var var s S N B = = = = "test", n = 1, b = true; new String(s); new Number(n); new Boolean(b); // // // // Uma string, um número e um valor booleano. Um objeto String Um objeto Number Um objeto Boolean JavaScript converte objetos wrapper no valor primitivo empacotado, quando necessário; portanto, os objetos S, N e B anteriores normalmente (mas nem sempre) se comportam exatamente como os valores s, n e b. O operador de igualdade == trata um valor e seu objeto wrapper como iguais, mas é possível diferenciá-los com o operador de igualdade restrito ===. O operador typeof também mostra a diferença entre um valor primitivo e seu objeto wrapper. 3.7 Valores primitivos imutáveis e referências de objeto mutáveis Ver todos os capítulos |
||||||
5.4 Condicionais |
Flanagan David | Grupo A | PDF Criptografado | |||
90 Parte I JavaScript básica definição de função são implicitamente “içadas” para o topo do script ou função que as contém, de modo que sejam visíveis em todo o script ou função. Com var, somente a declaração da variável é içada – o código de inicialização da variável permanece onde é colocado. Contudo, com instruções de declaração de função, tanto o nome da função como o corpo da função são içados – todas as funções de um script ou todas as funções aninhadas em uma função são declaradas antes de qualquer outro código ser executado. Isso significa que é possível chamar uma função em JavaScript antes de declará-la. Assim como a instrução var, as instruções de declaração de função criam variáveis que não podem ser excluídas. Contudo, essas variáveis não são somente para leitura e seus valores podem ser sobrescritos. 5.4 Condicionais As instruções condicionais executam ou pulam outras instruções, dependendo do valor de uma expressão especificada. Essas instruções são os pontos de decisão de seu código e às vezes também são conhecidas como “ramificações”. Se você imaginar um interpretador JavaScript seguindo um caminho através de seu código, as instruções condicionais são os lugares onde o código se ramifica em dois ou mais caminhos e o interpretador deve escolher qual caminho seguir. Ver todos os capítulos |
||||||
9.2 Classes e construtoras |
Flanagan David | Grupo A | PDF Criptografado | |||
Capítulo 9 Classes e módulos 195 }; // Aqui estão exemplos de uso de um objeto range. var r = range(1,3); // Cria um objeto range r.includes(2); // => verdadeiro: 2 está no intervalo r.foreach(console.log); // Imprime 1 2 3 console.log(r); // Imprime (1...3) Existem algumas coisas interessantes no código do Exemplo 9-1. Esse código define uma função fábrica range() para criar novos objetos range. Observe que usamos uma propriedade dessa função range(), range.methods, como um lugar conveniente para armazenar o objeto protótipo que define a classe. Não há nada de especial ou idiomático quanto a colocar o objeto protótipo aqui. Segundo, note que a função range() define propriedades from e to em cada objeto range. Essas são propriedades não herdadas e não compartilhadas que definem o estado exclusivo de cada objeto range individual. Por fim, note que todos os métodos herdados e compartilhados definidos em range.methods utilizam essas propriedades from e to, e que para se referirem a elas, utilizam a palavra-chave this para fazer referência ao objeto a partir do qual foram chamados. Esse uso de this é uma característica fundamental dos métodos de qualquer classe. Ver todos os capítulos |
||||||
12.2 E/S assíncrona com o Node |
Flanagan David | Grupo A | PDF Criptografado | |||
288 Parte I JavaScript básica 12.2 E/S assíncrona com o Node O Node é um interpretador JavaScript rápido, baseado em C++, com vínculos para as APIs Unix de baixo nível para trabalhar com processos, arquivos, soquetes de rede, etc., e também para cliente HTTP e APIs de servidor. A não ser por alguns métodos síncronos com nomes especiais, os vínculos do Node são todos assíncronos e, por padrão, os programas Node nunca são bloqueados, isso quer dizer que normalmente mudam bem de escala e lidam com cargas grandes de forma eficiente. Como as APIs são assíncronas, o Node conta com rotinas de tratamento de evento, as quais são frequentemente implementadas com funções aninhadas e closures1. Esta seção destaca algumas das APIs e dos eventos mais importantes do Node, mas de modo algum a documentação é completa. Consulte a documentação online do Node no endereço http://nodejs. org/api/. Obtendo o Node O Node é software livre que pode ser baixado no endereço http://nodejs.org. Quando este livro estava sendo produzido, o Node ainda estava sendo desenvolvido e distribuições binárias não estavam disponíveis – era preciso construir sua própria cópia a partir do código-fonte. Os exemplos desta seção foram escritos e testados com o Node versão 0.4. A API ainda não está congelada, mas é improvável que os fundamentos ilustrados aqui mudem muito no futuro. Ver todos os capítulos |
||||||
14.5 Caixas de diálogo |
Flanagan David | Grupo A | PDF Criptografado | |||
Capítulo 14 O objeto Window 339 !/compatible/.test(s) && /(mozilla)(?:.*? rv:([\w.]+))?/.exec(s) || []; return { name: match[1] || "", version: match[2] || "0" }; }()); onLine A propriedade navigator.onLine (se existe) especifica se o navegador está conectado na rede. Os aplicativos talvez queiram salvar o estado localmente (usando técnicas do Capítulo 20), enquanto estão off-line. geolocation Objeto Geolocation que define uma API para determinar a localização geográfica do usuário. Consulte a Seção 22.1 para ver os detalhes. javaEnabled() Um método não padronizado que deve retornar Java. true se o navegador pode executar applets cookiesEnabled() Método não padronizado que deve retornar true se o navegador pode armazenar cookies persistentes. Pode não retornar o valor correto se os cookies são configurados com base no site. 14.4.2 O objeto Screen A propriedade screen de um objeto Window se refere a um objeto Screen que fornece informações sobre o tamanho da tela do usuário e o número de cores disponíveis. As propriedades width e height especificam o tamanho da tela em pixels. As propriedades availWidth e availHeight especificam o tamanho da tela realmente disponível; elas excluem o espaço exigido por recursos como uma barra de tarefas na área de trabalho. A propriedade colorDepth especifica o valor de bits por pixel da tela. Ver todos os capítulos |
Título | Autor | Editora | Formato | Comprar item avulso | Adicionar à Pasta | |
---|---|---|---|---|---|---|
12. Gerenciamento global e na empresa de tecnologia da informação |
James A. O'Brien, George M. Marakas | Grupo A | PDF Criptografado | |||
CAPÍTULO 12 Desafios gerenciais Gerenciamento global e na empresa de tecnologia da informação Aplicações de negócios Módulo V Processos de desenvolvimento Tecnologias da informação Conceitos fundamentais Destaques do capítulo Objetivos de aprendizagem Seção I Gerenciando a tecnologia da informação 1. Identificar cada um dos três componentes do gerenciamento da tecnologia da informação e usar exemplos para ilustrar como eles podem ser implementados em um negócio. Negócios e TI Gerenciando a tecnologia da informação “Caso do mundo real 1”: Toyota, Procter & Gamble, Hess Corporation e outras: CIOs prestes a se aposentar e a necessidade de planejamento de sucessão Planejamento de negócios/TI Gerenciando a função da TI Organização da TI Terceirização e offshoring de TI e SI Falhas no gerenciamento de TI Seção II Gerenciando uma TI global Ver todos os capítulos |
||||||
3. Hardware |
James A. O'Brien, George M. Marakas | Grupo A | PDF Criptografado | |||
CAPÍTULO 3 Desafios gerenciais Aplicações de negócios Módulo II Processos de desenvolvimento Tecnologias da informação Conceitos fundamentais Hardware Destaques do capítulo Objetivos de aprendizagem Seção I Sistemas de computador: computação empresarial e por usuário final 1. Compreender a história e a evolução do hardware. Introdução Breve histórico de hardware “Caso do mundo real 1”: IBM, Wachovia e PayPal: a computação em grade torna o processo mais fácil e mais barato Tipos de sistemas de informação Sistemas de microcomputador Sistema de médio porte Sistemas de grande porte Observação técnica: o conceito de sistema de computador Lei de Moore: aonde vamos parar? 3. Ressaltar as principais tecnologias e usos de periféricos para entrada, saída e armazenamento de dados. Seção II Periféricos: tecnologias de entrada, saída e armazenamento de dados Ver todos os capítulos |
||||||
4. Software |
James A. O'Brien, George M. Marakas | Grupo A | PDF Criptografado | |||
CAPÍTULO 4 Software Desafios gerenciais Aplicações de negócios Módulo II Processos de desenvolvimento Tecnologias da informação Conceitos fundamentais Destaques do capítulo Objetivos de aprendizagem Seção I Software de aplicação para usuários finais 1. Descrever as diversas tendências importantes em termos de software. Introdução ao software “Caso do mundo real 1”: GE, H.B. Fuller Co., e outras empresas: implementações bem-sucedidas de software como serviço Software de aplicação empresarial Suítes de softwares e pacotes integrados Navegadores web e outros softwares Correio eletrônico, mensagem instantânea e blog Processamento de texto e editoração eletrônica Planilhas eletrônicas Apresentações gráficas Gerenciador de informações pessoais Groupware Softwares alternativos 2. Exemplificar os principais tipos de software de sistema e de aplicação. Ver todos os capítulos |
||||||
8. Sistemas de e-commerce |
James A. O'Brien, George M. Marakas | Grupo A | PDF Criptografado | |||
CAPÍTULO 8 Sistemas de e-commerce Desafios gerenciais Aplicações de negócios Módulo III Processos de desenvolvimento Tecnologias da informação Conceitos fundamentais Destaques do capítulo Objetivos de aprendizagem Seção I Fundamentos do e-commerce 1. Identificar as principais categorias e tendências de aplicações de e-commerce. Introdução ao e-commerce O escopo do e-commerce “Caso do mundo real 1”: KitchenAid e Royal Bank of Canada: você protege a sua marca na internet? Processos essenciais do e-commerce Processos de pagamento eletrônico 2. Identificar os processos essenciais de um sistema de e-commerce e dar exemplos de como eles são implantados nas aplicações de e-commerce. Seção II Questões e aplicações do e-commerce 4. Identificar e explicar o valor de negócio dos vários tipos de mercado de e-commerce. E-commerce empresa-consumidor (B2C) Ver todos os capítulos |
||||||
5. Gerenciamento dos recursos de dados |
James A. O'Brien, George M. Marakas | Grupo A | PDF Criptografado | |||
CAPÍTULO 5 Desafios gerenciais Aplicações de negócios Gerenciamento dos recursos de dados Módulo II Processos de desenvolvimento Tecnologias da informação Conceitos fundamentais Destaques do capítulo Objetivos de aprendizagem Seção I Fundamentos técnicos do gerenciamento de base de dados 1. Explicar o valor empresarial da implementação dos processos de gerenciamento dos recursos de dados e tecnologias em uma organização. Gerenciamento de banco de dados Conceitos fundamentais de bancos de dados “Caso do mundo real 1”: Cogent Communications, Intel e outras empresas: as fusões são mais fáceis quando seus dados estão prontos Estruturas de banco de dados Desenvolvimento de banco de dados 2. Resumir as vantagens da abordagem de gerenciamento de banco de dados para administrar os recursos de dados de um negócio, comparado à abordagem de processamento de um arquivo. Seção II Ver todos os capítulos |
Título | Autor | Editora | Formato | Comprar item avulso | Adicionar à Pasta | |
---|---|---|---|---|---|---|
Parte IV - 30 Gerenciando Recursos |
IERUSALIMSCHY, Roberto | Grupo Gen | PDF Criptografado | |||
✐ ✐ Ierusalimschy — Prova 4 — 13/4/2015 — Maluhy&Co. — página 313 30 Gerenciando Recursos Na nossa implementação de arrays de booleanos do capítulo anterior, nós não precisamos nos preocupar com a gerência de recursos. Aqueles arrays precisam apenas de memória. Cada userdatum que representa um array tem a sua própria memória, que é gerenciada por Lua. Quando um array se torna lixo (isto é, inacessível pelo programa), Lua eventualmente o coleta e libera a sua memória. A vida nem sempre é tão fácil. Algumas vezes, um objeto precisa de outros recursos além de memória bruta, como descritores de arquivos, descritores de janelas e coisas do gênero (frequentemente, esses recursos também são apenas memória, mas gerenciada por alguma outra parte do sistema). Nesses casos, quando o objeto se tornar lixo e for coletado, esses outros recursos também deverão ser liberados de alguma forma. Como vimos na Seção 17.6, Lua provê finalizadores sob a forma do metamétodo Ver todos os capítulos |
||||||
Parte III - 23 A Biblioteca do Sistema Operacional |
IERUSALIMSCHY, Roberto | Grupo Gen | PDF Criptografado | |||
✐ ✐ Ierusalimschy — Prova 4 — 13/4/2015 — Maluhy&Co. — página 237 23 A Biblioteca do Sistema Operacional A biblioteca do Sistema Operacional inclui funções para a manipulação de arquivos (não de fluxos), para a obtenção da data e da hora correntes e outras funcionalidades relacionadas ao sistema operacional. Ela é definida na tabela os. Essa biblioteca paga um preço pela portabilidade de Lua: como Lua é escrita em ANSI C, ela usa apenas as funcionalidades que o padrão ANSI oferece. Muitas funcionalidades de SO, como a manipulação de diretórios e de soquetes (sockets), não fazem parte desse padrão; assim, a biblioteca do sistema operacional não as provê. Há outras bibliotecas Lua, não incluídas na distribuição principal, que proveem acesso estendido ao SO. Alguns exemplos são a biblioteca posix, que oferece toda a funcionalidade do padrão POSIX.1 para Lua; luasocket, para suporte a funcionalidades de rede; e LuaFileSystem, para a manipulação básica de diretórios e atributos de arquivos. Ver todos os capítulos |
||||||
Parte II - 17 Tabelas Fracas e Finalizadores |
IERUSALIMSCHY, Roberto | Grupo Gen | PDF Criptografado | |||
✐ ✐ Ierusalimschy — Prova 4 — 13/4/2015 — Maluhy&Co. — página 181 17 Tabelas Fracas e Finalizadores Lua faz gerenciamento automático de memória. Os programas criam objetos (tabelas, threads etc.), mas não há nenhuma função para removê-los. Lua remove automaticamente os objetos que se tornam lixo, usando coleta de lixo. Isso libera você da maioria das obrigações de gerenciamento de memória e, mais importante, o libera da maioria dos erros relacionados a essa atividade, como ponteiros soltos (dangling pointers) e vazamentos de memória. O uso de um coletor de lixo real significa que Lua não tem problemas com ciclos. Você não precisa de nenhuma ação especial ao usar estruturas de dados cíclicas; elas são coletadas como quaisquer outros dados. No entanto, algumas vezes, mesmo o coletor mais esperto precisa da sua ajuda. Nenhum coletor de lixo permite que você esqueça todas as preocupações quanto à gerência de recursos, como o acúmulo (hoarding) de memória e de recursos externos. Ver todos os capítulos |
||||||
Parte II - 16 Programação Orientada a Objetos |
IERUSALIMSCHY, Roberto | Grupo Gen | PDF Criptografado | |||
✐ ✐ Ierusalimschy — Prova 4 — 13/4/2015 — Maluhy&Co. — página 169 16 Programação Orientada a Objetos Uma tabela em Lua é um objeto em mais de um sentido. Como objetos, as tabelas têm um estado e uma identidade (um self ) que não tem relação com seus valores; especificamente, dois objetos (tabelas) com o mesmo valor são objetos diferentes, enquanto um objeto pode ter valores diferentes em momentos distintos. Ainda como objetos, as tabelas têm um ciclo de vida independente de quem as criou ou de onde foram criadas. Os objetos têm as suas próprias operações. As tabelas também podem ter operações, como no seguinte fragmento de código:¹ Account = {balance = 0} function Account.withdraw (v) Account.balance = Account.balance - v end Essa definição cria uma nova função e a armazena em um campo withdraw do objeto Account. Em seguida, podemos chamá-la como em Account.withdraw(100.00) 1. Mantivemos no exemplo desta seção, como em todos os demais exemplos do livro, o código original em inglês. Este exemplo refere-se a uma conta bancária (Account), com um saldo (balance), operações de retirada (withdraw) e depósito (deposit). (N.T.) Ver todos os capítulos |
||||||
Parte II - 12 Arquivos de Dados e Persistência |
IERUSALIMSCHY, Roberto | Grupo Gen | PDF Criptografado | |||
✐ ✐ Ierusalimschy — Prova 4 — 13/4/2015 — Maluhy&Co. — página 122 12 Arquivos de Dados e Persistência Quando lidamos com arquivos de dados, é geralmente muito mais fácil escrever os dados do que lê-los de volta. Quando escrevemos um arquivo, temos total controle sobre o que está acontecendo. Por outro lado, quando o lemos, não sabemos o que esperar. Além de todos os tipos de dados que um arquivo correto pode conter, um programa robusto também deve tratar arquivos inválidos elegantemente. Dessa forma, codificar rotinas de entrada robustas é sempre difícil. Neste capítulo, veremos como usar Lua para eliminar todo o código para leitura de dados de nossos programas, simplesmente escrevendo os dados em um formato apropriado. 12.1 Arquivos de Dados Os construtores de tabela proveem uma alternativa interessante para formatos de arquivos. Com um pouco de trabalho extra ao escrever os dados, a leitura torna-se trivial. A técnica é escrever nosso arquivo de dados como um código Lua que, quando executado, constrói os dados dentro do programa. Com construtores de tabela, esses trechos podem se parecer notavelmente com um arquivo de texto comum. Ver todos os capítulos |