Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Aula 01 - 02/mar/2020
Wilson H. Hirota
wilson.hirota@unifesp.br
Apresentação do Curso
• Objetivos Gerais
◦ Capacitar o aluno na elaboração de algoritmos computacionais e
técnicas elementares de programação computacional
• Objetivos especı́ficos
◦ Apresentar os principais conceitos de algoritmos computacionais e
linguagens de programação
◦ Capacitar os alunos a utilizarem as ferramentas disponı́veis para as
demais unidades curriculares do curso
• Metodologia
◦ Aulas teóricas e práticas com resolução e discussão de exercı́cios
2 / 63
Datas
março maio
abril
D S T Q Q S S D S T Q Q S S
D S T Q Q S S 1 2
1 2 3 4 5 6 7
1 2 3 4 3 4 5 6 7 8 9
8 9 10 11 12 13 14
5 6 7 8 9 10 11 10 11 12 13 14 15 16
15 16 17 18 19 20 21
12 13 14 15 16 17 18 17 18 19 20 21 22 23
22 23 24 25 26 27 28
19 20 21 22 23 24 25 24 25 26 27 28 29 30
29 30 31
26 27 28 29 30 31
junho julho
D S T Q Q S S D S T Q Q S S
1 2 3 4 5 6 1 2 3 4 Aulas Práticas
7 8 9 10 11 12 13 5 6 7 8 9 10 11
14 15 16 17 18 19 20 12 13 14 15 16 17 18 04/mai - Laboratório 01
19 20 21 22 23 24 25 01/jun - Laboratório 02
21 22 23 24 25 26 27
26 27 28 29 30 31 22/jun - Laboratório 03
28 29 30
3 / 63
Datas
maio
março
abril D S T Q Q S S
D S T Q Q S S 1 2
D S T Q Q S S
1 2 3 4 5 6 7 3 4 5 6 7 8 9
1 2 3 4
8 9 10 11 12 13 14 10 11 12 13 14 15 16
5 6 7 8 9 10 11
15 16 17 18 19 20 21 17 18 19 20 21 22 23
12 13 14 15 16 17 18
22 23 24 25 26 27 28 24 25 26 27 28 29 30
19 20 21 22 23 24 25
29 30 31 31
26 27 28 29 30
junho julho
D S T Q Q S S D S T Q Q S S
Provas
1 2 3 4 5 6 1 2 3 4
7 8 9 10 11 12 13 5 6 7 8 9 10 11
11/mai - Prova 01
14 15 16 17 18 19 20 12 13 14 15 16 17 18
29/jun - Prova 02
21 22 23 24 25 26 27 19 20 21 22 23 24 25 06/jul - Substitutiva
28 29 30 26 27 28 29 30 31 13/jul - Exame
4 / 63
Critérios de avaliação e aprovação
wilson.hirota@unifesp.br
FIM
5 / 63
Cuidados / Dicas
• O grande problema apresentado pelos estudantes não são as
linguagens de programação ou a descrição de algoritmos, mas sim a
dificuldade em abstrair e descrever as soluções do problema
contando apenas com poucas e simples estruturas
Cuidado
Dessa forma, é um erro decorar as soluções, pois podem não
servir para outros problemas, que com certeza serão diferentes
6 / 63
Cuidados / Dicas
• O que deve ser procurado é o entendimento de como foi obtida uma
solução, armazená-la na memória e, então, utilizar essa experiência
adaptando-a a outras situações, por analogia, generalização ou
especialização
7 / 63
Cuidados / Dicas
• Ao se deparar com um problema novo, tente entendê-lo. Para
auxiliar, pense no seguinte:
8 / 63
Cuidados / Dicas
• Crie um plano com a solução
9 / 63
Cuidados / Dicas
• Formalize a solução
10 / 63
Cuidados / Dicas
• Examine os resultados
11 / 63
Introdução
• Um programa de computador é um conjunto de instruções e
dados criado por um ser humano que, ao ser executado por alguma
máquina, cumpre um determinado objetivo
• Os dados são organizados em um computador de acordo com sua
representação binária, isto é, sequências de 0s e 1s. Portanto, a
principal tarefa do computador é extrair as informações resultantes
das execuções das intruções de um programa 1
• Parte dos dados processados durante a execução de um software é
fornecida pelo ser humano (ou outra máquina) e denominada dados
de entrada. Por outro lado, os dados de saı́da são aqueles
fornecidos ao ser humano (ou outra máquina) após o processamento
dos dados de entrada
• O software deve ser encarado como um produto de um processo
bem-definido e controlado de engenharia
1 Dado é um valor qualquer armazenado em um computador enquanto a informação representa a
interpretação desse dado, ou seja, qual o seu significado
12 / 63
Algoritmos e Lógica de Programação
• O estudo de algoritmos e de lógica de programação é essencial no
contexto do processo de criação de um software, pois permite
verificar, em um nı́vel maior de abstração, se o software está correto
ou não; permite, inclusive, averigar se o software atenderá às
especificações originalmente propostas. Assim, evita-se partir
diretamente para a etapa de implementação, o que poderá ocasionar
mais erros no produto final
• Muitas definições podem ser dadas à palavra algoritmo. Atualmente,
tem-se associado algoritmo à computação, mas este não é um termo
restrito à computação ou que tenha nascido com ela
• Na realidade, a palavra algoritmo vem do nome do matemático
iraniano Abu Abdullah Mohammad Ibn Musa al-Khawarizmi, nascido
em Khawarizm, ao sul do mar Aral, que viveu no século XVII.
Também é considerado o fundador da álgebra, cujo nome derivou de
seu livro Al-Jabr wa-al-Muqabilah
13 / 63
Algoritmos e Lógica de Programação
• O termo algoritmo também é utilizado em outras áreas, como
engenharia, administração, entre outras. Vejamos algumas definições
de algoritmo
Definição 1
1. Mat. Processo de cálculo ou de resolução de um grupo de problemas
semelhantes, em que se estipulam, com generalidade e sem restrições, re-
gras formais para a obtenção do resultado ou da solução do problema. 2.
Inform. Conjunto de regras e operações bem definidas e ordenadas, desti-
nadas à solução de um problema ou de uma classe de problemas, em um
número finito de etapas.
14 / 63
Algoritmos e Lógica de Programação
• O termo algoritmo também é utilizado em outras áreas, como
engenharia, administração, entre outras. Vejamos algumas definições
de algoritmo
Definição 2
Sequência não ambı́gua e ordenada de instruções destinada à solução de
um problema, ou uma classe de problemas, em um número finito de passos.
16 / 63
Algoritmos e Lógica de Programação
• Todo algoritmo possui as seguintes propriedades
◦ Finitude: todo algoritmo possui um inı́cio, meio e fim. Portanto, todo
algoritmo deve ser finito, isto é, deve possuir um inı́cio e um conjunto de
passos que, ao serem executados, levarão sempre ao seu término,
executando a tarefa a que se propõe. Deve-se dedicar uma atenção
especial a essa propriedade. Muitas vezes, por erros de lógica, pode-se
criar um algoritmo que nunca chegará a um resultado (loop infinito).
◦ Passos elementares: um algoritmo computacional deve ser explicitado
por meio de operações elementares (operações matemáticas e
comparações)
◦ Correção: um algoritmo deve ser correto, isto é, deve permitir que,
com sua execução, se chegue à(s) saı́da(s) com resultados coerentes com
a(s) entrada(s). Para saber se um algoritmo está correto ou não, deve-se
realizar testes com diversos valores de entrada (Simulação), cujos
valores já se conhece a priori e, então, comparar esses resultados com os
valores produzidos pelo algoritmo em questão
17 / 63
Algoritmos e Lógica de Programação
• O processo de criação de um algoritmo é uma tarefa
essencialmente intelectual e envolve os seguintes passos:
◦ Análise e sı́ntese do problema: na fase de análise, o problema é
entendido de forma que se descubra o que deve ser solucionado, quais
são os dados necessários e as condições para resolvê-lo. Nessa fase, faz-se
uso direto de processos de abstração, o que significa elaborar modelos
mentais do problema em questão e do encaminhamento de sua solução.
Portanto, como resultado dessa fase, tem-se a elaboração de um plano
de ação. Na fase de sı́ntese, executa-se o plano definido na etapa de
análise, representando o passo-a-passo por meio de um algoritmo. É
importante que a solução seja verificada e comprovada, por meio da
execução do algoritmo. Essa execução é feita percorrendo-se o algoritmo
do seu inı́cio até o seu fim, e verificando, a cada passo, se o resultado
esperado foi obtido. Caso tenha sido encontrada alguma discrepância,
deve-se procurar saber qual foi sua causa e eventualmente analisar
novamente o problema, repetindo-se assim esse ciclo até que a solução
tenha sido obtida
18 / 63
Algoritmos e Lógica de Programação
• Processo de criação de um algoritmo
◦ Modelagem: nas ciências exatas, o uso da linguagem matemática é
fundamental, principalmente pela eliminação de duplos sentidos que
acontecessem nessa prática. O mesmo ocorre na computação, com o
emprego de linguagens de descrição de algoritmos (como fluxogramas) e
de linguagens de programação (como linguagem C/C++). Como um
exemplo de modelagem, considere o seguinte problema:
19 / 63
Algoritmos e Lógica de Programação
• Processo de criação de um algoritmo
◦ Modelagem
Compraram-se 30 canetas iguais, que foram pagas com uma nota de R$
100,00, obtendo-se R$ 67,00 como troco. Quanto custou cada caneta?
• Este problema é bem simples; porém como pode ser mostrada a solução?
Uma possı́vel resposta:
20 / 63
Algoritmos e Lógica de Programação
• Processo de criação de um algoritmo
◦ Modelagem
• Esse raciocı́nio é matematicamente demonstrado por: seja x o custo de
cada caneta, então quanto gastei = 30x. Como quanto gastei + troco = R$
100,00, tem-se:
30x + 67 = 100
30x = 100 − 67
30x = 33
x = 33/30
x = 1.1
• De uma forma mais curta e universalmente entendida, pode-se também
dizer que o caminho pode ser obtido pelo seguinte algoritmo:
INICIO
Pegar os valores 30, 100 e 67
Subtrair 67 de 100 e dividir o resultado por 30
Mostrar o resultado final
FIM
21 / 63
Algoritmos e Lógica de Programação
• Processo de criação de um algoritmo
◦ Modelagem
• Deve-se observar que o algoritmo acima resolve apenas uma instância
particular do problema. Para solucionar um caso geral, tem-se o
seguinte:
Compraram-se N canetas iguais, que foram pagas com uma nota de Z
reais, obtendo-se Y reais como troco. Quanto custou cada caneta?
• Nesse caso, basta que sejam fornecidos os valores das variáveis N , Z e Y
que a solução do problema é a mesma que a anterior e seu algoritmo pode
ser escrito da seguinte forma:
INICIO
Ler os valores de N, Y e Z
Subtrair Y de Z e dividir o resultado por N
Mostrar o resultado final
FIM
22 / 63
Algoritmos e Lógica de Programação
• Processo de criação de um algoritmo
◦ Modelagem
INICIO
Ler os valores de N, Y e Z
Subtrair Y de Z e dividir o resultado por N
Mostrar o resultado final
FIM
23 / 63
Algoritmos e Lógica de Programação
• Processo de criação de um algoritmo
◦ Então, para que a solução geral seja realmente consistente, devemos
levar em consideração as seguintes condições:
• Que o valor pago pelas canetas seja sempre maior que o troco recebido
(Z > Y )
• Que o valor pago e a quantidade de canetas seja sempre maiores que zero
(Z > 0 e N > 0)
24 / 63
Algoritmos e Lógica de Programação
• Processo de criação de um algoritmo
◦ Se essas condições não forem todas verdadeiras, então, o algoritmo deve
terminar sinalizando, de alguma forma, a razão de seu fracasso.
INICIO
Ler os valores de N, Y e Z
Se Z > Y e N > 0 e Y ≥ 0 e Z > 0 Ent~
ao
Subtrair Y de Z e dividir o resultado por N
Mostrar o resultado final
Sen~
ao
Exibir a mensagem: "Erro: os valores s~ ao inconsistentes"
Fim Se
FIM
25 / 63
Algoritmos e Lógica de Programação
• Processo de criação de um algoritmo
◦ Lógica em Programação
• Lógica é uma área da Matemática cujo objetivo é investigar a veracidade
de suas proposições
• O que se conclui dessas duas proposições? Parece que a conclusão óbvia é:
”eu pegarei o meu guarda-chuva”
26 / 63
Algoritmos e Lógica de Programação
• Processo de criação de um algoritmo
◦ Lógica em Programação
• ...e se as proposições fossem:
27 / 63
Algoritmos e Lógica de Programação
• Processo de criação de um algoritmo
◦ Lógica em Programação
• No caso da lógica clássica, o resultado da avaliação de suas proposições
pode ser somente um entre dois valores: VERDADEIRO ou FALSO
29 / 63
Algoritmos e Lógica de Programação
• Estruturação de algoritmos
◦ Graças ao surgimento das linguagens de programação de alto nı́vel2 , as
linguagens de programação se afastaram da linguagem de máquina e se
aproximaram da ”lógica humana”.
Cuidado
Diferentemente da linguagem natural, a linguagem de programação é dirigida a
orientar uma máquina e não pessoas. Máquinas não podem tomar decisões com
base em premissas. Máquinas não podem escolher alternativas, mesmo que estas
pareçam óbvias a um ser humano. Máquinas não podem corrigir comandos mal
redigidos. Máquinas não podem descobrir a intenção do programador, mesmo
que ela seja (ou pelo menos pareça) clara no contexto.
2 As linguagens de alto nı́vel são independentes do processador em que serão executadas. Suas
caracterı́sticas principais são que seu código é mais elaborado, contemplando operações mais complexas e
mais próximas da ”lógica humana”. Para que possam ser processadas por um computador, os comandos da
linguagem precisarão ser traduzidos para a linguagem de máquina. Essa tradução é feita por meio de um
compilador ou de um interpretador.
30 / 63
Algoritmos e Lógica de Programação
• Estruturação de algoritmos
◦ Por isso, a linguagem de programação precisa ter algumas caracterı́sticas
que a linguagem natural não tem. Veja-as a seguir:
• Rigidez sintática: O compilador é um tradutor relativamente limitado,
que só consegue fazer as traduções sobre um idioma bastante limitado, com
construções muito bem definidas. Apesar de encontrarmos palavras
pertencentes à linguagem natural, elas não serão usadas com a mesma
liberdade
31 / 63
Algoritmos e Lógica de Programação
• Estruturação de algoritmos
Dilema
Chegamos a um dilema: a linguagem natural não é adequada porque não
tem rigidez sintática e semântica e a linguagem de programação não é ade-
quada justamente por ter essas caracterı́sticas. Parece claro que devemos
encontrar uma terceira alternativa para estruturar algoritmos computaci-
onais.
33 / 63
Algoritmos e Lógica de Programação
• Formalização de um algoritmo
◦ Em primeiro lugar, é necessário definir um conjunto de regras que
regulem a escrita do algoritmo, isto é, regras de sintaxe
34 / 63
Algoritmos e Lógica de Programação
• Formalização de um algoritmo
◦ Os tipos de comandos de um algoritmo são também denominados
estruturas de programação.
◦ Existem apenas três tipos de estruturas que podem ser utilizadas para
escrever qualquer programa:
• Estruturas sequenciais
• Estruturas de decisão
35 / 63
Algoritmos e Lógica de Programação
• Formalização de um algoritmo
◦ Exemplo 1: Torre de Hanói - Estrutura Sequencial
A Torre de Hanói é um quebra-cabeça que consiste em uma base com 3 a
5 pinos, em um dos quais são dispostos alguns discos empilhados de baixo para
cima por tamanho decrescente. O desafio consiste em transferir todos os discos
de um pino para outro qualquer, sob as restrições de que apenas um disco é
movido de cada vez, e em momento algum um disco maior pode ser colocado
sobre um disco menor. Um terceiro pino está disponı́vel para apoiar os discos
temporariamente.
36 / 63
Algoritmos e Lógica de Programação
• Formalização de um algoritmo
◦ Exemplo 1: Torre de Hanói - Estrutura Sequencial
37 / 63
Algoritmos e Lógica de Programação
• Formalização de um algoritmo
◦ Exemplo 1: Torre de Hanói - Estrutura Sequencial
As únicas informações para resolver esse problema são os estados inicial e
final dos discos e as regras de movimento. Uma solução poderia ser a seguinte
sequencia de movimentos
Um possı́vel algoritmo para resolver o problema das Torres de Hanoi com 3 discos
INICIO
1. Mover disco 1 do pino A para o pino C
2. Mover disco 2 do pino A para o pino B
3. Mover disco 1 do pino C para o pino B
4. Mover disco 3 do pino A para o pino C
5. Mover disco 1 do pino B para o pino A
6. Mover disco 2 do pino B para o pino C
7. Mover disco 1 do pino A para o pino C
FIM
38 / 63
Algoritmos e Lógica de Programação
• Formalização de um algoritmo
◦ Exemplo 1: Torre de Hanói - Estrutura Sequencial
Um possı́vel algoritmo para resolver o problema das Torres de Hanoi com 3 discos
INICIO
1. Mover disco 1 do pino A para o pino C
2. Mover disco 2 do pino A para o pino B
3. Mover disco 1 do pino C para o pino B
4. Mover disco 3 do pino A para o pino C
5. Mover disco 1 do pino B para o pino A
6. Mover disco 2 do pino B para o pino C
7. Mover disco 1 do pino A para o pino C
FIM
39 / 63
Algoritmos e Lógica de Programação
• Formalização de um algoritmo
◦ Exemplo 1: Torre de Hanói - Estrutura Sequencial
Agora, considere o seguinte problema:
40 / 63
Algoritmos e Lógica de Programação
• Formalização de um algoritmo
◦ Exemplo 1: Torre de Hanói - Estrutura Sequencial
Um possı́vel algoritmo para resolver o problema das Torres de Hanoi com 4 discos
INICIO
1. Mover disco 1 do pino A para o pino B
2. Mover disco 2 do pino A para o pino C
3. Mover disco 1 do pino B para o pino C
4. Mover disco 3 do pino A para o pino B
5. Mover disco 1 do pino C para o pino A
6. Mover disco 2 do pino C para o pino B
7. Mover disco 1 do pino A para o pino B
8. Mover disco 4 do pino A para o pino C
9. Mover disco 1 do pino B para o pino C
10. Mover disco 2 do pino B para o pino A
11. Mover disco 1 do pino C para o pino A
12. Mover disco 3 do pino B para o pino C
13. Mover disco 1 do pino A para o pino B
14. Mover disco 2 do pino A para o pino C
15. Mover disco 1 do pino B para o pino C
FIM
41 / 63
Algoritmos e Lógica de Programação
• Formalização de um algoritmo
◦ Exemplo 1: Torre de Hanói - Estrutura Sequencial
m(n) = 2n − 1
• Então, surge a seguinte pergunta: ... e se for considerado o mesmo
problema, porém, com n discos postados inicialmente na haste A, como
desenvolver um algoritmo que gere a sequência exata de transferências de
pino, disco a disco?
43 / 63
Algoritmos e Lógica de Programação
• Formalização de um algoritmo
◦ Exemplo 1: Torre de Hanói - Modularização / Recursão
• Se tivéssemos que resolver esse problema com a ajuda de métodos
convencionais, ficarı́amos preso na administração dos discos rapidamente.
Em vez disso, se atacarmos o problema com a recursão em mente, o
problema imediatamente se tornará mais resolúvel.
Mova n − 1 discos do pino A para o pino B, usando o pino C como área de manutenção
temporária
Mova os n−1 discos do pino B para o pino C, usando o pino A como área de manutenção
temporária
44 / 63
Algoritmos e Lógica de Programação
• Formalização de um algoritmo
◦ Exemplo 1: Torre de Hanói - Modularização / Recursão
1. Mova n−1 discos do pino A para o pino B, usando o pino C como área de manutenção
temporária
2. Mova o último disco (o maior) do pino A para o pino C
3. Mova os n − 1 discos do pino B para o pino C, usando o pino A como área de
manutenção temporária
• Essa solução funciona para qualquer valor de n tal que n ≥ 1. Apesar de ser
um algoritmo geral que resolve todos os casos para o problema das Torres
de Hanói, ainda existem algumas dificuldades nas sua forma de descrição:
ii) As operações descritas são úteis para uma pessoa interpretar, mas não
para um máquina. É necessário modelar melhor o problema de forma que seja
facilmente traduzido para uma máquina
45 / 63
Algoritmos e Lógica de Programação
• Formalização de um algoritmo: Fluxogramas
Definição
Fluxograma: Inform. (fluxo+grama). 1. Diagrama para representação de um algo-
ritmo. 2. Representação gráfica, por sı́mbolos especiais, da definição, análise ou método
de solução de um problema
46 / 63
Algoritmos e Lógica de Programação
• Formalização de um algoritmo: Fluxogramas
Sı́mbolo Uso
Terminador Representa a saı́da para ou a entrada do ambiente externo,
por exemplo, inı́cio ou fim do programa
Processo Representa a execução de uma operação que resulta na mu-
dança de valor, forma ou localização de uma informação ou
valor
Entrada/Saı́da Representa os dados, tanto de entrada como de saı́da, qual-
quer que seja o meio utilizado
Representa uma decisão ou um desvio tendo uma entrada;
Decis~
ao porém pode ter uma série de saı́das alternativas, uma única
das quais deverá ser ativada como consequência da avaliação
das condições internas do sı́mbolo. O resultado apropriado de
cada saı́da deverá ser escrito adjacente à linha, representando
o caminho respectivo.
47 / 63
Algoritmos e Lógica de Programação
• Formalização de um algoritmo: Fluxogramas
◦ Os fluxogramas possuem um grande apelo visual e aplicação no
entendimento de processos industriais, os quais são muito importantes
na formação e na vida prática do engenheiro
48 / 63
Algoritmos e Lógica de Programação
• Formalização de um algoritmo: Fluxogramas
inicio
fim
49 / 63
Algoritmos e Lógica de Programação
• Formalização de um algoritmo: Pseudocódigo
◦ Algoritmos podem ser representados em código diretamente em
linguagem de programação.
50 / 63
Algoritmos e Lógica de Programação
• Formalização de um algoritmo: Pseudocódigo
◦ Ao contrário da linguagem de programação, o pseudocódigo tem um
grau de rigidez sintática intermediária entre as linguagens natural e de
programação. Além disso, podemos utilizar o idioma nativo. Em geral,
linguagens de programação são construı́das utilizando palavras
reservadas em inglês, uma espécie de padrão de mercado
52 / 63
Algoritmos e Lógica de Programação
• Convenções para tipos de dados: Constantes e variáveis
◦ Em um computador, manipulamos informações que, durante a execução
de um programa, ficam armazenadas temporariamente na memória
Cuidado 1
Evite identificadores que comecem por sublinhado ( ) simples ou duplo, porque aqueles
gerados pelo compilador e os da biblioteca-padrão podem usar nomes semelhantes
Cuidado 2
O primeiro caracter não pode ser um dı́gito. O primeiro caracter deve ser uma letra
55 / 63
Algoritmos e Lógica de Programação
• Convenções para tipos de dados: Constantes e variáveis
◦ As variáveis em um algoritmo devem ser escritas de modo claro,
inteligı́vel. Nesse sentido, convencionam-se algumas regras para nomear
variáveis:
• Letras fora do alfabeto ocidental, como as letras gregas, não são aceitas
56 / 63
Algoritmos e Lógica de Programação
• Convenções para tipos de dados: Constantes e variáveis
◦ Antes de utilizarmos uma variável dentro de uma algoritmo, é
necessário definir o tipo de valor que essa variável pode
armazernar e identificá-la com o nome pelo qual será acessada
57 / 63
Algoritmos e Lógica de Programação
• Convenções para tipos de dados: Constantes e variáveis
◦ Os principais tipos de dados são:
Valores lógicos
Os valores lógicos ou ainda booleanos (em homenagem a George Boole, que elabo-
rou a lógica booleana) são aqueles que representam apenas dois estados: um estado
verdadeiro ou um estado falso.
58 / 63
Algoritmos e Lógica de Programação
• Convenções para as expressões: Atribuição
◦ Já descrevemos onde os dados ficam armazenados, porém para que
possamos manipulá-los é necessário primeiramente colocar um valor
dentro da variável
<variável> ← <valor>
ou
59 / 63
Algoritmos e Lógica de Programação
• Convenções para as expressões: Atribuição
◦ Exemplos:
3. A ← A + 1 (A recebe o valor de A + 1)
Observação
Apenas valores pertencentes ao tipo da variável podem lhe ser atribuı́dos (p. ex. uma
variável do tipo inteiro só pode receber valores do tipo inteiro
60 / 63
Algoritmos e Lógica de Programação
• Convenções para as expressões: Operações aritméticas
◦ Em programação, todas as quatro operações aritméticas básicas
(adição, subtração, multiplicação e divisão) são suportadas
2. y ← −b
61 / 63
Algoritmos e Lógica de Programação
• Convenções para as expressões: Operações aritméticas
◦ Dependendo dos operadores e do tipo de resultado, a divisão pode ser
feita de forma diferente: a divisão real (operador /), a divisão inteira
(operador div) e o resto da divisão inteira (operador mod)
◦ Exemplos:
1. resp ← 14 div 3 (divisão inteira: resp recebe 4)
62 / 63
Algoritmos e Lógica de Programação
• Convenções para as expressões: Operações aritméticas
Operaçao 1o operando 2o operando Tipo resultante Simbologia
inteiro inteiro inteiro
real real real
Adição z ←x+y
real inteiro real
inteiro real real
inteiro inteiro inteiro
real real real
Subtração z ←x−y
real inteiro real
inteiro real real
inteiro inteiro inteiro
real real real
Multiplicação z ←x∗y
real inteiro real
inteiro real real
inteiro inteiro real
real real real
Divisão real z ← x/y
real inteiro real
inteiro real real
Divisão inteira inteiro inteiro inteiro z ← x div y
Resto inteiro inteiro inteiro z ← x mod y
inteiro Não aplicável inteiro
Troca de sinal z ← −x
real Não aplicável real
63 / 63