Beruflich Dokumente
Kultur Dokumente
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 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.
!
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
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
Claro agora?
u!a+b v ! c + d; x!u-v
!"#$"%&'%()**+,-!./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
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
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
! ! !
Dados de entrada
23
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)
Dados de sada
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
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
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
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:
40
! Existem
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
! 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).
! 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
56
57
! !
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
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
! Entrada e sada
! leia ! escreva
Atribuies
Fim Algoritmo
Sada
61
62
! 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
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
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
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.
73
74
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
! !
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
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