Sie sind auf Seite 1von 80

Genaro Costas genaro@dcc.ufba.

br

SCHILDT, H. C Completo e Total. 3. ed. So Paulo: Makron, 1997. 830p. FARRER, H. Algoritmos Estruturados. 3. ed. Rio de Janeiro: LTC, 1999. 260p VELOSO, P. Estrutura de Dados, Editora Campus, Rio de Janeiro, 1983. FORBELLONE, A. et al. Lgica de programao: a construo de algoritmos e estruturas de dados, So Paulo: Makron Books, 1993. GUIMARES, A. , Lages, N. A. C. Algoritmos e estrutura de dados, Rio de Janeiro: LTC, 1994.!

Computadores mquinas capazes de solucionar problemas, mas que s agem quando recebem instrues nos mnimos detalhes. Processamento de dados tarefa principal dos computadores. Consiste em receber dados, realizar operaes com esses dados e gerar uma resposta.

Estrutura de um computador
MEMRIA

UNIDADE DE ENTRADA

UNIDADE DE CONTROLE

UNIDADE DE SAIDA

UNIDADE LGICA E ARITMTICA Unidade Central de Processamento


5

Unidade de entrada Traduz informao de um dispositivo de entrada em um cdigo que a PCU entende (padres de pulsos eltricos compreensveis ao computador) Memria armazena os dados e o prprio programa. Nmero finito de localizaes que so identificadas por meio de um nico endereo.

Unidade lgica e aritmtica faz clculos aritmticos e qualquer manipulao de dados (numricos ou no) Unidade de controle Responsvel pelo trfico de dados. Unidade de sada converte os dados processados, de impulsos eltricos em palavras ou nmeros que podem ser escritos em dispositivos de sada.

! !

Hardware parte fsica do computador. Software programas de computador. Pode ser um ou vrios programas interligados. Linguagens de programao linguagens utilizadas para codificar os programas de computador.
!

Desenvolvimento de programas anlise, algoritmo e codificao.


8

Ex.: Pascal, C, Java, C++, Fortran, Cobol, Assembly

Anlise etapa onde o problema a ser resolvido pelo programa de computador estudado em detalhes para definio dos dados de entrada, do processamento e dos dados de sada. Algoritmo utilizao de ferramentas para descrever o problema com suas solues.
! Ferramentas descrio narrativa, fluxograma ou portugus estruturado

Codificao etapa onde o algoritmo transformado em cdigos da linguagem de programao.


9

O que isto?
00000000000000010000001000001000000000000100000 00000000000000110000010000001001000000000100000 000000000000100000001001000001010000000 00100010
Melhor assim? 00000000 00000001 00000010 00001000 0000000 00100000 00000000 00000011 00000100 00001001 0000000 00100000 00000000 00001000 00001001 00000101 0000000 00100010
!

10

E assim?
0 0 0 1 3 8

2 4 9

8 9 5

0 0 0

32 32 34

Melhorando...
add add sub $8, $9, $5, $1, $3, $8, $2 $4 $9

11

Melhorando ainda mais...


$8 = $1 + $2 $9 = $3 + $4 $5 = $8 - $9

Claro agora?
u!a+b v ! c + d; x!u-v

Sim, claro: x ! (a+b) - (c+d)


12

!"#$"%&'%()**+,-!./0#./!./12' 3%"'*0405678,-/9$9"2' '''''''')8:;%"2' <9$,-' '''''48=>2' '''''?#"'*8=>'/#'@AB'C#' '''''<9$,-' ''''''''''48=4DE2' ''''''''''F",/9G-+*0H'IJ'H0:;"+*10H'H12' '''''''''',?'4=@@'/;9-'<9$,-' ''''''''''''''''''''''''''''F",/9G-+H)'K6L6')M4N*4O6LH12' ''''''''''''''''''''''''''''"9!9%/' ''''''''''''''''''''''''''''"9%CG-+)12' ''''''''''''''''''''''''''''.-/,G')=H)H2' ''''''''''''''''''''''''''''48=>2' '''''''''''''''''''''''9-C2' '''''9-C2' '''''"9%CG-' 9-CP'
13

,?'+C9G/%P$/P>1'/;9-''''''b'+C.%Q'"%,c9Q' !"#$"%&'<%QR;%"%' "9%,Q1' :' '''''''''SE=+I<IQd"/+C9G/%11e+@PT%1' ''''''"9%G''%0<0:0'C9G/%0'SE0S@0'"90',&' '''''''''S@=+I<DQd"/+C9G/%11e+@PT%1' '''''''''!",-/'T0'U"%,c9Q8''SE=U0SE' :' '''''''''!",-/'T0'U'''''''''S@=U0S@' ''''''!",-/'T0'U9(NV'KLMWL6X6'LV(M75V'OX6' ''''''9GQ9',?'+C9G/%P9dP>1'/;9-'b'+C.%Q' VYO6Z[M'\V'@MPWL6OU' "%,c9Q'"9%,Q',$.%,Q1' ''''''!",-/'T0'U4M']MLX6NM8'6T^TT@'D'_T^'D''''''''''SE=I<e+@PT%1' '''''''''S@=SE' )'='>U' '''''''''!",-/'T0'U"%,c9Q8'SE=S@=U0SE' :' ''''''9GQ9''''''''''''''''''''''b'+C.%Q' ''''''!",-/''E>0'UC*W*NV'60_0)8'U' "%,c9Q':#&!G9S%Q1' '''''''''"9=I<e+@PT%1' 'E>'''?#"&%/+%0ES0`1' ''''''''',&=Qd"/+IC9G/%1e+@PT%1' '@>'''"9%C+T0T09""=@>1'%0<0:' '''''''''!",-/'T0'U"%,c9Q':#&!G9S%Q8' :' SE=U0"90U'IU0,&0U*U' '''''''''!",-/'T0'U'''''''''''''''''' ''''''C9G/%=<T<IaPT%T:' S@=U0"90U'DU0,&0U*U' :' ''''''9-C,?' :' ''''''9-C'

14

f*4)7O\V'g(N\*MPhJ' '' *4N'X6*4+1' i' '''*4N'^0'j2'ee\V]*4V'\O6('56L*k5V*(' '' '''KL*4N]+U^'='U12'' '''()64]+Ul\U0'm^12'ee()64]'6NL*_O*'M'567ML'\*W*N6\M'6'^' '' '''KL*4N]+Uj'='U12' '''()64]+Ul\U0'mj12'ee()64]'6NL*_O*'M'567ML'\*W*N6\M'6'j' '' ''eeKL*4N]'XM(NL6'46'NV76'M'LV(O7N6\MP' '''KL*4N]+U^'D'j'='l\n4U0'^Dj12'' '' '''LVNOL4'>2' o'

15

Estrutura de um computador
MEMRIA

UNIDADE DE ENTRADA

UNIDADE DE CONTROLE

UNIDADE DE SAIDA

UNIDADE LGICA E ARITMTICA Unidade Central de Processamento


16

Um algoritmo um conjunto finito de regras que fornece uma sequncia precisa de operaes para resolver um problema especfico. Sequncia de passos que visa atingir um objetivo bem definido. Descrio de uma sequncia de passos que devem ser seguidos para a realizao de uma tarefa. Regras formais para a obteno de um resultado ou da soluo de um problema, englobando frmulas de expresses aritmticas.
17

Algoritmo Trocar o pneu do carro


! ! ! ! ! ! ! ! ! ! ! Passo Passo Passo Passo Passo Passo Passo Passo Passo Passo Passo

1 Retirar o estepe da mala. 2 Retirar as ferramentas e o macaco. 3 Folgar os parafusos da roda. 4 Posicionar o macaco. 5 Levantar o carro. 6 Remover a roda com pneu furado. 7 Encaixar o estepe. 8 Aperto inicial nos parafusos. 9 Descer o carro. 10 Apertar os parafusos. 11 Guardar roda e ferramentas.

18

Algoritmo Fazer um bolo ! 1) Bater duas claras ; ! 2) Adicionar duas gemas; ! 3) Adicionar um xcara de acar; ! 4) Adicionar duas colheres de manteiga; ! 5) Adicionar uma xcara de leite de coco; ! 6) Adicionar farinha e fermento; ! 7) Colocar numa forma e levar ao forno em lume brando

19

! ! ! ! !

entender o problema; definir os dados de entrada; definir o processamento; definir os dados de sada; construir o algoritmo usando descrio narrativa, fluxograma ou pseudocdigo; realizar testes.

20

Finitude: algoritmos devem terminar aps um nmero finito de passos; Definio: cada passo deve ser precisamente definido Entradas: devem ter zero ou mais entradas Sadas: devem ter uma ou mais sadas; Efetividade: todas as operaes devem ser simples de modo que possam ser executadas em um tempo limitado.
21

! ! !

Difcil para iniciantes saber o que o computador pode ou no fazer Criao de algoritmos um processo no automtico e tem muito de arte Pode haver mais de uma soluo para um problema.

22

! ! !

Calcular a rea de um retngulo.


! base e altura

Dados de entrada

! rea do retngulo = base x altura ! rea do retngulo

Processamento (clculo) Dados de sada

23

Calcular a mdia de um aluno e verificar aprovao.


! !
!

Dados de entrada

! Mdia do aluno = [(N1 x P1) + (N2 x P2) + ... + (Nn x Pn)] / (P1 + P2 + ... + Pn) ! Se mdia do aluno for maior ou igual mdia para aprovao, aluno aprovado. Caso contrrio, aluno reprovado. !

Processamento (clculo)

notas e pesos correspondentes, mdia para aprovao

Dados de sada

Mdia do aluno, aprovao

24

Linguagem natural ou descrio narrativa: Algoritmos expressos diretamente em linguagem natural como as receitas. Fluxograma: representao grfica Pseudo-cdigo (pseudo-linguagem): linguagem intermediria entre linguagem natural e linguagem de programao.

25

Descrio narrativa

! Escrever, usando linguagem natural, os passos a serem seguidos para a soluo. ! Vantagens a linguagem natural j bastante conhecida. No necessrio aprender nenhum conceito novo. ! Desvantagens possibilidades de vrias interpretaes, gerando dificuldade na codificao.

26

Exemplo 1 Descrio narrativa


! Passo 1 Receber largura do retngulo ! Passo 2 Receber altura do retngulo ! Passo 3 Multiplicar a largura pela altura ! Passo 4 Mostrar o resultado da multiplicao

27

Fluxograma
! Descrio dos passos para a resoluo do problema utilizando smbolos grficos definidos previamente. ! Vantagens entendimento mais fcil do que a leitura de textos. ! Desvantagens necessidade de aprender a simbologia. Poucos detalhes, dificultando a codificao.

28

Fluxograma smbolos utilizados

Incio e fim do algoritmo Sentido do fluxo de dados Clculos e atribuio de valores Entrada de dados Sada de dados Tomada de deciso
29

Exemplo 1 Fluxograma
Incio b, h

A=b*h

Fim

30

Pseudocdigo (portugol)
! Descrio dos passos a serem seguidos atravs de regras definidas previamente. ! ! Vantagens codificao mais rpida. Desvantagens necessidade de aprender o pseudocdigo.

31

Exemplo 1 Pseudocdigo
Algoritmo AreaRetangulo escreva Informe a largura do retngulo leia b escreva Informe a altura do retngulo leia h a <- b * h escreva rea = , A Fim Algoritmo

32

Viso Geral

33

Ao um acontecimento que, a partir de um estado inicial, aps um perodo de tempo finito, produz um estado final previsvel e bem definido. Algoritmo a descrio de um conjunto de comandos que, obedecidos, resultam numa sucesso finita de aes.

34

Suponha que queiramos resolver o seguinte problema: a partir de dois nmeros que sero informados, calcular a adio dos mesmos. Se voc fosse encarregado de efetuar essa tarefa, seria bem provvel que utilizasse os passos a seguir:
a) saber quais so os nmeros; b) calcular a soma dos nmeros; c) responder questo com o valor do resultado.

35

Estrutura de um computador
MEMRIA

UNIDADE DE ENTRADA

UNIDADE DE CONTROLE

UNIDADE DE SAIDA

UNIDADE LGICA E ARITMTICA Unidade Central de Processamento


36

Vejamos como seria resolvido esse mesmo problema em termos das operaes bsicas citadas anteriormente:
a) operao de entrada de dados dos nmeros ; b1) movimento do valor dos nmeros entre a memria e a ULA; b2) operao aritmtica de somar os 2 nmeros; b3) movimentao do resultado da ULA para guardar na memria; c) operao de sada do resultado, que est guardado na memria, para o dispositivo de sada desejado.

Deve-se salientar que os passos b1 e b3, normalmente, ficam embutidos na operao matemtica, no sendo explicitados.
37

Em resumo, pode-se dizer que escrever algoritmos ou, em ltima anlise, programar consiste em dividir qualquer problema em muitos pequenos passos, usando uma ou mais das quatro operaes bsicas citadas. Esses passos que compem o algoritmo so denominados de comandos. Os comandos de uma linguagem de programao podem estar mais prximos da mquina (linguagens de baixo nvel) ou serem mais facilmente entendidos pelo homem (linguagens de alto nvel).
38

A sequencia de operaes bsicas, dada anteriormente, para resolver o problema de adicionar dois nmeros, est em uma linguagem de baixo nvel para o nosso computador hipottico. Em uma linguagem de alto nvel teramos um resultado assim: Leia X,Y SOMA ! X + Y Escreva SOMA
39

Conceito:

! Programao Imperativa ou Programao Procedural


! Paradigma de programao que descreve a computao como uma sequencia de comandos ou aes.

40

! Existem

3 estruturas bsicas de controle nas quais se baseiam os algoritmos:


! Sequenciao ! Deciso ou seleo ! Repetio ou iterao

41

Os comandos do algoritmo fazem parte de uma sequencia, onde relevante a ordem na qual se encontram os mesmos, pois sero executados um de cada vez, estritamente, de acordo com essa ordem. De uma forma genrica, poderamos expressar uma sequencia da seguinte maneira:
Comando-1 Comando-2 Comando-3 : Comando-n

42

Tem-se uma sequenciao de n comandos na qual os comandos sero executados na ordem em que aparecem, isto , o comando de ordem i+1 s ser executado aps a execuo do de ordem i (o 3 s ser executado aps o 2). Todo algoritmo uma sequencia. A sequenciao aplicada quando a soluo do problema pode ser decomposta em passos individuais.
43

Essa estrutura tambm conhecida por estrutura condicional. H a subordinao da execuo de um ou mais comandos veracidade de uma condio. Vejamos o funcionamento: se <condio> ento <seq. de comandos-1> seno <seq. de comandos-2>

fim se

44

Se a <condio> for verdadeira ser executado a <seq. de comandos-1> e, em caso contrrio, teremos a execuo da <seq. de comandos-2>. A deciso deve ser sempre usada quando h a necessidade de testar alguma condio e em funo da mesma tomar uma atitude. Em nosso dia-a-dia, estamos sempre tomando decises, vejamos um exemplo: Se tiver dinheiro suficiente, ento vou almoar em um bom restaurante. Caso contrrio (seno), vou comer um salgado na lanchonete.
45

Essa estrutura tambm conhecida por looping ou lao. A repetio permite que tarefas individuais sejam repetidas um nmero determinado de vezes ou tantas vezes quantas uma condio lgica permita. Vejamos alguns exemplos:
a) vou atirar pedras na vidraa at quebr-la; b) baterei cinco pnaltis; c) enquanto tiver sade e dinheiro, vou desfrutar a vida.

46

a) vou atirar pedras na vidraa at quebr-la;

! Nesse exemplo, vai-se repetir a ao de atirar pedras na janela at que seja satisfeita a condio de quebrar a janela. ! Nesse exemplo, haver a repetio da atitude de bater um pnalti um nmero determinado de vezes (cinco).

b) baterei cinco pnaltis;

c) enquanto tiver sade e dinheiro, vou desfrutar a vida.

! Nesse exemplo, a condio que me permitir continuar desfrutando a vida ter dinheiro e sade.
47

! A

utilizao combinada dessas 3 estruturas descritas vai permitir expressar a soluo para uma gama muito grande de problemas. as linguagens de programao oferecem representantes dessas estruturas.
48

! Todas

Um algoritmo considerado completo se os seus comandos forem do entendimento do seu destinatrio. Num algoritmo, um comando que no for do entendimento do destinatrio ter que ser desdobrado em novos comandos, que constituiro um refinamento do comando inicial, e assim sucessivamente, at que os comandos sejam entendidos pelo destinatrio.
49

Por exemplo, o algoritmo para calcular a mdia aritmtica de dois nmeros pode ser escrito da seguinte forma:
Algoritmo CALCULA_MDIA Receba os dois nmeros Calcule a mdia dos dois nmeros Exiba o resultado Fim Algoritmo

50

Podemos desdobrar o comando Calcule a mdia dos dois nmeros em: Soma os dois nmeros Divida o resultado por 2 Aps esse refinamento, o algoritmo pode ser considerado completo, a menos que o destinatrio no saiba fazer as operaes de adio e diviso, ou no seja capaz de entender diretamente algum comando.

51

O algoritmo estando completo, podemos reescrev-lo, inserindo o refinamento na posio do comando que foi refinado. Assim sendo, obtm-se:
Algoritmo CALCULA_MDIA Receba os dois nmeros Soma os dois nmeros Divida o resultado por 2 Exiba o resultado Fim Algoritmo

52

Reescrever um algoritmo completo, com os refinamentos sucessivos inseridos nos seus devidos lugares, permite ter uma viso global de como o algoritmo deve ser executado. medida que o algoritmo passa a ser maior e mais complexo, esta viso global torna-se menos clara e, neste caso, um algoritmo apresentado com os refinamentos sucessivos separados oferece uma melhor abordagem para quem precisar entend-lo.
53

Algoritmo CALCULA_MDIA Receba os dois nmeros Soma os dois nmeros Divida o resultado por 2 Exiba o resultado Fim Algoritmo

Algoritmo CALCULA_MDIA Leia N1 Leia N2 Mem ! N1 + N2 Resultado ! Mem / 2 Escreva Resultado Fim Algoritmo

N1
21

N2
19

Mem
40

Resultado
20

54

Detalhamento dos Elementos da Linguagem

Valores que no se modificam ao longo do tempo de execuo.


! Exemplos:
! Um numero ! Um valor lgico ! Uma sequencia de Caracteres

Conforme seu tipo, classificada em:


! Numrica ! Lgica ! Literal

56

Associao simblica de um valor que pode variar durante a execuo.


! Exemplo:
! 2x2 + 3x + 4

identificada por um nome ou identificador.


! Um ou mais caracteres sendo que o primeiro deve ser letra e os seguintes. ! Exemplos:
! X Y NUMERO1 SOMA

57

S podem armazenar valores de um mesmo tipo.


! Numricas ! Lgicas ! Literais

! !

Sua declarao tem que ser explicita Exemplo:


! ! ! ! declare declare declare declare SOMA numrico N1, N2 numrico CONDICAO lgico NOME, ENDERECO literal

58

Algoritmo CALCULA_MDIA declare N1, N2, Mem, Resultado numrico leia N1 leia N2 Mem ! N1 + N2 Resultado ! Mem / 2 escreva Resultado Fim Algoritmo
59

Variveis

Constante

Ajuda a entender o algoritmo

Algoritmo CALCULA_MDIA declare N1, N2, Mem, Resultado numrico leia N1 leia N2 Mem ! N1 + N2 {calcula a soma de N1 e N2} Resultado ! Mem / 2 escreva Resultado Fim Algoritmo

60

Cada passo do algoritmo


! Atribuio
! C ! A + B

Algoritmo CALCULA_MDIA declare N1, N2, Mem, Resultado numrico


Entrada leia N1 leia N2 Mem ! N1 + N2 Resultado ! Mem / 2 escreva Resultado

! Entrada e sada
! leia ! escreva

Atribuies

Fim Algoritmo

Sada
61

Mem ! N1 + N2 Resultado ! Mem / 2


!

N1 + N2 uma expresso aritmtica


! Expresso onde o resultado aritmtico ! Operadores:
! Adio ! Diviso Subtrao Potenciao Multiplicao Radiciao

62

N1 > N2 uma expresso lgica


! Operadores Relacionais:
= (igual a) " (diferente de) > (maior que)

! Expresso onde o resultado verdadeiro ou falso


< (menor que) # (maior ou igual a) $ (menor ou igual a)

! Operadores Lgicos
! e para conjuno ! ou para disjuno ! no para negao

63

{ o aluno aprovado se alguma de suas notas for maior que 7} Algoritmo LOGICA declare NOTA1, NOTA2 numrico declare aprovado lgico NOTA1 ! 5.1 NOTA2 ! 8.1 aprovado ! (NOTA1>7) ou (NOTA2>7) escreve aprovado Fim Algoritmo

64

{ o aluno aprovado se alguma de suas notas for maior que 7} Algoritmo LOGICA declare NOTA1, NOTA2 numrico declare aprovado lgico NOTA1 ! 5.1 NOTA2 ! 8.1 aprovado ! (NOTA1>7) ou (NOTA2>7) se aprovado ento escreve Aluno Aprovado seno escreve Aluno Reprovado fim se Fim Algoritmo

Execuo condicionada ao resultado da varivel aprovado

65

Estrutura:

se (condio lgica) ento (sequencia de comandos) fim se se (condio lgica) ento (sequencia de comandos - 1) seno (sequencia de comandos - 2) fim se
66

{Escrever os nmeros de um a 5} Algoritmo Escreve1a5 escreve 1 escreve 2 Perguntas: escreve 3 Funciona? escreve 4 Pode melhorar? escreve 5 Fim Algoritmo

67

{Escrever os nmeros de um a 5} Algoritmo Escreve1a5 declare valor numrico valor ! 1 escreve valor valor ! valor +1 escreve valor valor ! valor +1 escreve valor valor ! valor +1 escreve valor valor ! valor +1 escreve valor Fim Algoritmo
Se repete

Perguntas: Funciona? Pode melhorar?

68

{Escrever os nmeros de um a 5} Algoritmo Escreve1a5 declare valor numrico valor ! 1 Perguntas: repita Funciona? escreve valor Pode melhorar? valor ! valor +1 fim repita Fim Algoritmo
69

{Escrever os nmeros de um a 5} Algoritmo Escreve1a5 declare valor numrico valor ! 1 enquanto valor < 10 escreve valor valor ! valor +1 fim enquanto fim Algoritmo Repete at valor > 10 !

Perguntas: Funciona?

ser verdade

70

Estrutura

enquanto <condio> sequencia A de comandos fim enquanto

A condio de parada obrigatria

71

Imprimir os a sequencia de nmeros de 1 a 20 sem o nmero 7 e 14. Imprimir o somatrio dos nmeros de 1 a 20 excluindo o nmero 13.

72

Supondo que o algoritmo trabalhe com 100 valores de notas, como definir?
! declare NOTA[1:100] numrico
! Reserva 100 variveis que podem ser usadas de forma indexada.

! Exemplos ! NOTA[1] ! 8.1 (Indexao direta) ! i ! 7 ! NOTA[i] ! 7.1 (Indexao indireta)

73

Vrios valores podem ser lidos por um nico comando


! Exemplo leia NOTA[1]..NOTA[10] Escreva NOTA[1]..NOTA[5] {ler os 10 valores} {escreve os 5 primeiros valores}

74

Escrever um algoritmo que leia 100 notas e calcule a nota mdia.


Algoritmo NOTAMEDIA
declare NOTA[1..100] numrico declare soma, ndice, media numrico

leia NOTA[1]..NOTA[100] soma ! 0 ndice !1 repita se ndice>100 ento interrompa fim se soma ! NOTA[ndice] ndice ! ndice + 1 fim repita media ! soma / 100 escreva media Fim Algoritmo

75

Estrutura

declare MATRIZ[1..100,1..100] numrico { declara 1000 posies numricas } Acesso valores de forma indexa MATRIZ[1,2] !33 MATRIZ[ i, j ] ! 1.1

76

Ler uma matriz de dimenso 16x16 e contar o nmeros de valores iguais a zero. Ler duas matrizes de dimenso 10x10 e calcular a matriz resultado da multiplicao das duas matrizes.

77

! !

Chamadas de Registros Estrutura

declare ALUNO registro ( NOME literal, NOTA numrico) Acesso aos valores atravs do identificador Ex: ALUNO.NOME ! Joo Carlos ALUNO.NOTA ! 8.2
78

Permite a criao de estruturas de dados mais elaboradas. Muito usadas na leitura e gravao de arquivos

Tema explorado na prxima Aula

79

Pseudocdigo

! Constantes ! Variveis ! Comentrios " ! Expresses ! Estruturas de controle de Fluxo ! Estruturas de repetio ! Introduo a variveis compostas homogneas e registros
! Condio de parada ! Aritmticas ! Lgicas

80

Das könnte Ihnen auch gefallen