You are on page 1of 100

Programação de Computadores

Lógica de Programação

Prof. Dr. André Luís Silva Barbosa


O que é Lógica de Programação?

• É a técnica de encadear pensamentos para atingir determinado


objetivo.

2
O que é Lógica de Programação?

• Os pensamentos, podem ser descritos como uma sequência de


instruções, que devem ser seguidas para se cumprir uma
determinada tarefa.

3
E Sequência Lógica?

• São passos executados até atingir um objetivo ou solução de um


problema.

4
E Instruções?

• Na linguagem comum, entende-se por instruções:


“um conjunto de regras ou normas definidas para a realização
ou emprego de algo”.

5
E Instruções?

• Em informática:
“instrução é a informação que indica a um computador uma
ação elementar a executar.”

6
Importante!

• Convém ressaltar que uma ordem isolada não permite realizar o


processo completo, para isso é necessário um conjunto de instruções
colocadas em ordem sequencial lógica.

7
Exemplo

• Se quisermos fazer uma omelete de batatas, precisaremos colocar em


prática uma série de instruções: descascar as batatas, bater os ovos,
fritar as batatas, etc...

8
Exemplo

• É evidente que essas instruções tem que ser executadas em uma


ordem adequada – não seria legal descascar as batatas depois de
fritá-las.

9
O quê isso significa?

• Uma instrução tomada em separado não tem muito sentido; para


obtermos o resultado, precisamos colocar em prática o conjunto de
todas as instruções, na ordem correta.

10
Algoritmo

• Um algoritmo é formalmente uma sequência finita de passos que


levam a execução de uma tarefa;

• Podemos pensar em algoritmo como uma receita, uma sequência de


instruções que dão cabo de uma meta específica.

11
Algoritmo

• A tarefas não podem ser redundantes nem subjetivas na sua


definição, devem ser claras e precisas;

12
Algoritmo

• Como exemplos de algoritmos podemos citar os algoritmos das


operações básicas (adição, multiplicação, divisão e subtração) de
números reais decimais.

• Outros exemplos seriam os manuais de aparelhos eletrônicos, como


uma sequência de passos para configurar o seu PS4.

13
Exemplos de Algoritmo

• Até mesmo as coisas mais simples, podem ser descritas por


seqüências lógicas. Por exemplo:
• “Comer um chocolate”.
• Pegar o chocolate
• Retirar o papel
• Comer o chocolate
• Jogar o papel no lixo

14
Exemplos de Algoritmo

• “Somar dois números quaisquer”.


• Escreva o primeiro número no retângulo A
• Escreva o segundo número no retângulo B
• Some o número do retângulo A com número do retângulo B e coloque o
resultado no retângulo C

15
Como desenvolver algoritmos

• Os algoritmos são descritos em uma linguagem chamada


pseudocódigo.

• Os algoritmos são independentes das linguagens de programação.

• Ao contrário de uma linguagem de programação não existe um


formalismo rígido de como deve ser escrito o algoritmo.

16
Como desenvolver algoritmos

• O algoritmo deve ser fácil de se interpretar e fácil de codificar.

• Ou seja, ele deve ser o intermediário entre a linguagem falada e a


linguagem de programação.

17
Regras para construção

• Para escrever um algoritmo precisamos descrever a sequência de


instruções, de maneira simples e objetiva. Para isso veremos algumas
técnicas:
• Usar somente um verbo por frase
• Imaginar que você está desenvolvendo um algoritmo para pessoas que não
trabalham com informática
• Usar frases curtas e simples
• Ser objetivo
• Procurar usar palavras que não tenham sentido dúbio

18
Fases

• Qualquer tarefa que siga um determinado padrão pode ser descrito


por um algoritmo.

• Por exemplo:
• Como fazer um arroz doce;
• Calcular o saldo financeiro de um estoque;

19
Fases

• Entretanto ao montar um algoritmo, precisamos primeiro dividir o


problema apresentado em três fases fundamentais.

20
Fases

• Onde temos:
• ENTRADA: São os dados de entrada do algoritmo
• PROCESSAMENTO: São os procedimentos utilizados para chegar ao resultado
final
• SAÍDA: São os dados já processados

21
Fases

• Analogia com o ser humano

22
Exemplo de algoritmo

• Imagine o seguinte problema: Calcular a média final dos alunos da 3ª


Série. Os alunos realizarão quatro provas: P1, P2, P3 e P4.

𝑃1+𝑃2+𝑃3+𝑃4
• Onde Média Final =
4

23
Exemplo de algoritmo

• Para montar o algoritmo proposto, faremos três perguntas:


A) Quais são os dados de entrada?
B) Qual será o processamento a ser utilizado?
C) Quais serão os dados de saída?
A) R: Os dados de entrada são P1, P2, P3 e P4
B) R: O processamento será somar todos os dados de entrada e dividi-
los por 4
C) R: O dado de saída será a média final

24
Exemplo de algoritmo

• Algoritmo
• Receba a nota da prova1
• Receba a nota de prova2
• Receba a nota de prova3
• Receba a nota da prova4
• Some todas as notas e divida o resultado por 4
• Mostre o resultado da divisão

25
Testando o algoritmo

• Após desenvolver um algoritmo ele deverá sempre ser testado.


• Significa, seguir as instruções do algoritmo de maneira precisa para
verificar se o procedimento utilizado está correto ou não.

• Vamos testar o algoritmo da média usando uma tabelinha?

26
Diagrama de Bloco

• O diagrama de blocos é uma forma padronizada e eficaz para


representar os passos lógicos de um determinado processamento.

• Podemos definir uma sequência de símbolos, com significado bem


definido, portanto, sua principal função é a de facilitar a visualização
dos passos de um processamento.

27
Fluxograma

• Um dos diagramas de blocos mais utilizados é o fluxograma.

28
Exercício

• Desenvolva um fluxograma que:


• Leia 4 números
• Calcule o quadrado para cada um
• Somem todos e
• Mostre o resultado

29
Exercício

• Qual a saída do fluxograma a seguir?

30
Constantes, Variáveis e Tipos de
Dados
• Variáveis e constantes são os elementos básicos que um programa
manipula.

• Uma variável é um espaço reservado na memória do computador


para armazenar um tipo de dado determinado.

• Variáveis devem receber nomes para poderem ser referenciadas e


modificadas quando necessário.

31
Constantes, Variáveis e Tipos de
Dados
• Um programa deve conter declarações que especificam de que tipo
são as variáveis que ele utilizará e as vezes um valor inicial.

• Tipos podem ser por exemplo: inteiros, reais, caracteres, etc. As


expressões combinam variáveis e constantes para calcular novos
valores.

32
Constantes

• Determinado valor fixo que não se modifica ao longo do tempo,


durante a execução de um programa.
• Dependendo do tipo, ela pode ser numérica, lógica ou literal.

33
Variável

• Variável é a representação simbólica dos elementos de um certo


conjunto.
• Cada variável corresponde a uma posição de memória, cujo conteúdo
pode se alterado ao longo do tempo durante a execução de um
programa.
• Embora uma variável possa assumir diferentes valores, ela só pode
armazenar um valor a cada instante

34
Variável

35
Tipos de Variáveis

• As variáveis e as constantes podem ser basicamente de quatro tipos:


Numéricas, caracteres, alfanuméricas ou lógicas:
• Numéricas Armazenamento de números, que poderão ser utilizados
para cálculos. Podem ser ainda classificadas como Inteiras ou Reais.
• As variáveis do tipo inteiro são para armazenamento de números inteiros;
• Reais são para o armazenamento de números que possuam casas decimais.

36
Tipos de Variáveis

• Caracteres Específicas para armazenamento de conjunto de


caracteres que não contenham números (literais). Ex: nomes.

• Alfanuméricas Dados que contenham letras e/ou números. Pode em


determinados momentos conter somente dados numéricos ou
somente literais. Se usado somente para armazenamento de
números, não poderá ser utilizada para operações matemáticas.

37
Tipos de Variáveis

• Lógicas Armazenam somente dados lógicos que podem ser


Verdadeiro ou Falso.

38
Declaração de variáveis

• É interessante sempre declarar o tipo da variável que será utilizada.

• Variáveis X, Y numéricos
• Variáveis Z, W reais

39
Operadores

• Os operadores são meios pelo qual incrementamos, decrementamos,


comparamos e avaliamos dados dentro do computador.
• Operadores Aritméticos
• Operadores Relacionais
• Operadores Lógicos

40
Operadores aritméticos

41
Operadores aritméticos

• Hierarquia:
1. Parênteses
2. Multiplicação ou divisão (o que aparecer primeiro)
3. Adição ou subtração (o que aparecer primeiro)

• Exemplo:
3 * (1 – 2) + 1 + 4 * 2 = ?6

42
Operadores relacionais

• Os operadores relacionais são utilizados para comparar conjuntos de


caracteres (String) e números.

• Os valores a serem comparados podem ser caracteres ou variáveis.

• Estes operadores sempre retornam valores lógicos (verdadeiro ou


falso/ True ou False)

43
Operadores relacionais

• Os operadores relacionais são:

44
Operadores relacionais

• Exemplo: Supondo que duas variáveis A e B assumem os seguintes


valores: A = 5 e B = 3. Os resultados das expressões seriam:

45
Operadores relacionais

• Símbolo no fluxograma

46
Operadores lógicos

• Os operadores lógicos servem para combinar resultados de


expressões, retornando se o resultado final é verdadeiro ou falso.

• Os operadores lógicos são:

47
Operadores lógicos

• E / AND
• Uma expressão AND (E) é verdadeira se todas as condições forem verdadeiras

• OR/OU
• Uma expressão OR (OU) é verdadeira se pelo menos uma condição for
verdadeira

• NOT
• Uma expressão NOT (NÃO) inverte o valor da expressão ou condição, se
verdadeira inverte para falsa e vice-versa.

48
Operadores lógicos

• A tabela abaixo mostra todos os valores possíveis criados pelos três


operadores lógicos (AND, OR e NOT)

49
Operadores lógicos

• Suponha que temos três variáveis


• A = 5, B = 8 e C =1
• Preencha a tabela a seguir com VERDADEIRO ou FALSO

FALSO
VERDADEIRO
VERDADEIRO
VERDADEIRO
FALSO
FALSO 50
Estrutura de Decisão e Repetição

• Necessário para tomar decisões no andamento do algoritmo;

• Decisões interferem diretamente no andamento do programa;

• Dois tipos principais: estrutura de decisão e estrutura de repetição.

51
Comandos de decisão

• Conduzem a estruturas de programas que não são totalmente


sequenciais.

• Com as instruções de SALTO ou DESVIO pode-se fazer com que o


programa proceda de uma ou outra maneira, dependendo das
decisões lógicas tomadas em função dos dados ou resultados
anteriores.

52
Comandos de decisão

• Principais estruturas:
• Se então
• Se então Senão
• Caso Selecione

53
Se então/If ...

• SE/IF normalmente vem acompanhado de um comando, isto é, se a


condição for satisfeita pelo SE/IF, então determinado comando é
executado;

54
Se então/If ...

• Por exemplo, imagine um algoritmo que determinado aluno será


aprovado se sua média for maior ou igual a 5,0:

SE MEDIA >= 5.0 ENTÃO


ESCREVA (“ALUNO APROVADO”)
FIMSE

55
Se então/If ...

• O fluxograma ficaria assim:

56
Se então Senão/ If ... Else

• “SE/ENTÃO/SENÃO”, funciona exatamente como a estrutura “SE”

• A diferença é:
• em “SE” somente podemos executar comandos caso a condição seja
verdadeira, diferente de “SE/SENÃO” pois sempre um comando será
executado independente da condição, ou seja, caso a condição seja
“verdadeira” o comando da condição será executado, caso contrário o
comando da condição “falsa” será executado

57
Se então Senão/ If ... Else

• O fluxograma ficaria assim:

58
Encadeando estruturas condicionais

• Faça um trecho de programa em C para o fluxograma:

59
ESCOLHA CASO/ SWITCH ... CASE

• Utilizada para testar, na condição, uma única expressão, que produz


um resultado;

• ou o valor de uma variável, em que está armazenado um


determinado conteúdo.

• Compara-se, então, o resultado obtido no teste com os valores


fornecidos em cada cláusula “Caso”.

60
ESCOLHA CASO/ SWITCH ... CASE
ESCOLHA <variável de verificação>
CASO <valor1> FAÇA
"instruções a serem executadas caso <variável de verificação> = <valor1>"
CASO <valor2> FAÇA
"instruções a serem executadas caso <variável de verificação> = <valor2>"
CASO <valor3> FAÇA
"instruções a serem executadas caso <variável de verificação> = <valor3>"
...
FIM-ESCOLHA

61
Comandos de repetição

• São utilizados quando desejamos que um determinado conjunto de


instruções ou comandos sejam executados um número definido ou
indefinido de vezes, ou

• Enquanto um determinado estado de coisas prevalecer, ou

• Até que um valor seja alcançado.

62
Comandos de repetição

• Principais comandos de repetição:


• Enquanto x, faça (while ...);
• Repita..., Enquanto x (do ... while ...);
• Para ... Até ... Ao passo de... (for ...)

63
Enquanto x, faça (while ...)

• O bloco de operações será executado enquanto a condição x for


verdadeira.
• Exemplo (Contador):

64
Enquanto x, faça (While ...)

• Algoritmo do contador:
Nr : INTEIRO

Nr := 0
Enquanto Nr <= 100 faça
Nr := Nr + 1
Fim Enquanto

65
Enquanto x, faça (While ...)

• Trecho do contador na linguagem C


int Nr = 0;
while(Nr <= 100){
Nr = Nr + 1;
}

66
REPITA..., ATÉ x (Do ... While ...)

• Neste caso primeiro são executados os comandos, e somente depois


é realizado o teste da condição.

• Se a condição for verdadeira, os comandos são executados


novamente, caso seja falso é encerrada a estrutura de repetição.

67
REPITA..., ATÉ x (Do ... While ...)

• Exemplo no fluxograma:

68
REPITA..., ATÉ x (Do ... While ...)

• Algoritmo do contador:
Nr : INTEIRO
Nr := 0
REPITA
Nr := Nr + 1
ATÉ Nr = 100

69
REPITA..., ATÉ x (Do ... While ...)

• Trecho do contador na linguagem C


int Nr = 0;
do{
Nr = Nr + 1;
} while(Nr <= 100);

70
Para ... Até ... Ao passo de... (For ...)

• A estrutura for é controlada por contador e o seu fluxograma é


parecido com o da estrutura while.
• Exemplo de algoritmo:

Para J de 0 até 10 passo 1 faça


ESCREVA( J );
Fimpara

71
Para ... Até ... Ao passo de... (For ...)

• Trecho com a linguagem C

for(j = 0; j <= 10; j++){


printf(“%d”, j);
}

72
Vamos treinar um pouco?

• Faça um algoritmo que determine o maior entre 3 números pré-


estabelecidos.

• Faça um algoritmo que conte de 1 a 100 e a cada múltiplo de 10


emita uma mensagem: “Múltiplo de 10”.

73
Introdução à linguagem C
Introdução à Linguagem C
Um programa simples
1 /*Primeiro programa em C */
2
3 #include <stdio.h>
4
5 int main()
6{
7 printf( “Bem-vindo ao C!\n" );
8
9 return 0;
10 }

Comentários Texto delimitado por /* e */ é ignorado pelo


computador
Usado para descrever programa
76
Um programa simples

• #include <stdio.h>
• Diretiva do pré-processador
• Indicação ao computador para carregar um certo arquivo
• <stdio.h>
• Permite operações padrão de entrada/saída
• int main()
• Programas em C contém uma ou mais funções, uma das quais tem que ser
exatamente main
• Aqui, parênteses são usados para indicar uma função

77
Um programa simples

• int main()
• int significa que main "retorna" um valor inteiro
• Chaves ({ }) indicam a existência de um bloco
• O corpo de todas as funções tem que está contido entre chaves

78
Um programa simples

• printf(“Bem-vindo ao C!\n");
• Instrui o computador a realizar uma ação
• Especificamente, imprime a cadeia de caracteres entre aspas (“ ”)
• A linha inteira equivale a um comando
• Todos os comandos têm que terminar com um ponto-e-vírgula (;)
• Caractere de escape (\)
• Indica que o printf deve fazer algo fora do comum \n é o caractere nova-linha

79
Um programa simples

• return 0;
• Maneira de sair de uma função
• return 0, neste caso, significa que o programa terminou normalmente
• Fecha-chave (})
• Indica que o fim do main foi encontrado

80
Programa de soma
1 /*Programa de soma */
Entre com o primeiro inteiro:
2 45
3 #include <stdio.h> Entre com o segundo inteiro:
4 72
5 int main() Soma eh igual a 117
6 {
7 int int1, int2, soma; /* declaração */
8
9 printf(“Entre com o primeiro inteiro:\n"); /* prompt */
10 scanf( "%d", &int1 ); /* le um inteiro */
11 printf(“Entre com o segundo inteiro:\n"); /* prompt */
12 scanf( "%d", &int2 ); /* le um inteiro */
13 soma = int1 + int2; /* atribui soma */
14 printf(“A soma eh igual a %d\n", soma);/* imprime soma */
15
16 return 0; / * indica que o programa foi bem-sucedido */
17 }
81
Programa de soma

• int int1, int2, soma;


• Declaração de variáveis
• Variáveis → posições na memória nas quais
um valor pode ser armazenado
• int significa que as variáveis podem guardar inteiros (-1, 3, 0, 47)

82
Programa de soma

• Nomes de variáveis (identificadores)


• int1, int2, soma
• Identificadores: consiste de letras, dígitos (não podem começar por dígitos) e
sublinha( _ )
• Case sensitive (maiúscula diferente de minúscula)
• Declarações de variáveis aparecem antes dos comandos executáveis
que usam estas variáveis
• Se um comando executável referencia uma variável ainda não declarada será
produzido um erro de sintaxe (compilador)

83
Programa de soma

• Declarações aparecem antes dos comandos executáveis


• Se um comando executável referencia uma variável não declarada será
produzido um erro de sintaxe (compilador)

84
Programa de soma

• scanf( "%d", &inteiro1 );


• Obtém um valor do usuário
• scanf usa a entrada padrão (comumente o teclado)
• Este comando scanf tem dois argumentos
• %d: indica que o dado deve ser um inteiro decimal
• &inteiro1: posição na memória na qual a variável está armazenada

85
Programa de soma

• Quando o programa está sendo executado, o usuário responde ao


comando scanf digitando um número e, em seguida, pressionando a
tecla enter (return)

86
Programa de soma

• Operador de atribuição =
• Atribui um valor para a variável
• É um operador binário (tem dois operandos)
• soma = variável1 + variável2;
• soma recebe variável1 + variável2
• Variável que recebe valor posicionada à esquerda

87
Programa de soma

• printf("Soma eh igual a %d\n", soma);


• Similar ao scanf
• %d significa que um decimal inteiro será impresso
• soma especifica qual inteiro será impresso
• Cálculos podem ser realizados dentro de um comando printf
• printf("Soma e %d\n", int1 + int2);

88
Conceitos de memória

• Variáveis
• Nomes de variáveis correspondem a posições (locações) a serem reservadas
na memória
• Toda variável tem um nome, um tipo, um tamanho e um valor
• Toda vez que um valor é atribuído a uma variável (através de scanf, por
exemplo), o valor anterior é substituído (e destruído)

89
Conceitos de memória

• Variáveis
• A leitura de variáveis da memória não as altera

• Uma representação visual

inteiro1

45

90
Conceitos de memória

• Cálculos Aritméticos
• Usa-se * para a multiplicação e / para a divisão
• Divisão inteira: Truncamento do quociente
• 7 / 5 é avaliado como 1
• Operador de módulo (%): Retorno do resto
• 7 % 5 é avaliado como 2

91
Conceitos de memória

• Precedência de Operadores
• Alguns operadores têm prioridade sobre outros durante a avaliação da
expressão (e.g., multiplicação antes da adição)
• Usa-se parênteses quando necessário
• Exemplo
• Encontre a média de três variáveis a, b e c
• Não se usa a + b + c / 3
• Usa-se (a + b + c ) / 3

92
Conceitos de memória

• Operadores Aritméticos

Operação Operador Expressão Expressão


em C aritmético algébrica em C
Adição + f+7 f+7
Subtração - p-c p-c
Multiplicação * bm b*m
Divisão / x/y x/y

Módulo % r mod s r%s

93
Tomada de decisão

• Comandos executáveis
• Realização de ações (cálculos, entrada/saída de dados)
• Tomada de decisões
• Decisão de impressão "passa" ou "falha" a partir de um teste de condição
• Estrutura de controle if
• Versão simples neste ponto, maior detalhamento posteriormente
• Se a condição for verdadeira, então o corpo do comando if será executado
• Igual a 0 é falso, diferente de zero é verdadeiro
• O controle sempre prossegue após o comando if

94
Tomada de decisão

• Operadores
Operador de Operador de Exemplo de Significado em C
Igualdade/ Igualdade/ Condição em C
Condiç
Relacional Algé
Algébrico Relacional em C
Padrão
Operadores de Igualdade
= == x==y x é igual a y

? != x!=y x é diferente de y

Operadores Relacionais
< < x<y x é menor do que y

> > x>y x é maior do que y

= <= x<=y x é menor ou igual a y

= >= x>=y x é maior ou igual a y

95
Exercícios

• Um usuário deseja um algoritmo onde possa escolher que tipo de


média deseja calcular a partir de 3 notas. Faça um algoritmo que leia
as notas, a opção escolhida pelo usuário e calcule a média.
• 1 -aritmética
• 2 -ponderada (30%,30%,40%)

96
Exercícios
Um sistema de equações lineares do tipo:
𝑎𝑥 + 𝑏𝑦 = 𝑐
𝑑𝑥 + 𝑒𝑦 = 𝑓
pode ser resolvido segundo mostrado abaixo :
𝑐𝑒 − 𝑏𝑓
𝑥=
𝑎𝑒 − 𝑏𝑑
𝑎𝑓 − 𝑐𝑑
𝑦=
𝑎𝑒 − 𝑏𝑑

Escreva um programa que lê os coeficientes a,b,c,d,e e f e calcula e mostra


os valores de x e y.
97
Exercícios

Escreva um programa que calcule a média aritmética das 3 notas de um


aluno e mostre, além do valor da média, uma mensagem de
"Aprovado", caso a média seja igual ou superior a 6, ou a mensagem
"reprovado", caso contrário.

98
Exercícios

Escreva um programa que lê um número indefinido de valores e exiba


como resultado:

- A soma de todos os valores inseridos


- A média aritmética dos valores inseridos

99
Referências

• Moraes, Paulo Sérgio de. Curso Básico de Lógica de Programação.


Unicamp - Centro de Computação – DSC. 2000.

• Deitel, P. J., Deitel, H. M. Como Programar e C. 6ª Ed. Pearson. 2011.

100

You might also like