Introducao A Linguagem de Programacao
Introducao A Linguagem de Programacao
Introducao A Linguagem de Programacao
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
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
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.
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
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.
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.
10
VisuAlg
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:
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.
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.
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].
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:
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.
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.
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
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.
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
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
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 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.
Tipos nmericos
inteiros
22
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
const
notaMinima = 70
notaMaxima = 100
opcaoFixa = `A`
Defina as constantes antes das variveis.
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.
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
Dados
O Smobolo dados deve ser utilizaod para identificar declarao de variveis e manipulao das
mesmas deve ser o smbolo abaixo:
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.
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".
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.
31
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
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
Resultado
falso
xou
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
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
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:
37
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.
39
40
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
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
Interrompa
Para as trs instrues de controle de lao, enquanto, repita e para possvel inserir condies
42
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
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
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
46
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
ArcSen( )
Raizq( )
Mod
usado para achar o mdulo de um nmero em comparaes (o mesmo que ' % ' )
escreval(variavel)
48
##### 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
##### 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
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
Operadores lgicos
e
50
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)
DEFINIDAS
PELOS
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
F = (C 1.8) + 32
C = (F 32)/1.8
K = C + 273.15
6.
7.
8.
9.
10.
11.
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 =
X 5; Y 1; Z 3
1.
;
X 5+Y Z
2.
;
Z X; Y Z
3.
;
Y =X
4.
;
53
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
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
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
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
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
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
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:
61
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.
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
vermelho que indica que a linha est marcada para depurao. Para desativar siga os mesmo passos
sobre a linha que j tem "BreakPoint".
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
Revisado: Sat Jul 23 2016 21:17:26 GMT+0000 (UTC) | Compilado: Sat Jul 23 2016 21:15:21
GMT+0000 (UTC)
64
/****************************************************************************
* *
* 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.
* *
* 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 */.
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++.
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.
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
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.
69
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
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.
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 & (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.
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.
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
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);
}
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
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
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
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
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
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
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
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
88
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