Escolar Documentos
Profissional Documentos
Cultura Documentos
Sistemas Embarcados
Prof. Roberto Hiramatsu [ http://www.lsi.usp.br/~kenji/ ]
Prof. João Pimentel [ www.cin.ufpe.br/~jhcp ]
Aula 1
Turma Março/2018
Introdução à Programação de Sistemas Embarcados
26 a 30 de março de 2018
Unidade Acadêmica do Cabo de Santo Agostinho
Universidade Federal Rural de Pernambuco
Instrutores
Custo
Energia
Tamanho
Temperatura
Precisão
Robustez
Engenharia de software
Programar não é escrever código
1) Entender o problema
2) Pensar em soluções diferentes e compará-las
3) Escolher uma solução e detalhar o seu passo-a-passo
(algoritmo)
4) Elaborar testes
5) Escrever o código
6) Testar
Programação - boas práticas que vocês irão praticar
Inspeção de código
Programação em pares
Test-driven development
Desenvolvimento iterativo
Nível de abstração
Compilação
C e C++
ANSI C: 1989
ISO/IEC 14882:1998
25
Ranking das linguagens
AMBIENTE DE
DESENVOLVIMENTO
(Roberto)
//comentário
/* comentário */
o
rp
co
void loop() {
digitalWrite(pino_do_led, HIGH);
delay(1000);
digitalWrite(pino_do_led, LOW);
delay(1000);
}
Variável
e
m
o
no
tip
const byte pino_do_led = 13;
Variável
o
or
çã
ad
za
m
fic
ali
o
ali
no
ici
tip
qu
in
const byte pino_do_led = 13;
Variáveis
nome
tipo
Variáveis
Declaração de variáveis:
int x = 2;
int y = 2;
Principais tipos de variáveis
x = 3
x = 3
x = 5
Operadores numéricos
+ Soma
- Subtração
* Multiplicação
/ Divisão
1. Parênteses e colchetes
2. Multiplicação, divisão e módulo
3. Soma e subtração
4. Atribuição (=)
void setup() {
Serial.begin(9600);
}
void loop() {
Serial.println(8+5-3*4);
}
void setup() {
Serial.begin(9600);
}
void loop() {
Serial.println(10 + 17/10 -3);
}
void setup() {
Serial.begin(9600);
}
void loop() {
Serial.println(10 + 17.0/10 -3);
}
PRÁTICA
int x = 0;
int x = 0;
x++; //incremento
x--; //decremento
Comparação de valores
== igual
!= diferente
< menor
> maior
int x = 5
x > 3;
x < 3;
x != 3;
Operadores booleanos - expressões lógicas
&& E (and)
|| OU INCLUSIVO (or)
! NÃO (not)
int x = 5;
(x == 5) && (x > 10);
(x == 5) || (x > 10);
Operadores booleanos - tabela verdade
Ordem das operações (atualizado)
1. Parênteses e colchetes
2. Multiplicação, divisão e módulo
3. Soma e subtração
4. <, <=, >, >=
5. ==, !=
6. &&
7. ||
8. Atribuição (=)
Condicionais - se / senão
if (expression) {
else {
}
Condicionais - somente o se
if (expression) {
}
Condicionais - múltiplas condições
if (expression1) {
// code executed only if expression1 is true
}
else if (expression2) {
// code executed only if expression1 is false
// and expression2 is true
}
else {
// code executed only if expression1 and expression2
//are false
}
Laços
● for
● while
For - estrutura
// statements
}
For - exemplo
Let's break the loop for the first two and last two i values
and see what happens. The values of the integer variable i
for the first and second iteration is shown as
follows:
• i = 0 , is i smaller than 100 ? yes, println(0) ,
increment i
• i = 1 , is i smaller than 100 ? yes, println(1) ,
increment i
For - escopo
int i = 0;
for ( ; i < 100 ; i++) {
Serial.println(i);
}
For - Mudando o incremento
Serial.println(i);
}
For - Decremento
Serial.println(i);
}
Loops aninhados (um dentro do outro)
Serial.println(x*y);
}
While - estrutura
while (expression) {
// statements
int i = 0;
Serial.println(x*y);
i++;
}
Cuidado com loops infinitos