Artmed (11)
  Título Autor Editora Formato Comprar item avulso Adicionar à Pasta
Medium 9788582604465

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
Medium 9788582604465

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
Medium 9788582604465

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
Medium 9788582604465

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
Medium 9788582604465

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

Ver Todos

Editora Saraiva (43)
  Título Autor Editora Formato Comprar item avulso Adicionar à Pasta
Medium 9788536506654

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
Medium 9788536506654

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
Medium 9788536506654

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
Medium 9788536506654

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
Medium 9788536506654

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

Ver Todos

Grupo A (1456)
  Título Autor Editora Formato Comprar item avulso Adicionar à Pasta
Medium 9788565837194

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
Medium 9788565837194

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
Medium 9788565837194

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
Medium 9788565837194

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
Medium 9788565837194

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

Ver Todos

Grupo A (12)
  Título Autor Editora Formato Comprar item avulso Adicionar à Pasta
Medium 9788580551105

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
Medium 9788580551105

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
Medium 9788580551105

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
Medium 9788580551105

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
Medium 9788580551105

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

Ver Todos

Grupo Gen (547)
  Título Autor Editora Formato Comprar item avulso Adicionar à Pasta
Medium 9788521629139

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
Medium 9788521629139

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
Medium 9788521629139

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
Medium 9788521629139

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
Medium 9788521629139

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

Ver Todos

Carregar mais