Introdução a Algoritmos e Estruturas de Dados

Post on 27-Jul-2015

180 views 1 download

Transcript of Introdução a Algoritmos e Estruturas de Dados

Algoritmos e Estruturas de Dados I (AEDS I)

Prof. Olga N. Goussevskaia olga@dcc.ufmg.br

2

Aula  2:  Lógica  de  Programação  

1.  Lógica  de  Programação  

2.  Instruções  3.  Algoritmo  

4.  Debugging  5.  Teste  6.  Elementos  do  algoritmo  

–  Variáveis  

–  Atribução  –  Operadores  

Obs: Alguns slides por Profa Mirella M. Moro

3

1.  LÓGICA  DE  PROGRAMAÇÃO  

•  Técnica  de  encadear  pensamentos  para  aQngir  determinado  objeQvo  

•  Necessária  para  desenvolver  programas  e  sistemas,  pois  permite  definir  a  seqüência  lógica  para  a  solução  de  um  problema  

•  SEQÜÊNCIA  LÓGICA    –    ?    →  1  →  2  →  3  →    !  –  Estes  pensamentos  podem  ser  descritos  como  uma  seqüência  de  instruções,  que  devem  ser  seguidas  para  se  cumprir  uma  determinada  tarefa  

–  Passos  executados  até  se  aQngir  um  objeQvo  ou  solução  de  um  problema  

4

2.  INSTRUÇÕES  

•  Cada  um  dos  passos,  cada  uma  das  ações  a  tomar  (obedecendo  a  seqüência  lógica)  para  ir  resolvendo  o  problema,  ou  para  ir  executando  a  tarefa  

•  É  a  instrução  que  indica  a  um  computador  uma  operação  elementar  a  executar  –  Ex.:  “somar”,  “subtrair”,  “comparar  se  é  maior”,  etc  

•  Uma  só  instrução  não  resolve  problemas  

•  Executar  um  conjunto  de  instruções  •  Executar  em  uma  seqüência  lógica  

5

Instruções  

•  EXEMPLO:  para  “fazer  omelete”  –  Instruções:  “quebrar  ovos”,  “bater  ovos”,  “pôr  sal”,  “ligar  fogão”,  “pôr  óleo  na  frigideira”,  “pôr  frigideira  no  fogo”,  “fritar  ovos  baQdos”,  etc...  

•  Quanto  às  instruções  isoladas:  –  Só  “quebrar  ovos”,  ou  só  “pôr  óleo  na  frigideira”,  não  é  suficiente  para  cumprir  a  tarefa  “fazer  omelete”  

•  Quanto  à  seqüência  lógica:  –  Se  executarmos  “fritar  ovos  baQdos”  antes  de  “bater  ovos”,  ou  pior,  antes  de  “quebrar  ovos”,  não  iremos  cumprir  a  tarefa  “fazer  omelete”  

6

3.  ALGORITMO  

•  Seqüência  finita  de  passos  que  levam  à  execução  de  uma  tarefa  

•  Claro  e  preciso.  Ex.  “somar  dois  números”:  –  Escrever  primeiro  número  no  retângulo  A  –  Escrever  segundo  número  no  retângulo  B  

–  Somar  o  número  do  retângulo  A  com  o  número  do  retângulo  B  e  escrever  o  resultado  no  retângulo  C  

A B C

+ =

7

Exemplo  de  algoritmo  

 Trocar  o  um  pneu  furado:  uma  roQna  para  realizar  essa  tarefa  

1.  Verifica qual pneu está furado 2.  Posiciona o macaco para levantar o carro 3.  Pega o estepe 4.  Solta os parafusos 5.  Substitui o pneu furado 6.  Recoloca os parafusos 7.  Desce o carro 8.  Guarda o macaco e o pneu furado

8

Programa  

•  Algoritmo  escrito  em  uma  linguagem  de  computador    –  linguagem  de  programação:  C,  Pascal,  COBOL,  Fortran,  Basic,  Java,  entre  outras  

•  Interpretado  e  executado  por  um  computador  •  Interpretação  rigorosa,  exata,  do  computador      

 Escrita  do  algoritmo  na  linguagem  de  prog.  tem  que  seguir  regras  mais  rigorosas  

Programa  

•  Sequência  de  instruções  que  especifica  como  realizar  uma  computação  – Exemplos:  achar  as  raízes  de  um  polinômio,  achar  uma  sequência  de  caracteres  em  um  documento  

•  Conjunto  básico  de  instruções:  •  Entrada  e  saída  (E/S)  de  dados  •  Movimentação  de  dados  (transferência)  •  AritméQca:  adição,  mulQplicação,  etc.  •  Testes:  verificação  de  certas  condições  (comparação)  •  RepeQção  de  ações,  em  geral,  com  algumas  variações  

Debugging  

•  Programação  é  um  processo  complexo  que,  por  ser  feito  por  seres  humanos,  frequentemente  leva  a  erros  (bugs):  – Erros  de  compilação  =  erros  de  sintaxe,  detectados  pelo  compilador.  (essa  frase  contém  erros  de  sintaxe)  

– Erros  em  tempo  de  execução  

– Erros  de  lógica  e  semânQca  •  O  programa  que  você  escreveu  não  é  o  programa  que  você  queria  escrever.  O  computador  não  consegue  detectar  tais  erros.  

Debugging  

•  Uma  das  habilidade  mais  importante  que  você  deverá  adquirir  é  a  depuração  experimental  

•  Debugar  é  parecido  com  o  trabalho  de  um  deteQve  e  envolve:  

•  Análise  de  pistas  e  eventos  •  Infererência  de  causas  que  levam  aos  resultados  do  seu  programa  

•  Trabalho  experimental:  ao  ter  uma  idéia  sobre  o  erro,  modifique  o  seu  programa  e  tente  executar  novamente.  Se  sua  hipótese  estava  correta,  você  chegou  mais  perto  de  um  programa  correto.  Senão,  invente  outra  hipótese!   12

Tipos  de  Algoritmos  

•  Pseudocódigo  –  Facilita  descrever  o  algoritmo  antes  de  passá-­‐lo  para  uma  ling.  de  programação  

–  Intermediária:  linguagem  natural  –  linguagem  de  programação  

–  Pseudocódigo  =  “códigofalso”  •  Fluxograma  

–  Forma  universal  de  representação  –  UQliza  figuras  geométricas  para  ilustrar  passos  a  serem  seguidos  para  a  resolução  de  problemas  

13

Pseudocódigo  

•  Descrição  do  algoritmo,  menos  rigorosa  que  na  linguagem  de  programação  (código  fonte)  

•  Fácil  de  entender  e  fácil  de  codificar  depois  •  Independente  da  linguagem  de  programação  •  Simples  e  objeQvo  •  Técnica  

–  Um  verbo  por  frase  –  Não  escrever  “para  informatas”  –  Frases  curtas  e  simples  –  Ser  objeQvo  –  Usar  palavras  sem  duplo  senQdo  

14

Escrevendo  Pseudocódigo  

•  FASES  para  desenvolver  o  algoritmo  –  Determinar  o  problema,  definí-­‐lo  bem  –  Dividir  a  solução  nas  três  fases  

•  Exemplo:  –  Problema:  calcular  a  média  de  quatro  números  –  Dados  de  entrada:  os  números,  N1,  N2,  N3  e  N4  –  Processamento:  somar  os  quatro  números  e  dividir  a  soma  por  4  

–  Dados  de  saída:  a  média  final  

ENTRADA PROCESSAMENTO SAÍDA

N1 + N2 + N3 + N4 4

15

Escrevendo  Pseudocódigos  

•  Algoritmo  –  Receber  o  primeiro  número  

–  Receber  o  segundo  número  –  Receber  o  terceiro  número  

–  Receber  o  quarto  número  –  Somar  todos  os  números  

–  Dividir  a  soma  por  4  –  Mostrar  o  resultado  da  divisão  

N1 + N2 + N3 + N4 4

16

Fluxograma  – Representação  gráfica  padronizada  dos  passos  de  um  algoritmo  

– Principais  símbolos  

Terminal: INÍCIO ou FIM do algoritmo

Processamento (ação, operação)

Entrada de dado manual (“ler”, “receber”)

Exibir (“mostrar”, saída de dado)

Decisão (teste) S

N

Fluxograma  

17

N1 + N2 + N3 + N4 4

INÍCIO

Calcular MEDIA= (N1+N2+N3+N4) / 4

Receber N1

Mostrar MEDIA

Receber N2

Receber N3

Receber N4

FIM 18

4.  TESTE  

•  Todo  algoritmo  deve  ser  testado  –  Usar  dados  e  resultados  previamente  calculados  

–  Seguir  precisamente  as  instruções  do  algoritmo    –  Verificar  se  o  procedimento  está  correto  

•  Exemplo:  Fazer  teste  de  mesa  para  o  algoritmo  da  média  

5.  ELEMENTOS  

•  Variável  •  Atribuição  •  Operadores  

19 20

Variável  

•  Representa  uma  posição  na  memória,  onde  pode  ser  armazenado  um  dado  

•  Possui  um  nome  e  um  valor  •  Durante  a  execução  do  algoritmo,  pode  ter  seu  valor  alterado  (seu  valor  pode  variar)  

•  Mudanças  no  valor  das  variáveis:  – Por  entrada  de  dados  (“Ler  N1”)  – Por  atribuição  (“MEDIA  =  <um  certo  valor>”)  

21

Variável:  exemplo  seqüencial  

“Calcular  a  média  de  quatro  números”  

Pseudocódigo:  – Ler  N1  – Ler  N2  – Ler  N3  – Ler  N4  – MEDIA  =  (N1+N2+N3+N4)  /  4  

– Mostrar  MEDIA  22

Variável:  exemplo  seqüencial  

“Calcular  a  média  de  quatro  números”  – PSEUDOCÓDIGO:  

•  Ler  N1  •  Ler  N2  •  Ler  N3  •  Ler  N4  

•  MEDIA  =  (N1+N2+N3+N4)  /  4  •  Mostrar  MEDIA  

VARIÁVEIS: mais clareza no pseudocódigo

VARIÁVEL

23

Atribuição  

•  Atribui  o  valor  da  direita  à  variável  da  esquerda  •  O  valor  pode  ser  uma  constante,  uma  variável  ou  uma  expressão  

 MEDIA  =  (N1+N2+N3+N4)  /  4    (Lê-­‐se  media  recebe  N1+...)  

–  Neste  caso,  estamos  atribuindo  o  resultado  da  fórmula  à  variável  média,  ou  seja,  a  variável  média  está  recebendo  como  valor  o  resultado  da  fórmula  

•  Outros  Exemplos  –    a  =  3;  –    a  =  x;  

24

Operadores  

•  São  operações  básicas  em  processamento  de  dados  

•  Usados  para  incrementar,  decrementar,  comparar  e  avaliar  dados  

•  Tipos:  –  AritméQcos  (+,  -­‐,  *,  /,  **  ou  ^)  

•  Resultados  numéricos  

–  Relacionais  (>,  <,  >=,  <=,  =,  <>  ou  #)  •  Resultados  lógicos  (V  ou  F)  

–  Lógicos  (e,  ou,  não)  •  Combinam  resultados  lógicos  

25

Operadores  AritméQcos  

Hierarquia das Ops. Aritméticas Parênteses Exponenciação Multiplicação ou Divisão Adição ou Subtração

TOTAL = PREÇO * QUANTIDADE

1 + 7 * 2 ** 2 – 1 = 28

3 * (1- 2) + 4 * 2 = 5

Média = (N1 + N2 + N3 + N4) / 4

26

Operadores  Relacionais  

•  Muito  usados  para  tomar  decisões  nos  algoritmos  

•  Usados  para:  testes,  comparações,  que  resultam  em  valores  lógicos  (verdadeiro  ou  falso)  

Exemplo: Duas variáveis, A = 5 e B = 3

Expressão Resultado A = B Falso A <> B Verdadeiro A > B Verdadeiro A < B Falso A >= B Verdadeiro A <= B falso

27

Exercícios  

•  Tendo  as  variáveis  SALARIO,  IR  e  SALLIQ,  e  considerando  os  valores  abaixo.  Informe  se  as  expressões  são  verdadeiras  ou  falsas  

•  Sabendo  que  A=3,  B=7  e  C=4,  informe  se  as  expressões  abaixo  são  verdadeiras  ou  falsas.  –  (A+C)  >  B    (    )  –  B  >=  (A  +  2)    (    )  –  C  =  (B  –A)    (    )  –  (B  +  A)  <=  C    (    )  –  (C+A)  >  B    (    )  

28

Operadores  Lógicos  •  Combinam  resultados  lógicos  

•  Geram  novos  valores  lógicos  (T  ou  F)  

•  A  “tabela-­‐verdade”  mostra  todos  os  valores  possíveis  de  se  obter  com  oper.  lógicos  

T = Verdad. F = Falso AND = E OR = OU NOT = NÃO

A op B T/F? T AND T T

T AND F F F AND T F

F AND F F T OR T T T OR F T

F OR T T F OR F F

NOT T F NOT F T

29

Operações  Lógicas  

•  Operadores  relacionais  +  operadores  lógicos  =  operações  lógicas  

•  Produzem  resultados  lógicos  (T/F)    

•  Para  A  =  5,  B  =  8  e  C  =  1:  •  (A  =  B)  AND  (B  >  C)  •  (A  <>  B)  OR  (B  <  C)    •  NOT  (A  >  B)  •  (A  <  B)  AND  (B  >  C)  •  (A  >=  B)  OR  (B  =  C)  •  NOT  (A  <=  B)  

•  São  usadas  em  decisões  nos  algoritmos...  30

Operações  Lógicas  

•  Operadores  relacionais  +  operadores  lógicos  =  operações  lógicas  

•  Produzem  resultados  lógicos  (T/F)    

•  Para  A  =  5,  B  =  8  e  C  =  1:  •  (A  =  B)  AND  (B  >  C)  •  (A  <>  B)  OR  (B  <  C)    •  NOT  (A  >  B)  •  (A  <  B)  AND  (B  >  C)  •  (A  >=  B)  OR  (B  =  C)  •  NOT  (A  <=  B)  

•  São  usadas  em  decisões  nos  algoritmos...  

F ( V AND F ) V ( V OR F ) V ( NOT F ) V ( V AND V ) F ( F OR F ) F ( NOT V )

31

Exercícios    

•  Escreva  os  passos  necessários  para  uma  pessoa  efetuar  um  saque  em  um  caixa  eletrônico  

•  Escreva  a  seqüência  de  passos  para  que  uma  pessoa  abra  um  arquivo  armazenado  em  um  pen-­‐drive  uQlizando  o  Word  do  Windows  

32

Exercícios  

•  IdenQfique  os  dados  de  entrada,  processamento  e  saída  no  algoritmo  abaixo  –  Receba  código  da  peça  –  Receba  valor  da  peça  –  Receba  QuanQdade  de  peças  (Qtde)  –  Calcule  o  valor  total  da  peça  (Qtde  *  Valor)  –  Mostre  o  código  da  peça  e  seu  valor  total  

•  Faça  um  algoritmo  para  “Calcular  o  estoque  médio  de  uma  peça”,  sendo  que  

estoquemédio  =      (quanQdade  mínima  +  quanQdade  máxima)  /2  

33

Exercício  

 Considere  a  seguinte  atribuição  de  valores  para  as  variáveis:  A=3,  B=4,  C=8.  Avalie  as  expressões  indicando  o  resultado  final:  T  /  F  

•  A  >  3  AND  C  =  8                              •  A  <>  2  OR  B  <=  5  •  A  =  3  OR  B  >=  2  AND  C  =  8  •  A  =  3  AND  NOT  B  <=  4  AND  C  =  8  •  A  <>  8  OR  B  =  4  AND  C  >  2  •  B  >  A  AND  C  <>  A  •  A  >  B  OR  B  <  5    •  A  <>  B  AND  B  =  C  •  C  >  2  OR  A  <  B    •  A  >  B  OR  B  >  A  AND  C  <>  B