Você está na página 1de 90

Table

of Contents
1.
2.
3.
4.
5.
6.

7.
8.

9.

10.

Apresentao 1.1
Licena 1.2
ToDo 1.3
Algoritmo 1.4
VisuAlg 1.5
Portugol 1.6
1. O Cdigo Estruturado 1.6.1
2. Nomes e Palavras Reservadas 1.6.2
3. Variveis, Constantes e Tipos de Dados 1.6.3
4. Sada de Dados 1.6.4
5. Entrada de Dados 1.6.5
6. Fluxograma 1.6.6
7. Instrues de Controle e Operadores Lgicos 1.6.7
8. Operaes e Funes Matemticas 1.6.8
9. Tabela da Verdade e Depurao 1.6.9
10. Relao de Comandos Portugol para VisuAlg 3.0 1.6.10
Questes para fixao da Primeira Parte 1.7
C/C++ - Introduo a Linguagem 1.8
1. Histria da Linguagem C e C++ 1.8.1
2. Nossa IDE para aprendermos C 1.8.2
3. Estrutura Bsica de um Algortimo em C 1.8.3
4. Compilando ou Interpretando, como o C tratado? 1.8.4
5. Tipos de Dados em C 1.8.5
6. Estrtura de Controle em C 1.8.6
7. Bibliotecas Importantes do C e Suas Funes 1.8.7
8. Comunicando com o Mundo Exerno 1.8.8
Arduino 1.9
1. Introduo ao Arduino 1.9.1
2. Exemplos Bsicos de Uso do Arduino 1.9.2
1. Keyboard e Arduino 1.9.2.1
3. Arduino e Seu Controlador AVR 1.9.3
4. Algoritmos para Arduino 1.9.4
Sugesto de Leitura 1.10

Apresentao

Apresentao
Introduo a Linguagem de Programao
Com VisuAlg, Portugol e C/C++ para os primeiros passos na
Programao para Arduino
ATENO: Esta apostila est sendo escrita, portanto est em constante alterao, visite
regularmente o site para obter novas atualizaes
Sugestes e Correes: Para enviar sugestes e correes, envie por e-mail
consultoria@carlosdelfino.eti.br descreva no assunto o que se trata, e lembre-se de sitar o link e
captulo, procure dar detalhes. Sua sugesto ser bem vinda.
Apostila Verso: 0.1

Image 1.1.1 - Creative Commons License

This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0


International License
Veja Mais informaes sobre a licena clicando aqui
Sejam bem vindos, acredito que fizeram uma boa escolha em comear a leitura desta apostila pela
introduo, vejamos ento nosso objetivo com ela.
Nesta apostila iremos aprender a programar para Arduino, porm adotaremos a abordagem do
aprendizado de pequenos algortimos atravs do VisuAlg uma interface de aprendizado baseada na
linguagem Portugol que torna o entendimento das estruturas de cdigo mais intuitiva para quem
nunca programou antes. Uma vez dominado tais algoritmos partiremos para o aprendizado da
linguagem C/C++ usando o Arduino, atravs de emulador no site 123D da AutoDesk que pode ser
encontrado no site https://circuits.io/, mas nada impede que use um Arduino real, se o tiver e claro
pequenos componentes como leds, resistores, e potnciometros.
Note "O Visualg um programa que edita, interpreta e executa algoritmos com uma linguagem
prxima do portugus estruturado como um programa normal de computador." (fonte:
Wikipedia)
Como veremos o VisuAlg um programa, um software, uma interface de desenvolvimento para
aprendizado de programao, e no a linguagem propriamente, a linguagem usada nos primeiros
passos ser o Portugol e com ela aprenderemos sobre o algoritmo no captulo 1 mas somente no
captulo 3 veremos o Portugol. Por hora suficiente sabermos que o Portugol uma linguagem
estruturada totalmente baseada no Portugus, onde seu comandos e funes so verbos de nosso
idioma, no infinitivo ou imperativo ("se", "escrever" ou "escreva", "calcular" ou "calcule").
2

Apresentao

Usaremos o VisuAlg para aprender a pensar e escrever de forma que o computador nos entenda. No
capitulo 2 veremos a interface do VisuAlg, seus menus, ferramentas, e sees da janela, apenas o
bsico, ser um captulo de referncia que usaremos para entende-la e sabermos o que cada janela,
seo e menu representa e nos ofere.
No captulo 3, estudando o Portugol, aprenderemos os comandos da linguagem, o conceito de
funes, tipos de dados do Portugol usado sempre o "VisuAlg", aprederemos sobre estruturas de
repetio e controle. Entrada e Sada de dados, atribuio de valores e operaes matemticas.
J a linguagem C/C++ necessria para que possamos programar diretamente para o Arduino,
iremos conhecer melhor o Arduino no capitulo 5, porm antes disso iremos estudar a linguagem
C/C++ sua histria seus tipos de dados bsicos e como ela lida com a memria, isso ser visto no
captulo 4, veremos tambm um pouco do GCC e usaremos uma verso sem IDE, usando um editor
simples e a linha de comando para compilar nosso aplicativo.
Como dito o capitulo 5 teremos uma introduo ao Arduino, veremos o que aprendemos e como
adaptar ao Arduino nosso algortimos, permitindo assim controla-lo, o motivo de usarmos a linguagem
C/C++ ser desvendado neste captulo, atravs de pequenas dicas para se ter qualidade no que se faz
com o Arduino e como escrever bons cdigos.
Bem para fechar deixaremos um captulo de bonus, o captulo 6, onde veremos outros algortimos
como o PID que ser muito til para uso em robtica e controles autonomos.

Download
Para baixar esta apostila, clique nas oes abaixo:
PDF
ePUB
Boa sorte, voc um privilegiado se leu esta instroduo, sinal que est profundamente interessado e
ter sucesso com esta apostila.
Atualizado: 09/07/2016 - 18:56 | Revisado: Sat Jul 23 2016 21:17:26 GMT+0000 (UTC) | Compilado:
Sat Jul 23 2016 21:15:21 GMT+0000 (UTC)

Licena

Licena
Apostila Verso: 0.1

Image 1.2.1 - Creative Commons License

This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0


International License
Note Note
Se este trabalho est bom o suficiente para usa-lo comercialmente em seus projetos, ento me
ajude a mande-lo e contribua com apenas R$ 10,00.
Eu escolhi liberar este trabalho para que pudesse ser copiado por todos, e permiti seu uso comercial,
pois tenho a inteno que ele seja util a todos de forma justa, porm a manuteno deste trabalho
ardua, e exige bom tempo, que independente da contribuio de terceiros, tenho o prazer em dedicar
para que seja de qualidade, e reflita meu estilo de ensinar, aprender e compartilhar conhicmento.
Todo profissional sabe o quanto custa sua hora de trabalho, e o quanto valiosa para sua
subexistncia, por isso convido a todos a esta reflexo e me ajude a continuar tendo tempo para me
dedicar a construo e compartilhamento de conhecimentos como este.
Atualizado: 09/07/2016 - 16:20 | Revisado: Sat Jul 23 2016 21:17:26 GMT+0000 (UTC) | Compilado:
Sat Jul 23 2016 21:15:21 GMT+0000 (UTC)

ToDo

ToDo
O que falta escrever.
Abaixo listarei o que falta escrever, e sugestes coletadas de colegas para melhoria na apostila.
Rever nomes de arquivos dos captulos, mudando para o ttulo resumido do captulo, evitando
transtornos ao se mudar a ordem de captulos, j que com o uso de nmeros a ordem obriga a
mudana do nome, para verso 1.0
Reescrever nome das imagens, para verso 0.3
Rever ortografia da apostila para verso 0.2
Rever o Captulo sobre Fluxograma dando mais detalhes sobre sua criao e significado dos
simbolos, antes da verso 1.0
Rever Intrues de controle e operaes para incluir exemplos de fluxogramas, antes da verso
1.0
Atualizado: 09/07/2016 - 16:20 | Revisado: Sat Jul 23 2016 21:17:26 GMT+0000 (UTC) | Compilado:
Sat Jul 23 2016 21:15:21 GMT+0000 (UTC)

Algoritmo

Algoritmo
Se voc perguntar ao google "define algorito" ele ir lhe responder o que , e nos adiantamos
publicando aqui a resposta que ele nos d com base no dicionrio:
substantivo masculino
1. mat. sequncia finita de regras, raciocnios ou operaes que, aplicada a um nmero finito
de dados, permite solucionar classes semelhantes de problemas.
2. inf. conjunto das regras e procedimentos lgicos perfeitamente definidos que levam
soluo de um problema em um nmero finito de etapas.
Bem tanto a definio para a matemtica (mat.) como para a informtica (inf.), ela nos ajuda a enteder
perfeitamente o que um Algoritmo, so sequncias de comandos, operaes matemticas que
quando ordenadas lgicamente atingem nosso objetivo que instruir o computador para uma
determinada atividade finita, mesmo que infinitamente repetitiva.
Ou seja, mesmo que o computador seja instruido a esperar um comando, sequncia finita, ele poder
ser instruido que o faa infinitamente, repetindo esta sequncia enquanto ouver energia para seu
funcionamento. Diante desta atividade concluida ele ir executar novas atividades que sero decididas
em sequncia.
Veja com isso percebemos que a melhor forma de programar um Algoritimo no importa a linguagem
travs de blocos de sequncia de comandos, assim fica inclusive fcil para diagnosticar problemas.
Cada linguagem adota uma nomenclatura para estes blocos de cdigo, usaremos aqui a nomeclatura
do C/C++, cada bloco de cdigo pode ser identificado e acionado como funo, recebendo ou no
uma lista de dados que chamado parmetros.

E o que Linguagem de Programao?


Bem antes de continuarmos temos que entender bem que uma linguagem de programao.
Linguagem de Programao um mtodo padronizado de se inscrever instrues para um
microcomputador, atravs da linguagem de programao escolhida, conseguimos informar ao
computador o que deve ser feito.
Temos linguagens de baixo nvel, que so aquelas linguagens que so escritas em um formato, uma
sintaxe bem prxima das operaes de manipulao de bytes e bits dos computadores, como por
exemplo o Assembly, e temos linguagens de programao de alto nvel como por exemplo o Cobol
que usa textos declarativos, e uma estrutura muito bem estabelecida para ser escrita e altamente
legvel at por um leigo com boa capacidade de interpretao.
Outras linguagens que podemos sitar neste mesmo contextos so:
Basic
Fotran
Pascal
C#
Java
C e C++
JavaScript
Python
6

Algoritmo

No nosso curso iremos estudar linguagens de alto nvel, mas no tal alto nvel assim, inicialmente o
Portugol, e posteriormente uma linguagem meio termo entre alto nvel e baixo nvel, mas ainda assim
alto nvel, pois ser bem legvel por um especialista, como voc ser depois desta dissiplina.

Programao Estruturada
A programao estruturada uma forma de programao de computadores que estabelece uma
disciplina de desenvolvimento de algoritmos, criando assim padres e estruturas sejam simples ou
complexas que podem ser agrupadas em blocos de cdigos, reaproveitaveis e repetiveis.
Na programao estruturada, temos um conjunto de palavras reservadas utilizadas para identificar as
sees de nosso cdigo, agrupando assim as aes, permitindo assim que haja estruturas de tomadas
de deciso, estruturas de repetio, e modularizao de cdigos.
A Programao estruturada, presa pela legibilidade do cdigo usando recursos de formatao como a
identao para que o cdigo se apresente de forma organizada e legvel.

Linguagens Especializadas
Em cada setor de atuao pode haver linguagens especializadas ao contexto do setor, por exemplo
para o Arduino apesar de termos a linguagem C/C++ temos o Wire que um dialeto do C/C++ na
verdade um framework que nos traz diversas funes, constantes e macros que permite ao
programador programar o Arduino de uma forma mais amigvel.
Tambm temos linguagens especializadas em Robtica, podemos dizer que para cada fabricante de
grandes robs temos uma linguagem, listamos algumas abaixo:
Unimation
VAL
Adept V+
AML da IBM
Milacron T3

Compilado vs Interpretado
As linguagens de computador podem ser tanto compiladas ou seja transformadas primeiramente em
um cdigo que o computador entenda diretamente, ou podem ser Interpretadas, assim sendo um
programa l o arquivo onde est seu algortimo e interpreta cada linha e cada comando em tempo real,
analisano a sintaxe e apontando em tempo de execuo os erros encontrados.
H linguagens que so pr compiladas como o Java e C#, estas linguagens, geram um pseudo-cdigo
seja em tempo real, ou num processo separado e em seguida este pseudo-cdigo interpretado para se
obter o resultado desejado com o computador.
As linguagens compiladas tendem ser bem mais rpidas pois geram primeiro um cdigo que
interpretado diretamente pelo microcontrolador, este cdigo ainda pode ser otimizado para se obter
um resultado muito mais eficinte.
J as linguagnes interpretadas, mesmo que pr compiladas, dificilmente sero to rpdas quanto as
compiladas, mas semdvida podero oferecer recursos dinmicos muito mais avanados que as
compiladas, algumas linguagens compiladas tem desepenho prximo as compiladas quando a
compilada no uma linguagem naturalmente eficiente, como por exemplo linguagem BASIC, pois
tem muitos procedimentos de proteo do cdigo para vitar danos inadivertidos causados pelo erro do
programador, linguagens como o C e C++ so muito eficientes porque no tem estruturas de proteo,
7

Algoritmo

sendo de responsabilidade integral do programador providnciar todas as protees necessrias, e


dando a eles recursos singulares como ponteiros e referncias que do acesso direto a mmoria.

Mas como posso criar meus prprios Algoritmos?


O que mais nos importa agora o Algoritmo propriamente, e veremos ento como construi-lo, no
usaremos at este captulo nenhuma ferramenta que possa nos ajudar, j que queremos desenvolver
mentalmente esta habilidade.
Comeemos com exerccios simples, vamos descrever como fazemos para ir a padaria quando
sentimos vontade de tomar aquele caf que j est cheirando na cozinha.
Sempre quando sentimos o cheiro do caf, disparado uma sequencia de aes, ento paramos
tudo que estamos fazendo e vamos a cozinha verificamos se j h pes quentes, se no pegamos
a chave da casa, verificamos onde est nossa carteira, nos dirigimos a sada da casa mais
prxima, seguimos em direo a padaria mais prxima e que temos o costume de ir, entramos em
direo ao balco de pes, solicitamos alguns pezinhos, ento a atendente nos entrega, e
dirigimos ao caixa para efetuar o pagamento, voltamos rapidamente para nossa casa, e
proseguimos com nosso caf, quando satisfeitos ou ao termino de nosso tempo para o caf,
voltamos a nossa atividade anterior.
Bem vamos fazer uma pequena anlise da descrio acima:
Primeiro um programador mais experiente em microcontroladores vai perceber que se trata de uma
ao que disparada por um evento especial identificada por um de nossos sensores, o nariz, este
sensor dispara um algoritmo que nos leva a tomar caf.
O algortimo acima no est estruturado, est apenas descrito de forma que qualquer ser humano seja
capaz de entende-lo, at mesmo porque uma ao bem humana tomar caf, futuramente iremos ver
anes similares mais humanoides, que tal?
Continuando nossa anlise, vemos que preciso descrever com o mximo de detalhes, e onde no h
detalhes, mas percebemos sua necessidade, precisamos considerar a chamada de um novo bloco de
codigo, ou seja uma funo. Por exemplo no descrevemos em detalhes como "verificamos se h pes
quentes" isso uma funo que nos retorna mentalmente se h pes ou no, (verdadeiro ou falso), em
seguida no havendo pes quentes (seja qual o motivo for), "pegamos a chave da casa", "verificamos
nossa carteira" est ai dois coamndos que no precisam estar na mesma ordem, e assim continuamos
nossas lista de aes at chegar ao balco da padaria, consideramos assim que j haja pes prontos e
quentes na padaria, ai podemos identificar mais uma funo: "solicitamos alguns pezinhos", esta
funo pode demorar a retornar, j que no havendo pes teremos que esperar ficar prontos, caso
contrrio ela retorna imediatamente com a quantidade solicitada, veja ai, j temos um valor passado
para esta funo como parametro, a quantidade de pes. E ento assim continuamos nossas aes at
que nos tenhamos satisfeito nosso desejo de tomar caf.
Vemos com isso que ao estudarmos algortimo j iniciamos o entendimento de diversos conceitos
muito importantes para a programao de microcontroladores, e assim amadurecemos o suficiente
para desenvolvermos excelentes cdigos em qualquer linguagem.

Ento s isso?
Por hora sim, agora iremos prticar em sala de aula a construo de algoritmos, no trabalharemos
ainda com nenhum mtodo estruturado, apenas prticaremos a construo textual de aes seja quais
forem para que nosso celebro passe a pensar nos detalhes necessrios para executar tarefas
8

Algoritmo

corriqueiras.
Que tal tentar seguimentar sua perna e tentar descrever como voc anda, ou seus brasos e assim
descrever como faria para deslocar um objeto.
Quer algo mais simples que tal descrever como trocar o pneu de seu carro.

Algumas dicas para escrever seus primeiros Algoritmos


Seja sucinto e procure no entrar em detalhes de aes que no seja especificamente ligadas a
atividade;
Use comentrios se preciso detalhar a execuo e deixar o algoritmo mais claro;
Aes auxiliares podem ser descritas por frases curtas, como "verificar se h pes quentes", ou
"pegar a chave de boca", estas aes auxiliares sero outros algoritimos que podem ser
reutilizados;
Use os verbos os verbos no infinitivo e iperativo, "pegar", "andar", "corra";
Procure identificar parametros que auxiliem a tomada de deciso "exist~encia de pes",
"Quentes ou no", "Pneu furado";
Procure identificar com exatido e em forma quantitativa, "existe ou no existe", ou seja 0 ou
maior que zero, "20 unidades";
Evite muitas informaes, e dados a serem guardados.

O Prximo Captulo
Iremos agora partir para o estudo da ferramenta VisualAlg, com ela iremos aprender a escrever
Algoritmos utiliznado o Portugol, uma forma mais estruturada para descrever nossas atividades, ainda
no usaremos o Portugol em detalhes, apenas tereos este captulo como fonte de referncia da
interface para nos ajudar a lembrar onde encontrado cada coisa.
Atualizado: 09/07/2016 - 16:20 | Revisado: Sat Jul 23 2016 21:17:26 GMT+0000 (UTC) | Compilado:
Sat Jul 23 2016 21:15:21 GMT+0000 (UTC)

VisuAlg

VisuAlg
O VisuAlg no uma linguagem de programao, mas uma ferramenta que auxilia no aprendizado da
linguagem "Portugol", VisuAlg tem algumas peculiaridades, que torna esta verso do Portugol
proprietrio e mais adequado ao uso com sua Interface. Isso no um problema paran s, j que o
aprendizado desta verso do Portugal tem como objetivo panea o desenvolvimento de nossa
capacidade de pensar de forma estruturada, e no usaremos esta linguagem por muito tempo, apenas
um estgio em nosso parendizado.
Para baixar a ferramenta VisuAlg, clique aqui
A partir deste ponto chamaremos a Ferramenta ou Interface do VisuAlg de IDE (Integrated
Development Environment) em portugus Ambiente de Desenvolvimento Integrado, um software que
possui todas ferramentas e viabiliza a interao com outras ferramentas de desenvolvimento de forma
totalmente integrada e transparente.
Com o uso de uma IDE, no precisamos nos preocupar com o editor usado para escrever nosso
cdigo, nem com a pgina de codificao dos caracteres a ser adotada, no precisamos nos preocupar
com a ferramenta usada para nos ajudar a encontrar erros de escritas, muito menos com a ferramenta
usada para converter nosso cdigo em um formato mais prximo para o entendimento do computador,
compilao ou interpretao, e muito menos com a fase final de ligao do nosso cdigo com as
instrues e posies de mmoria do computador que se destina o cdigo.
A IDE responsvel por ter todas as ferramentas que precisamos, totalmente integradas e totalmente
de forma transparente.

Tela principal do VisuAlg


Abaixo apresentamos a tela inicial do VisuAlg:

10

VisuAlg

Image 1.5.1 - Interface principal do VisuAlg 3.0

Como pode ser visto na imagem a janela dividida em 3 sees muito importantes:
rea de programa
reas das Vriveis de Mmoria
rea de Visualizao de Resultados
Alm destas 3 sees, temos tambm o "Menu" no topo da tela, logo abaixo "Barra de Ferramentas" e
na base ou roda-p da janela principal temos a "Barra de Estatus".
Teremos tambm uma janela secundria que sempre se abre quando executamos nosso algoritmo que
representa o programa quando executado, chamaremos de "Console".
vejamos alguns detalhes de cada um deles.

Menu
Como todo software para sistemas operacionais baseados em janela como Windows, MAC ou Linux
Grfico com base em XWindows ou X86, comum ter um menu que nos d acesso a aes,
agrupados conforme funcionalidades
Abaixo vemos o menu do VisuAlg Verso 3.0:

Image 1.5.2 - Menu do VisuAlg V3.0

As duas primeiras opes do menus no tem muita novidade, apenas o comum em qualquer editor de
texto, no Menu "Arquivo" iremos encontrar aes referentes a abrir, salvar e fechar arquivo, alm de
fechar o IDE finalizando assim o VisuAlg, no menu "Editar" aes relacionadas a edo como copiar,
colar, recortar, pesquisar no cdigo por strings de texto e substituio.
String de texto, uma sequncia de letras, caracteres, quando formos estudar estar tipos de
dados, entenderemos melhor este conceito.
J o menu "Run (Executar)" novidade para muitos, com ele teremos a opo testar nosso algoritmo
solicitando ao VisuAlg que prepare nosso algoritmo para execuo, verificando erros e executando
sequncialmente, ou se desejarmos passo a passo com nosso total controle.
Veremos em detalhes o uso de cada opo do menu durante as prticas de aula. No deixe de estudar
este menu, e prticar o uso das teclas de atalho, indicadas a direita de cada opo, a que mais
usaremos [CTRL]+[S] para salvar e [F9] para executar nosso cdigo e [F8] para executar nosso
cdigo passo a passo.
O que estas letras entre "colchetes"? usamos esta representao para indicar teclas a serem
usadas como atalhos, no caso de [CTRL]+[S] representa o uso em sequencia combinada das
teclas "Control" e a tecla "s", ou seja, devem ser precionadas em conjunto, sempre na sequncia
11

VisuAlg

sugerida, assim se aperta a tecla "Control", mantem, e em conjunto aperta a tecla "s", soltando
logo em seguida, observe que mesmo estando representada em maiscula no usaremos a tecla
"Shift" muito menos a tecla "Caps Lock" para deixar em maiscula.

Menu Run (Executar)


Vamos dar uma ateno especial ao menu Run (Executar), sem dvida ele o menu mais utilizado
em uma IDE, com ele testamos nosso cdigo e corrigimos os erros que possam existir.

Image 1.5.3 - Menu Run (Executar) do VisuAlg 3.0

Como dissemos a direita de cada opo do menu, a interface do VisuAlg nos informa qual a tecla de
atalho para acelerar o acesso a esta opo.
Neste menu encontramos duas aes muito imoprtante para testarmos nosso algoritmo, a primeira
mais comum, "Rodar o Algoritmo", pode ser acessada simplesmente teclando [F9], esta opo
executa o programa sem nenhum tipo de interrupo (a no ser que haja um ponto de parada para
depurao de cdigo - Breakpoint, veremos mais a frente), ou as programadas pelo programador
atravs de comandos da linguagem Portugal, como "Leia()" ou pausa.
OBS.: Quando a execuo de algortimo encontra o comando pause ele ir aguardar at que voc
tecle [F9] ou [F8] para continuar a execuo. No use pause para substituir pontos de parada
(Breakpoints) para depurao.
J a ao "Rodar Passo a passo" tambm disponvel atravs da tecla [F8], ir executar seu programa
linha por linha, cada linha executada a cada vez que [F8] precionado.

Como ir direto a uma linha de execuo e parar


H outras opes muito interessantes e tes para diagnosticar seu algortimo, por exemplo
"Liga/Desliga breakpoint" tambm disponvel pela tecla de atalho [F5] permite que marque a linha
12

VisuAlg

selecionada para que seja um ponto de parada para diagnostico, assim ao executar seu programama
atravs de [F9] ("Rodar o Algoritmo") ele ir executar at esta linha e ir parar aguardando que
mande continuar atravs de [F9] ou passo atravs de [F8], assim voc pode dar um grande sauto entre
muitas instrues e parar exatamente no local onde seu algorritimo parece no funcionar bem.
Para desmarcar um breakpoint v na linha onde ele foi imposto (linha marcada na cor vermelha), tecle
novamente [F5].

Meu algoritmo tomou vida propria e no quer parar


Para interromper seu algoritimo seja porque motivo for, em especial devido a um mal funcionamento,
voc pode usar a combinao de teclas [CTRL]+[F2] durante sua execuo, seja continua, ou passo a
passo.
Esta opo apenas est disponvel quando o algortimo est em execuo.

Barra de Ferramentas
Nossa barra de ferramentas um atalho as aes disponveis no menu, ali se encontra as aes da IDE
mais utilizada e esto representadas por icones para facilitar seu uso, veja na imagem abaixo ela est
logo abaixo do menu:

Image 1.5.4 - Menu e Barra de Ferramentas do VisuAlg V3.0

Bem no precisamos entrar em detalhes, sobre o uso da barra, durante nossas prticas em aula iremos
entede-la.
Em verses futuras desta apostila, iremos ampliar a descrio da barra de ferramentas para fins
didaticos.

Barra de Estatus
A barra de "estatus", ou se preferir barra de status, apresenta informaes relevantes ao programador
durante a codificao.

Image 1.5.5 - Barra de Status do VisuAlg 3.0

Na barra do VisuAlg temos uma pequena seo que nos mostra a a linha e coluna onde se encontra o
cursor, informao muito til para encontrarmos a posio onde estamos editando e auxilar na
identao e formtao de nosso cdigo.
13

VisuAlg

Na proxima seo da barra de estatus, vemos o estado do documento, se vazio ele est salvo, se
modificado tem a indicao "Modificado", se em pesquisa a indicao "Pesquisando", com o uso da
ferramenta ir identificar novos "Status" para seu domento.
Na proxima seo vem um texto que instrui como melhor usar as teclas na seo ativa, e finalmetne a
ultima seo que apresenta mensagens relevantes sobre os processos solicitados, por exemplo coloque
o mouse sobre cada seo da janela, e veja a mesangem apresentada. Voc ver que ele lhe apresenta a
seo e como elapode ser til para voc.

Seo "rea de Visualizao de Resultados"


A Seo de visualizao de resultados apresenta mensagens relativas a execuo do programa,
mantendo um histrico da execuo, principalmente inicio e fim, preciso cuidado pois espera-se que
a interao seja pelo console, masno Visuag a intaro ocorre um pouco diferente, sendo do nesta
etela apresentada as mensagens do programa, e em janelas especificas as solicitaes de dados ao
usurio, a console ser vista mais a frente..

Image 1.5.6 - Seo de Visualizao dos Resultados do VisuAlg 3.0

A seguir veja a seo "rea de visualizao dos resultados", apos executarmos um simples algortimo
conceitual que sugere o funcionamento de um sistema de caixa.

14

VisuAlg

Image 1.5.7 - Seo de Visualizao dos Resultados do Algoritmo "caixa" do Visual 3.0

Seo "rea das Variveis de Memria"


Nesta seo possvel ver o contedo de cada varivel de mmoria Global ou Local (entederemos
isso mais a frente). Veja abaixo como esta seo fica ao usarmos o Algoritmo "Caixa".

Image 1.5.8 - Seo de Visualizao das Variveis de Memria do VisuAlg 3.0

Esta seo possui 3 colunas, a primeira contem o nome das variveis, cada varivel em uma linha, a
segunda coluna o Tipo de varivel (C = Caracter, R = Real, I = Inteiro, Etc). Na terceira coluna o
valor que se encontra no exato momento na varivel.
Veja que esta caixa durante a execuo de seu algortimo tem os valores em contante mudana, e
quando seu sistema termina a execuo ela guarda os ultimos valores utilizados. Isso muito util para
depurar (buscar defeitos, bugs) em sua aplicao.

Prximo Captulo
por hora o que estudaremos de forma terica referente a IDE do VisuAlg, j no prximo captulo
iremos estudar a "Portugol" com enfase no que o VisuAlg nos oferece como recursos.
Atualizado: 09/07/2016 - 16:25 | Revisado: Sat Jul 23 2016 21:17:26 GMT+0000 (UTC) | Compilado:
Sat Jul 23 2016 21:15:21 GMT+0000 (UTC)

15

VisuAlg

16

Portugol

Portugol
Conforme o dicionrio do site/servio Sensagent:
Portugol uma pseudo-linguagem de programao, criada para demonstrar o uso de algoritmos e
programao estruturada. Est presente em muitos materiais didticos de programao, porm
mesmo assim no existe um padro sinttico ou lxico para essa linguagem.
O Portugol pode ser encontrado em diversas ferramentas de ensino, cada um com suas peculiaridades,
e tambm ser chamado por outros nomes como pseudo-cdigo.
Muitos confundem a linguagem Algol (Algoritm Language) com a verso original do Portugol, ou
pensam ser uma pseudo-linguagem didatica em ingls, porm Algol no uma pseudo-linguagem,
mas uma linguagem de alto nvel utilizada em projetos cientficos, Algol mais uma familia de
linguagens, tendo sua primeira verso o Algol 58 criado por John Backus atravs da BNF (BackusNaur Form), uma meta-sintaxe para expressar gramticas livres de contexto, ou seja um modo formal
de descrever outras linguagens. O Algol 60 foi uma linguagem impar em seu tempo, e transformou o
conceito de linguagem de programao influnciando todas as linguagens desde ento criadas,
nenhuma oura linguagem teve a fluncia que Algol 60 que tida como a primeira linguagem
estruturada.
Em nosso estudos veremos a Linguagem Portugol apenas, como uma forma didtica, e veremos a
verso comptivel com o VisuAlg, sendo apenas um passo de entrada no universo da lgica e
programao de computadores, depois de dominado o conceito de estruturao de cdigo, no mais
usaremos esta linguagem, passando ento ao aprendizado a Linguagem C/C++ em um captulo
especialmente para sua introduo.
No final deste captulo h uma relao de todos os comandos do VisuAlg 3.0 para referncia, ser
baseado no material fornecido pelo autor do VisuAlg, portanto depender do contedo disponvel e
testes realizados.

Prximo Passo (Prximo Subcaptulo)


Estuaremos no prximo captulo o cdigo estruturado, veremos rpidamente como devem ser
delimitados nossos algoritmos e como faze-lo com o Portugol.
Atualizado: 09/07/2016 - 16:25 | Revisado: Sat Jul 23 2016 21:17:26 GMT+0000 (UTC) | Compilado:
Sat Jul 23 2016 21:15:21 GMT+0000 (UTC)

17

O Cdigo Estruturado

O Cdigo Estruturado
Para comearmos a estudar o Portugol, propriamente, precisamos entender o que um cdigo
estruturado, e para isso importante destacar que para se ter um bom cdigo estruturado preciso
seguir algumas regras:
Cada comando deve ocupar uma linha;
Todas as palavras chaves so implementadas sem acentos e cedilha;
No h diferenciao entre masculas e minsculas, veja a observao abaixo sobre a notao
CamelCase;
Palavras no reconhecidas sero tratadas como nomes de variveis;
Qualquer texto precedido de // ignorado, at se atingir o final da linha;
A seguir apresentamos o primeiro exemplo de pseudo cdigo em Portugol:
algoritmo "MeuPrimeiroPseudoCodigo"
// Funo: Demonstrar como se escreve um cdigo estruturado
// Autor: Carlos Delfino <consultoria@carlosdelfino.eti.br>
// Data: 01/07/2016
//Seo de Declaraes Variveis Globais
Var
//Seo de Declarao de Procedimentos e Funes
// Inico do cdigo principal
inicio
// Seo de Comandos
Fimalgoritmo
Como podemos ver, o cdigo separado em sees, tendo na primeira linha o nome do "'algoritmo'"
que o mesmo nome usado no arquivo, posto entre aspas.
Em seguida temos alguns comentrios que nos ajudam a entender o cdigo, procure sempre descrever
seu cdigo com uma boa documentao, o melhor que puder e procure dedicar bom tempo a isso,
voc se lembra de quando fizemos a prtica de escrever de forma textual nosso algoritmo? faa isso
na descrio de seu cdigo, isso ir ajudar a resolver falhas (bugs).
Idenfique claramente o autor e no deixe de colocar pelo menos o e-mail de contato, se possvel o
telefone tambm, assim em caso de dvida o proximo programador poder consultar trechos de
cdigos de difcil entendimento, e se basear na documentao para optimiza-lo.
Feito isso, faa a seguir a declarao de suas variveis globais, veremos a frente o que so variveis
globais e locais, por hora declare aps a documentao inicial todas as variveis que julgar necessrio
em seu algoritmo, a seo de declarao das variveis precido pela diretiva "'Var'". Esta seo
termina quando a prxima seo de cdigo iniciar, existindo uma diretiva para finaliza-la.
Dependendo da complexidade de seu cdigo aps as variveis globais, possvel declarar funes e
procedimentos, o que no iremos ver ainda. Somente veremos estes conceitos, aps dominarmos os
conceitos bsicos de controle e viveis e em especial Funes.
18

O Cdigo Estruturado

Finalmente damos inicio ao nosso algoritmo, usando a palavra reservada "'inicio'", este cdigo ser
executado primeiro, e terminar quando encontrar algum comando que interropa a execuo ou ao
chegar at a palavra "'fimalgoritmo'"
Um grande erro cometido pelos programadores inciantes, a no identao do cdigo, assim, blocos
de cdigos ficam ilegveis e de difcil correo. No Portugol, a delimitao de bloos se d sempre pelo
uso da palavra chave respectiva ao tipo de bloco de controle e finalizado pela palavra chave de
finalizao, veremos em detalhes mais a frente quando formos tratar cada bloco de cdigo.

O que Indentao?
Identao o ato de organizar cada linha em nveis, inserindo espaos no inicio da linha para que esta
linha fique subordina a anterior, ou seja, pertence ao bloco que esteja mais a dentro na estrutura.
No Portugol usaremos trs espaos, as linguagens no obrigam uma quantidade especifica de espao,
sendo a quantidade, sempre acordado entre os programadores antes de inciar o projeto, porm j se
tornou uma conveno de boa prtica o uso de trs (3) espao, em alguns casos quadro (4) espaos,
podendo neste caso ser substituido por uma tabulao para cada intentao.
veja o exemplo abaixo:
''' inicio escrever("entre seu nome" leia(nome) se nome == "" entao escreva(" preciso um nome para
identifica-lo") interrompa fimse escreval("Obrigado por informar seu nome: ",nome) fimalgoritmo '''
Como podem ver o cdigo estruturado indentado, e de fcil leitura, e rpidamente identificamos o
inicio e fim de cada bloco de cdigos, independente do seu objetivo.

Prximo passo
Veremos a seguir como dar nomes as variveis e funes no Portugol, porm usaremos a prtica de
CamelCase, que no obrigatria no Portugol, muito menos no VisuAlg, mas uma boa prtica
importante para o amadurecimento como desenvolvedor.
Atualizado: 09/07/2016 - 16:25 | Revisado: Sat Jul 23 2016 21:17:26 GMT+0000 (UTC) | Compilado:
Sat Jul 23 2016 21:15:21 GMT+0000 (UTC)

19

Nomes e Palavras Reservadas

Nomes e Palavras Reservadas


Em toda linguagem de programao possvel usar nomes especiais, tanto para chamar comandos,
funes, quando procedimentos quando ouver o conceito. No veremos ainda em detalhes o que so
procedimentos, mas aprenderemos desde cedo como criar nomes de variveis e funes (se no caso
do Portugol Procedimetnos tambm)

Nomeando Variveis
Ainda no estudamos o que so variveis, por hora basta saber que so espaos no computador, onde
dados so gravados, e podem ser reutilizados e alterados.
Os nomes das variveis devem obrigatoriamente comear por uma letra. Aps a primeira letra, poder
conter letras, nmeros ou underline ( _ ), at um limite de 30 caracteres. As variveis podem ser
simples ou estruturadas (vetores de uma ou duas dimenses).
Variveis no podem ter nomes iguais.
Como j foi dito anteriormente as declaraes de variveis devem obrigatoriamente ser identificadas
com o termo var, seguir com os nomes das variveis separados por ,, colocar o sinal : e
finalmente informar o tipo daquela varivel ou lista de variveis. Veja o exemplo a seguir:
var
a: inteiro
nome_aluno : caractere
numeroDeMaterias: inteiro
av1, av2 : real
Como pode ver o bloco de declarao das variveis no precisa ser finalizado, ele termina quando
inicia outro bloco, seja de funo, procedimento ou do algoritmo principal.

Notao CamelCase
Uma prtica muito importante na programao o uso da notao CamelCase, com ela podemos
acelerar o entendimento do cdigo e a leitura dos nomes usados.
A Notao CamelCase amplamente utilizada e j virou uma prtica comum e h apenas uma
pequena controvercia se uma nome deve comear ou no com a primeira letra da primeira palavra em
maiscula ou no.
At mesmo em C/C++ no h o mal costume de unir prticas de nomeao antigas com Novas,
deixando o cdigo pouco elegante, em C++ apenas percepitvel o constante uso da Notao, j em C
puro, muito pouco usado, mas neste curso iremos usar sempre a notao camel como descrito
abaixo.
Usaremos sempre a primeira letra de cada palavra em maiscula, com as seguintes execesses:
Quando nome de variveis a primeira palavra ser toda em minscula
Quando nome de variveis, no usaremos trao baixo, a no ser que auxili o entendimento de
variveis com nomes mais complexos, este uso deve ser acordado com a equipe, e clarmente
documentado como usar em caso de se precisar criar novas variveis.
Quando nome de constantes, todas as palavras sero escritas com todas as letras em maisculas,
20

Nomes e Palavras Reservadas

sendo cada palavra separada da outra por trao baixo;


Quando nome de funes dever ser adotado o mesmo critrio usado para as variveis;
Quando nome de procedimentos dever ser usado cada primeira letra em maisculo, mesmo no
primeira palavra, podendo quando negociado com a equipe, em caso denomes mais complexos
usar o trao baixo para auxiliar na criao do nome;
Quando nome de classes devero seguir o mesmo critrio para procedimentos;
Em todos os casos podero ser usados nmeros;
Mesmo que a linguagem permita, "nunca" use acentos e simbolos especiais;
para conhecer a histria da Notao CamelCase e conhecer melhor como adota-la, visite o link
http://c2.com/cgi/wiki?CamelCase, C2 vem de Cunningham and Cunningham, epresa criada por Ward
Cunningham e sua filha para consultoria em desenvolvimento de softwares, so os principais
influnciadores da engenharia de desenvolvimento de software no mundo, juntamene com Erik Evans
(Erik J. Evans) e Martim Fowler.

Palavras Reservadas
Algumas palavras no podem ser usadas alm da forma definina pelo Portugol, sendo assim so
consideradas reservadas, no VisuAlg o portugol tem as seguintes palavras como reservadas:
Algoritmo
var
Inicio
FimAlgoritmo
Cronometro
Timer
On
Off
Eco (ECO)
Aleatorio (ALEATRIO)
Perfil
Dos (DOS)
Debug (DEBUG)
Tipo (TIPO)
var (VAR)
const (CONST)
Evite usar nomes de funes e comandos internos como variveis principalmente.

Prximo Passo
Veremos a seguir os tipos de dados que podemos declarar. Durante as nossas prticas discutiremos o
conceito prtico das variveis e como isso funciona nos computadores, posteriormente quando
estudarmos a linguagem C/C++ veremos como as variveis so armazenadas em memria, isso
importante para uso com Microcontroladores.
Atualizado: 09/07/2016 - 16:25 | Revisado: Sat Jul 23 2016 21:17:26 GMT+0000 (UTC) | Compilado:
Sat Jul 23 2016 21:15:21 GMT+0000 (UTC)

21

Variveis, Constantes e Tipos de Dados

Variveis, Constantes e Tipos de Dados


Vejamos neste captulo o que so variveis e constantes, e quais os tipos podem ser usados no
Portugol.
Em toda linguagem de programao temos tipos de dados, algumas no levam isso em considerao
deixando que o usrio transforme as variveis de um tipo a outro no decorrer da execuo de cdigo,
isso pode ser bom, ou ruim, depende da disciplina do programador, no iremos discutir esta prtica
agora, e usaremos linguagens fortemente tipadas, ou seja, uma vez declarado o dito de dado que ser
depositado na varivel, a tentativa de usar outro tipo ir acarretar erros.
No veremos ainda como os dados so armazenados na memria do microcontrolador ou do
computador, apenas entenderemos que tipo de dado, seus valores limites e como lidar com cada tipo
de varivel. Tal entendimento ser absorvido no decorrer do uso de cada varivel, mas quando
iniciarmos os estudos da linguagem C/C++ ser necessaro compreender mais a fundo como tais
veriveis so representadas na memria ou registradores.

Variveis vs Constantes
Um conceito muito importante a se compreender a diferena entre Variveis e Constantes, como o
prpiro nome sugere, varivel passivel de alterao j as constantes no, esta ultima, uma vez
atribuida no poder mais ser alterada, em contra partida as variveis podem ser alteradas
ilimitadamente sem nenhuma perda de sua qualidade.
As variveis devem ser usadas para armazenar dados que sero regularmente alterados ou no, que
por exemplo ser informado spelo usurio, mesmo que no sejam alterados durante a execua do
programa, mas ser alteradas depois de sua declarao por uma entrada por exemplo.
As constantes devem ser usadas para armazenar dados que ser regularmente usados no
programa,como por exemplo um fator constante de converso para um calculo, facilitando assim o
uso da formula, um bom exemplo seria o valor de "PI" que ficar armazenado na constante de mesmo
nome.

E o que so tipos de dados?


Tipos de dados o formato do dado a ser armazenado, este dado pode ser um nmero, uma letra, ou
uma sequncia de letras, formando assim uma palavra ou frase.
Os nmeros podem ter diversos tipos, por exemplo, podemos ter nmeros inteiros de 0 a 255,
observando os limites do computador no caso de compuadores/microcontroladores de 8 bits, podemos
ter nmeros inteiros de 0 a 65536 j mais facilmente trabalhado por computadores/microcontroladores
de 16 bits, e tambm podemos ter tambm nmeros fracionados, do tipo longo ou de ponto flutuante
como utilizados na engenhria.
Vejamos ento quais so os tipos de dados que o Portugol pode trabalhar sem problemas, lembrando
que Portugol uma pseudo linguagem, portanto ela ter tipos que independem do computador
utilizado.

Tipos nmericos
inteiros

22

Variveis, Constantes e Tipos de Dados

A diretiva inteiro define variveis numricas do tipo inteiro, ou seja nmeros que no tenha casas
decimais, podendo armazenar aproximadamente o valor entre 2147483647 e -2147483648
Exemplos de uso: idade, nmero de filhos, quantidade de estados do Brasil.
Real

Define variveis numricas do tipo real, ou seja, com casas decimais. Conforme norma IEEE 754.
Valor mximo: 356 x e ^-43
Exemplos de uso: salrio, peso, temperatura.
ATENO As constantes so sempre inteiro, no existindo o tipo Real para elas, portanto mesmo
que venha usar o valor fracionado, declare as constantes como sendo inteiro

Outros tipos
Caractere

Define variveis do tipo string, ou seja, cadeia de caracteres.


Exemplo de uso: nome, endereo, frase
Lgico

Define variveis do tipo booleano, ou seja, com valor VERDADEIRO ou FALSO.


O VisuAlg permite tambm a declarao de variveis estruturadas atravs da palavra chave vetor.
Por hora lidar com estes tipos nos ser suficiente, vamos usa-los para desenvolver nossa habilidade
em escrever algoritimos bsicos de tratamento de dados, calculos e converses conforme
circunstncias bem controladas.

Declarando as variveis e Constantes.


Vimos anteriormente como a estrutura de um algoritimo, mas vamos rever como declarar variveis
aqui para fixarmos este procedimento no Portugol do VisuAlg.
Sempre a declao de um bloco de variveis, seja global ou local, deve ser feito com a diretiva var
precedendo o bloco, seguido dos nomes das variveis separados por virgula e finalizando com :
seguido do tipo de varivel.
Quando constante deve ser utilizado a diretiva const no final da linha, finalizando a declarao,
vejam o exemplo a seguir:
var x: real
y: inteiro
a: caractere
l: logico
c: inteiro
Para se declarar uma constant, basta declaralas na seo constante, listando cada constante em uma
linha atribindo seu valor com operador igual =
23

Variveis, Constantes e Tipos de Dados

const
notaMinima = 70
notaMaxima = 100
opcaoFixa = `A`
Defina as constantes antes das variveis.

Atribuindo Valores as Variveis e Constantes


A Atribuio de valores as variveis, e a inicializao das constantes, devem ser feitas com o smbolo
&lt;-, simbolo de menor que seguido de um fem, sem espaos entre os dois.
A atribuio de novos valores deve ser feita sempre que oportuna para as variveis, e no caos das
constantes deve ser feito no inicio do algortimo somente.

Prximos Passos (Prximo Subcaptulo)


O prximo passo entender como os dados so apresentados ao usurio utilizando o "Portugol" no
VisuAlg e em seguida como obter dados do usurio (ler dados externos).
Atualizado: 12/07/2016 - 11:00 | Revisado: Sat Jul 23 2016 21:17:26 GMT+0000 (UTC) | Compilado:
Sat Jul 23 2016 21:15:21 GMT+0000 (UTC)

24

Sada de Dados

Sada de Dados
No portugol possvel se comunicar com o mundo esterno apresentando dados atravs da interface,
toda informao externalizada ser apresentada na seo "rea de Visualizao de Resultados".
Todo programa precisa obter dados, tomar decises ou calcular sobre tais dados, e externalizar de
alguma forma, no faz sentindo um programa que no externalize algo. Para isso o Portugol do
VisuAlg tem comandos para leitura de teclado e escrita na tela. Futuramente quando estivermos
convertendo nossos algoritmos para Arduino iremos usar as funes e classes do Arduino que nos
permite obter dados e se comunicar com o mundo esterno conforme recursos disponveis.
Vejamos o algoritmo abaixo:
algoritmo "exemplo"
var x: real
y: inteiro
a: caractere
l: logico
c: inteiro const

inicio
x <- 2.5
y <- 6
a <- "teste"
l <- VERDADEIRO
c <- 5
escreval ("x", x:4:1, y+3:4) //Escreve: x 2.5 9
escreval (a, "ok") //Escreve: contedo de a seguido de ok (e depois pula li
escreval (a, " ok") //Escreve: contedo de a seguido de ok (e depois pula l
escreval (a + " ok") //Escreve: contedo de a seguido de ok (e depois pula
escreva ("valor lgico:", l, ".") // Escreve: VERDADEIRO
fimalgoritmo
Observe: fizemos um algoritmo mesmo que de exemplo com a indentao adequada, sempre
devemos nos preocupar com isso, nesta apostila iremos sempre cuidar desta prtica pois muito
importante.
Nosso foco neste subcaptulo e o uso da instruo escreva e escreval, pois nossa inteno
sempre apresentar dados ao usurio.
A instruo escreva permite apresentar dados puramente, ou com certa formao, veja a primeira
linha onde ocorre a instruo escreva, ela recebe trs parametros, ("x", x4:1, y+3:4).
O primeiro parametro "x", uma simples string e ser impresso como .
J o segundo parametro, representa a varivel x e os dois numros separados por ":" (dois pontos)
formatam a impresso nmerica, dizendo ao comando escreva que ele deve imprimir o x como um
numero real, onde o primeiro nmero, quatro (4), diz o nmero de casas antes do ponto decimal, se
ouver mais casas que nmeros a serem impressoas, ser preenchido com espao em branco. o segundo
nmero, dois (2) informa o numero de casas a ser usado aps o ponto, sendo preenchido com zeros a
direita se ouver mais casas que a parte fracional a ser preenchida. (faa testes e observe o
comportamento do VisuAlg e comente).
25

Sada de Dados

No podemos deixar de observar que ao escrever com o VisuAlg, inteiros, reais e valores lgicos,
adicionado um espao a esquerda para auxiliar na formatao quando concatenado com caracteres,
mas somente se no ouver o uso de formatao.
E finalmente o terceiro parametro imprime a varivel y, mas antes soma o valor 3 a ela, e o valor a
seguir separado por 2 pontos funciona como a formato j explicada no paragrafo anterior, no caso
imprime o valor em pelo menos 4 casas, preenchendo com espao em branco as casas que no so
preenchidas com nmeros. (faa testes e observe o comportamento do VisuAlg, e comente).
Veja o valor de y um inteiro, neste caso no tem parte fracional, se tentar formatar a parte fracional,
ela ser preenchida com zeros conforme o nmero de casas sugerido, faa alguns testes com esta
formatao.

Salto de Linha.
Como viram existe dois tipos de escreva, o primeiro acrescido de um l, e o segundo sem o l, o
primeiro insere um salto de linha aps fazer a impresso do contedo solicitado.
Faa testes de formtao com ambos os comando sde escrita na tela.

Prximo Passo (Prximo subcaptulo)


Agora que vimos como nos comunicar com o mundo externo apresentando dados, veremos no
prximo captulo como solicitar ao mundo externo dados, pedindo ao usurio que digite atravs do
teclado os dados necessrios ao nosso algoritmo.
Atualizado: 09/07/2016 - 16:25 | Revisado: Sat Jul 23 2016 21:17:26 GMT+0000 (UTC) | Compilado:
Sat Jul 23 2016 21:15:21 GMT+0000 (UTC)

26

Entrada de Dados

Entrada de Dados
Raramente um algortimo no precisa interagir com o mundo externo, e raramente ele no ter que
obter dados, pois atravs da variao de dados externos que o programa reage e assim apresenta
novas alternativas e resultados.
Para obtermos dados do mundo externos iremos usar um comando muito prtico do Portugol para
VisuAlg, o comando leia ele pode ser considerado o inverso do comando escrever j que ao
invez de imprimir o contedo de uma varivel na tela, ele ir ler do teclado em uma varavel o que for
digitado at que se tecle enter.
Ao usar o comando leia o VisuAlg espera que seja digitado algum dado comptivel a varivel
informada como parametro. Voc pode informar mais de uma varivel para que sejam digitadas em
sequncia.
Caso seja digitado um dado incomtivel com o valor esperado, este ignorado, por exemplo, se
esperado um inteiro e digitado um um caracter, este dado ser ignorado e descartado, atribindo 0
a varivel que foi informada.
Veja o exemplo abaixo:
algoritmo "teste"
// Autor: Carlos Delfino (consultoria@carlosdelfino.eti.br)
// demonstra como usar o comando leia, com uma ou mais variveis.
// variveis globais podes aumentar [1..?] pra quantos quiser
Var
var1, var2, var3: inteiro
var4, var5: caracter

inicio
escreva("Digite algo e veja o resultado a seguir")
leia(var1)
escreval("Voc digitou: ",var1)
escreva("Digite 3 dados e enter a seguir)
leia(var2,var3,var4)
escreval("voc digitou: ",var2:4,var3:4)
escreva("Agora vamos reaproveitar uma das variveis, insira um breakpoint a
leia(var5,var1)
escreval("Voc digitou: ", var5:10, var1:10)
fimalgoritmo
Vamos aproveitar o momento e analisar o comportamento tambm do comando escreva e
escreval, nestes momentos que descobrimos peculiaridades da linguagem usada. Faa testes.

Prximos Passos
Iremos aprender a seguir como diagramar nosso Algoritmo usando o conceito de fluxograma, h
diversas formas de se diagramar Algoritmos, mas usaremos apenas o mais conhecido e prtico.
Atualizado: 09/07/2016 - 16:30 | Revisado: Sat Jul 23 2016 21:17:26 GMT+0000 (UTC) | Compilado:
Sat Jul 23 2016 21:15:21 GMT+0000 (UTC)
27

Entrada de Dados

28

Fluxograma

Fluxograma
Vamos interromper nossa sequncia de estudo no Portugol, para aprender algo muito importante para
diagramarmos um Algortimo, e atravs de representao grfica demonstrar como apresentar o fluxo
de nosso cdigo quando este se torna mais complexo e um texto fica difcil de ser compreendido.
Este formato grfico, conhecido como fluxograma. Para nos ajudar a fazer nossos primeiros
fluxogramas e assim nos comunicarmos melhor, iremos usar o software Dia, e pode ser baixado
clicando aqui.
A seguir apresentado os principais smbolos que usaremos para representao grfica de nosso
cdigo em portugol.

Incio
O Simbolo de incio como pode ser visto uma forma oval, contendo a palavra incio ou mesmo o

nome do algortimo ou funo que se deseja descrever.


Em alguns casos pode ser substitudo por um circulo vazio, em especial em algoritmos mais simples.

Dados
O Smobolo dados deve ser utilizaod para identificar declarao de variveis e manipulao das
mesmas deve ser o smbolo abaixo:

Image 1.6.6.1 - Simbolo no Fluxograma para indicar Incio

Leitura de Dados
O smbolo de leitura de dados, utilizado para receber dados normalmente do teclado, em casos
especiais pode ser considerado receber dados de uma porta serial por exemplo:

29

Fluxograma

Escrita de Dados
O Simbolo de escrita de dados, interpretado de diversas formas em alguns padres de fluxograma,
como o Fluxograma do padro ANSI, que permite personalizar este simbolo para outras operaes, no
nosso contexto ser usado apenas como escrita de dados na tela ou na porta serial.

Processar
O Simbolo de processamento utilizado para chamar outro fluxograma, ou para indicar um conjunto
de instrues precisas, como fazer um determinado calculo, ou posicionar um brao mecnico.

Image 1.6.6.2 - Simbolo que representa um ponto de innio

Deciso
O Simbolo de deciso utilizado para analisar uma expresso lgica e assim decidir qual fluxo tomar,
muito usado tambm para representar a tomada de deciso dentro de estruturas de laos e na
estrutura "Escolha".

Image 1.6.6.3 - Simbolo de obteno de dados no fluxograma

30

Fluxograma

Ponto de Juno
Um ponto de juno normalmente usado para unir ramificaes no fluxograma gerados pelo
simbolo de deciso, o ponto de juno pode tambm ser usado nmerado para unir pginas de
fluxograma quando este precisa ser quebrado em partes por no caber numa nica visualizao.

Parar
O simbolo de parar igual ao simbolo de iniciar porm com a palavra Parar em seu interior. O
Algortimo finaliza ao encontrar este simbolo.

Image 1.6.6.4 - Leitura de Dados em um fluxograma

Exemplo de uma sequncia genrica de Fluxograma

31

Fluxograma

Image 1.6.6.5 - Escrita de Dados no Fluxograma

Prximos Passos
32

Fluxograma

Vamos ver agora como controlar a execuo de um determinado bloco de cdigo alm do principal,
veremos os operadores lgicos para que possamos ajudar na tomada de deciso. Aps este passo
veremos os operadores matemticos.
Atualizado: 13/07/2016 - 00:22 | Revisado: Sat Jul 23 2016 21:17:26 GMT+0000 (UTC) | Compilado:
Sat Jul 23 2016 21:15:21 GMT+0000 (UTC)

33

Instrues de Controle e Operadores Lgicos

Instrues de Controle e Operadores Lgicos


Agora nosso estudo vai comear a ficar mais divertido, e no porque estamos em um curso tcnico
onde iremos em breve na profisso escolhida, que no podemos nos divertir com nosso trabalho, nos
realiznado como profissionais.
Passaremos agora a ter maior controle sobre o algortimo, aprenderemos a fazer com que o
computador faa exatamente o que queremos, conforme dados forem fornecidos a ele. Este
aprendizado muito importante e ser usado ao longo de toda a sua vida como desenvolvedor de
softwares e firmwares (cdigo para microcontroladores e hardware).

Operadores Lgicos e Relacionais


Iremos antes de tudo aprender o que so operadores lgicos e relacionais, assim poderemos usa-los
com facilidade com as instrues de controle.
mas antes de continuarmos, precisamos conhecer duas constantes muito importantes:
VERDADEIRO
FALSO
So auto descritiveis e podem ser usadas para auxiliar na composio de expresses lgicas em
instrues de controle de fluxo (execuo de blocos) e instrues de controle de lao.

Operadores Relacionais
Operador
=
<>
<
>
<=

>=

descrio
Igual

Teste Resultado

2 = 2
1 = 5
Diferente
3 <> 3
2 <> 4
Menor
1 < 5
3 < 2
Maior
1 > 5
3 > 2
menor ou Igual 2 <= 7
4 <= 4
8 <= 3
maior ou Igual 2 >= 7
4 >= 4
8 >= 3

verdadeiro
falso
falso
falso
verdadeiro
falso
falso
verdadeiro
verdadeiro
verdadeiro
falso
falso
verdadeiro
verdadeiro

Operadores Lgicos
Operador
Nao
34

descrio

Teste

Operador unrio de negao, tem maior precedencia sobre os


demais operadores, faz a inverso da lgica, ou seja, verdaeiro se nao 2 = 2

Resultado
falso

Instrues de Controle e Operadores Lgicos

torna falso e falso verdadeiro


ou

xou

Operador similar a soma binria, quando um dos valores for


verdadeiro ou ambos forem, retorna verdadeiro

Operador similar a multiplicao binria, apenas quando ambos


os valores forem verdadeiro, retorna verdadeiro

Operador similar ao ou, porm apenas retorna verdadeiro se


somente um dos valores forem verdadeiros

verdadeiro
ou
verdadeiro
falso ou
verdadeiro
falso ou
falso
verdadeiro
e falso
verdadeiro
e
verdadeiro
verdadeiro
xou
verdadeiro
verdadeiro
xou falso
falso xou
falso

verdadeiro
verdadeiro
falso
falso
verdadeiro

falso
verdadeiro
falso

Controles de Desvios
Iremos ver dois controles de desvios de execuo, que nos ajudar a dar mais inteligncia ao nosso
Algortimo. O primeiro um desvio por deciso com base em expresses lgicas, muito indicado para
tomada de decises, e j deixo aqui um gancho para pesquisas de algortimos avanados como o
"C4.5", no veremos tais algortimos em nosso curso, ento vamos ao nosso primeiro controle o se,
em seguida veremos o comando escolha, um controle de seleo multipla.

Se
O comando se espera em seguncia uma expresso lgica que ir definir "se" executar "ento" um
bloco de cdigo, seja de apenas uma linha, ou seja de muitas linhas, ou "se no" executar outro
bloco.
A estrutura padro do comando :
se m < 7.0 entao
Escreva ("Em EXAME")
Senao
Escreva ("APROVADO")
fimse
Representamos o exemplo acima com o fluxograma:

35

Instrues de Controle e Operadores Lgicos

Image 1.6.7.1 - Estrutura de Controle SE

No pedao de algortimo acima, temos o seguinte a ser interpretado: Se "m" menor que o valor real 7.0
ento escreva "Em EXAME" na tela, agora se "m" no for menor nem igual, ento, escreva
"APROVADO" na tela.
possvel inserir uma estrutura de deciso dentro da outra, veremos tal prtica com exerccios.

Escolha
o comando escolha em algumas situaes melhor que o comando se, quando temos uma
36

Instrues de Controle e Operadores Lgicos

quantidade de analise de deciso maior, como por exemplo em cdigos de menu, ou que receba
caracteres como resposta e precisa tomar decises.
Vejamos um exemplo da estrutura do uso do escolha:

leia(op) // apenas para auxiliar o entendimento, no faz parte da estrutura de


escolha op
caso "Carioca", "carioca", "CARIOCA"
escreverl("preparar caf carioca")
caso "Expresso", "expresso", "EXPRESSO"
escreverl("preparar caf expresso")
outrocaso
escreverl("no tenho este tipo de caf.")
fimescolha
O fluxograma para o cdigo acima pode ser desenhado da seguinte forma:

37

Instrues de Controle e Operadores Lgicos

Image 1.6.7.2 - Estrutura de Controle "Escolha - Caso"


38

Instrues de Controle e Operadores Lgicos

Como podem ver o comando escolha permite diversos casos, no Portugol do VisuAlg, no
executam um aps outro apartir do escolhido, mas cuidado em outras linguagem como o C/C++ exige
um comando de interrupo.
No comando escolha tambm podendo ter uma opo outrocaso que ser executado caso
nenhuma outra opao seja identificada.
E se mais de uma opo for possvel, basta inseri-las separando cada um apor virgula.

Controles de Laos (loops)


Alguns blocos de cdigo precisam ser executados durante um periodo de tempo ou enquanto uma
determianda condio mantida. Para isso existens trs instrues no Portugol que nos permitem
controlar de forma diferente um bloco de cdigo.
Enquanto
A instruo de controle de laos enquanto, usada para permitir a execuo de um bloco de
instrues finitamente, antes de cada execuo do bloco uma condio analisada, enquanto ela
retornar verdadeiro.
Vejamos como a instruo de forma completa:
algoritmo "demonstracao enquanto"
Var
contador: inteiro
inicio
continua <- "s"
contador <- 1
escreval("Comea?")
leia(continua)
enquanto continua = "s" faca
escreval("Contador: ", contador)
contador = contador + 1
escreval("Contitua ou para?")
leia(continua)
fimenquanto
escreva("Equanto Finalizado:",contador)
fimalgortimo

39

Instrues de Controle e Operadores Lgicos

40

Instrues de Controle e Operadores Lgicos

Image 1.6.7.3 - Estrutura de controle Enquanto

Repita
J a instruo repita permite o bloco ser executado pelo menos uma vez, antes de verificar se a
condio que permite a repetio seja analisada.
algoritmo "demonstracao repita"
Var
contador: inteiro
inicio
contador <- 1
escreval("Comeando Enquanto:",contador)
escreval("Contitua ou para?")
repita
escreval(contatodor)
contador = contador + 1
leia(continua)
ate continuar = "s"
escreva("Equanto Finalizado:",contador)
fimenquanto
Como pode ver a instruo de controle repita fica no lao at que a oprao lgica retorne verdadeiro,
ou seja, "repete at que seja verdadeiro". Podemos dizer assim que o controle de lao repita a
negao do controle de lao enquanto.
Existe uma segunda forma de se usar o controle de lao repita que permite infinitamente executar um
bloco de cdigo, em um caso que veremos muito util no mundo dos microcontroladores, e por hora,
seria tambm til para um sistema que conte com um menu, vejamos como fica o programa acima
com este formato, essa nova sintaxe:
algoritmo "demonstracao repita infinito"
Var
contador: inteiro
continua: caracter
inicio
contador <- 1
escreval("Comeando Enquanto:",contador)
escreval("Contitua ou para?")
repita
escreval(contatodor)
contador = contador + 1
leia(continua)
se continua = "parar"
interrompa
fimse
fimrepita
escreva("Equanto Finalizado:",contador)
fimenquanto
41

Instrues de Controle e Operadores Lgicos

Veja, neste caso o uso do interrompa, que ser explicado abaixo se torna adequado e necessrio.
Para
A instruo de controle de laos para deve ser usada quando for preciso contadores automtico,
normalmente para acessar vetores. Vejamos um exemplo com a estrutura completa:
algoritmo: "demonstracao para"
Var
contador: inteiro
inicio
para contador de 1 ate 10 passo 1 faca
escreval("Valor: ",contador);
fimpara
fimalgoritmo

Image 1.6.7.4 - Estrutura de Lao/Loop - Para

Interrompa
Para as trs instrues de controle de lao, enquanto, repita e para possvel inserir condies
42

Instrues de Controle e Operadores Lgicos

internas se ou caso e assim interromper o lao, chamando o comando Interrompa.


Isso no indicado para programao estruturada, j que quebramos o fluxo do nosso Algoritmo,
tornando o codgo confuso e muito ramificado. O ideal que estruture seu cdigo de forma que este
flua naturalmente sem o uso do Interrompa ento procure buscar melhorias no seu algoritmo,
otimizaes, e evite o uso do Interrompao mximo que puder.

Prximos Passos
No h nada mais importante na vida tecnologica da humanidade quanto a matemtica, sem ela nada
do que temos hoje teria acontecido. E no prximo passo veremos rpidamente como transformar
nosas formulas matemticas em algoritmos.
Revisado: 07/07/2016 - 12:00 | Atualizado: 07/07/2016 - 11:55 | Compilado: Sat Jul 23 2016 21:15:21
GMT+0000 (UTC)

43

Operaes e Funes Matemticas

Operaes e Funes Matemticas


Vamos agora trabalhar com Operaes e Funes Matemticas e para isso preciso antes de tudo
aprendermos como convertermos as formulas matemticas presentes nos algoritmos testuais e teses
acadmicas que teremos acesso para construir o comportamento de nossos sistemas.
Para convertermos uma formula matemtica como esta:

2
{[ (5 3) + 1]} .5
3
em um Algoritmo computacional preciso linearizar as expresses, ou seja transforma-la em uma
sequncias simples de operaes, veja:

{[(2 3) (5 3) + 1]}.5
E posteriormente substituir os operadores matemticos pelos equivalentes na linguagem escolhida:

(((2 / 3) (5 3) + 1)) 5
Abaixo apresentamos uma tabela de substituio:
Descrio

Comum computacional

Multiplicao
Diviso
Soma
Subtrao
Abre chaves ou colchetes
Fecha chaves ou colchetes

. ou X
/ ou \div
+
{ ou [
} ou ]

*
/
+
(
)

Raiz Quadrada

sqrt(x)

Ponteciao

x^y

Prioridades
Como na matemtica comum precisamos construir nossas formulas sejam matemticas ou para
operaes lgicas observando as precedncias dos operadores, e alterando com o uso de parenteses
como comum ser feito. Abaixo uma tabela de prioridades para os operadores:
| Operador Aritmtico | Prioridade | | Exponnciao | 3 (maior) | | Multiplicao | 2 | | Diviso | 2 | |
Adio | 1 | | Subtrao | 1 (menor) |
Exemplo:

(2 + 2)/2 = 2
Porm j a formul:

2 + 2/2 = 3
44

Operaes e Funes Matemticas

| Operador Lgico | Prioridade | | e | 3 | | ou | 2 | | nao | 1 |


Resultado falso:

(2 > 3) ou (3 < 2) e (2 < 3) = F also


Resultado verdaeiro:

(2 > 3) e (3 < 2) ou (2 < 3) = V erdadeiro


Apesar do VisuAlg no aceitar relacionamento entre tipos de operadores, como matemticos com
Lgicos e Relacionamento, possvel usa-los em uma operao observando o uso correto.
| Operador | Prioridade | | Aritmticos | 3 | | Relacionais | 2 | | Lgicos | 1 |
O uso abaixo est errado:

2 5 > 3 ou 5 + 1 < 2 e 2 < 7 2


Para que a frmula acima fique correta deve ser escrita da seguinte forma:+

(2 5 > 3) ou (5 + 1 < 2) e (2 < 7 2)

Prximo Passo
Aqui concluimos nosso estudo sobre Algortimo, deste ponto cabe a ns prticarmos, existe ainda um
subcaptulo a seguir meramente como referncia geral as palavras chaves, comandos e funes
proprietrias do Portugol para VisuAlg.
Continuaremos agora na segunda parte onde iremos aprender a Linguagem C, com alguns ganchos
para a Linguagem C++, uma exteno que permite programar orientado a objetos com a a Linguagem
C e ainda outros recursos avanados, porm no iremos estudar nada que no seja necessrio para uso
com o Arduino e seu dialeto Wiring (tambm conhecido como Linguagem do Arduino)
Revisado: 07/07/2016 - 13:00 | Atualizado: 07/07/2016 - 13:00 | Compilado: Sat Jul 23 2016 21:15:21
GMT+0000 (UTC)

45

Tabela da Verdade e Depurao

Tabela da Verdade e Depurao


A depurao de cdigo uma atividade importante para descobrir se seu algortmo est funcionando
corretamente e se no, descobrir onde est o erro.
J a tabela da Verdade, nos ajuda tanto na ativdade de depurao, como tambm no planejamento e
otimizao de nosso cdigo.
Alguns chamam esta Tabela de Teste de Mesa.
A tabela da verdade uma simulao de todos os passos que sero dados no algorimo, porm
baseados nas variveis presentes, considerando seus valores, leituras, e tomadas de deciso, e assim
aferindo os resultados obtidos e desejados.
A tabela da verdade pode se tornar bastante complexa, e quando for o caso procure usar um software
como uma planilha eletrnica para lhe ajudar a construi-la e aferir os valores, principalmente se ouver
muitos calculos que sejam necessrios para obter os resultados.
A construo da Tabela da Verdade, ou Tabela de Teste de Mesa, se inicia pela criao de uma coluna
para cada varivel, onde deve na primeira linha conter os valores esperados em sua inicializao.
Em seguida deve se aferir atrav do processo de depurao, usando linha a linha [F8] ou Pontos de
Paradas (Breakpoints) para conferir se as variveis esto com os valores esperados.
Nas linhas subjacentes colocado o valor de cada varivel a cada interao do cdigo, identificando a
linha conforme o ponto de parada ou a interao no lao ou bloco de cdigo que se est sendo
analisado.
indicado tambm criar uma coluna para cada operao lgica que influncia em laos e estruturas
de conroles.

46

Relao de Comandos Portugol para VisuAlg 3.0

Relao de Comandos Portugol para VisuAlg


3.0
Este material foi retirado na integra do arquivo "RELAO DE COMANDOS DO VISUALG
3.0.txt", e no decorrer do desenvolvimento desta apostila ser amadurecido para melhorar a fluncia e
consolidao com o restante do texto.
Dentro do VISUALG 3.0 tem esta lista acessivel atravs da sequencia de teclas [CTRL]+[J], diz o
autor: "mas acho que tambm est incompleta, que so tantas coisas, que eu estou ainda me
organizando".
A maioria deles esto dentro do HELP.CHM
Segue a relao dos comandos, funes, variveis, constantes e dados:

Funes pr definidas no visualg 3.0 (pseudo-linguagem em


portugol)
Funes matemticas
Abs( )
Log( )
Div( )
Tan( )
Sen( )
Cos( )
Rand()

Gera um valor aleatrio do tipo Real. No precisa argumento, o valor aleatrio gerado entre 0 e 1,
sendo a preciso de de 15 casas aps a virgula, como no exemplo abaixo:
0.454236520919949
Randi(x)

Gera um nmero aleatrio do tipo Inteiro, entre 0 e o valor de x informado como parmetro.
Quad( )
Exp( )
Pot( )
Cotan( )
ArcCos( )

47

Relao de Comandos Portugol para VisuAlg 3.0

ArcSen( )
Raizq( )
Mod

usado para achar o mdulo de um nmero em comparaes (o mesmo que ' % ' )

Funes relativas ao teclado


Leia

L do teclado e coloca em uma varivel 'nomeVariavel':


leia(nomeVariavel)

Funes especiais de converses


Pos( )
Asc( )
Carac( )
Copia ( )
Int( )
Compr( )
Maiusc( )
Minusc( )
NumPCarac( )
CaracPNum( )

Funes especiais que no retornam valores para variveis s com os PERIFRICO


(MONITOR)
Escreva

Escreve na tela do monitor do computador fica na linha


escreva(&quot;texto entre aspas, ou varivel que ter o conteudo
impresso na tela&quot;)
#####Escreval
Escreve na tela do monitor do computador mas pulando um linha.
escreval("texto entre aspas, ou varivel que ter o conteudo impresso na tela com um salto de linha")

escreval(variavel)
48

Relao de Comandos Portugol para VisuAlg 3.0

##### MudaCor
Muda a cor dos caracteres(letras) e do fundo (tela)
mudacor("nome da cor")
Nome de cores possveis:
* Amarelo
* Branco
* Preto
* Azul
* Verde
* Vermelho

#####Mudacor(Cor, posio)
Muda a cor dos caracteres (letras) ou do fundo (tela) conforme a posio infor
mudacor("nome da cor","posio")
Nome de cores possveis:
* Amarelo
* Branco
* Preto
* Azul
* Verde
* Vermelho
Posio pode ser entre "aspas" ou:
* FRENTE
* FUNDOS

## Extras (ainda no criadas)


##### Posicionar
##### Tecla
##### Etrim
##### Dtrim
##### Esquerda
##### Direita
##### Replicar

## Comandos do Visualg 3.0 (pseudo-linguagem em portugol)


##### Limpatela
Limpa a tela do monitor do computador
49

Relao de Comandos Portugol para VisuAlg 3.0

##### Pausa
##### Arquivo
#### Desvios multiplos condicionais
s use variveis e controles do tipo caracter
Escolha xvar(caracter) Caso "texto" Outrocaso Fimescolha (FIMESCOLHA)
#### Desvios simples e compostos
Se (condio) ento comandos seno comandos FimSe

SE Entao Ento (ENTO) Senao, Seno (SENO) FimSe


#### Controle de Laos sequenciais e finitos
PARA varivel(inteira) DE inicio AT fim FAA comandos FIMPARA

Para De (DE) Ate (ATE) At (AT) Passo Faca (FACA) Faa (FAA) FimPara (FIMPARA)
#### Controle de Laos sequenciais e infinitos
Controla quando um bloco de cdigo deve ser executado.
##### Enquanto
"Enquanto" uma determinada condio for verdadeira executa o bloco de cdigo.
Enquanto condio FAA comandos FimEnquanto
##### Repita
Repete o bloco de cdigo infinitamente;
Repita Fimrepita (FIMREPITA)

##### Interrompa
Quando usado dentro de um bloco de cdigo dentro de lao (loop), interrompe o
```Interrompa
Retorne

Retorna ao inicio do lao, comeando novamente o bloco.


Retorne

Operadores lgicos
e

50

Relao de Comandos Portugol para VisuAlg 3.0

Conjuno logica, verdadeiro apenas se ambos as condies forem verdadeiras.


e (E)
ou

Conjuno logica, verdadeiro se uma das condies forem verdadeiras.


ou (OU)
no

Inversor lgico, inverte a condio, se verdadeira passa a ser falsa e vice versa.
No (NO)
Xou

Conjuno lgica, equivalente a ou porm apenas retorna verdadeiro se uma das condies forem
verdaeiras, se ambas forem verdadeiras ou falsas retorna falso. Xou (XOU)

Declarao de
USURIOS)

UDFs

(FUNES

Funcao

Funo (FUNO)
Fimfuncao (FIMFUNO)
Mensagem

Procedimento (PROCEDIMENTO)
Fimprocedimento (FIMPROCEDIMENTO)

Palavras reservadas Especiais


Algoritmo

Comeo de todos os algoritmos


var

declarao dos tipos das variveis


Inicio

inicio do programa(Algoritmo) ou funo ou procedimento


FimAlgoritmo

termino do algoritmo e fim do programa


Cronometro
51

DEFINIDAS

PELOS

Relao de Comandos Portugol para VisuAlg 3.0

Timer
On
Off
Eco (ECO)
Aleatorio (ALEATRIO)
Perfil
Dos (DOS)
Debug (DEBUG)
Tipo (TIPO)
var (VAR)
const (CONST)
Declarao de constantes padro
const (CONST) Lista Pi (PI)
Declaradores de Variveis no cabealho do programa (rea de declaraes)
Var (VAR) Varivel (VARIVEL) Variavel (VARIAVEL)
Atualizado: 09/07/2016 - 16:30 | Revisado: Sat Jul 23 2016 21:17:26 GMT+0000 (UTC) | Compilado:
Sat Jul 23 2016 21:15:21 GMT+0000 (UTC)

52

Questes para fixao da Primeira Parte

Questes para fixao da Primeira Parte


1. Faa um Algoritmo para caclular o estoque mdio de uma pea, sendo que ESTOQUEMDIO
= (QUANTIDADE MNIMA + QUANTIDADE MXIMA) / 2.
2. Construa um algoritmo que:
1. Leia a cotao do Dlar.
2. Leia um valor em Dlares.
3. Converta esse valor para Real.
4. Mostre o resultado.
3. Construa um algoritmo para pagamento de comisso de vendedores de peas, levando-se em
considerao que sua comisso ser de 5% do total de venda e que voc tem os seguintes
dados:
4. Calcular e exibir a mdia ponderada de 2 notas dadas. (nota1 = peso 6 e nota2 = peso 4)
5. Converter uma temperatura em Fahrenheit para Celsius e mostrar o resultado:

F = (C 1.8) + 32
C = (F 32)/1.8
K = C + 273.15
6.
7.
8.
9.
10.
11.

Reajustar um salrio em 17,75%


Calcular o desconto de 23% sobre o preo de um produto.
Dada uma taxa de cmbio, transformar um valor em Dola para Reais.
Data uma taxa de cmbio, transformar um valor de Reais para Dolar.
Somar dois nmeros representados pelas letras a e b e escrever. O resultado da Soma.
Calcular e exibir a rea de um tringulo.

area =

BH
2

12. Escreva o comando de atribuio e resolva a expresso das seguintes frmulas matemticas.
Onde A=2, B=6, C=3, D=4, E=8, F=4, X=2 X =

A+ B
C
D E
F

Y =

13. Para cada linha informar o valor da exprsso e das variveis:

X 5; Y 1; Z 3

1.
;

X 5+Y Z

2.
;

Z X; Y Z

3.
;

Y =X

4.
;
53

2X2 3x( x+1) X+2


+ X
2
2X

Questes para fixao da Primeira Parte

Z X + Y /2 2

5.
;

X=Y

6.
;

Z>X

7.
;

Y <Z

8.

;
14. Qual ser o valor armazenado em X se X possui o valor 15 e foram execuadas as seguintes
instrues?

X X +3
X X 6
X X/2
X 3X
X X X + X X/X
15. Supondo que A, B e C so variveis de tipo inteiro, com valores iguais a 5, 10 e -8,
respectivamente, e uma varivel real D, com valor de 1,5, quais os resultados das expresses
aritmticas abaixo:
1. 2 A mod 3 c
2. rad (2 C) div 4
3. (30 mod 4 pot (3, 3)) 1
4. pot(C, 2) + (D 10)/A
5. rad(pot(A, B/A)) + C D
16. Elabore um algortimo para informar o saldo atualizado:
1. De um trabalhador que: (1) recebeu seu salrio e o depositou em sua conta corrente
bancria.
(2) emitiu dois chequees. sabe-se que cada operao bancria de retirada paga CPMF de
0,38% e o saldo inicial da conta est zerado.
2. De um trabalhador que: (1) Recebeu seu salrio e o depositou em sua conta corrente
bancria. (2) Emitiu um cheque. Sabe-se que cada operao bancria de retirada paga
CPMF de 0.38% e o saldo inicial da conta de R$ 1.000,00
17. Elabore um algortimo para resolver cada um dos seguintes problemas usando a linguagem
algoritma do Visualg:
1. Ler trs numeros inteiros e positivos (A, B, C), calcular e mostrar o resultado da seginte
expresso:
54

Questes para fixao da Primeira Parte

D = (R + S)/2
, em que

R = (A + B)2
e

S = (A = C)2
.
2. Calcular e exibir a rea de uma circunferncia. Usar a expresso

area = pi R2
onde pi uma constante no valor de 32,1416
3. Calcular e mostrar o ndice de massa corprea e uma pessoa a partir de sua altura e
peso, dado pela frula

IM C = P /H 2
, onde P o peso em Kg e H altura em metros.
18. Converta cada uma das expresses abaixo para a forma algortmica e calcule o valor da varivel
X utilizando os valores informados a seguir: Formulas:
1. X =

AB
5C

2. X =

AB C D
E+F

3. X =

+
CE d

2 2B+1)
(a
2(A+B)

Valores:
1. A = 10; B = 6; C = 4; D = 2 e E = 4; X = ?
2. A = 9; B = 3; C = 8; D = 2 e E = 4; F = 3; X = ?
3. A e B = 5; X = ?
Resultados Esperados:

19.
20.
21.
22.
23.
24.
55

1. 14
2. 12
3. 18
Fazer um algortimo para determinar se possvel calcular ou no uma raiz quadrada, caso
positvo calcule-a
Fazer um algortmo que identifique se o nmero digitado par ou impar:
Ler um nmero real e escrever se negativo, nulo ou positivo.
Desenvolver algoritmo que, dada duas notas, inofrma se o aluno foi aprovado ou no.
No exemplo anterior, informar se o aluno foi aprovado, est em recuperao ou foi reprovado.
Desenvolver um algoritmo que dado um salrio, calcule o novo salrio, sabendo-se que o

Questes para fixao da Primeira Parte

aumento diferenciado da seguinte forma: quem tem salrio menor que R$ 500,00 vai ter um
aumento de 30% e quem receber isso ou mais, ter um aumento de 20%
25. Calcular imposto sobre salrio: at 1.100 no paga imposto, at 2.200 paga 11% e acima de
2.200 paga 20%.
Atualizado: 11/07/2016 - 10:34 | Revisado: Sat Jul 23 2016 21:17:26 GMT+0000 (UTC) | Compilado:
Sat Jul 23 2016 21:15:21 GMT+0000 (UTC)

56

C/C++ - Introduo a Linguagem

C/C++ - Introduo a Linguagem


Iremos agora comear realmente a aprender como dominar o computador, at agora estavamos
abrindo horizontes, apenas como um esportistas que vai a academia exercitar seus msculos,
estavamos com o Portugol exercitando nosso celebro para encararmos o que realmente programar
um computador.
A Linguagem C (ainda no veremos o C++) a linguagem de auto nvel que de mais fcil
entendimento e ao mesmo tempo mais prxima do computador, todas as demais linguagns por maior
que sejam suas promessas, ainda sim no geram o melhor cdigo para um computador.
No decorrer de nossas vidas profissionais conheceremos cada vez mais novas linguagens, algumas
recem criadas e outras j antigas como o Basic. No mundo dos microcontroladores, nosso objetivo
com esta disciplina, existe a linguagem Basic que qualquer programador com amplos conhecimentos
da engenharia de desenvolvimento poder pensar que no seja possvel usar para a programao de
Microcontroladores, mas a plataforma Bascom nos favorece neste milagre tecnologico, uma vez que
os microcontroladores foram criados, em especial os de Arquitetura Risc, para serem programados
com a linguagem C, mas no exclusivamente.
Ento como podem ver o aprendizado da linguagem C fundamental para quem pretende programar
com excelencia para microcontroladores, em especial os que so da familia ARM e AVR j que
ambos so baseados na arquitetura RISC. Isso se deve ao fato de tais microcontroladores terem sido
construidos para que fossem programados nativamente na linguagem C.

Prximo Passo
Vamos ento comear nossos estudos da Linguagem C, e deixaremos a sua exteno a Linguagem
C++ para um curso mais avanado de programao, j que o C++ exige o domnio da linguagem C e
conhecimentos de orientao a objetos, linguagens de diagramao e analise como UML.
A seguir vejamos um pouco da Histria do C e do C++
Revisado: Sat Jul 23 2016 21:17:26 GMT+0000 (UTC) | Compilado: Sat Jul 23 2016 21:15:21
GMT+0000 (UTC)

57

Histria da Linguagem C e C++

Histria da Linguagem C e C++


Vamos comear com a histria do C, conhecendo como surgiu. O C++ surgiu em 1979 quando Bjarne
Stroustrup foi trabalhar em sua Tese de doutorado, ele iniciou seu trabalho com a linguagem chamada
Simula designada para simulaes, porm Stroustrup, achou Simula muito lento para usos prticos.
Inicialmente C++ era chamada de C com Classes, o que nos responde qual a diferena bsica entre C
e C++, j que C++ um superconjunto da Linguagem C, seu objetivo adicionar a linguagem C os
conceitos de programao orientada a Objetos, se perder o desempenho da linguagem C.
Em 1983, o nome C++ foi adotado ento, ++ foi escolhido por ser o operador que faz uma varivel
ser adicionada de uma unidade (somada do valor um), mas apesar deste pequeno incremento a
linguagem C++ traz muitos recursos novos a linguagem C.
A Linguagem C++ passou a ser patronizada em 1998 em seu primeiro padro internacional atravs do
ISO/IEC 14882:1998, conhecido como C++98, gerando um manual de referncia amplamente
utilizado para esta padronizao, 2003 um novo comit apresentou diversos problemas no padro
anterior, revisando e gerando um novo padro ento chamado C++03
J em 2005, um relatrio tcnico, apelidado de TR1 (Tecnical Report - 1), detalhou diversos recursos
que deveriam ser adicionados a linguagem, criando um novo padro chamado C++0x, porm somente
nos meados de 2011 um novo padro foi gerado o C++11, incluindo neste novo padro o uso de
expresses regulares e tambm uma proposta para uma nova sintaxe similar laos do tipo foreach
existentes em outras linguagens, criando uma maior distncia da linguagem C original, mas no se
tornando incomptivel. Porm sendo preciso identificar para o compilador quando ser usado
recursos especificos da Linguagem C++ e C por questes de optimizao.
A linguagem C, nosso objetivo, foi criada por Dennis Ritchie em 1972 quando este trabalhava nos
Laboratrios Bell da AT&T para que fosse uma linguagem padro do sistema operacional Unix usado
ento no PDP-11.
A linguagem C, foi baseada tecnicamente na linguagem ALGOL 60, uma linguagem de alto nvel que
j comentamos aqui quando falamos de algortimo, esta linguagem por ser uma linguagem de alto
nvel trabalhava longe dos conceitos da mquina, sem ter que se preocupar com aspectos como cada
comando ou dado seria armazenado ou processado, o ALGOL no teve sucesso, talvez por tentar ser
muito Auto Nvel. A Linguagem C foi criada para substituir a linguagem FORTRAN.
Antes do C, ouve tentativas de criar outras linguagens como a CPL (Combined Programming
Language) na univerdadie de Londres e Cambridge, uma linguagem que tentava trazer o ALGOL a
uma realidade, porm ainda assim no se teve sucesso, em 1967 tentaram criar a BCPL (Basic CPL),
uma tentativa de Martin Richards em Cambridge, e tambm no frutificou.
Em 1970 o chefe de equipe que projetou o UNIX para PDP-11 criou uma outra verso resumida do
CPL chamada simplesmente B, mas tanto B quando BCPL ainda eram muito limitados, e B tambm
se mostrou lenta, ainda mais para escrever softwares operacionais e de alto desempenho.
Ento Dennis Ritchie ficou encarregado de criar uma nova linguagem, que seria o sucessor de B, nada
mais original que chama-la de C.
A linguagem C buscou manter o "contato com o computador real" e ainda sim dar ao programador
novas condies para o desenvolvimento de programas em reas diversas, como comercial, cientfica
e de engenharia.
58

Histria da Linguagem C e C++

Por muitos anos (aproximadamente 10) a sintaxe (formato) tida como padro da linguagem C foi
aquela fornecida com o UNIX verso 5.0 do Bell Labs. A principal documentao deste padro
encontra-se na publicao "The C Programming Language", de Brian Kernighan e Dennis Ritchie
(K&R), tida como a "bblia da linguagem C".
O mais interessante desta verso de C era que os programas-fonte criados para rodar em um tipo de
computador podiam ser transportados e recompilados em outros sem grandes problemas. A esta
caracterstica d-se o nome de portabilidade. Com ela, uma empresa que desenvolve um programa
pode faz-lo rodar em diferentes computadores sem ter um elevado custo a cada vez que isto for feito.
Em 1985, ANSI (American National Standards Institute) estabeleceu um padro oficial de C o
chamado "C ANSI", e o usuaremos apartir de agora..

Prximos Passos
Iremos no prximo captulo identificar e instalar qual ferramenta iremos usar para aprendermos o C, e
quais as opes que temos para isso.
Revisado: Sat Jul 23 2016 21:17:26 GMT+0000 (UTC) | Compilado: Sat Jul 23 2016 21:15:21
GMT+0000 (UTC)
Referencias:
http://www.cpluplus.com
http://www.inf.pucrs.br/~pinho/LaproI/Historico/Historico.htm
C Completo e Total, Coleo Osborne, Editora Makron Books, Autor Herbert Schildt.
Outras Fontes na Internet.

59

Nossa IDE para aprendermos C

Nossa IDE para aprendermos C


Mesmo nos temos atuais (meados de 2016) onde ferramentas visuais nos permite programar
fcilmente para o Arduino usando bloquinhos como se brinca com um quebra cabea, ns como
profissionais precisamos aprender como realmente programar um computador e usarmos uma
linguagem, no caso C, que expresse realmente nosso desejo.
Alm disso com o crescimento de nosso algoritimo, veremos que manter um diagrama se torna um
trabalho cansativo, e ainda mais fcil manter nosso cdigo atravs de meios tradicionais como a
escrita em uma determinada Linguagem.
Para aprendermos C, precisamos de uma ferramenta similar ao que aprendemos o Portugol, algo
como o VisuAlg, e descobrimos eno que existe uma ferramenta que leva o nome de seu autor:
PELLEs C, uma ferramenta criada da mesma forma que todas as boas ferramentas foram, um
profissional que percebeu uma demanda e foi atrs da soluo ideal, no achando ele a desenvolveu.
Porm, Pelles C no a soluo definitiva, havero no decorrer do nosso amadurecimento como
programadores a possiblidade de usarmos outras ferramentas.

Baixando e Instalando o PELLES C


O procedimento simples, visite o site http://pellesc.de/index.php?page=download&lang=en, apesar
de ser um site alemo est em ingls, o que facilita bastante o entendimento, como pode ver apartir de
agora o ingls ser nosso segundo idioma.
Escolha a verso 32Bits, que rodar bem em qualquer computador.
Aps fazer o Download do Pelles C, execute o arquivo setup.exe, e prossiga com a instalao
padro, sem alterar nenhum parametro, seguindo clicando no boto next, next at o fim.
Agora execute o Pelles C a seguir veremos como nossa interface.

A Interface
A Interface da IDE Peles C um pouco diferente da IDE VisuAlg 3.0, quando abrimos a aplicao,
apresetnado a janela, como pode ser visto abaixo, temos por padro o menu, a barra de tarefas, a rea
principal que no caso do Pelles C permite a abertura de diversas abas com contedos diferentes, sendo
a primeira a aba com o nome "Start Page", muito til para quem est aprendendo.
Nesta aba, so apresentadas aes mais comuns (Common Actions), Projetos recentemente usados
(Recent Projects) e sugestes de links para aprendizado e aperfeioamento (Links):

60

Nossa IDE para aprendermos C

Image 1.8.2.1 - Janela principal da IDE Peles C

Vamos comear usando o primeiro programa que todo programador C faz quando est dando seus
primeiros passos, o Hello World, para isso clique no link hello PPJ.
Veremos ento uma nova aba sendo aberta como abaixo:

Image 1.8.2.2 - Abrindo o primeiro programa, Hello World, no Pelles C

61

Nossa IDE para aprendermos C

No iremos entrar em detalhes como a linguagem C agora, vamos apenas nos atentar para a
interface de programao e como usa-la.
Conhecendo os Menus
Os menus "File" (Arquivo), "Edit" (Editar), so comuns e tem pouca diferena entre outros softwares
que lidam com edio de texto, temos tambm o menu "View" (Visualizar) que nos ajuda a ter acesso
a reas da janela que tero informaes relevantes aos arquivos e recursos que estamos utilizando em
nosso programa.
O menu mais importante para ns agora o "Project" (Projeto), que nos d acesso a todas as aes
relativas ao nosso cdigo e o projeto que estamos codificiando.
Como podem ver na imagem a seguir, no menu "Project" que temos acesso as aes de compilao
e depurao do programa, no Pelles C as teclas de atalho so diferentes das usadas no VisuAlg.

Image 1.8.2.3 - Menu Project no Pelles C

A Linguagem C uma linguagem compilada, portanto voc tem a opo de gerar um cdigo binrio
comptivel com o computador no qual pretende executar seu aplicativo, ento quando usado a
sequencia [CTRL]+[B] seu programa compilado e gerado um arquivo Executvel do tipo EXE, se
desejar executar seu programa voc deve usar a opo "Eecute *.EXE", onde o asterisco o nome de
seu projeto, ou a sequencia [CTRL]+[F5], veja que voc pode depurar seu projeto usando a tecla [F5]
Ativando Breakpoints
E se desejar inserir um "BreakPoint" em seu projeto, dever parar sobre a linha desejada como ponto
de parada, clicar com o boto direito e selecionar "Toggle Breakpoint", outra forma mais rpida para
isso clicar duas vezes ao lado esquerdo da linha na faixa branca, assim ir aparecer o ponto
62

Nossa IDE para aprendermos C

vermelho que indica que a linha est marcada para depurao. Para desativar siga os mesmo passos
sobre a linha que j tem "BreakPoint".

Image 1.8.2.4 - Ativando Break Point no Pelles C

Abaixo vemos a linha com o breakpoint ativo:

Image 1.8.2.5 - Linha com BreakPoint Ativo no Pelles C

Prximos Passos
Veremos agora a estrutura bsica de um programa em C, apenas o que importante para entendermos
como ter sucesso no Hello World, o que j so dois novos conceitos alm do que j aprendemos
agora, porm na tica da linguagem C.
63

Nossa IDE para aprendermos C

Revisado: Sat Jul 23 2016 21:17:26 GMT+0000 (UTC) | Compilado: Sat Jul 23 2016 21:15:21
GMT+0000 (UTC)

64

Estrutura Bsica de um Algortimo em C

Estrutura Bsica de um Algortimo em C


Iremos neste captulo entender como se deve escrever um cdigo em C, e o que cada parte. Iremos
aprender dois novos conceitos muito importantes, "Bibliotecas" e "Funes", com estes dois conceitos
tornamos nosso algortimos bem mais simples e mais estruturados ainda.
Vejamos ento o nosso primeiro cdigo em C que j vimos no captulo anterior, o "Hello World",
abaixo temos o fonte que copiamos do Pelles C.

/****************************************************************************
* *
* Filename: hello.c *
* *
* Purpose : Standard C sample for Pelles C for Windows. *
* *
* History : Date Reason *
* 02-09-10 Created *
* *
****************************************************************************/
#include <stdio.h>
/* entry point */
int main(void)
{
printf("Hello, world!\n");
return 0;
}
Acima podemos identificar trs sees em nosso cdigo:
Comentrios principais, relativos a documentao do projeto e ao arquivo,
Diretivas de compilao da Aplicao, como incluso de outros arquivos ou bibliotecas e
Finalmente nosso cdigo.

Comentrios do Projeto e Documentao do Arquivo


A primeira seo de nosso cdigo, se trata apenas de comentrios onde vemos que existe uma nova
forma de se fazer comantrios, alm do uso apenas de duas barras //, podemos no C/C++ e em outras
linguagens usar comentrios de multiplas linhas com o par /* e */ ou seja na primeira linha iniciamos
o comentrio multilinha com /* no inicio da linha e na ltima linha finalizamos no final da linha com
*/.
Na primeira seo, fundamental que documentemos nosso cdigo, como j aprendemos com o
VisuAlg para a linguagem Portugol. Como podem ver, esta uma prtica muito saudvel para o
programador e o sucesso do projeto, permitindo que os futuros mantenedores entendam tudo que
aconteceu em seu cdigo.
Vejamos em detalhes uma sugesto muito vlida para construirmos o comentrio que ser usado como
documentao de nosso projeto:
/****************************************************************************
65

Estrutura Bsica de um Algortimo em C

* *
* Filename: hello.c *
* *
* Purpose : Standard C sample for Pelles C for Windows. *
* *
* History : Date Reason *
* 02-09-10 Created *
* *
****************************************************************************/
Filename:, por negociao com a equipe fica ento determinado que na primeira linha do
comentrio ser o nome do arquivo, podemos tambm colocar ai o nome do projeto como um todo, se
este tiver muitos arquivos.
Na terceira linha podemos ter o proposito, a descrio do projeto ou especificamente do arquivo caso
ele faa parte de um projeto maior e no seja o arquivo principal, o ponto de entrada de nosso projeto.
Esta linha pode se estender por diversas outras, lembrando-se de indentar sempre o texto para
melhorar a formatao do comentrio e assim no haver dificuldades de leitura, lembre-se tambm de
evitar ultrapassar o limite de 80 colunas em cada linha.
E para finalizar faa uma seo de histrico (History) em sua documentao, apresentando a data
(Date) e o motivo (Reason) da edio de seu arquivo. O que ajudar a encontrar erros e retornar seu
cdigo a um estado anterior para testes, e justificar seu trabalho na esquipe. Esto poder lhe ajudar
tambm quando estiver usando sistema de versionamento como GIT, CVS e outros.
Os asteriscos usados de forma extra no comentrio acima, so apenas para melhorar a formatao,
voc pode usar tambm outros smbolos dentro de seu comentrio de multiplas linhas desde que inicie
e finalize o bloco corretamente com os pares: /* e */.

Seo de Inclusso e Diretivas de programa.


Na linguagem C e C++ temos diretivas de compilao que ajudam a automatizar alguns processos e
orientar o compilador a entender o que deve ser feito para se ter sucesso na montagem de seu projeto,
ainda mais quando este tiver multiplos arquivos.
Iremos por hora aprender apenas uma diretiva de compilao, #include.
#include, diz ao compilador que inclua um outro arquivo ao presente, para que quando este for
compilado seja encontrado todas as informaes necessrias para sua construo. Esta diretiva
normalmente usada para incluir cabealhos de bibliotecas onde as assinaturas das funes fornecidas
poruma biblioteca estaro descritas.
No caso de nosso programa, incluido o arquivo "stdio.h", que um cabealho que define funes
bsicas para entrada e saida em C, arquivos de cabealho so sempre criados com exteno .h e
contm apenas a descrio das funes (iremos aprender mais um pouco a frente sobre funes, e
entenderemos melhor como este arquivo funciona).
A frente veremos que usamos uma funo chamada printf ela definida neste aquivo que o
ponto de entrada para a biblioteca de mesmo nome, STDIO (o link ir lhe levar a uma biblioteca
especifica para controladores AVR, como pode ver h diversas verses da STDIO, conforme a
plataforma se est trabalhando, o compilador cuida de escolher a biblioteca correta), neste biblioteca
h diversas funes que ajudam tanto na escrita de arquivos e tambm com a sua leitura.
Note: Note
66

Estrutura Bsica de um Algortimo em C

Tudo no C e C++ tratado como arquivo, isso uma herana do Unix, procurem pesquisar como
o Unix trata dispositivos e recursos do Sistema Operacional. Portanto se estiver programando
para um computador esta biblioteca ir escrever no arquivo "tela" e ler do arquivo "teclado", se
estiver em um microcontrolador, conforme a estrutura do mesmo poder estar lendo e
escrevendo no arquivo que d saida para a porta serial.

Seo de Cdigo
Como no C/C++ podemos ter arquivos apenas com cdigo de apoio (bibliotecas de funes e
parametros) que sero usados para serem incluidos (#include) em outros arquivos, e finalmente no
arquivo principal para que nosso aplicativo seja construido e se torne funcional, a seo de cdigo
abrange tanto a seo de definio de variveis quando a seao de cdigos propriamente.
No C/C++ temos uma funo principal de nome int main(void) que deve ser escrita pelo
programador e ser o ponto de entrada para o programa EXE ou para o inicio de execuo no
microcontrolador, veremos a seguir o que uma funo, mas por hora iremos entender como este
ponto de entrada no cdigo escrito em C/C++.
No portugol vimos que precisamos definir uma seo chamada Inicio onde conter o cdigo principal
que ser chmado para dar partida em nossa aplicao, j no C/C++ precisamos definir uma funo de
nome int main(void) vamos ento entender o que uma funo, e ento em seguida voltar e
vermos como definirmos variveis globais, locais e a ordem que isso deve ser feito no C/C++.

Entendendo o conceito de Funes


A funo um dos conceitos mais importantes da programao, atravs da funo que estruturamos
ainda mais nosso cdigo, pois podemos atravs delas, agrupar um conjunto de comandos, uma funo
em programa atua de forma bem similar a funes matemticas, passamos um grupo de parametros,
um calculo feito e se retorna o resultado.
Em C/C++ funes podem retornar ou no valores, vejamos como a funo principal que devemos
definir seu contedo para que tenhamos um programa funcional:
int main(void)
Temos quatro partes importantes em uma funo, acima vemos 3 delas, o que se retorna, o nome da
funo, e o que ela recebe como parametro para aferir sua execuo, no C/C+++ int o tipo de
dados inteiro, e exatamente como em Portugol. portanto a funo main deve retornar ao seu final
um inteiro.
void um tipo de dado que no vale nada, como nulo, mas em C este conceito void pode se
tornar bem complexo, e por hora iremos trata-lo como nenhuma informao.
Portanto main, no precisa receber parametros, quando for chamada no recebe nada.
O nome da funo deve seguir o que j foi ensinado sobre nomeao de variveis, o mesmo valido
para funes, portanto ela deve iniciar sempre com pelo menos um caracter do tipo _ (trao baixo), a
at z ou A at Z (ou seja todas as letras do alfamento sejam mausculas ou mnusculas) e em seguida
podem conter nmeros, traos baixos e mais letras.
Por exemplo nomes como int \_andar(int), ou bool AtivarSistema(), void
UseAlgortimoC45(), so nomes vlidos.
Note
67

Estrutura Bsica de um Algortimo em C

Veja que, ao citarmos uma funo escrevemos o nome incluindo o retorno e o que ela recebe de
parmetro, chamamos isso de assinatura da funo. E assim evitamos enganos sobre qual funo
estamos falando.
Como foi dito uma declarao de funo tem quatro sees importantes, a quara parte o cdigo que
ser executado quando esta funo for chamado, todo bloco de cdigo em C/C++ delimitado por
chaves { e }, isso define o escopo das variveis e delimita o bloco, ajudando a administrar nosso
cdigo em memria.
Portanto nossa funo main completa fica assim:
int main(void)
{
printf("Hello, world!\n");
return 0;
}
Veja que o bloco de cdigo fica indentado, dentro das chaves, e que o ideal que a chaves se abra
abaixo do nome da funo, e na linha a seguir a ultima linha da funo.
importante tambm saber que toda funo ao terminar deve chamar a funo return, principalmente
se retorna algum valor, e o comando return deve ter o que ser retornado, no caso de nossa funo ele
retorna 0, um ineiro.
Sendo main uma funo chamada como ponto de entrada da aplicao, o valor retornado representa o
resultado de nossa aplicao, no caso 0 retorna que tudo correu bem no programa, qualquer outro
valor retornado representa um cdigo de erro do programa.
Em se tratando de microcontrolador uma funo main nunca deve retornar, uma vez que isso acontea
o microcontrolador ficar parado, podendo alguns em casos especiais reinicializar e voltar a execuo
de seu firmware ao estado zero.
Note Para mais informaes veja cdigos de erros dos aplicativos no DOS ou UNIX/Linux.

Variveis Globais e Locais


Antes de usar qualquer varivel estas devem ser declaradas, iremos ver por hora apenas as funes de
escopo Global e Local.
As variveis de escopo global podem ser vistas em qualquer parte do aplicativo, j as variveis
Locais, apenas dentro do bloco de cdigo onde foram declaradas.
Quando declarar uma varivel global, declare antes de todas as funes de seu aplicativo, e depois das
diretivas de compilao.
As variveis locais devem ser declaradas no inicio do bloco de cdigo no qual pertencem.

Palavras Reservadas
A linguagem C/C++ tem algumas palavras que so reservadas e no podem ser usadas para nomear
funes muito menos variveis, segue abaixo:
alignas, alignof, and, and_eq, asm, auto, bitand, bitor, bool, break, case, catch, char, char16_t,
char32_t, class, compl, const, constexpr, const_cast, continue, decltype, default, delete, do, double,
dynamic_cast, else, enum, explicit, export, extern, false, float, for, friend, goto, if, inline, int, long,
68

Estrutura Bsica de um Algortimo em C

mutable, namespace, new, noexcept, not, not_eq, nullptr, operator, or, or_eq, private, protected,
public, register, reinterpret_cast, return, short, signed, sizeof, static, static_assert, static_cast, struct,
switch, template, this, thread_local, throw, true, try, typedef, typeid, typename, union, unsigned,
using, virtual, void, volatile, wchar_t, while, xor, xor_eq
Veremos a frente que em C, no temos comandos, apenas as instrues de controle que mais se
assemelham a funes, mas so palavras reservadas para instruir a linguagem a uma ao.
Isso abre um grande horizonte para esta linguagem, o que ser descoberto em cursos avanados.

Nome de Variveis e Funes no C


Da mesma forma que no Portugol temos regraspara criar variveis e funes, definindo assim nomes
legveis e que expressem sua verdadeira funo no cdigo, preciso ter cuido com o uso de caracteres
especias.
Em valem as mesmas regras que em portugol:
Sempre comecem com uma letra ou _
Do segundo caracter em diante podem usar nmeros, letras e _
No se pode usar letras acentuadas
H diferenas entre masculas e minusculas.
No se pode usar espao
Outros simbolos alm de _ no permitido.
Revisado: Sat Jul 23 2016 21:17:26 GMT+0000 (UTC) | Compilado: Sat Jul 23 2016 21:15:21
GMT+0000 (UTC)

69

Compilando ou Interpretando, como o C tratado?

Compilando ou Interpretando, como o C


tratado?
Como j discutimos o Portugol interpretado, um programa especialmente escrito para esta
linguagem perga o arquivo onde est o cdigo escrito por voc e o interpreta em tempo de execuo,
identificando erros de escrita, e procedendo na ordem que lhe sugerida pelos comandos.
No C algo muito diferente ocorre com seu cdigo fonte, preciso transforma-lo na linguagem que a
maquina ir entender diretamente, antes de executa-lo e para isso h pelo menos trs processos
bsicos a ser executados
Pr processamento
Compilao
Linkedio ou Ligao
Vejamos no grfico abaixo uma representao do processamento e compilao de um cdigo em C.

Image 1.8.4.1 - Processo de Compilao C e C++ e gerao do Executvel

Parece complicado no ?
Mas no , tudo muito simples, principalmente se usar uma boa IDE, como a que sugerismo aqui, a
PELLES C, ao escrever seu cdigo no arquivo principal, no caso seu_aplicativo.c voc deve
seguir a estrutura mnima proposta anteriormente, ou seja, incluir as bibliotecas que precisa
(#include), definir suas variveis globais, suas funes e por fim seu cdigo principal de entrada
chamado void main(void).
Quando usa as diretivas #include e #define voc est se comunicando com o pr-processador do C
70

Compilando ou Interpretando, como o C tratado?

para que ele prepare seu arquivo incluindo os arquivo de biblioteca tanto que voc mesmo possa ter
definido ou arquivos de terceiros, e normalmente isso se d pelo arquivos de cabealhos destas
bibliotecas que so identificados pelas extenes .h, veja que estes arquivos somente possuem
incluso para outros arquivos de cabealhos e outros arquivos de definies, ambos podem ter
diretivas #define que sero ento processadas e substituidas gerando assim um novo arquivo fonte
bem maior.
O novo arquivo fonte que ser entregue ao compilador pelo pr-processador ento analisado e
compilado para que se possa gerar o arquivo de objetos, este arquivo possui uma linguagem
intermediaria entre o C e o cdigo de maquina, assim o cdigo pode ser reorganizado para gerar
novos produtos, como bibliotecas e executveis para a mquina a que se destina o cdigo.
E por fim o arquivo objeto entregue ao Linkeditor que converte as referncias aos objetos (como
variveis e funes) faltantes para endereos de memria, com base nos arquivos de bilioteca
fornecidos, lembra os arquivos .h no inicio do processmaneto, ento estes arquivos apenas definem
os nomes de funes em especial que sero encontradas nos arquivos .lib, .dll ou outros arquivos .obj,
e assim o linkeditor une estas referncias textuais as funes e viariveis, convertendo cada um ao seu
respetivo endereo de memria.
Revisado: Sat Jul 23 2016 21:17:26 GMT+0000 (UTC) | Compilado: Sat Jul 23 2016 21:15:21
GMT+0000 (UTC)

71

Tipos de Dados em C

Tipos de Dados em C
A linguagem C tem alguns tipos de dados extras, alm do que vimos no Portugol. Veremos os tipos de
dados teis para quem programa para microcontroladores. Veremos tambm um pouco sobre Array e
como usa-los no C, seu impacto na segurana, e como manipula-los aprendendo assim um pouco
sobre ponteiros, mas s o necessrio.

Tipos Nmericos
A definio para tipos nmericos bem vasta na linguagem em C, veremos alguns tipos muito
importantes mas no veremos em detalhes seus limites, j que variam de plataforma para plataforma.
Note Cada tipo de dado nmerico tem seus limites tanto para nmeros possitivos como para
valores negativos, no arquivo stdint.h possvel ter acesso a constantes que nos ajudam a
lidar
com
estes
limites,
no
link
http://www.nongnu.org/avr-libc/usermanual/group__avr__stdint.html possvel tomar conhecimento dos limites conforme a
plataforma AVR. A mesma usada no Arduino UNO.

Inteiros
Para lidar com inteiros trabalharemos apenas com um tipo, o tipo int que nos permite trabalhar
tpicamente com nmeros de tamanho equivalentes a 16 bits, sejam positivos ou negativos, com ou
sem sinal.

Fraes e ponto flutuante.


Os nmeros fracionados e nmeros usados em engenhria como os de ponto flutuantes, so
representados especialmente no C/C++ e temos 3 tipos, porm somente veremos dois deles float e
double, estes tipos so como os tipos real portugol.

Valores Lgicos
Para valores lgicos como verdadeiro e falso, temos o tipo bool que pode ser usado para identificar
variveis que iro guardar resultados de expresses lgicas e relacionais.

Ponteiros
Como j sabemos cada varivel ocupa um espao de momria, este espao tem o tamanho do tipo de
dado utilizado, como vimos no portugol, um tipo inteiro pode ocupar 2 bytes, no C isso pode ser
diferente, um tipo como caracter varivel no portugol porque guarda sequncias que
representam texto ou sejam strings de caracteres.
No C, no temos o conceito de string, mas como veremos a frente temos o tipo char que pode ser
um array e assim representar uma string.
Para manipular as varivels de forma mais eficiente, em especial arreis preciso enteder pelo menos
superficlamente o conceito de ponteiro.
Ponteiro um tipo de varivel que armazena o endereo de mmoria onde est armazenado a varivel
ento referenciada, o tamanho desta varivel comptivel com o espao de endereamento de
72

Tipos de Dados em C

memria. Ou seja se temos um computador que 16bits teremos um ponteiro de 2 bytes, se for 32bits
no ambiente windows comum teremos 4 bytes, e se for 64 bits como nos computadores modernos e
windows 64Bits teremos um ponteiro de 8 bytes.
A varivel que ir armazenar um ponteiro, dever ser do mesmo tipo que a varivel que ser
referncia do ponteiro, portanto um ponteiro para uma varivel do tipo double deve ser do mesmo
tipo. Abaixo segue uma declarao para um ponteiro do tipo int.
int *ponteiro;
Como v o simbolo * (asterisco) quando antecede uma varivel, est informando que ela um
ponteiro para uma posio de memria.
Para se obter a referncia para uma varivel, devemos usar o simbolo &amp; (apersante) que retorna
quando usado com a varivel que se deseja obtero endere, sua posio na memria.
Veremos um caso especial que quando tratamos de arrays, logo a seguir.

Lidando com Arrays


Quando precisamos lidar com uma certa coleo de dados, do mesmo tipo, podemos usar um array
para armazena-los em memria, assim se tivermos 10 dados do tipo inteiro, referentes ao mesmo
assunto, por exemplo 10 coordenadas no eixo x podemos ento usar a seguinte estrutura:
int x[] = {20, 50, 44, 33, 21, 47, 88, 90, 20, 37};
Quando lidamos com o array, fazemos referncia ao primeiro indice atravs da posio 0, e ao seu
ltimo indice, a posio 9.
Isso se faz muito valido, quando somamos o conhecimento de ponteiros com array, porque arrays so
ponteiros, ou seja, ao declarar um tipo como array, estamos fazendo a mesma declarao a seguir:
int *xPonteiro = {20, 50, 44, 33, 21, 47, 88, 90, 20, 37};
Quando fazemos referncia a uma posio de array, como dissemos a posio comea em 0, portanto
seria como se estivessemos somando o indice ao ponteiro.

Tipos para Caracter e Strings


Em C no existe strings, porm no C++ temos um tipo especial de nome string, no o veremos
aqui, mas veremos como trabalhar com strings no C puro.
Para lidar com caracteres em C, temos o tipo char, este tipo permite armazenar representaes
nmeros dos caracteres da tabela ASCII. Ou seja valores de 0 a 255, existem outros representaes de
caracteres muito teis, porm no entraremos neste tipo neste curso.
Ento como lidar com strings de texto na linguagem C pura? para isso usamos um vetor terminado
com o valor nulo, tal valor presentado por \0 que na tabela ASCII representado por null, assim
toda string automticamente recebe o cdigo \0 em seu final.
Assim no cdigo abaixo:
char umaString[] = "Um texto qualquer"
73

Tipos de Dados em C

Temos um vetor de 18 posies do tipo char, sendo a ultima posio preenchida com \0.
Portanto teriamos:
Posico

Valor

umaString[0] 'U'
umaString[1] 'm'
umaString[2] ' '
umaString[3] 't'
umaString[4] 'e'
umaString[5] 'x'
umaString[6] 't'
umaString[7] 'o'
...
...
umaString[14] 'u'
umaString[15] 'e'
umaString[16] 'r'
umaString[4] \0
Se declararmos um vector assim:
char umaStringGrande[400];
Este ser capaz de armazenar uma string com at 399 caracteres, j que o ltimo espao do vetor
dever conter um \0 (null) para indicar o fim da string.
Veremos em momento oportuno como manipular este tipo de vetor que armazena strings, no C e C++
h cuidados muito importantes para se manipular strings, que se no forem observados, causaram mau
funcionamento e at perda de dados importantes.

Outros Tipos de Dados


Devido ao fato do C manipular a mmoria diretamente, possvel
definir infinitos tipos de dados, alm dos nativos da lingugem e
tambm aqueles que so criados atravs de bibliotecas de
manipulao, porm vermos apenas os tipos acima que so
suficientes para nossos objetivos aqui.
Revisado: Sat Jul 23 2016 21:17:26 GMT+0000 (UTC) | Compilado: Sat Jul 23 2016 21:15:21
GMT+0000 (UTC)
Referncias: http://www.cplusplus.com/doc/tutorial/variables/

74

Estrtura de Controle em C

Estrtura de Controle em C
Em C temos as mesmas estruturas de controle que aprendemos no Portugol do VisuAlg. Porm
apresentam uma sintaxe difernciada alm de ser no idioma ingls, ou seja "Se" passa a ser "If", "se
no" passa a ser "else",

IF ELSE
A estrutura de controle if a mesma estrutura se do portugol, e else como senaoem portugol, e
deve ser escrita em C como apresentada abaixo:
if (m < 7.)
{
printf("Em exame");
}
else
{
printf("Aprovado");
}

75

Estrtura de Controle em C

Image 1.8.6.1 - Estrutura de Controle SE

Veja que no C, uma estrutura de controle se asssemelha a funes, mas no so, no caso entre
parenteses se encontra a operao lgica desejada.
importante observar que os blocos de cdigos escolhidos a executar nas estrutura de controle so
delimitados por pares { e }.
tambm importante saber, que as variveis que forem declaradas internamente nestes blocos so
vistas apenas localmente, e so recriadas sempre que os blocos so executados, portanto tenha cautela
ao criar variveis dentro de blocos de controle.
76

Estrtura de Controle em C

FOR
A a operao de controle for o mesmo que o para em portugol, tendo o formato a seguir:
for(int i = 0; i < 20; i++){
printf("Valor= %d",i);
}

Image 1.8.6.2 - Estrutura de Lao/Loop - For

O comando for em C, pode receber at 3 parametros, separados por ponto e vrgula, o primeiro
declara variveis usadas para controle e as inicializa, o segundo a operao lgica que define se o
lao ir continuar ou no executando, conforme o resultado veradeiro ou falso, respectivamente, o
terceiro parametro como a varivel de controle ser alterada para que o lao continue em execuo.
a Inicializao de varivel pode ser feita para apenas uma varivel ou mais, ou mesmo no existir,
inserindo apenas o ponto virgula, neste caso dever haver a varivel externa ao lao para ser usada
como referncia.
O terceiro parametro onde a varivel sobre interferncia a cada nova interao, pode intervir
somando, subtraindo ou outras formulas, porm cuidado, o ideal apenas que o for seja usado como
um incremento para indices de arrays.
77

Estrtura de Controle em C

int nome[] = {"um nome qualquer"};


int nomeInv[len(nome)];

for(int i = 0, int x = strlen (nome); nome[i] |= '\0' && i < strlen (nome); x nomeInv[x] = nome[i];
}
printf(nomeInv);

While
O lao while o mesmo que enquanto no portugol, veja o exemplo abaixo:
char a = 0;
printf("Escolha uma das opes, a ou c");
while(a != 'a' && a != 'c'){
a = getchar();
}
printf("Voc escolheu uma opo %c",a);

78

Estrtura de Controle em C

79

Estrtura de Controle em C

Image 1.8.6.3 - Estrutura de controle Enquanto

O lao while pode tambm ser utilizado para que um determinado cdigo seja executado
infinitamente, isso muito util em microcontroladores j que o cdigo no pode nunca deixar de seer
executado:
while(true){
// ao que deve ser executada infinitamente

Do While
A estrutura do while permite que um lao seja executado pelo menos uma vez, ento verificado
se deve executar novamente, e se verdadeiro continua at que seja a condio falsa, como podem ver
o lao do while tem comportamento diferente ao lao faca ate do portugol, j que no o
inverso o raciocinio relativo ao while puro. Vejamos um exemplo abaixo:
char a = 0;
do{
printf("Escolha uma das opes, a ou c");
a = getchar();
}while(a != 'a' && a != 'c')
printf("Voc escolheu uma opo %c",a);
Veja que usei o mesmo exemplo anterior aplicado no while e o raciocinio lgico continua o mesmo.
Revisado: Sat Jul 23 2016 21:17:26 GMT+0000 (UTC) | Compilado: Sat Jul 23 2016 21:15:21
GMT+0000 (UTC)
Referncia: http://www.cprogressivo.net/2012/12/Recebendo-letras-do-usuario--As-funcoes-scanfgetchar-getc-e-fgetc.html

80

Bibliotecas Importantes do C e Suas Funes

Bibliotecas Importantes do C e Suas Funes


Diferente do portugol e algumas outras linguagens como Cobol e Fortram, o C no tem palavras
reservadas para executar certas aes como por exemplo ler teclado ("leia") ou escrever na tela
("escreva" ou "escreval"), mas funes que recebem parametros para que execute tais aes.
LibC a biblioteca padro do C um conjunto de funes padronizadas que permitem que a
linguagem "C" faa operaes comuns como entrada e sada e manipulao de cadeiras de caracteres.
Abaixo listo as bibliotecas e o cada uma especializada, veremos em seguida as principais funes. E
iremos destacar quais no se aplicam ao Arduino, e veremos no mdulo sobre Arduino as opes
adequadas.
Arquivo

Descrio

stdio.h
alloc.h
float.h
math.h
stddef.h
stdlib.h
string.h
assert.h
ctype.h
errno.h
limits.h
locale.h
setjmp.h
signal.h
stdarg.h
string.h
time.h

rotinas padres de entrada e sada definidas pelos criadores da linguagem C.


funes para gerenciamento de memria
funes para tratar nmeros de ponto flutuante
funes matemticas
vrios tipos de dados e macro substituies
vrias rotinas muito usadas, converso, sort, etc.
rotinas p/ manipular strings e memria
Macro para diagnstico.
Funes para teste e conversode caracteres (ex: isalpha, tolower).
Mnemnicas para cdigos de erro.
Constantes relacionadas com inteiros (nmerode bits, gama, etc.)
Funes para informaes sobrepaises e linguagens.
Alternativa chamada normal de funes
Tratamento de condies excepcionais.
Tratamento de funes com nmero e tipo de argumentos desconhecidos.
Manipulao de cadeia de caracteres.
Processamento de horas e data.

Como j vimos quando dsejamos incluir outro arquivo em nosso cdigo fonte precisamos usar a
diretiva #include portando para se usar uma funo que receber entradas pelo teclado e
apresentar dados na tela para o C, precisamos executaro o seguinte comando:
#include <stdio.h>
Vamos aproveitar o momento para conhecer que o #include possui 2 formas diferentes, esta que
nos apresenada agora, e a que est abaixo:
#include "minhalib.h"
Como sugere o nome do arquivo, quando a diretiva de pr compilao envolve o nome do arquivo
com as aspas '"' significa que o arquivo deve ser procurado no diretrio da aplicao e de bibliotecas
do usurio e depois na biblioteca de sistema. J se viver envolvido com o par '<' e '>' a busca deve se
dar apenas nas pastas de bibliotecas de sistemas.
81

Bibliotecas Importantes do C e Suas Funes

Padronizao
H uma padronizao quanto aos nomes das funes, a maioria ser encontrada em prticamente
todas as distribuies C, ou melhor compiladores C, cada compilador tem uma biblioteca padro libc
que deve seguir a norma ANSI para que no haja a quebra de compatibilidade entre elas.
No precisamos dizer que h fornecedores de compiladores em especila a MicroSoft que querem
impor seu prprio formato, o que no tem dado certo.
A distribuio mais fiel no mercado a GCC, muito utilizada por sinal.

Embarcados
O nosso contexto sistemas embarcdos e microcontroladores, e neste universo algumas coisas
mudam, no veremos neste curso detalhes sobre desenvolvendo para sistemas embarcados, o mais
prximo que chegaremos o Arduino.
Abaixo listo algumas bibliotecas que podem ser interessantes para quem pretende trabalhar com
microcontroladores e sistemas embarcados, porm um tema muito avanado para nosso curso.
dietlibc, uma pequena implementao alternativa criada do zero com extritamente necessrio,
criada por Felix von Leitner
uClibc, implementao para sistema embarcado Linux
Newlib, implementao para sistema embarcado Linux
EGLIBC, variante da glibc para sistemas embarcados

Prximo Passo
Vamos agora aprender a ler caracteres do teclado e imprimir informaes na tela.
Revisado: Sat Jul 23 2016 21:17:26 GMT+0000 (UTC) | Compilado: Sat Jul 23 2016 21:15:21
GMT+0000 (UTC)

82

Comunicando com o Mundo Exerno

Comunicando com o Mundo Exerno


Veremos agora quais funes podemos usar para nos comunicar com o mundo externo. J vimos at
agora alguns exemplos que usam duas delas, printf e getchar. Veremos tambm como formatar
tais sadas adequadamente.
importante lembrar que a maioria das funes aqui, no podem ser usadas naturalmente no arduino,
j que o Arduino no possui em seus modelos tpicos terminais de entrada e sada como em
computadores, mas h funes equivalentes, e h recursos avanados onde tais funes podem ser
adequadas para uso com os dispositivos existentes nos microcontroladores usados neles.

Imprimindo na Tela do Computador


Formatando sua impresso

Lendo o Teclado

83

Arduino

Arduino
Para comearmos nosso estudo com o Arduino o primeiro passo ser criar uma conta no site Ciruits
IO, visite o site, crie sua conta e depois visite meu perfil em caso de dvidas entre em contato pelo email: consultoria@carlosdelfino.eti.br, use o campo "Assunto"/"Subject" com informaes que reflita
sua dvida, se for o primeiro contato se apresente para que eu lhe identifique. Se no seguir estas
regrinhas iniciais corre o risco de ficar sem resposta.
Vamos continuar, chegamos at aqui, porque est se identificando com a programao e est
gostando do curso, e est se dando muito bem com a programao com a Linguagem C/C++ e
certeza de sucesso nos prximos passos.
Neste captulo veremos o arduino como um todo, ou seja apenas como uma placa de prototipgem,
sem entrar em muitos detalhes sobre cada componentes, abaixo irei apresenta-los rapidamente apenas
para acabar com as dvidas que possam surgir.
Mais a frente haver um subttulo especfico sobre o Controlador AVR para ajuda-lo a se aprofundar
mais e poder quem sabe tornar seu projeto relmente comercial.
Atualizado: Sat Jul 23 2016 21:15:21 GMT+0000 (UTC)

84

Introduo ao Arduino

Introduo ao Arduino
Apresentar uma breve introduo ao Arduino.
Em seguida apresentar sua arquiteura

Arquitetura do Arduino
Apresentar a IDE
Considerar os tipos de dados e comparar com o C/C++
Atualizado: 07/07/2016 - 11:55 | Revisado: 07/07/2016 - 11:55 | Compilado: Sat Jul 23 2016 21:15:21
GMT+0000 (UTC)

85

Exemplos Bsicos de Uso do Arduino

Exemplos Bsicos de Uso do Arduino


Atualizado: 07/07/2016 - 11:55 | Revisado: 07/07/2016 - 11:55 | Compilado: Sat Jul 23 2016 21:15:21
GMT+0000 (UTC)

86

Keyboard e Arduino

Keyboard e Arduino
Keyboard e Arduino

Atualizado: 07/07/2016 - 11:55 | Revisado: 07/07/2016 - 11:55 | Compilado: Sat Jul 23 2016 21:15:21
GMT+0000 (UTC)

87

Arduino e Seu Controlador AVR

Arduino e Seu Controlador AVR


Aqui iremos falar um pouco do AVR em especial o ATMega328 e ATMega2560, suas caracteristicas
e arquitetura.
Atualizado: 07/07/2016 - 11:55 | Revisado: 07/07/2016 - 11:55 | Compilado: Sat Jul 23 2016 21:15:21
GMT+0000 (UTC)

88

Algoritmos para Arduino

Algoritmos para Arduino


Converso de temperatura
PID
Converse Metricas
KM <-> M, Metros <-> Milhas
Celcius <-> Faradey
Minutos, Segundos, Horas e Dias
etc
Atualizado: 07/07/2016 - 11:55 | Revisado: 07/07/2016 - 11:55 | Compilado: Sat Jul 23 2016 21:15:21
GMT+0000 (UTC)

89

Sugesto de Leitura

Sugesto de Leitura
Sugesto de Leitura
Matemtica
Sistemas Nmeros - Sistema Decimal
Formula de Bhaskara
Condio de Existncia de Um Triangulo

Documentao de Algortimos
Como Formatar formulas matemticas no GitBook

Normatizaes
Normatizao Internacional da Linguagem C - C11
undefined
Revisado: Sat Jul 23 2016 21:17:26 GMT+0000 (UTC) | Compilado: Sat Jul 23 2016 21:15:21
GMT+0000 (UTC)

90