Você está na página 1de 13

Licenciatura em Engenharia e Gestão de Sistemas de Informação

ALGORITMOS E ESTRUTURAS DE DADOS I

2022/2023

Operador de atribuição

• Há operadores de atribuição que abreviam as expressões


c = c + 3;
Pode ser abreviado como c += 3, com recurso ao operador de atribuição soma

• Formatos declarativos
variável = variável [operador] valor;
Pode ser escrito como
variável [operador]= valor;

• Exemplos de operadores de atribuição:


d -= 4 corresponde a d = d - 4
e *= 5 corresponde a e = e * 5
f /= 3 corresponde a f = f / 3
g %= 9 corresponde a g = g % 9

2
Operador de atribuição

• Exemplo
– Assumir
int c = 3, d = 5, e = 4, f = 6, g = 12;

Operador de
atribuição Forma curta Forma comprida Atribuições
+= c += 7 c = c + 7 c ß 10
-= d -= 4 d = d – 4 dß1
*= e *= 5 e = e *5 e ß 20
/= f /= 3 f = f / 3 fß2
%= g %= 9 g = g % 9 gß3

Operadores de incremento/decremento

• Operador de incremento ++
– Pode ser usado em vez de c=c+1 ou c+=1
• Operador de decremento --
– Pode ser usado em vez de c=c-1 ou c-=1

• Pré-incremento (prefix)
– Operador é usado antes da variável: ++c ou --c
– A variável é alterada antes da expressão ser calculada
• Pós-incremento (postfix)
– Operador é usado depois da variável: c++ ou c--
– Primeiro calcula a expressão, só depois altera a variável

4
Operadores de incremento/decremento

• Exemplos
– Se c é igual a 5, então
printf( "%d", ++c );
escreve 6

– Se c é igual a 5, então
printf( "%d", c++ );
escreve 5

– Em ambos os casos, c tem agora o valor de 6

Operadores de incremento/decremento

• Quando a variável é escrita sem recorrer à expressão


– Prefix e postfix (pré e pós-incremento) têm o mesmo efeito
++c;
printf( “%d”, c );
– Neste caso, a saída será a mesma
c++;
printf( “%d”, c );

6
Operadores de incremento/decremento

• Resumo:

expressão
Operador Descrição
(curta)

++ ++a
Primeiro incrementa, depois atualiza “a” (devolve
valor já com incremento)
++ a++ Devolve o valor atual de “a” e só depois o incrementa

-- --b
Primeiro decrementa, depois atualiza “b” (devolve
valor já com decremento)
-- b-- Devolve o valor atual de “b” e só depois o decrementa

Operadores de incremento/decremento

• Exemplo:

5
5
6
5
6
6

8
Operadores de incremento/decremento

• Precedência dos operadores

Operadores Associatividade Tipo

++ -- + - (tipo) ß (dir. p/ esq.) Unário

* / % à (esq. p/ dir.) Multiplicativo

+ - à (esq. p/ dir.) Aditivo

< <= > >= à (esq. p/ dir.) Relacional

== != à (esq. p/ dir.) De igualdade

? : ß (dir. p/ esq.) Condicional

= += -= *= /= ß (dir. p/ esq.) De atribuição

– Em caso de dúvida: usar parêntesis

Programação estruturada

• Execução sequencial: as instruções são executadas uma após a outra, por ordem
de escrita

10
Estruturas de controlo: while

• Instrução while (enquanto)

Pseudo-código Fluxograma

While (condição)
instruções
End While

• O programador especifica ações que são repetidas enquanto determinada


condição se verificar como verdadeira
• A estrutura while repete até que a condição se torne falsa

11

Estruturas de controlo: while

• Sintaxe em C

while (condição)
instrução;

while (condição) {
instrução1;
...
instruçãoN;
}

12
Estruturas de controlo: while

• Exemplo

1 2 3 4 5 6 7 8 9 10

13

Estruturas de controlo: do…while

• Instrução do … while (fazer … enquanto)

Pseudo-código Fluxograma

Do
intruções
While (condição)

• O programador especifica ações que são repetidas enquanto determinada


condição se verificar como verdadeira
– É similar ao while já visto
– A condição de paragem é avaliada depois do corpo do loop (executa pelo menos uma
vez)
• A estrutura while repete até que a condição se torne falsa

14
Estruturas de controlo: do…while

• Sintaxe em C

do
instrução;
while (condição);

do {
instrução1;
...
instruçãoN;
} while (condição);

15

Estruturas de controlo: do…while

• Exemplo

1 2 3 4 5 6 7 8 9 10

16
Estruturas de controlo: do…while

• Exercícios típicos
– Repetição controlada por contagem
– Repetição controlado por variável com valor booleano

17

Estruturas de controlo

• Exercícios
– Escrever no ecrã os 10 primeiros números inteiros.
– Escrever no ecrã os 20 primeiros múltiplos de 3.
– Escrever um programa que calcule a média de uma sequência de números introduzidos
pelos utilizador. O programa termina quando o utilizador introduz o número zero ou um
número negativo.
– Algoritmo e programa em C para determinar o maior inteiro n tal que 1+2+...+n ≤ limite,
sendo o valor do limite dado pelo utilizador.

18
Estruturas de controlo: for

• Instrução for (para)

Pseudo-código Fluxograma

For (inicial) to (limite) step increm


intruções
End For

19

Estruturas de controlo: for

• Sintaxe em C

for (inicialização; condição; increm/decrem)


instrução;

for (inicialização; condição; increm/decrem) {


instrução1;
...
instruçãoN;
}

20
Estruturas de controlo: for

• Exemplo

int contador;
for (contador = 1; contador <= 10; contador++ )
printf( "%d\n", contador );

21

Estruturas de controlo: for

• Exemplo

1
2
3
4
5
6
7
8
9
10

22
Estruturas de controlo: for

• Os ciclos for podem normalmente ser reescritos em while

inicialização;
while (condição_continuidade)
{
instrução1;
...
instruçãoN;
incremento;
}

for (inicialização; condição_continuidade; incremento) {


instrução1;
...
instruçãoN;
}

23

Estruturas de controlo: for

• Inicialização e incremento
– Podem ser definidos múltiplos, separados por vírgula
– Exemplo

for ( i=0, j=0; j+i <= 10; j++, i++)


printf( "%d\n", j + i );

– Inicialização, condição do ciclo e incremento, podem conter expressões aritméticas.


Se x = 2 e y = 10
for (j = x; j <= 4*x*y; j += y/x) é equivalente a for (j=2; j <= 80; j += 5)

24
Estruturas de controlo: for

• Notas acerca do for:


– O incremento pode ser negativo (decremento)
– Se a condição de continuação do ciclo é inicialmente falsa
• O corpo do for não é executado
• Procede-se para as próximas instruções a seguir ao ciclo for
– Variável de controlo: é normal que seja impressa ou utilizada dentro do corpo, mas sem
necessidade para isso (pode ser até “perigoso” aceder à variável para a alterar…)

25

Estruturas de controlo: for

• Exemplo:

Soma: 2550

26

Você também pode gostar