• Nenhum resultado encontrado

Engenharia da Computação

N/A
N/A
Protected

Academic year: 2021

Share "Engenharia da Computação"

Copied!
57
0
0

Texto

(1)

A ENGENHARIA DA

A ENGENHARIA DA

COMPUTAÇÃO

COMPUTAÇÃO

Trabalho avaliativo que tem como

Trabalho avaliativo que tem como objetivo principal avaliar objetivo principal avaliar 

os conhecimentos dos alunos do curso de hardware sobre

os conhecimentos dos alunos do curso de hardware sobre

a engenharia principal que constitui a computação, sob

a engenharia principal que constitui a computação, sob

orientação do professor Gustavo.

orientação do professor Gustavo.

SÃO PAULO

SÃO PAULO

2011

2011

(2)
(3)

RESUMO

RESUMO

A engenharia da computação foi a abordada de forma bem simples nesse trabalho, pois sobre esse A engenharia da computação foi a abordada de forma bem simples nesse trabalho, pois sobre esse assunto existe muito o que se falar. Os principais temas dentro da engenharia foram apresentados assunto existe muito o que se falar. Os principais temas dentro da engenharia foram apresentados de

de forforma ma simsimplplifiificadcada a e e resresumiumida, da, infinfatatizaizando ndo apeapenas nas os os comcomponponententes es funfundadamementantais, is, tatantonto fisicamente, quanto logicamente. Esse trabalho abordou, em hardware: resistores, capacitores e fisicamente, quanto logicamente. Esse trabalho abordou, em hardware: resistores, capacitores e transistor

transistores, es, que em que em circuitcircuitos os elétrielétricos cos de computadores, esses de computadores, esses três componentes são fundamentais,três componentes são fundamentais, exercendo funções de resistir correntes extras, estabilizar tensão, amplificar sinal, entre outras. exercendo funções de resistir correntes extras, estabilizar tensão, amplificar sinal, entre outras. Tambem

Tambem foi abordado, em software: as linguagens C, C++, C# e Java e foi abordado, em software: as linguagens C, C++, C# e Java e os bancos de dados Oracle,os bancos de dados Oracle, MySQL e SQL Server que são linguagem de programação que a maioria dos programadores utiliza MySQL e SQL Server que são linguagem de programação que a maioria dos programadores utiliza na criação de seus software e os principais sistemas gerenciadores de bancos de dados.

(4)

SUMÁRIO

SUMÁRIO

IInnttrroodduuççããoo 0077

11. . A A eennggeennhhaarriia a dda a ccoommppuuttaaççããoo 0088 2.

2. Resistor Resistor 0808

22. . 11. . RReessiissttêênncciia a e e rreessiissttiivviiddaaddee 0088

22..22..RReessiissttoorr vvaarriiáávveell 0099

22..11..11..TTeerrmmiissttoorreess 1100

22..33..CCóóddiiggoo ddee ccoorreess 1100

22..22..RReessiissttoorr vvaarriiáávveell 1111 22..44..EEssttrruuttuurraa 1122 22..55..TTrraannssdduuttoorreess 1122 33..CCaappaacciittoorr 1133 33..11..HHiissttóórriiaa 1133 33..22..FFuunncciioonnaammeennttoo 1155 33..33 CCaappaacciittâânncciiaa 1155 33..44..AApplliiccaaççõõeess 1166

33. . 55. . IIddeennttiiffiiccaaççãão o dde e vvaalloorr 1177 33. . 55. . 11. . CCaappaacciittoor r cceerrââmmiiccoo 1177 33. . 66. . CCaappaacciittoorrees s vvaarriiáávveeiiss 1177

44..TTrraannssiissttoorr 1188

44..11..HHiissttóórriiaa 1199

44..22..FFuunncciioonnaammeennttoo 1199

44. . 22. . 11. . CCaarraacctteerrííssttiiccaas s dde e uum m ttrraannssiissttoorr 2211

44..33..FFaabbrriiccaaççããoo 2211

44..44..IImmppoorrttâânncciiaa 2233

55. . EEnnggeennhhaarriia a dde e SSooffttwwaarree 2244

66..LLiinngguuaaggeemm CC 2244

66..11..HHiissttóórriiaa 2255

66. . 22. . CCaarraacctteerrííssttiiccaas s ddo o CC 2255

66..33..TTiippoossddeeddaaddooss 2255

66..44..MMaatteemmááttiiccaa 2266

66. . 55. . EEssttrruuttuurraas s dde e ddaaddooss 2288 66. . 66. . FFeerrrraammeennttaas s dde e pprrooggrraammaaççããoo 2288

77..LLiinngguuaaggeemm CC++++ 2299 77..11..HHiissttóórriiaa 3300 77..11..11..EEttiimmoollooggiiaa 3300 77. . 11. . 22. . TTrraabbaallhhoos s ffuuttuurrooss 3311 77..22..CCaarraacctteerrííssttiiccaass 3322 77..22..11..FFiilloossooffiiaa 3322

(5)

77. . 22. . 22. . BBiibblliiootteecca a ppaaddrrããoo 3322

77..22..33..OOppeerraaddoorreess 3333

77..22..44..OObbjjeettooss 3333

77. . 22. . 55. . EEnnccaappssuullaammeennttoo 3344 77. . 22. . 66. . PPoolliimmoorrffiissmmoo 3344 77..22..66..11..EEssttááttiiccoo 3344 77. . 22. . 66. . 22. . DDiinnââmmiiccoo 3355 77. . 22. . 77. . TTrraattaammeenntto o dde e eexxcceeççõõeess 3355 77. . 22. . 88. . EEssppaaçço o dde e nnoommeess 3366 77. . 22. . 99. . IInnccoommppaattiibbiilliiddaadde e ccoom m CC 3377

77..33..FFeerrrraammeennttaass 3377

77. . 33. . 11. . AAmmbbiieennttees s dde e ddeesseennvvoollvviimmeennttoo 3388 77. . 33. . 22. . AApplliiccaattiivvoos s ddeesseennvvoollvviiddoos s eem m CC++++ 3388

88..LLiinngguuaaggeemm CC## 4400

88..11..HHiissttóórriiaa 4411

88..11..11..EEttiimmoollooggiiaa 4411

88..22..CCaarraacctteerrííssttiiccaass 4411

88. . 33. . BBiibblliiootteeccaas s dde e ccóóddiiggooss 4411

99..LLiinngguuaaggeemm JJaavvaa 4433

99..11..HHiissttóórriiaa 4433

99..22..CCaarraacctteerrííssttiiccaass 4433

99. . 22. . 11. . SSiimmpplliicciiddaaddee 4455 99. . 22. . 22. . OOrriieennttaaççãão o a a oobbjjeettooss 4455 99. . 22. . 33. . PPrroocceessssaammeenntto o ddiissttrriibbuuííddoo 4455 99. . 22. . 44. . MMuullttiitthhrreeaaddiinngg 4455

99..22..55..EExxcceeççõõeess 4466

99. . 22. . 66. . GGaarrbbaagge e ccoolllleeccttoorr 4466 99. . 22. . 77. . MMaacchhiinne e iinnddeeppeennddeenntt 4466 99. . 22. . 88. . PPoolliimmoorrffiissmmoo 4466 99. . 22. . 88. . 11. . PPoolliimmoorrffiissmmo o UUnniivveerrssaall 4477 99. . 22. . 88. . 22. . PPaarraammééttrriicco o oou u ppaarraammeettrriizzaaççããoo 4477 99..22..88..33..IInncclluussããoo 4477 99. . 22. . 88. . 44. . PPoolliimmoorrffiissmmo o AAdd--HHoocc 4488 99. . 33. . AArrqquuiitteettuurra a e e FFeerrrraammeennttaass 4488 99. . 33. . 11. . FFeerrrraammeennttaas s ppaarra a ddeesseennvvoollvviimmeenntto o eem m JJaavvaa 4499 99. . 33. . 22. . JJaavva a e e a a IInntteerrnneett 5500 1100. . BBaanncco o dde e DDaaddoos s OOrraaccllee 5511

1100..11..EEddiiççõõeess 5511

1111..BBaannccooddeeDDaaddoossMMyySSQQLL 5522

1111..11..HHiissttóórriiaa 5522

1111..22..CCaarraacctteerrííssttiiccaass 5533

1122. . BBaanncco o dde e DDaaddoos s SSQQL L SSeerrvveerr 5533

(6)

1122..22..IInntteelliiggeennttee 5555 C

(7)

INTRODUÇÃO

O tema abordado nesse trabalho é um tema de interesse e de necessidade a todos os estudantes e  profissionais na área de informática, pois sem conhecimento da ferramenta em que se trabalha, é

impossível ter total certeza do resultado final do projeto a ser realizado dentro da computação.

Antes de escolher a profissão na área de informática, é fundamental para o futuro profissional conhecer como funciona a futura ferramenta de trabalho, qual componente faz o que, qual falta de componente causa determinado problema, como deve ser estruturado um software e entre outros tópicos.

O principal foco dessa pesquisa é oferecer informações e conhecimentos sobre a estrutura que envolve a computação, tanto a parte física (circuitos) quando a parte lógica (softwares), quais os componentes principais para a arquitetura da computação, ou como diz o titulo desse trabalho, os componentes da engenharia da computação.

 Nesse trabalho são apresentadas as principais e fundamentais partes dentro da computação, onde mostra como cada componentes falado tem um papel fundamental para a estrutura de computadores.

(8)

1. A engenharia da computação

A engenharia da computação é a ciência que estrutura as partes da computação. Essa

engenharia é responsável por criar e definir o melhor caminho para a organização e estrutura de um computador, nessa engenharia se estuda como um computador é montado, desde os seus circuitos até os sistemas operacionais, e ela também é responsável pela criação de futuras e melhoradas tecnologias. A engenharia da computação é composta por diversas etapas, onde se projeta e,  posteriormente, se cria hardware (partes físicas), que a parti desses hardwares, se projeta e cria

softwares equivalentes.

2. Resistor 

Resistores são componentes que têm por finalidade oferecer uma oposição à passagem de corrente elétrica, através de seu material. A essa oposição damos o nome de resistência elétrica, que  possui como unidade ohm. Causam uma queda de tensão em alguma parte de um circuito elétrico,  porém jamais causam quedas de corrente elétrica. Isso significa que a corrente elétrica que entra em

um terminal do resistor será exatamente a mesma que sai pelo outro terminal, porém há uma queda de tensão. Utilizando-se disso, é possível usar os resistores para controlar a corrente elétrica sobre os componentes desejados.

Alguns resistores são longos e finos, com o material resistivo colocado ao centro, e um terminal de metal ligado em cada extremidade. Este tipo de encapsulamento é chamado de encapsulamento axial. A fotografia a direita mostra os resistores em uma tira geralmente usados  para a pré-formatação dos terminais. Resistores usados em computadores e outros dispositivos são

tipicamente muito menores, freqüentemente são utilizadas tecnologia de montagem superficial (Surface-mount technology), ou SMT, esse tipo de resistor não tem "perna" de metal (terminal). Resistores de maiores potências são produzidos mais robustos para dissipar calor de maneira mais eficiente, mas eles seguem basicamente a mesma estrutura.

2. 1. Resistência e resistividade

Os resistores são utilizados como parte de um circuito eléctrico e incorporados dentro de dispositivos microelectrónicos ou semicondutores. A medição crítica de um resistor é a resistência, que serve como relação de Tensão para corrente é medida em ohms, uma unidade SI. Um componente tem uma resistência de 1 ohm se uma tensão de 1 volt no componente fizer com que  percorra, pelo mesmo, uma corrente com a intensidade de 1 ampère, o que é equivalente à

circulação de 1 coulomb de carga elétrica, aproximadamente 6.241506 x 1018 elétrons por  segundo. Qualquer objeto físico, de qualquer material é um tipo de resistor. A maioria dos metais são materiais condutores, e opõe baixa resistência ao fluxo de corrente elétrica. O corpo humano, um pedaço de plástico, ou mesmo o vácuo têm uma resistência que pode ser mensurada. Materiais que possuem resistência muito alta são chamados isolantes ou dielétricos. A relação entre tensão, corrente e resistência, através de um objeto é dada por uma simples equação, Lei de Ohm:

Onde V (ou U ) é a diferença de potencial em volts, I é a corrente que circula através de um objeto em ampères, e R é a resistência em ohms. Se V e I tiverem uma relação linear—isto é, R é

(9)

constante—ao longo de uma gama de valores, o material do objeto é chamado de ôhmico. Um resistor ideal tem uma resistência fixa ao longo de todas as frequências e amplitudes de tensão e corrente. Materiais supercondutores em temperaturas muito baixas têm resistência zero. Isolantes (tais como ar, diamante, ou outros materiais não-condutores) podem ter resistência extremamente alta (mas não infinita), mas falham e admitem que ocorra um grande fluxo de corrente sob tensões suficientemente altas. A resistência de um componente pode ser calculada pelas suas características físicas. A resistência é proporcional ao comprimento do resistor e à resistividade do material (uma  propriedade do material), e inversamente proporcional à área da secção transversal. A equação para

determinar a resistência de uma seção do material é:

Onde é a resistividade do material, é o comprimento, e é a área da secção transversal. Isso pode ser estendido a uma integral para áreas mais complexas, mas essa fórmula simples é aplicável a fios cilíndricos e à maioria dos condutores comuns. Esse valor está sujeito a mudanças em altas freqüências devido ao efeito skin, que diminui a superfície disponível da área. Resistores padrões são vendidos com capacidades variando desde uns poucos miliohms até cerca de um gigaohm; apenas uma série limitada de valores, chamados valores preferenciais, estão disponíveis. Na prática, o componente discreto vendido como "resistor" não é um resistor perfeito como definido acima. Resistores são freqüentemente marcados com sua tolerância (a variação máxima esperada da resistência marcada). Em resistores codificados com cores, uma faixa mais cinza à direita demonstra uma tolerância de 10%, uma faixa dourada significa 5% de tolerância, uma faixa vermelha marca 2% e uma faixa marrom significa 1% de tolerância. Resistores com tolerância menores, também chamados de resistores de precisão, também estão disponíveis. Um resistor tem uma d.d.p. e corrente máximas de trabalho, acima das quais a resistência pode mudar  (drasticamente, em alguns casos) ou o resistor pode se danificar fisicamente (queimar, por  exemplo). Embora alguns resistores tenham as taxas de d.d.p. e corrente especificadas, a maioria deles são taxados em função de sua potência máxima, que é determinada pelo tamanho físico. As taxas mais comuns para resistores de composição de carvão e filme de metal são 1/8 watt, 1/4 watt e 1/2 watt. Resistores de filme de metal são mais estáveis que os de carvão quanto a mudanças de temperatura e a idade. Resistores maiores são capazes de dissipar mais calor por causa de sua área de superfície maior. Resistores dos tipos wire-wound e sand-filled são usados quando se necessita de taxas grandes de potência, como 20 Watts. Além disso, todos os resistores reais também introduzem alguma indutância e capacitância, que mudam o comportamento dinâmico do resistor  da equação ideal.

2. 2. Resistor variável

O resistor variável é um resistor cujos valores podem ser ajustados por um movimento mecânico, por exemplo, rodando manualmente. Os resistores variáveis podem ser de volta simples ou de múltiplas voltas com um elemento helicoidal. Alguns têm um display mecânico para contar  as voltas.

Reostato

é um resistor variável com dois terminais, sendo um fixo e o outro deslizante. Geralmente são utilizados com altas correntes.

Potenciômetro

É um tipo de resistor variável comum, sendo comumente utilizado para controlar o volume em amplificadores de áudio.

(10)

Metal Óxido Varistor ou M.O.V. / Varistores

É um tipo especial de resistor que tem dois valores de resistência muito diferentes, um valor  muito alto em baixas voltagens (abaixo de uma voltagem específica), e outro valor baixo de resistência se submetido a altas voltagens (acima da voltagem específica do varistor). Ele é usado geralmente para proteção contra curtos-circuitos em extensões ou pára-raios usados nos postes de ruas, ou como "trava" em circuitos eletromotores.

2. 2. 1. Termistores

Dão resistências que variam o seu valor de acordo com a temperatura a que estão submetidas. A relação geralmente é directa, porque os metais usados têm uma coeficiente de temperatura positivo, ou seja se a temperatura sobe, a resistência também sobe. Os metais mais usado são a platina, daí as desisgnação Pt100 e Pt1000(100 porque à temperatura 0 °C, têm uma resistência de 100ohm, 1000 porque à temperatura 0 °C, têm uma resistência de 1000ohm) e o  Níquel (Ni100).

Os termistores PTC e NTC, são um caso particular, visto que em vez de metais usam semicondutores, por isso alguns autores não os consideram resistores.

• PTC (Positive Temperature Coefficient)

É um resistor dependente de temperatura com coeficiente de temperatura positivo. Quando a temperatura se eleva, a resistência do PTC aumenta. PTCs são freqüentemente encontrados em televisores, em série com a bobina desmagnetizadora, onde são usados para prover uma curta rajada de corrente na bobina quando o aparelho é ligado.

Uma versão especializada de PTC é o polyswitch que age como um fusível auto-rearmável. • NTC (Negative Temperature Coefficient)

Também é um resistor dependente da temperatura, mas com coeficiente negativo. Quando a temperatura sobe, sua resistência cai. NTC são freqüentemente usados em detectores simples de temperaturas, e instrumentos de medidas.

LDR (Light Dependent Resistor)

É uma resistência que varia, de acordo com a intensidade luminosa incidida. A relação geralmente é inversa, ou seja a resistência diminui com o aumento da intensidade luminosa. Muito usado em sensores de luminosidade ou crespusculares.

2. 3. Código de cores

PRETO MARROM VERMELHO LARANJA AMARELO VERDE AZUL VIOLETA CINZA BRANCO

0 1 2 3 4 5 6 7 8 9

A primeira faixa em um resistor é interpretada como o primeiro digito do valor ôhmico da resistência do resistor. Para o resistor mostrado abaixo, a primeira faixa é amarela, assim o primeiro dígito é 4:

A segunda faixa dá o segundo dígito. Essa é uma faixa violeta, então o segundo dígito é 7. A terceira faixa é chamada de multiplicador e não é interpretada do mesmo modo. O número associado à cor do multiplicador nos informa quantos "zeros" devem ser colocados após os dígitos que já temos. Aqui, uma faixa vermelha nos diz que devemos acrescentar 2 zeros. O valor ôhmico desse resistor é então 4 7 00 ohms, quer dizer, 4 700Ω ou 4,7 kΩ.

Verifique novamente, nosso exemplo, para confirmar que você entendeu realmente o código de cores dados pelas três primeiras faixas coloridas no corpo do resistor.

A quarta faixa (se existir), um pouco mais afastada das outras três, é a faixa de tolerância. Ela nos informa a precisão do valor real da resistência em relação ao valor lido pelo código de

(11)

cores. Isso é expresso em termos de porcentagem. A maioria dos resistores obtidos nas lojas apresentam uma faixa de cor prata, indicando que o valor real da resistência está dentro da tolerância dos 10% do valor nominal. A codificação em cores, para a tolerância é a seguinte:

COR MARROM VERMELHO OURO PRATA TOLERÂNCIA + ou – 1% + ou – 2% + ou – 5% + ou – 10%

 Nosso resistor apresenta uma quarta faixa de cor OURO. Isso significa que o valor nominal que encontramos 4 700Ω tem uma tolerância de 5% para mais ou para menos. Ora, 5% de 4 700Ω são 235Ω então, o valor real de nosso resistor pode ser qualquer um dentro da seguinte faixa de valores: 4 700Ω - 235Ω= 4 465Ω e 4 700Ω+ 235Ω= 4 935Ω.

A ausência da quarta faixa indica uma tolerância de 20%.

2. 4. Estrutura

A ilustração mostra detalhes construtivos de um resistor de filme de carbono (carvão):

Durante a construção, uma película fina de carbono (filme) é depositada sobre um pequeno tubo de cerâmica. O filme resistivo é enrolado em hélice por fora do tubinho até que a resistência entre os dois extremos fique tão próxima quanto possível do valor que se deseja. São acrescentados terminais (um em forma de tampa e outro em forma de fio) em cada extremo e, a seguir, o resistor é recoberto com uma camada isolante. A etapa final é pintar faixas coloridas transversais para indicar  o valor da resistência.

O "retângulo" com terminais é uma representação simbólica para os resistores de valores fixos tanto na Europa como no Reino Unido; a representação em "linha quebrada" (zig-zag) é usada nas Américas e Japão

(12)

Resistores especiais também são usados como transdutores em circuitos sensores. Transdutores são componentes eletrônicos que efetuam conversão de energia de uma modalidade  para outra onde, uma delas, é necessariamente energia elétrica.

Microfones, interruptores e Resistores Dependentes da Luz ou LRDs, são exemplos de transdutores de entrada.

Alto-falantes, lâmpadas de filamento, relés, "buzzers" e também os LEDs, são exemplos de transdutores de saída.

 No caso dos LRDs a quantidade de luz em suas superfícies resultam na alteração dos valores ôhmicos de suas resistências.

Como se verá (Teoria III), um transdutor de entrada é freqüentemente associado a um resistor para fazer um circuito denominado divisor de tensão. Nesse caso, a tensão recolhida sobre esse divisor de tensão será um "sinal de tensão" que reflete as mudanças de iluminação sobre o LDR.

Em outros circuitos, os resistores podem ser usados para dirigir frações da corrente elétrica para  partes particulares do circuito, assim como podem ser usados para controlar o "ganho de tensão"

em amplificadores. Resistores também são usados em associações com capacitores no intuito de alterar sua "constante de tempo" (ajuste do tempo de carga ou descarga).

A maioria dos circuitos requerem a presença de resistores para seus corretos funcionamento. Assim sendo, é preciso saber alguns detalhes sobre diferentes tipos de resistores e como fazer uma boa escolha dos resistores disponíveis (valores adequados, seja em , k ou M ) para uma particular   

aplicação.

3. Capacitor 

Capacitor (ou condensador) é um componente eletrônico que armazena energia elétrica em um campo elétrico existente em seu interior. Apesar de não conduzir corrente elétrica, a corrente que ele armazena será descarregada assim que não houver mais resistência entre seus terminais,  podendo assim, manter uma corrente alternada estabilizada, como em um sinal de áudio ou filtro de  baixa.

3. 1. História

A Jarra de Leyden foi a primeira forma de capacitor. Fora inventada na Universidade de Leyden, na Holanda por Pieter van Musschenbroek. Ela era uma jarra de vidro coberta interna e externamente, mas sem se tocarem, com metal. A cobertura interna era conectada a uma vareta que saia pelo gargalo da jarra e terminava numa bola de metal, desta forma o vidro da jarra comportava-se como o dielétrico armazenador das cargas elétricas e os metais das paredes interna e externa como as armaduras deste capacitor primitivo.

(13)

Os capacitores são formados por dois condutores, denominados “armaduras”, as armaduras estão sempre separadas por substâncias dielétricas ou isolantes (ar, água pura, óleo). Um capacitor  funciona da seguinte forma: em um circuito elétrico, sempre existirá a fonte de energia (uma pilha  por exemplo) e o objeto que receberá a corrente elétrica (uma lâmpada por exemplo), e dentro de

circuitos elétricos, por existe os capacitores que funcionam como “ajudantes” no enviou da corrente elétrica, ou seja, quando a carga elétrica liberada é excessiva, o capacitor tem a função de armazenar a energia extra impedindo que o objeto queime ou estoure. Para explicar melhor, uma maneira de visualizar a ação do capacitor é imaginá-lo como uma torre de água conectada a uma tubulação. Uma torre de água "armazena" pressão de água - quando as bombas do sistema de água enviam mais água do que a cidade necessita, o excesso é armazenado na torre de água, então, nos momentos de maior demanda, o excesso de água flui para fora da torre para manter a pressão alta. Um capacitor armazena elétrons da mesma forma, e pode liberá-los mais tarde.

Em umcircuito eletrônico, um capacitor é indicado da seguinte forma:

Quando vocêconecta um capacitor a uma pilha, é isto que acontece:

• a placa do capacitor conectada ao terminal negativo da pilha aceita os elétrons que a pilha

 produz

• a placa do capacitor conectada ao terminal positivo da pilha perde os elétrons para a pilha

Depois de carregado, o capacitor possui a mesma tensão que a pilha (1,5 volts na pilha significa 1,5 volts no capacitor). Em um capacitor pequeno, a capacidade é pequena. Porém capacitores grandes podem armazenar uma carga considerável. Você poderá encontrar capacitores do tamanho de latas de refrigerante, por exemplo, que armazenam carga suficiente para acender o bulbo de uma lâmpada de flash por um minuto ou mais. Quando você vê relâmpagos no céu, o que você está vendo é um imenso capacitor onde uma placa é a nuvem e a outra placa é o solo, e o relâmpago é a liberação da carga entre essas duas "placas". Digamos que você conecte um capacitor desta maneira:

(14)

Você tem uma pilha, uma lâmpada e um capacitor. Se o capacitor for grande, você notará que, quando conecta a pilha, a lâmpada se acenderá à medida que a corrente flui da pilha para o capacitor e o carrega. A lâmpada diminuirá sua luminosidade progressivamente até finalmente apagar, assim que o capacitor atingir sua capacidade. Então você poderá remover a pilha e substituí-la por um fio elétrico. A corrente fluirá de uma placa do capacitor para a outra. A lâmpada acenderá e então começará a diminuir cada vez mais sua luminosidade, até apagar assim que o capacitor estiver totalmente descarregado (o mesmo número de elétrons nas duas placas).

3. 3 Capacitância

Capacitância é capacidade que um capacitor tem de armazenar corrente elétrica em um campo eletrostático. A capacitância é medida pelo quociente de cargas (Q) armazenadas pela diferença de potencial ou tensão (V) que existe entre as placas:

A unidade que é medida a capacitância é o farad. Pelo Sistema Internacional de Unidades (SI), um capacitor tem a capacitância de um farad (F) quando um coulomb de carga causa uma diferença de potencial de um volt (V) entre as placas. O farad é considerado muito grande para circuitos práticos, sendo assim, é necessário usar os valores de microfarads (μF), nanofarads (nF) ou picofarads (pF).

A capacitância de um capacitor de placas paralelas constituído de dois eletrodos planos idênticos de área A separados à distância constante d é aproximadamente igual a:

Onde:

(15)

• ε0 é a permissividade eletrostática do vácuo ou espaço livre

• εr é a constante dielétrica ou permissividade relativa do isolante utilizado.

3. 3. 1. Circuitos elétricos

Os elétrons não podem passar diretamente através do dielétrico de uma placa do capacitor   para a outra. Quando uma tensão é aplicada a um capacitor através de um circuito externo, a

corrente flui para uma das placas, carregando-a, enquanto flui da outra placa, carregando-a, inversamente. Em outras palavras, quando a Tensão que flui por um capacitor muda, o capacitor  será carregado ou descarregado. A fórmula corrente é dada por:

Onde I é a corrente fluindo na direção convencional, e dV/dt é a derivada da tensão, em relação ao tempo.

 No caso de uma tensão contínua (DC ou também designada CC) logo um equilíbrio é encontrado, onde a carga das placas correspondem à tensão aplicada pela relação Q=CV, e nenhuma corrente mais poderá fluir pelo circuito. Logo a corrente contínua (DC) não pode passar. Entretanto, correntes alternadas (AC) podem: cada mudança de tensão ocasiona carga ou descarga do capacitor, permitindo desta forma que a corrente flua.

Propriedades importantes dos capacitores, além de sua capacitância, são a máxima tensão de trabalho e a quantidade de energia perdida no dielétrico. Para capacitores de alta potência a corrente máxima e a Resistência em Série Equivalente (ESR) são considerações posteriores. Um ESR típico para a maioria dos capacitores está entre 0,0001 ohm e 0,01 ohm, valores baixos  preferidos para aplicações de correntes altas.

Já que capacitores têm ESRs tão baixos, eles têm a capacidade de entregar correntes enormes em circuitos curtos, o que pode ser perigoso. Por segurança, todos os capacitores grandes deveriam ser descarregados antes do manuseio. Isso é feito colocando-se um resistor pequeno de 1 ohm a 10 ohm nos terminais, isso é, criando um circuito entre os terminais, passando pelo resistor.

Capacitores também podem ser fabricados em aparelhos de circuitos integrados de semicondutores, usando linhas metálicas e isolantes num substrato. Tais capacitores são usados  para armazenar sinais analógicos em filtros chaveados por capacitores, e para armazenar dados

digitais em memória dinâmica de acesso aleatória (DRAM). Diferentemente de capacitores discretos, porém, na maior parte do processo de fabricação, tolerâncias precisas não são possíveis (15 % a 20 % é considerado bom).

3. 4. Aplicações

Os capacitores são usados nas fontes de alimentação, nas placas mãe e em inúmeros outros componentes. A função mais comum é retificar e estabilizar a corrente elétrica, evitando que variações possam danificar qualquer dispositivo. Capacitores também são usados na correção de fator de potência. É justamente por causa dos capacitores que nunca devemos tocar nos

(16)

componentes internos da fonte de alimentação sem os cuidados adequados. Você pode levar um choque considerável mesmo que a fonte esteja desligada da tomada.

Os capacitores são também a base da memória RAM, onde para cada bit de dados temos um capacitor e um transístor. O transístor se encarrega de ler e gravar o bit, enquanto o capacitor  armazena-o. Quando o capacitor está descarregado temos um bit 0 e quando está carregado temos um bit 1. Como no caso da memória o capacitor mantém sua carga por apenas alguns milésimos de segundo, os dados precisam ser reescritos continuamente. É por isso que a memória RAM é volátil.

A diferença entre um capacitor e uma pilha é que o capacitor pode descarregar toda sua carga em uma pequena fração de segundo, já uma pilha demoraria alguns minutos para descarregar-se. É por isso que o flash eletrônico em uma câmera utiliza um capacitor, a pilha carrega o capacitor do flash durante vários segundos, e então o capacitor descarrega toda a carga no bulbo do flash quase que instantaneamente. Isto pode tornar um capacitor grande e carregado extremamente  perigoso, os flashes e as TVs possuem advertências sobre abri-los por este motivo. Eles possuem

grandes capacitores que poderiam matá-lo com a carga que contêm.

Os capacitores são utilizados de várias maneiras em circuitos eletrônicos:

• Algumas vezes, os capacitores são utilizados para armazenar carga para utilização rápida. É isso que o flash faz. Os grandes lasers também utilizam esta técnica para produzir flashes muito  brilhantes e instantâneos;

• Os capacitores também podem eliminar ondulações. Se uma linha que conduz corrente contínua (CC) possui ondulações e picos, um grande capacitor pode uniformizar a tensão absorvendo os picos e preenchendo os vales;

• Um capacitor pode bloquear a CC. Se você conectar um pequeno capacitor a uma pilha, então não fluirá corrente entre os pólos da pilha assim que o capacitor estiver carregado (o que é instantâneo se o capacitor é pequeno). Entretanto, o sinal de corrente alternada (CA) flui através do capacitor sem qualquer impedimento. Isto ocorre porque o capacitor irá carregar e descarregar à medida que a corrente alternada flutua, fazendo parecer que a corrente alternada está fluindo;

Uma das utilizações mais comuns dos capacitores é combiná-los com indutores para criar  osciladores.

3. 5. Identificação de valor 

3. 5. 1. Capacitor cerâmico

Os capacitores cerâmicos apresentam impressos no próprio corpo um conjunto de três algarismos e uma letra. Para se obter o valor do capacitor os dois primeiros algarismos representam os dois primeiros dígitos do valor do capacitor, e o terceiro algarismo (algarismo multiplicador) representa o número de zeros à direita. A letra representa a tolerância do capacitor (a qual pode ser  omitida), que é a faixa de valores em que a capacitância variará. Para os capacitores cerâmicos até 10pF esta é expressa em pF. Para os acima de 10pF é expressa em porcentagem. Por exemplo um capacitor com 224F impresso no próprio corpo, possuirá uma capacitância de 220000pF com uma tolerância de +/- 1% (seu valor pode ser um ponto percentual à mais ou à menos desse valor).

(17)

3. 5. 2. Capacitor de poliéster 

Para a identificação dos valores do capacitor de poliéster é usado um conjunto de 7 faixas coloridas (conforme tabela), embora seja um método em desuso pelos fabricantes, no qual cada faixa representará respectivamente:primeiro algarismo,segundo algarismo, algarismo multiplicador, tolerância e tensão.O valor é obtido em pF.

Tabela para identificação dos valores do capacitor de poliéster 

3. 6. Capacitores variáveis

Há dois tipos distintos de capacitores variáveis, cujas capacitâncias podem ser mudadas intencionalmente e repetidamente ao longo da vida do dispositivo:

• Aqueles que usam uma construção mecânica para mudar a distância entre as placas, ou a superfície da área das placas superpostas. Esses dispositivos são chamados capacitores de sintonia, ou simplesmente "capacitores variáveis", e são usados em equipamentos de telecomunicação para sintonia e controle de frequências.Neste tipo de capacitor o elemento dielétrico é o próprio ar.

• Aqueles que usam o fato de que a espessura da camada de depleção de um diodo varia com a tensão da corrente contínua atravessando o diodo. Esses diodos são chamados de diodos de capacitância variável, varactores ou varicaps. Qualquer diodo exibe esse efeito, mas dispositivos vendidos especificamente como varactores têm uma área de junção grande e um perfil de dopagem especificamente dimensionado para maximizar a capacitância.

(18)

• Em um capacitor microfone (comumente conhecido como um microfone condensador), o diafragma age como uma placa do capacitor, e as vibrações produzem alterações na distância entre o diafragma e uma placa fixa, alterando a tensão entre as placas.

Capacitor variável de sintonia de rádio

4. Transistor 

O transistor é um componente eletrônico que começou a popularizar-se na década de 1950, tendo sido o principal responsável pela revolução da eletrônica na década de 1960. O termo vem de transfer resistor (resistor/resistência de transferência), como era conhecido pelos seus inventores.

Os transistores são principalmente usados como amplificadores e interruptores de sinais elétricos. A corrente elétrica que passa entre coletor e emissor do transistor varia dentro de determinados parâmetros pré-estabelecidos pelo projetista do circuito eletrônico. Esta variação é feita através da variação de corrente num dos terminais chamados base, o que, conseqüentemente, ocasiona o processo de amplificação de sinal.

Entende-se por "amplificar" o procedimento de tornar um sinal elétrico mais fraco num mais forte. Um sinal elétrico de baixa intensidade, como os sinais gerados por um microfone, é injetado num circuito eletrônico (transistorizado por exemplo), cuja função principal é transformar  este sinal fraco gerado pelo microfone em sinais elétricos com as mesmas características, mas com  potência suficiente para excitar os alto-falantes. A este processo todo dá-se o nome de ganho de

sinal.

4. 1. História

Durante a década de 1940 e início da de 1950, a maior parte da indústria continuou trabalhando no aperfeiçoamento das válvulas, obtendo modelos menores e mais confiáveis. Porém, vários pesquisadores, começaram a procurar alternativas menos problemáticas.

Várias dessas pesquisas tinham como objetivo o estudo de novos materiais, tanto condutores quanto isolantes. Os pesquisadores começaram então a descobrir que alguns materiais não se enquadravam nem em um grupo nem em outro, pois, de acordo com a circunstância, podiam atuar tanto como isolantes quanto como condutores, formando uma espécie de grupo intermediário que foi logo apelidado de grupo dos semicondutores.

(19)

Haviam encontrado a chave para desenvolver o transístor. O primeiro protótipo surgiu nos Laboratórios da Bell Telephone por Bardeen e Brattain em 16 de dezembro de 1947 ( Era consistindo em um pequeno bloco de germânio (que na época era junto com o silício o  semicondutor mais pesquisado) e três filamentos de ouro. Um filamento era o pólo positivo, o outro, o pólo negativo, enquanto o terceiro tinha a função de controle.) e foi inicialmente

demonstrado em 23 de Dezembro de 1948, por John Bardeen, Walter Houser Brattain e William Bradford Shockley, que foram laureados com o Nobel de Física em 1956. Ironicamente, eles  pretendiam fabricar um transistor de efeito de campo (FET) idealizado por Julius Edgar Lilienfeld

antes de 1925, mas acabaram por descobrir uma amplificação da corrente no ponto de contato do transistor. Isto evoluiu posteriormente para converter-se no transistor de junção bipolar (BJT). O objetivo do projeto era criar um dispositivo compacto e barato para substituir as válvulas termoiônicas usadas nos sistemas telefônicos da época.

Os transistores bipolares passaram, então, a ser incorporados a diversas aplicações, tais como aparelhos auditivos, seguidos rapidamente por rádios transistorizados. Mas a indústria norte-americana não adotou imediatamente o transistor nos equipamentos eletrônicos de consumo,  preferindo continuar a usar as válvulas termoiônicas, cuja tecnologia era amplamente dominada. Foi por meio de produtos japoneses, notadamente os rádios portáteis fabricados pela Sony, que o transistor passou a ser adotado em escala mundial. Não houve muitas mudanças até então.

A grande vantagem dos transistores em relação às válvulas foi demonstrada em 1958, quando Jack Kilby, da Texas Instruments, desenvolveu o primeiro circuito integrado, consistindo de um transistor, três resistores e um capacitor, implementando um oscilador simples. A partir daí, via-se a possibilidade de criação de circuitos mais complexos, utilizando integração de componentes. Isto marcou uma transição na história dos transistores, que deixaram de ser vistos como substitutos das válvulas e passaram a ser encarados como dispositivos que possibilitam a criação de circuitos complexos, integrados.

O primeiro transístor era muito grande, mas não demorou muito para que esse modelo inicial fosse aperfeiçoado. Durante a década de 1950, o transístor foi aperfeiçoado e passou a gradualmente dominar a indústria, substituindo rapidamente as problemáticas válvulas. Os modelos foram diminuindo de tamanho, caindo de preço e tornando-se mais rápidos. Alguns transístores da época podiam operar a até 100 MHz. Claro que essa era a freqüência que podia ser alcançada por  um transístor sozinho, nos computadores da época, a freqüência de operação era muito menor, já que em cada ciclo de processamento o sinal precisa passar por vários transístores.

Mas, o grande salto foi a substituição do germânio pelo silício. Isso permitiu miniaturizar  ainda mais os transístores e baixar seu custo de produção. Os primeiros transístores de junção comerciais (já similares aos atuais) foram produzidos a partir de 1960 pela Crystalonics, decretando o final da era das válvulas.

(20)

O primeiro transistor 

4. 2. Funcionamento

 No transistor de junção bipolar ou TJB (BJT – Bipolar Junction Transistor na terminologia inglesa), o controle da corrente coletor-emissor é feito injetando corrente na base. O efeito transistor ocorre quando a junção coletor-base é polarizada reversamente e a junção base-emissor é  polarizada diretamente. Uma pequena corrente de base é suficiente para estabelecer uma corrente entre os terminais de coletor-emissor. Esta corrente será tão maior quanto maior for a corrente de  base, de acordo com o ganho.

4. 2. 1. Características de um transistor 

O fator de multiplicação da corrente na base (iB), mais conhecido por Beta do transistor ou  por hfe, que é dado pela expressão iC = iB x ß

• iC: corrente de coletor  • iB: corrente de base

• B: beta (ganho de corrente de emissor)

(21)

Existem três configurações básicas (BC, CC e EC), cada uma com suas vantagens e desvantagens.

 Base comum (BC)

• Baixa impedância(Z) de entrada. • Alta impedância(Z) de saída.

• Não há defasagem entre o sinal de saída e o de entrada. • Amplificação de corrente igual a um.

Coletor comum (CC)

• Alta impedância(Z) de entrada. • Baixa impedância(Z) de saída.

• Não há defasagem entre o sinal de saída e o de entrada. • Amplificação de tensão igual a um.

 Emissor comum (EC)

• Média impedância(Z) de entrada. • Alta impedância(Z) de saída.

• Defasagem entre o sinal de saída e o de entrada de 180°. • Pode amplificar tensão e corrente, até centenas de vezes.

Os transistores possuem diversas características. Seguem alguns exemplos dos parâmetros mais comuns que poderão ser consultadas nos datasheets dos fabricantes:

• Tipo: é o nome do transistor.

• Pol: polarização; negativa quer dizer NPN e positiva significa PNP. • VCEO: tensão entre coletor e emissor com a base aberta.

• VCER: tensão entre coletor e emissor com resistor no emissor. • IC: corrente máxima do coletor.

(22)

• Hfe: ganho (beta). • Ft: freqüência máxima.

• Encapsulamento: a maneira como o fabricante encapsulou o transistor nos fornece a identificação dos terminais.

Existem também outros tipos de transistores, notadamente os de efeito de campo (transistores FET, de Field Effect Transistor); neste caso, o controle da corrente é feito por tensão aplicada à porta.

4. 3. Fabricação

Símbolos dos transistores bipolares

Os materiais utilizados na fabricação do transistor são principalmente o Silício (Si), o Germânio (Ge), o Gálio (Ga) e alguns óxidos. Na natureza, o silício é um material isolante elétrico, devido à conformação das ligações eletrônicas de seus átomos, gerando uma rede eletrônica altamente estável. Atualmente, o transistor de germânio não é mais usado, tendo sido substituído  pelo de silício, que possui características muito melhores.

O silício é purificado e passa por um processo que forma uma estrutura cristalina em seus átomos. O material é cortado em finos discos, que a seguir vão para um processo chamado de dopagem, onde são introduzidas quantidades rigorosamente controladas de materiais selecionados (conhecidos como impurezas) que transformam a estrutura eletrônica, introduzindo-se entre as ligações dos átomos de silício. O Silício realiza ligações covalentes de quatro elétrons. Quando adicionamos uma impureza com 3 elétrons na última camada, faltará um elétron na ligação covalente, formando os buracos e caracterizando a pastilha como pastilha P. Quando adicionamos uma impureza com 5 elétrons na última camada, vai sobrar um elétron na ligação covalente com o silício. Esses elétrons livres têm pouca interação com seu átomo, então qualquer energia fornecida o faz sair, sendo assim um elétron livre (assim se forma a pastilha N, que tem esse nome por ter  maior número de elétrons livres). A pastilha P tem menos elétrons livres e mais "buracos" e a Pastilha N tem mais elétrons livres que buracos. Não podemos dizer que a pastilha P é positiva nem que a pastilha N é negativa, porque a soma total de elétrons é igual à soma total de prótons. Quando unimos a pastilha P e a pastilha N, os elétrons livres em excesso na pastilha N migram para a  pastilha P e os buracos da pastilha P migram para a pastilha N. Deste modo a pastilha P fica

(23)

O transistor é montado justapondo-se uma camada P, uma N e outra P (unindo-se dois diodos), criando-se um transistor do tipo PNP. O transistor do tipo NPN é obtido de modo similar. A camada do centro é denominada base, e as outras duas são o emissor e o coletor. No símbolo do componente, o emissor é indicado por uma seta, que aponta para dentro do transistor se o componente for PNP, ou para fora, se for NPN.

4. 4. Importância

O transistor é considerado por muitos uma das maiores descobertas ou invenções da história moderna, tendo tornado possível a revolução dos computadores e equipamentos eletrônicos. A chave da importância do transistor na sociedade moderna é sua possibilidade de ser produzido em enormes quantidades usando técnicas simples, resultando preços irrisórios.

É conveniente salientar que é praticamente impossível serem encontrados circuitos integrados que não possuam, internamente, centenas, milhares ou mesmo milhões de transistores,  juntamente com outros componentes como resistências e condensadores. Por exemplo, o

microprocessador Cell do console Playstation 3 tem aproximadamente 234 milhões de transistores, usando uma arquitetura de fabricação de 45 nanômetros, ou seja, a porta de controle de cada transistor tem apenas 45 milionésimos de um milímetro.

Seu baixo custo permitiu que se transformasse num componente quase universal para tarefas não-mecânicas. Visto que um dispositivo comum, como um refrigerador, usaria um dispositivo mecânico para o controle, hoje é frequente e muito mais barato usar um microprocessador contendo alguns milhões de transistores e um programa de computador  apropriado para realizar a mesma tarefa. Os transistores, hoje em dia, têm substituído quase todos os dispositivos eletromecânicos, a maioria dos sistemas de controle, e aparecem em grandes quantidades em tudo que envolva eletrônica, desde os computadores aos carros.

Seu custo tem sido crucial no crescente movimento para digitalizar toda a informação. Com os computadores transistorizados a oferecer a habilidade de encontrar e ordenar rapidamente informações digitais, mais e mais esforços foram postos em tornar toda a informação digital. Hoje, quase todos os meios na sociedade moderna são fornecidos em formato digital, convertidos e apresentados por computadores. Formas analógicas comuns de informação, tais como a televisão ou os jornais, gastam a maioria do seu tempo com informação digital, sendo convertida no formato tradicional apenas numa pequena fração de tempo.

5. Engenharia de Software

Engenharia de software denomina o planejamento, a estruturação, a criação e o aperfeiçoamento e manutenção de software com custo e prazo estimados, essa disciplina que aborda a construção de software complexo - com muitas partes interconectadas e diferentes versões - por uma equipe de analistas, projetistas, programadores, gerentes, "testadores", etc.

A engenharia de software tem por objetivos a aplicação de teoria, modelos, formalismos e técnicas e ferramentas da ciência da computação e áreas afins para a produção (ou desenvolvimento) sistemática de software.

(24)

Associado ao desenvolvimento é preciso também aplicar métodos, técnicas e ferramentas  para o gerenciamento do processo de produção. Isto envolve planejamento de custos e prazos,

montagem da equipe e garantia de qualidade do produto e do processo.

Finalmente, a engenharia de software visa a produção da documentação formal do produto, do processo, dos critérios qualidade e dos manuais de usuários finais.

6. Linguagem C

A linguagem C é uma linguagem de alto nível, genérica. Foi desenvolvida por   programadores para programadores tendo como meta características de flexibilidade e  portabilidade. C é uma linguagem de programação compilada1 de propósito geral, estruturada2 ,

imperativa3, procedural3, de alto nível, padronizada pela ISO, criada em 1972, por Dennis Ritchie,

no AT&T Bell Labs, essa linguagem nasceu juntamente com o advento da teoria de linguagem estruturada e do computador pessoal. Assim tornou-se rapidamente uma linguagem “popular” entre os programadores. O C foi usado para desenvolver o sistema operacional UNIX, e hoje esta sendo usada para desenvolver novas linguagens, entre elas a linguagem C++ e Java.

6. 1. História

O desenvolvimento inicial de C ocorreu no AT&T Bell Labs entre 1969 e 1973. Não se sabe se o nome "C" foi dado à linguagem porque muitas de suas características derivaram da linguagem B e C é a letra conseguinte no alfabeto, ou porque "C" é a segunda letra do nome da linguagem BCPL, da qual derivou-se a linguagem B.

C foi originalmente desenvolvido para a implementação do sistema Unix (originalmente escrito em PDP-7 Assembly, por Dennis Ritchie e Ken Thompson). Em 1973, com a adição do tipo struct, C tornou-se poderoso o bastante para a maioria das partes do núcleo do Unix, serem reescritas em C. Este foi um dos primeiros sistemas que foram implementados em uma linguagem que não o Assembly, sendo exemplos anteriores os sistemas: Multics (escrito em PL/I) e TRIPOS (escrito em BCPL). Segundo Ritchie, o período mais criativo ocorreu em 1972.

6. 2. Características do C

C é uma linguagem para implementação de sistemas, que tem acesso de baixo nível à memória e baixos requerimentos do hardware. Também foi desenvolvido para ser uma linguagem de alto nível, para maior reaproveitamento do código. C foi útil para muitas aplicações que foram codificadas originalmente em Assembly.

A linguagem C foi criada com o objectivo principal em mente: facilitar a criação de  programas extensos com menos erros, recorrendo ao paradigma da programação procedural, mas

sobrecarregando menos o autor do compilador, cujo trabalho complica-se ao ter de realizar as características complexas da linguagem.

Entre as principais características do C, podemos citar:

• O C é uma linguagem de alto nível com uma sintaxe bastante estruturada e flexível tornando sua programação bastante simplificada.

(25)

• Programas em C são compilados, gerando programas executáveis.

• O C compartilha recursos tanto de alto quanto de baixo nível, pois permite acesso e  programação direta do microprocessador. Com isto, rotinas cuja dependência do tempo é crítica,  podem ser facilmente implementadas usando instruções em Assembly. Por esta razão o C é a

linguagem preferida dos programadores de aplicativos.

• O C é uma linguagem estruturalmente simples e de grande portabilidade. O compilador C gera códigos mais enxutos e velozes do que muitas outras linguagens.

• Embora estruturalmente simples (poucas funções intrínsecas) o C não perde funcionalidade pois permite a inclusão de uma farta quantidade de rotinas do usuário. Os fabricantes de compiladores fornecem uma ampla variedade de rotinas pré-compiladas em  bibliotecas.

C tem como ponto forte, a sua eficiência, e é a linguagem de programação preferida para o desenvolvimento de sistemas e softwares de base, apesar de também ser usada para desenvolver   programas de computador . É também muito usada no ensino de ciência da computação, mesmo não

tendo sido projetada para estudantes e apresentando algumas dificuldades no seu uso. Outra característica importante de C, é sua proximidade do código de máquina, que permite que um  projetista seja capaz de fazer algumas previsões de como o software irá se comportar, ao ser 

executado.

6. 3. TIPOS DE DADOS

C tem um sistema de tipos semelhante ao de alguns descendentes da linguagem ALGOL, tais como Pascal. Possui tipos para números inteiros de vários tamanhos com e sem sinal, números de ponto flutuante, caracteres e estruturas (structs). C usa extensivamente ponteiros, um tipo muito simples de referência que guarda o endereço de memória da variável. O ponteiro pode ser desreferenciado,

uma operação que busca o objecto que se encontra na morada da memória que o ponteiro possui, morada essa que pode ser manipulada através de aritmética de ponteiros. Durante o tempo de execução, o ponteiro é simplesmente uma morada de máquina tais como aquelas manipuladas em

 Assembly, mas em tempo de compilação possui um tipo complexo que indica o tipo do objecto para

onde ele aponta, permitindo que se verifique o tipo de expressões, incluindo ponteiros. Os ponteiros são usados extensivamente em C. O tipo linha de texto de C é simplesmente um ponteiro para um vetor de caracteres e alocação dinâmica de memória, descrita abaixo, é efectuada através de  ponteiros.

Os ponteiros em C possuem um valor reservado especial,NULL, que indica que não estão a apontar para uma morada. O uso desse valor como morada é muito útil na construção de várias estruturas de dados, mas causa comportamento não-definido (possivelmente uma falha de sistema) ao ser desreferenciado. Um ponteiro que possui o valor NULL é chamado  ponteiro nulo. Os  ponteiros são declarados (e desreferenciados) com um* (asterisco), portanto o tipoint*denota um

 ponteiro para número(s) inteiro(s). A linguagem C também fornece um tipo especial de ponteiros, o

(26)

A linguagem C também tem apoio a nível de linguagem para vetores estáticas (de dimensão fixa) de tipos. As disposições de tipos podem parecer ter mais que uma dimensão apesar de serem tecnicamente disposições de disposições de tipos. Em memória, tais estruturas são posicionadas com as linhas uma depois da outra (a alternativa seria armazenar os dados em colunas, usado em outras linguagens). O acesso a disposições de tipos é feito através de ponteiros e aritmética de  ponteiros; o nome da disposição é tratado como se fosse um ponteiro que aponta para o início da disposição. Em certas aplicações não é razoável usarem-se disposições de tipos de dimensão fixa e  por isso a alocação dinâmica de memória pode ser usada para criar disposições de tipos de

dimensão variável.

Como a linguagem C é regularmente usada em programação de baixo-nível de sistemas, há casos em que é necessário tratar um número inteiro como sendo um ponteiro, um número de ponto flutuante como sendo um número inteiro ou um tipo de ponteiro como sendo outro. Para estes casos, a linguagem C fornece a capacidade de "moldagem" (também denominado "conversão de tipo" ou casting), uma operação que, caso seja possível, força a conversão de um objecto de um tipo para outro. Apesar de ser por vezes necessário, o uso de conversões de tipo sacrifica alguma segurança oferecida pelo sistema de tipos.

int

O tipo de dado int (inteiro) serve para armazenar valores numéricos inteiros. Existem vários

tipos de inteiros, cada um de um tamanho diferente (dependendo do sistema operacional e/ou arquitetura do processador):

• int, pode possuir 16 bits, 32 bits ou 64 bits

• short int, deve possuir tamanho de no mínimo 16 bits e não pode ser maior

queint

• long int, deve possuir tamanho mínimo de 32 bits

• long long int, deve possuir tamanho mínimo de 64 bits

Todos estes tipos de inteiros podem ainda ser declarados precedidos da cláusulaunsigned , o

que faz com que só suporte números positivos. Isto faz com que, com o mesmo tamanho, uma variável suporte mais números positivos do que um signed (todos os inteiros são signed por 

omissão). char

O tipochar ocupa 1 byte, e serve para armazenar caracteres ou inteiros. Isso significa que o

 programa reserva um espaço de 8 bits na memória RAM ou em registradores do processador para armazenar um valor (char de tamanho maior que 8 bits é permitido pela linguagem, mas os casos

são raros). Com vetores do tipo char é possível criar cadeias de caracteres (strings). float

O tipo de dado float serve para armazenar números de ponto flutuante, ou seja, com casas

decimais. O padrão mais utilizado nos últimos 10 anos é o IEEE 754-1985. double

(27)

O tipo de dado doubleserve para armazenar números de ponto flutuante de dupla precisão,

normalmente tem o dobro do tamanho do float e portanto o dobro da capacidade. O padrão mais adotado também é o IEEE 754-1985.

struct

Em C podem ser usadas estruturas (chamados de registos em outras linguagens de  programação). As estruturas são grupos de variáveis organizadas arbitráriamente pelo programador.

Uma estrutura pode criar um novo tipo de variável caso typedef seja usado em sua declaração.

6. 4. MATEMÁTICA

O seguinte código realiza seis operações matemáticas, adição, subtração, multiplicação, divisão, exponenciação e radiciação, e em seguida envia os seus respectivos resultados para a saída  padrão (normalmente o console).

#include <math.h> // necessária para pow() e sqrt()

#include <stdio.h> // necessária para printf() e getchar() int main() { int a = 2, b = 3; printf("%d + %d = %d\n", a, b, a + b); printf("%d - %d = %d\n", a, b, a - b); printf("%d x %d = %d\n", a, b, a * b);

printf("%d / %d = %0.1f\n", a, b, (float) a / b); // resultado fracionário printf("%d elevado a %d = %0.1f\n", a, b, pow(a, b)); // pow(base, expoente)

printf("raiz quadrada de %d = %0.1f\n", a, sqrt(a)); getchar();

return 0; }

6. 5. ESTRUTURAS DE DADOS

 No exemplo seguinte, é criada uma estrutura composta por 3 elementos de tipos diferentes. Após ser declarada uma variável "x" do tipo struct "y", onde "y" é o nome da estrutura, para se acessar os elementos usa-se a seguinte sintaxe:x.elemento.

#include <stdio.h> struct Pessoa

{

char nome[64]; // vetor de 64 chars para o nome unsigned short int idade;

char rg[13]; };

int main() {

(28)

struct Pessoa exemplo = {"Fulano", 16, "00.000.000-00"}; // declaração da variável "exemplo"

printf("Nome: %s\n", exemplo.nome); printf("Idade: %hu\n", exemplo.idade); printf("RG: %s\n", exemplo.rg); getchar(); return 0; } Ou, equivalente: #include <stdio.h> typedef struct Pessoa {

char nome[64]; // vetor de 64 chars para o nome unsigned short int idade;

char rg[13]; } Pessoa;

int main() {

Pessoa exemplo = {"Fulano", 16, "00.000.000-00"}; // declaração da variável "exemplo"

printf("Nome: %s\n", exemplo.nome); printf("Idade: %hu\n", exemplo.idade); printf("RG: %s\n", exemplo.rg); getchar(); return 0; }

6. 6. Ferramentas de programação

• Bloodshed Dev-C++ • Code::Blocks

• GNU Compiler Collection

• Make

Significados:

1 - Linguagem compilada é uma linguagem de programação, onde o código fonte nessa linguagem é executado diretamente pelo sistema operacional ou pelo processador, após ser  traduzido, através de um processo chamado compilação, usando um programa de computador chamado compilador, para uma linguagem de baixo nível, como linguagem de montagem ou código de máquina.

2 -  Programação estruturada é uma forma de programação de computadores que  preconiza que todos os programas possíveis podem ser reduzidos a apenas três estruturas:  sequência, decisão e interação,a Programação estruturada orienta os programadores para

(29)

3 - Programação imperativa (ou programação  procedural  ) é um paradigma de  programação que descreve a computação como ações (comandos) que mudam o estado

(variáveis) de um programa. Muito parecido com o comportamento imperativo das linguagens naturais que expressam ordens, programas imperativos são uma sequência de comandos para o computador executar.

7. Linguagem C++

O C++ é uma linguagem de programação multi-paradigma e de uso geral. A linguagem é considerada de médio nível, pois combina características de linguagens de alto e baixo níveis. Desde os anos 1990 é uma das linguagens comerciais mais populares, sendo bastante usada também na academia por seu grande desempenho e base de utilizadores.

Bjarne Stroustrup desenvolveu o C++ (originalmente com o nome C with Classes, C com classes, em português) em 1983 no Bell Labs como um adicional à linguagem C. Novas características foram adicionadas com o tempo, como funções virtuais, sobrecarga de operadores, herança múltipla, gabaritos e tratamento de exceções. Após a padronização ISO realizada em 1998 e a posterior revisão realizada em 2003, uma nova versão do padrão da linguagem está em desenvolvimento. Conhecida informalmente como C++0x, seu lançamento está previsto para 2011.

7. 1. História

O C++ foi inicialmente desenvolvido por Bjarne Stroustrup dos Bell Labs, durante a década de 1980 com o objetivo de implementar uma versão distribuída do núcleo Unix. Como o Unix era escrito em C, teve que ser mantido a compatibilidade, ainda que adicionando novos recursos. Alguns dos desafios incluíam simular a infraestrutura da comunicação entre processos num sistema distribuído ou de memória compartilhada e escrever drivers para tal sistema. Stroustrup percebeu

que a linguagem Simula possuía características bastante úteis para o desenvolvimento de software, mas que era muito lenta para uso prático. Por outro lado, a linguagem BCPL era rápida, mas  possuía demasiado baixo nível, dificultando sua utilização no desenvolvimento de aplicações. A  partir de sua experiência de doutorado, começou a acrescentar elementos do Simula no C. O C foi escolhido como base de desenvolvimento da nova linguagem pois possuía uma proposta de uso genérico, era rápido e também portável para diversas plataformas. Algumas outras linguagens que também serviram de inspiração para o cientista da computação foram ALGOL 68, Ada, CLU e ML.

Ainda em 1983 o nome da linguagem foi alterado de C with Classes para C++. Antes

implementada usando um pré-processador, a linguagem passou a exigir um compilador próprio, escrito pelo próprio Stroustrup.[1] Novas características foram adicionadas, como funções virtuais,[1]

sobrecarga de operadores e funções,[1] referências, constantes, gerenciamento manual de memória,

melhorias na verificação de tipo de dado e estilo de comentário de código de uma linha (//). Em 1985 foi lançada a primeira edição do livro The C++ Programming Language, contendo

referências para a utilização da linguagem, já que ainda não era uma norma oficial. A primeira versão comercial foi lançada em outubro do mesmo ano.[4] Em 1989 a segunda versão foi lançada,

contendo novas características como herança múltipla, classes abstratas, métodos estáticos, métodos constantes e membros protegidos, incrementando o suporte a orientação a objeto. Em 1990 foi lançado o livro The Annotated C++ Reference Manual , que tornou-se base para o futuro

(30)

 padrão. Outras adições na linguagem incluem gabaritos, tratamento de exceções,espaço de nomes, conversão segura de tipo de dado e o tipo booleano.

Assim como a linguagem, sua biblioteca padrão também sofreu melhorias ao longo do tempo. Sua primeira adição foi a biblioteca de E/S, e posteriormente a Standard Template Library

(STL); ambas tornaram-se algumas das principais funcionalidades que distanciaram a linguagem em relação a C. Criada primordialmente na HP por Alexander Stepanov[5] no início da década de

1990 para explorar os potenciais da programação genérica, a STL foi apresentada a um comitê unificado ANSI e ISO em 1993 à convite de Andrew Koenig. Após uma proposta formal na reunião do ano seguinte, a biblioteca recebe o aval do comitê.

Depois de anos de trabalho, o mesmo comitê ANSI/ISO padronizou o C++ em 1998 ( ISO/IEC 14882:1998). Após alguns anos foram reportados defeitos e imprecisões no documento, e

uma correção foi lançada em 2003.[6]

Por muito tempo, o C++ foi encarado como um superconjunto do C.[nota 1] Entretanto, em

1999 o novo padrão ISO para a linguagem C tornou as duas linguagens ainda mais diferentes entre si. Devido a essas incompatibilidades, muitas empresas que desenvolvem compiladores não oferecem suporte à versão mais recente da linguagem C.

Pode-se dizer que C++ foi a única linguagem entre tantas outras que obteve sucesso como uma sucessora à linguagem C, inclusive servindo de inspiração para outras linguagens comoJava, a IDL de CORBA e C♯.

7. 1. 1. ETIMOLOGIA

Durante sua fase inicial de desenvolvimento, a linguagem era chamada "novo C", "C84" ou ainda "C com classes".[1]O termo "C++" é creditado a Rick Mascitti,[7]e foi utilizado pela primeira

vez em dezembro de 1983. Ele é uma referência ao operador de incremento ++, significando um acréscimo (uma evolução) à linguagem C. Em tom humorado, desenvolvedores software e especialistas em informática no início da década de 1990 costumavam relacionar o ++ do nome à grande insistência dos programadores em utilizar o C++ da mesma forma que a linguagem C, não usufruindo das novas facilidades que a linguagem poderia fornecer. Assim como o ++ estava sendo aplicado de maneira pós-fixa à letraC , a linguagem C++ era uma evolução do C pós-fixada, que só

tornar-se-ia realidade em algum futuro remoto, não naquele momento.

7. 1. 2. TRABALHOS FUTUROS

A linguagem continua evoluindo de forma a fornecer novas funcionalidades. O grupo de desenvolvimento Boost.org trabalha para evoluir a biblioteca padrão, informando o comitê oficial da linguagem quais facilidades possuem maior retorno positivo dos usuários, seja por qualidade ou  por utilidade, e quais ainda devem ser desenvolvidas. Tudo indica que o C++ continuará com sua natureza multiparadigma. Por exemplo, o trabalho da Boost.org dedica-se a acrescentar as qualidades da programação funcional e genérica. O padrão C++ não define a implementação para a definição de nomes e tratamento de exceções, entre outras facilidades específicas, o que frequentemente torna incompatíveis códigos objeto produzidos por diferentes compiladores. Apesar 

(31)

disso, existem padrões periféricos específicos para certas plataformas ou sistemas operacionais para  padronizar compiladores dessas plataformas, como por exemplo o C++ ABI.

Atualmente o comitê de padronização do C++ está trabalhando para estender a linguagem em uma nova especificação, conhecida informalmente por C++0x.

7. 2. Características

7. 2. 1. Filosofia

 No livro In The Design and Evolution of C++ (1994), Bjarne Stroustrup descreve algumas regras que ele utiliza para desenvolver a linguagem, como exemplificado abaixo:

• C++ é desenvolvido para ser uma linguagem tipada estaticamente e de propósito geral que é tão eficiente e portátil quanto o C.

• C++ é desenvolvido para suportar múltiplos paradigmas.

• C++ é desenvolvido para fornecer ao programador escolhas, mesmo que seja possível ao  programador escolher a opção errada.

• C++ é desenvolvido para ser o mais compatível com C possível, fornecendo transições simples para código C.

• C++ evita fornecer facilidades que são específicas a certas plataformas ou a certos grupos de desenvolvedores.

• C++ não exige overhead para facilidades que não são utilizadas.

• C++ é desenvolvido para ser utilizado mesmo sem um ambiente de desenvolvimento sofisticado.

Stanley B. Lippman documenta em seu livro Inside the C++ Object Model (1996)[10] como compiladores convertem código de programas C++ em mapeamentos de memória. Lippman trabalhou implementando e mantendo o C-front, a implementação original do C++ nos Bell Labs.

Stroustrup sempre desejou que o C++ fosse mantido como uma linguagem de especificação  pequena, apesar de pressões externas para adições de novas funcionalidades na especificação da  própria linguagem ao invés da codificação de novas bibliotecas para a biblioteca padrão. Brian Kernighan notou que enquanto em C existe geralmente uma maneira de resolver problemas, em C+ + existem várias. Na maioria das linguagens de programação, um padrão ou um conjunto bastante restrito de padrões de projeto de software é escolhido para o desenvolvimento. Entretanto, isso não acontece em C++, pois a escolha é delegada ao desenvolvedor. É um conceito que prega que não existe paradigma de programação ou padrão de desenvolvimento que resolva todos os problemas,  por isso a pluralidade e generalidade de aplicações para a linguagem. Tal filosofia assusta iniciantes e professores, que sentem que a linguagem deveria ser de fácil aprendizado, algo que o C++ não é.

(32)

A biblioteca padrão do C++ incorpora a biblioteca padrão do C com algumas pequenas modificações para trabalhar melhor com as novas funcionalidades criadas pela linguagem. Outra grande parte da biblioteca é composta pela biblioteca padrão de gabaritos (STL). Ela fornece ferramentas úteis como containers (vetores, listas, entre outros), algoritmos (filtragem de elementos de container, busca, ordenação, entre outros) e iteradores (ponteiros inteligentes genéricos para acessar tais containers e interligá-los aos algoritmos). Usando gabaritos é possível escrever  algoritmos genéricos que funcionam para qualquer container ou sequência definida por iteradores. Tendo em vista que um iterador nada mais é que um ponteiro encapsulado, é possível também utilizar os algoritmos genéricos em vetores C, utilizando-se ponteiros comuns para tal. Como em C, os módulos da biblioteca são acessadas utilizando a diretiva #include; ao todo são fornecidos 69 cabeçalhos-padrão, dos quais 19 estão em depreciação.

Devido ao fato da biblioteca padrão ter sido desenvolvida por especialistas e de já ter sido amplamente utilizada comercialmente e academicamente, é recomendado utilizar seus componentes ao invés de componentes próprios. Por exemplo, utilizar std::vector e std::string ao invés de declarar vetores herdados do C não somente torna o desenvolvimento mais simples, como também traz mais segurança e escalabilidade para o sistema.

7. 2. 3. Operadores

Os operadores em C++ são um conjunto de todos os operadores do C mais novas adições à linguagem. Um grupo de novos operadores do C++ são os relativos à conversão de tipo de dado, e consistem em const_cast, static_cast, dynamic_cast e reinterpret_cast. Eles são uma evolução a conversão de dados utilizada em C, que limitava-se a oferecer um método para conversão tal qual static_cast. dynamic_cast refere-se diretamente ao suporte de herança e polimorfismo oferecido  pela linguagem, e está relacionado a outro novo operador, typeid, que retorna informações sobre o tipo de dado derivado pelo operando. Ambos os operadores requerem a habilitação de RTTI para funcionar. Outro grupo de novos operadores são os relativos à alocação de memória, e consistem em new e delete. Assemelham-se às funções malloc e free respectivamente, que estão presentes na  biblioteca padrão do C. Outro novo operador é o de resolução de âmbito, ::, e que refere-se diretamente ao suporte de espaço de nomes e orientação a objeto oferecido pela linguagem. Com ele é possível declarar e acessar espaços de nomes, e também declarar classes e acessar objetos.

O C++ define que alguns dos operadores podem ser sobrecarregados, o que permite, assim como na sobrecarga de funções, que diferentes tipos de dados sejam passados para um operador de forma a produzir diferentes resultados.

7. 2. 4. Objetos

O C++ introduziu alguns conceitos de orientação a objetos ao C, como exemplificado pelas classes, que apresentam quatro características comumente presentes em linguagens de programação orientadas a objeto: abstração, encapsulamento, herança e polimorfismo. Cada vez que uma classe é instanciada é criado um objeto na memória, que é basicamente um conjunto de atributos e operações reunidos.

Referências

Documentos relacionados

O enfermeiro, como integrante da equipe multidisciplinar em saúde, possui respaldo ético legal e técnico cientifico para atuar junto ao paciente portador de feridas, da avaliação

Apothéloz (2003) também aponta concepção semelhante ao afirmar que a anáfora associativa é constituída, em geral, por sintagmas nominais definidos dotados de certa

A abertura de inscrições para o Processo Seletivo de provas e títulos para contratação e/ou formação de cadastro de reserva para PROFESSORES DE ENSINO SUPERIOR

A amostragem da produção de café úmido em kg, utilizado na determinação do atributo PROD, foi utilizada também na determinação do atributo produtividade (PRODUT), por meio do

A Tabela 3 apresenta os resultados de resistência ao impacto Izod e as caracterizações térmicas apresentadas em função dos ensaios de HDT, temperatura Vicat e a taxa de queima do

is characterized by having the excretory pore between the pseudobulb and the basal bulb and seven pairs of postanal papillae in the male.. can be distiguished by having meanly two

Pelos nossos cálculos, com base na folga de capitalização apresentada nos balanços de março pelas instituições financeiras, a inserção de uma nova parcela referente ao

Desta maneira, Formiga e Diniz (2011), além de corroborar o estudo de Formiga e Mota (2009), ob- servaram um modelo estrutural em que o tipo de orientação coletivista