Sei sulla pagina 1di 37

Check

 List  
•  Me  cadastrei  no  moodle?  
•  Instalei  Codeblocks  no  meu  computador?  
•  Tomar  6  copos  de  água  por  dia?  J  

INF01202  -­‐  Marcelo  Walter  -­‐  Aula  02   1  


Na  úlEma  aula    
•  “Computa(onal  Thinking”  
•  Habilidades  e  Limites  da  
computação  
•  Mapear  problemas  em  “algo  
computacional”  
•  Pensar  como  cienEstas  da  
computação  
•  Computa(onal  problem  solving  
INF01202  -­‐  Marcelo  Walter  -­‐  Aula  02   2  
ObjeEvos  da  Disciplina  
•  Introduzir  o  uso  do  computador  na  solução  de  
problemas,  através  da  construção  de  
PROGRAMAS  

INF01202  -­‐  Marcelo  Walter  -­‐  Aula  02   3  


Elaboração  de  um  Programa  

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

Programa   Algoritmo  

INF01202  -­‐  Marcelo  Walter  -­‐  Aula  02   4  


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   5  


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   6  
Análise  e  Definição  do  Problema  
ü Ler  atentamente  o  enunciado  do  problema,  até  
entendê-­‐lo  bem.    
ü IdenEficar  os  dados  de  entrada.  
ü IdenEficar  as  saídas  (resultados  esperados).  
ü O  que  o  programa  deve  fazer  (objeEvo),  isto  é,  
como  transformar  as  entradas  em  saídas?  
ü IdenEficar  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   7  


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  (repeEçã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   8  


Normas  importantes  para  algoritmos  
•  IdenEficar  (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  
•  UElizar  espaços  e  linhas  em  branco  para  maior  
legibilidade  

Programa  =  Algoritmo  Traduzido!!  


INF01202  -­‐  Marcelo  Walter  -­‐  Aula  02   9  
Exemplo  

Enunciado do Problema:

Ler dois valores informados pelo


teclado, calcular e informar a soma
destes valores

INF01202  -­‐  Marcelo  Walter  -­‐  Aula  02   10  


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   11  


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   12  


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   13  


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  SignificaEvos?  
3.  Ler  e2  
4.  e3  <-­‐  e1  +  e2  
5.  Escrever  e3  
6.  Fim  

 
 

INF01202  -­‐  Marcelo  Walter  -­‐  Aula  02   14  


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   15  
 
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   16  
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   17  


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  

hpp://www.codeblocks.org/  
INF01202  -­‐  Marcelo  Walter  -­‐  Aula  02   18  
Ambiente 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   19  
Codificação  x  Execução  
Ambiente  de  programação  C:  tradução  para  linguagem  
de  máquina  e  execução  do  programa  

programa   compilação  
fonte  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   20  


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()

•  atribuição: operador =
2.  Ler  val1  
3.  Ler  val2  
4.  soma  <-­‐  val1  +  val2   •  saída de dados: função printf()
5.  Escrever  soma  
6.  Fim  
INF01202  -­‐  Marcelo  Walter  -­‐  Aula  02   21  
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   22  
Execução  

INF01202  -­‐  Marcelo  Walter  -­‐  Aula  02   23  


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   24  


Variáveis  

•  Locais  idenEficados  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  Epo  de  conteúdo  válido.  
•  IdenEficador:  nome  descriEvo  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   25  
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  
E11   E12  
E12   E13  
E13   E14  
E14   E15  
E15   memória
E16  
E16   E17  
E17   E18  
E18   E19  
E19   E20  
E20  

INF01202  -­‐  Marcelo  Walter  -­‐  Aula  02   26  


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   13
   val2  
E2   soma  
E3   E4  
E4   E5  
E5  
E6   E7   E8   E9   E10  
v
E11  
E11   E12  
E12   E13  
E13   E14  
E14   E15  
E15  
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  
4.  soma  ←  val1  +  val2  
5.  escrever  soma  
6.  fim.    
Valor resultante:
18

Memória:   Escaninhos

5 val1  
E1   13
   val2  
E2   18
soma  
E3   E4  
E4   E5  
E5  
E6   E7   E8   E9   E10  
v
E11  
E11   E12  
E12   E13  
E13   E14  
E14   E15  
E15  
E16  
E16   E17  
E17   E18  
E18   E19  
E19   E20  
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 mostrado:
18

Memória:   Escaninhos

5 val1  
E1   13
   val2  
E2   18
soma  
E3   E4  
E4   E5  
E5  
E6   E7   E8   E9   E10  
v
E11  
E11   E12  
E12   E13  
E13   E14  
E14   E15  
E15  
E16  
E16   E17  
E17   E18  
E18   E19  
E19   E20  
E20  
INF01202  -­‐  Marcelo  Walter  -­‐  Aula  02   29  
Declaração  de  variáveis  
   Sintaxe:  
                                              Epo      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   30  


Tipos  de  dados  
•  Componente  da  linguagem  de  programação,  determina  o  Epo  de  
conteúdo,  valores  que  pode  conter  e  tamanho  de  área  de  memória  
reservada  para  um  dado.  
•  No  C,  os  Epos  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   31  


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  Epo  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  Epo  de  cada  
variável  da  lista,  na  sequência  equivalente,  sem  espaço  em  branco  ou  vírgula  
entre  os  indicaEvo  de  Epo.  
•  Os  Epos  padrão  são  indicados  da  forma  abaixo:  

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

INF01202  -­‐  Marcelo  Walter  -­‐  Aula  02   32  


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   33  
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   34  


Saída  formatada  de  dados:  função  prin‚  
  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   35  


Saída  formatada  de  dados:  função  prin‚  
-­‐  Epos  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  –  entregar  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   37  

Potrebbero piacerti anche