Escolar Documentos
Profissional Documentos
Cultura Documentos
Campus de Guaratinguetá
PROGRAMAÇÃO DE COMPUTADORES I
© ELFS 1
Raciocício Lógico
Problema Algoritmo
Programação
Execução
Solução Programa
Computador
© ELFS 2
• Nem sempre é fácil obter um algoritmo!
• É necessário reduzir a solução do problema a uma
sequência de operações elementares.
• Exemplo: a construção de uma casa.
• Vamos supor que as operações elementares são:
• instalar portas e janelas
• levantar paredes
• construir telhado
• Algoritmo de solução do problema:
1) Levantar paredes;
2) Construir telhado;
3) Instalar portas e janelas.
© ELFS 3
• Algoritmo: sequência lógica e ordenada de operações
elementares para a solução de um problema.
• Nem sempre é único. Existem algoritmos que são
melhores do que outros.
• Exemplo: trocar uma lâmpada queimada
• Operações elementares:
buscar uma escada
subir na escada
descer da escada
posicionar a escada
buscar uma lâmpada
retirar uma lâmpada do soquete
colocar uma lâmpada no soquete
© ELFS 4
Um algoritmo:
1) buscar uma escada
2) posicionar a escada
3) buscar uma lâmpada (nova)
4) subir na escada
5) retirar a lâmpada (velha) do soquete
6) colocar a lâmpada (nova) no soquete
Outro algoritmo:
1) buscar uma lâmpada (nova)
2) buscar uma escada
3) posicionar a escada
4) subir na escada
5) retirar a lâmpada (velha) do soquete
6) colocar a lâmpada (nova) no soquete
© ELFS 5
• Vamos supor que desejamos trocar somente
lâmpadas queimadas. Isso é lógico, não?
• Vamos precisar de mais uma operação elementar:
• testar se uma lâmpada está queimada
• Algoritmo
1) buscar uma escada
2) posicionar a escada
3) buscar uma lâmpada (nova)
4) se a lâmpada (no soquete) está queimada,
então:
5) subir na escada
6) retirar a lâmpada (velha) do soquete
7) colocar a lâmpada (nova) no soquete
© ELFS 6
Outro algoritmo (melhor?)
1) se a lâmpada (no soquete) está queimada,
então:
2) buscar uma escada
3) posicionar a escada
4) buscar uma lâmpada (nova)
5) subir na escada
6) retirar a lâmpada (velha) do soquete
7) colocar a lâmpada (nova) no soquete
© ELFS 7
• Vamos usar um pequeno jogo de adivinhação para que
vocês tenham uma ideia melhor sobre algoritmos.
• Você vai escolher um valor de N e o computador vai
selecionar aleatoriamente um número inteiro entre 1 e
N. Você deve fazer escolhas até advinhar o número que o
computador escolheu. Enquanto você não acertar, o
computador vai dizer se o número que ele selecionou é
maior ou menor do que a sua escolha.
• Para resolver esse problema, você precisa de um algoritmo.
Qual algoritmo? Um algoritmo bem simples é tentar 1, 2, 3,
4 e assim por diante, até chegar ao número correto. Esse
algoritmo é conhecido como busca linear.
• Vamos testar?
© ELFS 10
Desafios de Raciocínio Lógico
1. Que número está faltando?
2. Coloque os sinais + ou – em
cada círculo para obter os
resultados indicados na figura.
3. Preencha os quadrados em
branco. A sequência lógica em
cada um dos lados é diferente.
As setas indicam números
idênticos.
© ELFS 11
• Como informar o computador sobre o algoritmo a ser
usado para resolver um problema?
• Você precisa implementar o algoritmo como um
programa de computador. Isso significa que você vai
precisar escrever os passos do algoritmo usando uma
linguagem de programação.
• O algoritmo escrito assim é conhecido como programa.
• Podem acreditar: escrever o programa é a parte mais fácil!
A parte mais difícil é construir o algoritmo.
• Neste curso, vamos usar a linguagem C e o ambiente de
desenvolvimento CETUS.
• O ambiente CETUS contém:
• Editor (usado para escrever o texto do programa)
• Compilador
© ELFS 12
• O compilador é necessário para verificar se o texto
obedece à sintaxe da linguagem de programação e, caso
isto ocorra, traduzir o texto para uma sequência de
instruções em linguagem de máquina.
• Um texto escrito em uma linguagem de programação se
chama programa fonte.
• Por que o compilador precisa traduzir o programa fonte
para a linguagem de máquina?
• Porque os computadores atuais só conseguem executar
instruções que estejam escritas na forma de códigos
binários.
• Um programa em linguagem de máquina é chamado de
programa executável.
© ELFS 13
• O processo de compilação, na verdade, se dá em duas
etapas:
• Fase de tradução: o programa fonte é transformado em
um programa objeto.
• Fase de ligação: o programa objeto é juntado às
bibliotecas necessárias para produzir o programa
executável.
© ELFS 14
• Para os computadores, quais são as operações
elementares disponíveis?
• É surpreendente, mas as operações são poucas e muito
simples:
• atribuição de valores a variáveis (A = 3)
• operações aritméticas (+, -, *, /, ...)
• comparação (A > B ?)
• Entretanto, para construir um algoritmo essas operações
simples podem ser usadas em 3 estruturas, que podem
ser combinadas da forma que for necessária para resolver
o problema.
• Estas estruturas são: sequência, condição e repetição.
• A programação de computadores usando estas 3
estruturas é conhecida como programação estruturada.
© ELFS 15
• Uma forma de representação de algoritmos por meio
destas estruturas é conhecida como fluxograma (ou
diagrama de blocos).
• A sequência é representada por:
Dentro de um retângulo as operações
são sempre atribuições, que podem
conter operações aritméticas.
início
fim
início
A, B
sim não
A > B? Observe que este algoritmo já
utiliza as estruturas: sequência
M=A M=B e condição.
fim
© ELFS 20
Fluxograma Programa-fonte C
© ELFS 21
Exercícios
1. Dados o consumo médio (km/litro), o tempo gasto numa
viagem (hora) e a velocidade média de um automóvel
(km/hora), determinar a distância percorrida pelo
automóvel (km) e a quantidade de combustível usada
(litro).
2. Dado uma temperatura em graus centígrados (C),
apresentá-la em graus Farenheit (F). A fórmula de
conversão é: F = (9C + 160) / 5.
3. Dados os valores das variáveis A e B, efetuar a troca dos
valores de forma que a variável A passe a possuir o valor
da variável B e que a variável B passe a possuir o valor
da variável A. Apresentar os valores finais de A e B.
© ELFS 22
Seja o seguinte problema:
• Determinar o valor de y = seno(1.5)
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int main()
{
float y;
y = sin(1.5);
printf("y = %f",y);
printf("\n");
return 0;
}
© ELFS 23
Erros de Sintaxe
• A primeira tarefa do compilador é verificar se existem erros
de sintaxe no programa.
• O programa executável só será gerado se o texto do
programa não contiver erros de sintaxe. Certo?
• Exemplo: considere um string, ou seja, uma sequência de
caracteres delimitada por aspas (").
• Se tivéssemos escrito:
printf("y = %f,y);
y = 0.997495
© ELFS 25
Erros de Lógica
• Obtido o programa executável, o problema está resolvido?
• Nem sempre! Será que o programa está correto?
• Se em vez de escrever:
y = sin(1.5);
tivéssemos escrito:
y = sin(2.5);
y = 0.598472
© ELFS 26
Erros de Lógica
• Embora um resultado tenha sido obtido, ele não é correto.
• Se um programa executável não produz os resultados
corretos, é porque ele contém erros de lógica (bugs).
• O processo de identificação e correção de erros de lógica é
denominado depuração (debug).
• O processo de depuração nem sempre é fácil como no
caso dos erros de sintaxe, em que o próprio compilador
aponta a linha da programa que contém o erro.
• No caso de erros de lógica, a identificação da causa do
erro cabe ao programador.
© ELFS 27
Arquivos de Cabeçalho
• Note que o programa-fonte p1.c começa com as linhas:
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
© ELFS 30
Função main()
© ELFS 31
Exercícios: Escrever o algoritmo na forma de um fluxograma e
codificar o algoritmo como um programa C.
© ELFS 32
3. Fazer um programa que, dados os lados A, B e C de um
triângulo, calcula a área do triângulo, sabendo que:
A +B+C
AREA = S × (S − A) × (S − B) × (S − C) e S=
2
O programa deverá verificar se os valores dos lados são
estritamente positivos.
€ €
4. Uma reta é definida pelos valores (float) dos coeficientes
a, b e c de sua equação geral: ax + by + c = 0. Escreva
um programa que, dados os valores dos coeficientes a1,
b1, c1 e a2, b2, c2, de duas retas, mostra se essas retas
são:
• paralelas: se a1/a2 ≠ b1/b2;
• concorrentes: se a1/a2 = b1/b2 ≠ c1/c2;
• coincidentes: se a1/a2 = b1/b2 = c1/c2.
© ELFS 33
• O Jogo das Máquinas consiste em um painel com botões
numerados. Associado a cada botão existe uma chave
que conecta uma máquina a uma outra. Por exemplo:
© ELFS 35
6. O número 3025 possui a seguinte característica:
30 + 25 = 55 e 55² = 3025
Fazer um programa que, dado um número de 4 dígitos
verifica se este número possui essa característica.