Вы находитесь на странице: 1из 38

Check List

• Me cadastrei no moodle?

INF01202 - Marcelo Walter - Aula 02 1


URI Online
Prática de exercícios
extra-classe

INF01202 - Marcelo Walter - Aula 02 2


Na última aula
• “Computational Thinking”
• Habilidades e Limites da
computação
• Mapear problemas em “algo
computacional”
• Pensar como cientistas da
computação
• Computational problem solving
INF01202 - Marcelo Walter - Aula 02 3
Objetivos da Disciplina
• Introduzir o uso do computador na solução de
problemas, através da construção de
PROGRAMAS

INF01202 - Marcelo Walter - Aula 02 4


Elaboração de um Programa

Decomposição
Estruturação
Problema Análise

Programa Algoritmo

INF01202 - Marcelo Walter - Aula 02 5


Definição de Algoritmo

“Algoritmo é uma sequência finita e lógica


de instruções ou passos básicos,
especificados de acordo com uma
determinada linguagem e que serve para
resolver um determinado problema.”

IMPORTANTE: Um bom algoritmo pode ser implementado em qualquer


linguagem! Por isso precisamos aprender a escrever bons algoritmos!!

INF01202 - Marcelo Walter - Aula 02 6


Processo de geração de um Programa
• Análise e Definição do Problema
• Projeto do Algoritmo Sem Computador
• Validação do Algoritmo (teste de mesa)

• Tradução do Algoritmo para uma linguagem de


programação (codificação)
No Computador
• Compilação
• Teste e Depuração
• Execução
INF01202 - Marcelo Walter - Aula 02 7
Ler atentamente o enunciado do problema, até entendê-
lo bem.

Análise e Identificar os dados de entrada.

Definição Identificar as saídas (resultados esperados).

do O que o programa deve fazer (objetivo), isto é, como


transformar as entradas em saídas?

Problema Identificar se existem valores ou dados intermediários,


usados para transformar as entradas nas saídas.

Pode ser dividido em subproblemas?

INF01202 - Marcelo Walter - Aula 02 8


Algoritmo - Propriedades
• Possui um estado inicial
• Contém uma sequência lógica e finita de ações
(comandos) claras e precisas, com fluxo de execução
baseado em:
– Sequencia
– Seleção condicional (se isto, então aquilo)
– Iteração (repetição, enquanto isto)
• Possui dados de entrada
• Produz dados de saída corretos
• Possui estado final previsível
• Deve ser eficaz (executa em tempo razoável)

INF01202 - Marcelo Walter - Aula 02 9


Normas importantes para algoritmos
• Identificar (dar um nome) ao algoritmo
• Incluir no início do algoritmo sua finalidade e entradas
e saídas
• Usar apenas um comando por linha
• Usar indentação (recuo das margens) para indicar a
hierarquia do comando
• Utilizar espaços e linhas em branco para maior
legibilidade

Programa = Algoritmo Traduzido!!


INF01202 - Marcelo Walter - Aula 02 10
Exemplo

Enunciado do Problema:

Ler dois valores informados pelo


teclado, calcular e informar a soma
destes valores

INF01202 - Marcelo Walter - Aula 02 11


Processo de geração de um Programa
üAnálise e Definição do Problema
Ø Projeto do Algoritmo
ØValidação do Algoritmo (teste de mesa)

INF01202 - Marcelo Walter - Aula 02 12


Análise e Definição do Problema
Identificar objetivo, entradas e saídas:

Objetivo: informar a soma de 2


valores lidos
Entradas: 2 valores numéricos
Saída: 1 valor numérico « SOMA

INF01202 - Marcelo Walter - Aula 02 13


Projeto do Algoritmo
Algoritmo Inicial
Algoritmo Soma2
/* Calcula e informa a soma de 2 valores lidos
Entrada: 2 valores
Saída: Soma dos 2 valores */
1. Início
2. Ler o primeiro valor Comandos Claros e Precisos?
3. Ler o segundo valor
4. Efetuar a soma
5. Informar a soma
6. Fim

INF01202 - Marcelo Walter - Aula 02 14


Projeto do Algoritmo
Refinamento
Algoritmo Soma2
/* Calcula e informa a soma de 2 valores lidos
Entrada: 2 valores
Saída: Soma dos 2 valores */
1. Início
2. Ler e1 Nomes Significativos?
3. Ler e2
4. e3 <- e1 + e2
5. Escrever e3
6. Fim

Significa atribuição: e3 recebe o valor de e1+e2

INF01202 - Marcelo Walter - Aula 02 15


Projeto do Algoritmo
Final
Algoritmo Soma2
/* Calcula e informa a soma de 2
valores lidos
Entrada: 2 valores
Saída: Soma dos 2 valores */
1.Início
2.Ler val1
3.Ler val2
4.soma <- val1 + val2
5.Escrever soma
6.Fim
INF01202 - Marcelo Walter - Aula 02 16
Processo de geração de um Programa
ü Análise e Definição do Problema
ü Projeto do Algoritmo Sem Computador
ü Validação do Algoritmo (teste de mesa)

• Tradução do Algoritmo para uma linguagem de


programação (codificação)
No Computador
• Compilação
• Teste e Depuração
• Execução
INF01202 - Marcelo Walter - Aula 02 17
Linguagem de Programação
• Fornece conjunto de
convenções e regras
que possibilitam
instruir o computador
na execução de tarefas

INF01202 - Marcelo Walter - Aula 02 18


Ambiente de Programação
• Permite edição do programa na linguagem
específica (linguagem de programação)
• Verifica sintaxe (compilação): se correta,
traduz para linguagem de máquina
• Executa programa em linguagem de máquina
(execução)
• Na disciplina usaremos o CodeBlocks

http://www.codeblocks.org/
INF01202 - Marcelo Walter - Aula 02 19
Linguagens de Programação
correção sintática
compilação execução

Programa
C Objeto
codificação

Programa
Fonte sintaxe Sim execução Não
correta? correta?

Sim
Não Fim
correção semântica
INF 01202 - Marcelo Walter - Aula 01 20
Codificação x Execução
Ambiente de programação C: tradução para linguagem
de máquina e execução do programa

programa fonte compilação


em C programa
objeto
nome.c nome.exe
Em caso de erro
de sintaxe
execução

Em caso de erro de execução resultados da execução

INF01202 - Marcelo Walter - Aula 02 21


Retomando nosso exemplo anterior
1) Faça um algoritmo e programa em C
que:
– leia dois valores informados pelo teclado;
– calcule a soma destes valores;
– mostre a soma calculada na tela.
Algoritmo Soma2
/* Calcula e informa a soma de 2
valores lidos
Entrada: 2 valores Linguagem de Programação C:
Saída: Soma dos 2 valores*/
1. Início • entrada de dados: função scanf()
2. Ler val1
• atribuição: operador =
3. Ler val2
4. soma <- val1 + val2 • saída de dados: função printf()
5. Escrever soma
6. Fim
INF01202 - Marcelo Walter - Aula 02 22
Codificação
Algoritmo Soma2
/* Calcula e informa a soma de 2 valores lidos
Entrada: 2 valores
Saída: Soma dos 2 valores */
1. Início
2. Ler val1
3. Ler val2
4. soma <- val1 + val2
5. Escrever soma
6. Fim

/*calcula a soma de 2 valores inteiros lidos do teclado*/


#include <stdio.h> // biblioteca com operações de I/O

int main( )
{
int val1, val2; // declaração das variáveis informadas
int soma; // declaração da variável resultante

printf("Valor 1:\n"); // mensagem impressa na tela


scanf("%d", &val1); // leitura da informação digitada
printf("Valor 2:\n");
scanf("%d", &val2);
soma = val1 + val2; // armazena resultado em soma
printf("Resultado da soma: %d\n", soma); // e mostra na tela

return 0; // encerra o programa de forma correta


}

INF01202 - Marcelo Walter - Aula 02 23


Execução

INF01202 - Marcelo Walter - Aula 02 24


Estrutura de um programa em C - esqueleto

/* comentário inicial, descrevendo objetivos do


programa */
Declarações
#include <stdio.h> // para entrada e saída de dados
// outras bibliotecas necessárias
// outras declarações

int main( ) // função principal e obrigatória


{
//declarações (antes das instruções)
Programa principal
// instruções

return 0; // para encerramento normal do programa


}

INF01202 - Marcelo Walter - Aula 02 25


Variáveis

• Locais identificados onde dados são armazenados e


recuperados, durante a execução de um programa.
• Devem ser declaradas antes de serem usadas, com a
especificação do tipo de conteúdo válido.
• Identificador: nome descritivo do uso da variável.
• Conteúdos de variáveis são atribuídos através de:
– comando de leitura ( scanf )
– comando de atribuição ( = )

INF01202 - Marcelo Walter - Aula 02 26


Variável - Dados 1. início
2. ler val1
3. ler val2
Valor informado: 4. soma ¬ val1 + val2
5 5. escrever soma
6. fim.

Dados: NOME
Memória: Escaninhos identificador

5 val1
E1 val2
E2 soma
E3 E4
E4 E5
E5
Associa nome ao
E6 E7 E8 E9 E10
v espaço de
E11 E12 E13 E14 E15 memória
E16
E16 E17
E17 E18
E18 E19
E19 E20
E20

INF01202 - Marcelo Walter - Aula 02 27


Variável - Dados 1. início
2. ler val1
3. ler val2
Valor informado: 4. soma ¬ val1 + val2
13 5. escrever soma
6. fim.

Memória: Escaninhos

5 val1
E1 13val2
E2 soma
E3 E4
E4 E5
E5
E6 E7 E8 E9 E10
v
E11 E12 E13 E14 E15
E16 E17 E18 E19 E20

INF01202 - Marcelo Walter - Aula 02 28


Variável - Dados 1. início
2. ler val1
3. ler val2
4. soma ¬ val1 + val2
5. escrever soma
6. fim.
Valor resultante:
18

Memória: Escaninhos

5 val1
E1 13val2
E2 18
soma
E3 E4
E4 E5
E5
E6 E7 E8 E9 E10
v
E11 E12 E13 E14 E15
E16 E17 E18 E19 E20

INF01202 - Marcelo Walter - Aula 02 29


Variável - Dados 1. início
2. ler val1
3. ler val2
4. soma ¬ val1 + val2
5. escrever soma
6. fim.

Valor mostrado:
18

Memória: Escaninhos

5 val1
E1 13val2
E2 18
soma
E3 E4
E4 E5
E5
E6 E7 E8 E9 E10
v
E11 E12 E13 E14 E15
E16 E17 E18 E19 E20

INF01202 - Marcelo Walter - Aula 02 30


Declaração de variáveis
Sintaxe:
tipo nome_da_variavel;

ü Declaração das variáveis usadas no programa.


ü Nomes: letra inicial + letras (minúsculas) dígitos ou _ (até 32).
ü Armazenamento de conteúdo em uma variável:
– leitura: scanf
– atribuição: =
ü Tipos principais:
int //inteiro
float //decimal, precisão simples
double //decimal, precisão dupla
char // 1 único caractere ASCII
ü Exemplos:
int num; // 1 por linha
int quant_valores;
float val1, val2, somavalores; // várias, na mesma linha
char sexo;

INF01202 - Marcelo Walter - Aula 02 31


Tipos de dados
• Componente da linguagem de programação, determina o tipo de
conteúdo, valores que pode conter e tamanho de área de memória
reservada para um dado.
• No C, os tipos básicos de dados são:
Tipo Tamanho Valores Válidos
char 1 byte Caracteres do Código ASCII
int 4 bytes -2,147,483,648 -> 2,147,483,647, apenas
inteiros
float 4 bytes -3.4 X 1038 a +3.4 X 1038, até 6 dígitos
de precisão
double 8 bytes -1.7 X 10308 a +1.7 X 10308, até 10
dígitos de precisão

INF01202 - Marcelo Walter - Aula 02 32


Entrada formatada de dados: função scanf
Sintaxe:
scanf (“tipo1 tipo2...", &var1, &var2,...);
• Faz com que o conteúdo digitado no teclado seja transferido (tecla <enter>
pressionada) para a área de memória correspondente à variável listada após
“formatos”, no formato adequado ao tipo de dado especificado após o símbolo
%.
• O nome da variável deve estar antecedido pelo símbolo &.
• Se a lista incluir mais de 1 variável, então deverá ser especificado o tipo de cada
variável da lista, na sequência equivalente, sem espaço em branco ou vírgula
entre os indicativo de tipo.
• Os tipos padrão são indicados da forma abaixo:

%d número inteiro
%f número float
%lf número double
%c caractere char

INF01202 - Marcelo Walter - Aula 02 33


Entrada formatada de dados: função scanf
Sintaxe:
scanf (“tipo1 tipo2 ...", &var1, &var2,...);
Exemplos:
... %d conteúdo inteiro
int main()
%f número float
{
%lf número double
int int1, int2; %c caractere char
float real;
char caract;
scanf("%d", &int1); // conteúdo inteiro digitado é armazenado em int1
scanf("%d%f", &int2, &real); // conteúdo inteiro em int2 e real em real
scanf("%c", &caract); // caractere digitado é armazenado em caract
...
}
Leitura sem & antes do
identificador da variável:
erro de execução!
INF01202 - Marcelo Walter - Aula 02 34
Operador de atribuição
Sintaxe:
identificador = expressão;

• Armazena o valor resultante da expressão à direita à esquerda do


sinal de atribuição.
• Expressão pode ser também uma constante ou uma variável.
• Exemplos:
x = 4; // significa que a variável x recebe conteúdo 4
y = x + 2;
y = y + 4; // conteúdo inicial da variável usado na expressão
valor = 2.5; //casa decimal indicada pelo ponto
sexo = ‘F’; /* atribuição de 1 único caractere para uma
variável char é entre apóstrofos! */

INF01202 - Marcelo Walter - Aula 02 35


Saída formatada de dados: função printf
Sintaxe:

printf (“caracteres e tipos e formatos", var1, var2,...);

• Faz com que os caracteres inseridos entre as aspas e o conteúdo armazenado


na(s) área(s) de memória correspondente à(s) variável (eis) listada(s) sejam
mostrados na tela, nos formatos especificados.
• As variáveis da lista tem seus conteúdos mostrados de acordo e no local onde
o formato correspondente foi inserido (sempre associado ao símbolo %).
• Se a lista incluir mais de 1 variável, então deverá ser especificado um formato
para cada variável da lista, na sequência equivalente.
• Também deve ser usada antes de scanf, para informar o usuário sobre a
entrada de dados a ser executada.

INF01202 - Marcelo Walter - Aula 02 36


Saída formatada de dados: função printf
- tipos e formatos -

ü A notação indicativa do tipo de cada variável a ser listada


é:
% tipo

ü Os tipos básicos são indicados pelas letras:

%c char
%d inteiro
%f float com notação decimal, 6 casa decimais
%lf double com notação decimal, 6 casa decimais
%e float ou double com notação científica
Exercícios – mostrar próxima aula

2) Faça um algoritmo e o programa correspondente que,


dado o preço de um produto em reais, converta este valor
para o equivalente em dólares. O preço do produto e a
taxa de conversão para o dólar devem ser informados
através do teclado.

INF01202 - Marcelo Walter - Aula 02 38

Вам также может понравиться