Algoritmos_fluxogramas e pseudo-código

Embed Size (px)

Citation preview

  • 8/8/2019 Algoritmos_fluxogramas e pseudo-cdigo

    1/15

    1

    1

    Algoritmos, fluxogramas epseudo-cdigo

    Cap.2.5:Design de Algoritmos eProgramao Estruturada

    2

    Sumrio Problemas e algoritmos Desenho de algoritmos/programas Passos na construo de algoritmos Mtodo Cartesiano de Dividir-Para-Conquistar Caractersticas fundamentais dum algoritmo Representao de algoritmos Fluxogramas e programao visual Estruturas de controlo de fluxo: sequncia, seleco e repetio Programao estruturada

  • 8/8/2019 Algoritmos_fluxogramas e pseudo-cdigo

    2/15

    2

    3

    Problemas & Algoritmos Para resolver umproblema atravs dum computador necessrio

    encontrar em primeiro lugar uma maneira de descrev-lo de umaforma clara e precisa.

    tambm preciso que encontremos uma sequncia de passos queconduzam sua resoluo. Esta sequncia de passos designadaporalgoritmo.

    A noo de algoritmo central para toda a informtica. A criao de algoritmos para resolver os problemas uma das

    maiores dificuldades, mas tambm um dos desafios mais atractivos,dos iniciados em programao em computadores.

    4

    Problema:Fazer um bolo?

    Uma receita uma descrio dum conjunto de passos ouaces que fazem a combinao dum conjunto de ingredientescom vista a obter um produto gastronmico particular.

    Farinha de TrigoOvos

    Manteiga

    AcarreceitaFermento Leite

  • 8/8/2019 Algoritmos_fluxogramas e pseudo-cdigo

    3/15

    3

    5

    Algoritmo:Como fazer um bolo?

    Algoritmo (receita de bolo):1) Bater duas claras em castelo;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.

    Farinha de TrigoOvos

    Manteiga

    AcarInstruesFermento Leite

    Um algoritmo opera sobre um conjunto de

    entradas (farinha ovos, fermento, etc. no caso dobolo) de modo a gerar uma sada que seja til (ou agradvel) para o utilizador (o bolo pronto).

    6

    Desenho dealgoritmos/programas

    De um modo geral, considera-se que um algoritmo uma descrio, passo-a-passo, de uma metodologia que conduz resoluo de um problema ou execuo de uma tarefa.

    A programao consiste na codificao precisa desse algoritmo, segundo umalinguagem de programao especfica.

    H, pois, que ter em considerao que existem trs fases distintas naelaborao de programas: a anlise do problema (especificao do problema, anlise de requisitos,

    pressupostos, etc.) a concepo do algoritmo a traduo desse algoritmo na linguagem de programao

    PROBLEMA ALGORITMO PROGRAMA

  • 8/8/2019 Algoritmos_fluxogramas e pseudo-cdigo

    4/15

    4

    7

    Passos na construo dealgoritmos

    Compreender o problema Identificar os dados de entrada Identificar os dados de sada Determinar o que preciso para transformar dados de entrada em dados de

    sada:usar a estratgia dodividir-para-conquistarobservar regras e limitaesidentificar todas as aces a realizareliminar ambiguidades

    Construir o algoritmo Testar o algoritmo Executar o algoritmo

    8

    Mtodo Cartesianode Dividir-Para-Conquistar

    Tambm o conhecido pormtodo descendente (top-down method) oumtodo derefinamento passo-a-passo

    Este mtodo consiste em dividir um problema em partes menores (ou sub-problemas) de modo a que seja mais fcil a sua resoluo.

    Exemplo: Fazer sumo de laranja? Lavar laranja; Partir laranja ao meio; Espremer laranja; Filtrar o sumo; Servir o sumo.

    Passo-a-passo, significa que cada passo completado antes que o prximocomece.

    Exemplo: impossvel ver telejornal antes de executar por inteiro opasso anterior de ligar a TV

  • 8/8/2019 Algoritmos_fluxogramas e pseudo-cdigo

    5/15

    5

    9

    Caractersticas fundamentaisdum algoritmo

    Um algoritmo deve ter 5 caractersticas fundamentais: Finitude: um algoritmo deve sempre terminar aps um nmero finito de passos. Definio: cada passo de um algoritmo deve ser precisamente definido. As aces

    devem ser definidas rigorosamente e sem ambiguidades. Entradas: um algoritmo deve ter zero ou mais entradas, isto quantidades que lhe

    so fornecidas antes do algoritmo iniciar. Sadas: um algoritmo deve ter uma ou mais sadas, isto quantidades que tem uma

    relao especfica com as entradas. Eficincia: Um algoritmo deve ser eficiente. Isto significa que todas as operaes

    devem ser suficientemente bsicas de modo que possam ser em princpioexecutadas com preciso em um tempo finito por um ser humano usando papel elpis.

    NOTA: Pode haver mais do que um algoritmo para resolver um problema.

    Por exemplo, para ir de casa at o trabalho, posso escolher diversosmeios de transportes em funo do preo, conforto, rapidez, etc. .

    10

    Representaes de algoritmos Linguagem Natural

    Os algoritmos so expressos directamente em linguagem natural (e.g. oportugus como no exemplo do bolo).

    Fluxograma (ou Diagrama de Fluxo)Esta um representao grfica que emprega formas geomtricaspadronizadas para indicar as diversas aces e decises que devem ser executadas para resolver o problema.

    Pseudo-linguagemEmprega uma linguagem intermediria entre a linguagem natural e umalinguagem de programao para descrever os algoritmos.

    No existe consenso entre os especialistas sobre qual a melhor maneira de representar um algoritmo.Actualmente a maneira mais comum de representar algoritmos atravs de uma pseudo-linguagem oupseudo-cdigo. Esta forma de representao tem a vantagem de o algoritmo seja escrito deuma forma que est prxima de uma linguagem de programao de computadores.

  • 8/8/2019 Algoritmos_fluxogramas e pseudo-cdigo

    6/15

    6

    11

    Cdigo natural:clculo do zero da equao ax+b=0

    1. Incio de programa 2. ler a, b 3. se a diferente de 0 ento

    calcula o valor de x (ax+b=0) imprimir valor de x

    seno

    imprimir No h zero 4. Fim de programa

    12

    Fluxograma:clculo do zero da equao ax+b=0

    Ler a

    Ler b

    a 0

    Imprime Noexiste zero

    x=- b / a

    Imprimevalor de x

    Sim

    No

    Incio

    Fim

  • 8/8/2019 Algoritmos_fluxogramas e pseudo-cdigo

    7/15

    7

    13

    Pseudo-cdigo:clculo do zero da equao ax+b=0

    1. Incio de programa2. ler a, b3. se a 0 ento

    x=-b/aimprimir valor do zero x

    seno

    imprimir No h zerom de se4. Fim de programa

    14

    Cdigo C:clculo do zero da equao ax+b=0

    #include

    main(){

    float a, b; printf("Entre com os coeficientes da equacao.\n");

    scanf("%f %f", &a, &b);

    if (a != 0){

    x = -b/a; printf(O valor de x = %f\n,x);

    }else

    printf(No existe zero);}

  • 8/8/2019 Algoritmos_fluxogramas e pseudo-cdigo

    8/15

    8

    15

    Fluxogramas & programaovisual

    Representao grfica de um algoritmo. Programao visual: a utilizao de diagramas na programao. Descrevem o fluxo dum algoritmo atravs de um conjunto de figuras

    geomtricas padronizadas ligadas por setas de fluxo.

    incio e fim de fluxograma

    entrada e sada de dados

    teste e deciso

    outras aces/sinstrues

    conector na mesma pgina

    conector para outra pgina

    inicializaoteste e actualizao

    16

    Estruturas lgicas deprogramao:estruturas de controlo

    Umaestrutura (de controlo) a unidade bsica da lgica deprogramao.

    Em meados da dcada de 60, alguns matemticos provaram quequalquer programa podia ser construdo atravs da combinao de 3estruturas bsicas:sequncia , seleco e repetio .

    entrada entradaentrada

    exit exit

    exit

    SEQUNCIA SELECO REPETIO

  • 8/8/2019 Algoritmos_fluxogramas e pseudo-cdigo

    9/15

    9

    17

    Sequncia{}

    entrada

    exit

    Numa sequncia processado um conjunto deaces (ou instrues) em srie.

    No h qualquer possibilidade de alterar aordem de processamento das aces, i.e. apsprocessar a 1 aco processa-se a 2, depoisda 2 processa-se a 3, e assim por diante atprocessar a ltima aco.

    Em C, uma sequncia um bloco de instruesque comea com{ e termina com}

    fluxograma duma sequncia

    18

    Seleco com 2 vias Uma estrutura deseleco tambm

    designada por estrutura dedeciso .

    Neste caso, o fluxo de processamento seguepor 1 das 2 vias, dependendo do valor lgico(verdadeiro ou falso) da expresso avaliada noincio da estrutura.

    Se o fluxo de processamento s passa por 1via, ento s uma das aces realizada ouprocessada.

    Em C, uma estrutura de seleco com 2 vias a instruoif -else .

    if-else

    truefalse ?

    fluxogramaduma seleco de 2 vias

  • 8/8/2019 Algoritmos_fluxogramas e pseudo-cdigo

    10/15

    10

    19

    Exemplo em C: if-else#include

    void main(){

    int x, y,maior;

    scanf(%d%d\n,&x,&y);if (x > y)

    maior = x;else maior = y;printf(O maior dos dois inteiros = %d\n,maior);

    }

    Problema: Calcular o maior dedois nmeros inteiros x e y.

    20

    Seleco com 1 viaif

    ?truefalse

    Neste caso, se a expresso lgica tiverresultadofalse , nenhuma aco processadadentro da estrutura de seleco.

    S processada uma aco dentro daestrutura de seleco se a expresso lgica fortrue ; da, o nome de seleco com 1 via.

    Em C, uma estrutura de seleco com 1 via ainstruoif .

    fluxogramaduma seleco de 1 via

  • 8/8/2019 Algoritmos_fluxogramas e pseudo-cdigo

    11/15

    11

    21

    Exemplo em C: if #include

    void main(){

    int nota;

    printf(Introduza o valor da nota: );scanf(%f,&nota);

    if ( (nota >= 9.0) && (nota < 9.5) )nota = 9.5;

    printf(A nota = %f\n, nota);}

    Problema: Ler e escrever umanota entre 0 e 20.0 valores.Caso a nota esteja no intervalo[9.0,9.5[, ela deve serrectificada para 9.5.

    22

    Seleco c/ n-viasswitch

    ?

    . . .

    Neste caso, a deciso no feita com base numaexpresso lgica porque h mais do que 2 resultadospossveis.

    Tambm s so processadas a aco ou as acesencontradas numa via.

    Em C, uma estrutura de seleco com n vias ainstruoswitch com break. No entanto, se nousarmos o break, h a possibilidade de executar asaces de vrias vias.

    fluxogramaduma seleco de n vias

  • 8/8/2019 Algoritmos_fluxogramas e pseudo-cdigo

    12/15

    12

    23

    Exemplo em C: switch#include

    void main(){

    int count;

    scanf(%d,&count);

    switch count{ case 5: printf(5\n); break;

    case 4: printf(4\n); break;case 3: printf(3\n); break;case 2: printf(2\n); break;case 1: printf(1\n);

    }}

    24

    Repetio c/ teste cabeawhile

    true

    false

    ?

    Neste caso, tambm h a necessidade detomar uma deciso com base no valor lgicoduma expresso.

    No entanto, a mesma aco ser executadarepetidamente enquanto o resultado daexpresso lgica se mantiver verdadeiro (true).

    O teste (da expresso lgica) precede a aco.Diz-se, por isso, que oteste cabea .

    O teste importante porque funciona comouma condio de paragem (a false) dos ciclosor repeties.

    Em C, uma estrutura de repetio deste tipo a instruowhile.

    fluxogramaduma repetio c/ teste cabea

  • 8/8/2019 Algoritmos_fluxogramas e pseudo-cdigo

    13/15

    13

    25

    Exemplo em C: while#include

    void main(){

    int sum, k=1;

    sum = 0; // inicializacao da somawhile (k

  • 8/8/2019 Algoritmos_fluxogramas e pseudo-cdigo

    14/15

    14

    27

    Exemplo: do - while#include

    main(){

    int sum, k=1;

    sum = 0; // inicializacao da variavel do ciclodo{

    sum = sum + k;k = k + 1; //actualiza a variavel do ciclo}while (k

  • 8/8/2019 Algoritmos_fluxogramas e pseudo-cdigo

    15/15

    15

    29

    Exemplo em C: for#include

    void main(){

    int i; // variavel do cicloint sum;

    sum = 0; // inicializacao da somafor (i=1; i