Você está na página 1de 13

Mau, 1 de dezembro de 2008

Material de apoio: monitoria de ALGO revisado


(Texto elaborado para o curso da FATEC-MA. Pode conter imprecises tcnicas somente para o melhor entendimento do assunto)

Algoritmo: uma seqncia lgica de aes para a realizao de determinada tarefa, geralmente que envolva clculos ou comparaes. O algoritmo pode ser representado atravs de fluxogramas ou pseudo-cdigo e comprovado sua funcionalidade atravs de testes de mesa. Varivel: uma forma de armazenar algo em uma espcie de registrador, como uma caixinha abstrata ao qual se d um nome, e armazena-se geralmente um nmero, e que este possa ser lido ou at mudado depois. Uma varivel na programao representa um espao reservado em uma memria. Devem ter sua existncia declarada antes de serem usadas no fluxo. Varivel real: um nmero do conjunto dos nmeros reais {R}. (Ex: a=1,3) Varivel inteira: um nmero do conjunto dos inteiros {Z}. Sempre o ndice de uma matriz ou vetor deve ser inteiro. (Ex: a[10] //vetor de nome a com 10 slots) Varivel caractere: uma letra, smbolo matemtico, nmero, ou qualquer outra coisa representada com um signo da tabela ascii. Caractere no tem valor numrico calculvel. (Ex: vog1=u //a varivel de nome vog1 tem a letra u armazenada em si) Fluxograma: maneira de representar o fluxo das informaes ao longo da lgica proposta, atravs de blocos geomtricos e setas. Pseudo-cdigo: a forma escrita por extenso, de maneira estruturada, daquilo que se pretende expressar com a lgica. Tem esse nome porque assemelha-se s linguagens de programao. Teste de Mesa: tabela onde so lanadas as variveis contidas no algoritmo e simulados os valores que elas assumem ao desenrolar do fluxo.

dhfs@rocketmail.com danilohenriquedesouza@hotmail.com -1-

Mau, 1 de dezembro de 2008

Vetor: como uma barra, uma matriz-linha, uma prateleira com espaos vazios, slots, onde podem ser armazenados tantos nmeros quanto o valor do ndice do vetor. O nome do vetor como o nome de qualquer varivel, apenas acrescido de um ndice entre colchetes. A estrutura da declarao d-se assim: nome_do_vetor[ndice]. (Ex: a=vet1[3] // o valor de a igual ao nmero no slot 3 do vetor vet1) Matriz: como uma matriz da matemtica, s que de armazenamento, com linhas e colunas. Assemelha-se ao vetor, porm tem dois ndices, um para indicar a linha, outro para a coluna. (Ex: inteiro: m1[3][4] //declarao de uma varivel matriz 3x4)

dhfs@rocketmail.com danilohenriquedesouza@hotmail.com -2-

Mau, 1 de dezembro de 2008

Tipos de Algoritmos
Seqncias: acontecimentos em srie. As aes ocorrem na ordem como foram descritas. Seleo ou Deciso: dependendo de determinadas condies, o fluxo pode tomar uma deciso diferente, ou seja, seguir por outro caminho. (Ex: se est frio... visto jaqueta) Repetio: enquanto uma determinada situao no for alterada o teste continua sendo feito, at que essa condio o interrompa. (Ex: enquanto estiver chovendo... no saio de casa)

(A)
A=2;

(B)
X diferente de 0?

A=B/X;

(C)
(fim do loop)

N
B=3; A=B;

Enquanto A for menor que 10

Somar 1 em A C=A+B;

Exemplos: (A): as instrues ocorrero na ordem em que os retngulos aparecem, orientando-se pelas setas de fluxo. (B): Quando for feita a pergunta, se a resposta for verdadeira, o fluxo orientar-se- pelo caminho com a letra S (sim). Caso seja falsa a resposta para a pergunta, o fluxo segue pela letra N (no). (C): Enquanto a condio descrita nodhfs@rocketmail.com for verdadeira, a pergunta tringulo invertido danilohenriquedesouza@hotmail.com continuar a repetir-se, bem como as instrues do loop. (lao de repetio)
-3-

Mau, 1 de dezembro de 2008

Fluxogramas

Instruo genrica

Incio ou fim do fluxograma

Estrutura para

Conector Exibio visual de um dado (exibir) Insero manual de um dado (ler)

Estrutura enquanto

Espao para declarar as variveis

Seleo ou deciso (se..., seno...)

dhfs@rocketmail.com danilohenriquedesouza@hotmail.com Seta de fluxo -4-

Mau, 1 de dezembro de 2008

PARA ou FOR
O para ou for, uma estrutura com caractersticas de seleo e repetio. Nele h uma varivel e um intervalo numrico, que indica quantas vezes vai se repetir o bloco de instrues. (Ex: para I de 0 a 9 //indica que o valor inicial do I 0, aumentar em um a cada passagem e a repetio termina quando chegar a 9) uma das estruturas mais importantes para desenvolver algoritmos, pois possvel definir quantas sero as vezes que determinadas aes repetir-se-o. O nmero de vezes da repetio igual ao do intervalo, e a cada vez que se repete esse nmero ir diminuir ou aumentar at chegar no final do intervalo. Por padro, essa incrementao ou decrementao sempre de 1 em 1.

Para I de 0 a 2

Sada da repetio

Exemplo: Na primeira passagem, I vale 0. O programa vai ler A, somar com I e guardar em B. Depois exibir o valor de B;

Ler: A

Na segunda passagem, I vale 1. O programa vai ler A, somar com I e guardar em B. Depois exibir o valor de B; Na terceira passagem, I vale 2. O programa vai ler A, somar com I e guardar em B. Depois exibir o valor de B; Quando I fosse valer 3, ou seja, sair do intervalo, o para termina e o fluxo segue pelo caminho da sada da repetio. Nesse caso no h ao para nenhuma I valendo 3.

B=A+I;

Exibir: B

Conjunto de instrues que iro se repetir

dhfs@rocketmail.com danilohenriquedesouza@hotmail.com -5-

Mau, 1 de dezembro de 2008

dhfs@rocketmail.com danilohenriquedesouza@hotmail.com -6-

Mau, 1 de dezembro de 2008

Criando um algoritmo
1. Para comear a desenvolver um algoritmo, necessrio que primeiro tenhamos em mente a lgica que resolve o problema. Essa lgica representada pelas operaes aritmticas, comparaes, testes, etc. 2. Depois de identificado o procedimento lgico, devemos definir um fluxograma que expresse a idia imaginada de uma forma visual de fcil compreenso. 3. Para comprovar a funcionalidade do fluxograma, so realizados testes de mesa, tabelas as quais simulam o comportamento das variveis, e verificam se a resposta final ser a esperada. 4. Peudo-cdigos representam a forma de descrever a lgica do fluxograma com palavras, ao invs de smbolos geomtricos e setas. Sua finalidade, entre outras, a representao do fluxo em uma forma similar ao cdigo de um programa em linguagem C.

Guardando valores
A grande maioria dos algoritmos envolve algum valor numrico em alguma etapa da lgica. Para utilizar tais nmeros preciso guard-los (grav-los) em algum lugar. Ao conceito de varivel atribui-se essa tarefa. As variveis guardam nmeros e, devido ao grande nmero de formas de fazer isso preciso decidir-se entra guardar os valores em variveis comuns (escalares), em matriz-linha (vetores), em matriz ou estruturas.
ji i

Varivel escalar.

Varivel vetor.
ij

Estrutura. (caso especial, pois h subdivises em cada posio, como numa tabela em cada clula do vetor ou matriz)

(um nico (mais de nmero pode ser nmero pode ser guardado, na verdade um em guardado) cada posio da dimenso Ex: I linear) Ex: vet[3]

Varivel matriz.

danilohenriquedesouza@hotmail.com -7-

(como vetor, mas com duas dimenses) dhfs@rocketmail.com mat[3][3] Ex:

Mau, 1 de dezembro de 2008

Exemplo: Desenvolver fluxograma, teste de mesa e pseudo-cdigo para solicitar ao usurio o fornecimento das notas P1, P2 e At de 9 usurios, calcular a mdia do semestre de cada um e exibi-las. Etapa 1 lgica: para calcular a mdia usam-se trs valores de nota (ento no mnimo 3 variveis), existe uma frmula ((3.5xP1+1.5xAt+5xP2)/10), o usurio ter de informar os nmeros (comando ler), os nmeros aps lidos sero calculados pela frmula, aps isso deve-se mostrar o valor da mdia. Porm so 9 mdias, ento devemos ter uma estrutura de repetio, como para ou enquanto. (OBS: a lgica, nesse caso, o raciocnio que se faz antes de comear o fluxograma, para orientar-se ao faz-lo) Etapa 2 fluxograma: existem varia formas de resolver esse algoritmo. possvel fazer desde uma forma bem simples, at a aplicao de vetores [9] ou matrizes [3][3]. Etapa 3 teste de mesa: construir tabela com as variveis do programa, e os valores que elas assumem conforme se informam os nmeros e calculam-se as mdias. Etapa 4 pseudo-cdigo: basta descrever o fluxograma com palavras curtas, em linhas e separando instrues com ponto-e-vrgula, e chaves a cada conjunto. Usam-se os prprios nomes das estruturas de repetio para descrever as etapas. Segue modelo em que os valores calculados das mdias sero guardados numa matriz 3x3: Fluxograma: Na primeira passagem i vale 0 e j vale 0, logo o valor calculado da mdia ser guardado no endereo 0x0 da matriz m. Na segunda passagem i ainda vale 0 e j vale 1, portanto o endereo onde ser guardado o nmero 0x1, e na prxima passagem ser 0x2, completando a primeira fileira de trs nmeros. Como o Para j terminou, o fluxo retorna no Para i, que muda para
dhfs@rocketmail.com danilohenriquedesouza@hotmail.com -8-

Mau, 1 de dezembro de 2008

1, e j volta a valer 0, recomeando assim o ciclo de 1x0 a 1x2. Assim tambm ser feito para i valendo 2, at se encerrarem as duas repeties. Teste de mesa: simulados valores para as variveis P1, P2 e At que sero inseridos pelo usurio, e os que sero assumidos por i e j a cada etapa, bem como os valores calculados das mdias em cada combinao de [i][j]. Pseudo-cdigo: representao em palavras daquilo que procurou expressa-se nos algoritmos. Fica claro pela tabulao que um para interno ao outro, pois o que o Para i realiza justamente outro Para j.

dhfs@rocketmail.com danilohenriquedesouza@hotmail.com -9-

FLUXOGRAMA
Incio

Mau, 1 de dezembro de 2008

Declarao das variveis. Inteiro: i, j, m[3][3]; Real: P1, P2, At;

TESTE DE MESA
i 0 j 0 1 2 0 1 2 0 1 2 P1 1 8,5 10 6 2 4,5 10 9,25 3 P2 7,5 6 4,5 7,5 8,5 5,5 6 10 7,5 At 7 5,5 9,5 9 10 8 4,5 10 6,5 m[i][j] 5,15 6,8 7,175 7,2 6,45 5,525 7,175 9,7375 5,775

1
Para i de 0 a 2 Fim

Para j de 0 a 2

Ler: P1

PSEUDO-CDIGO Incio. Declarao das variveis. Inteiro: i, j, m[3][3]; Real: P1, P2, At; Exibir: este programa calcula...; Para i de 0 a 2 faa: Para j de 0 a 2 faa: { Ler: P1; Ler: P2; Ler: At; m[i][j] = (3.5*P1+1.5*At+5*P2)/10; Exibir: A mdia calculada foi: m[i][j]; } Fim.

Ler: P2

Ler: At

m[i][j]= (3.5*P1+1.5*At+5*P2)/10;

Exibir: A mdia calculada foi: m[i][j]

dhfs@rocketmail.com danilohenriquedesouza@hotmail.com - 10 -

Mau, 1 de dezembro de 2008

ESTRUTURAS ou STRUCT
As estruturas so utilizadas para agrupar informaes relacionadas de tipos de dados diferentes. Uma matriz ou vetor comum pode apenas guardar valores de um tipo, mas por muitas vezes o que se pretende no um armazenamento simples de nmeros, e sim uma espcie de tabela de dados. Exemplo: Suponha que tenhamos que pedir ao usurio a idade, sexo e salrio de trinta funcionrios. Para tal, a idade seria um valor inteiro, o sexo um caractere (m ou f) e o salrio um valor real, se considerados os centavos. Estrutura: grupo_de_trabalho Campos da tabela (Tipo do Nome campo: campo) Inteiro: idade Caractere: sexo Real: salario do dado (Nome_da_estrutura.campo) grupo_de_trabalho.idade grupo_de_trabalho.sexo grupo_de_trabalho.salario

A estrutura declarada juntamente com as variveis, e vm entre chaves os campos e seus tipos de variveis. possvel o uso de matrizes e vetores juntamente com as estruturas, dessa maneira:

Declarao das variveis Estrutura: grupo_de_trabalho{Inteiro: idade; Caractere: sexo; Real: salario}; Estrutura grupo de trabalho: num_func[20]

Aqui est declarada a estrutura (tabela) e os seus campos (idade, sexo e salrio), bem como os tipos das variveis que sero informadas. Aqui est declarado um vetor, que ter o tipo daquela estrutura, ou seja, cada clula do vetor contm campos para idade, sexo e salrio.

Dessa forma, a estrutura um modelo que pode ser atribudo a uma simples varivel escalar, um vetor ou matriz para que esta assimile o seu modelo de tabela, ou seja, sua estrutura. De modo que, quantas forem as clulas de uma matriz, (por exemplo) todas podero guardar esses campos, Isso assim: s num_func[i].idade, num_func[i].sexo, num_func[i].salario.

dhfs@rocketmail.com danilohenriquedesouza@hotmail.com - 11 -

Mau, 1 de dezembro de 2008

possvel porque o vetor num_func[20] passa a ser do tipo grupo_de_trabalho, com todas suas caractersticas. Para ler ou usar um campo de uma estrutura, basta apenas dizer o nome do vetor (estrutura) e o do campo. Obs: o termo slot usado pelos programadores para definir um espao de armazenamento, por exemplo, v[2] um vetor com dois slots e capaz de guardar dois nmeros distintos, portanto. Por exemplo, suponha um vetor num_func[3]:

Ler: num_func[i].idade

Ler o campo idade, do slot de nmero i do vetor num_func[3]

Exibir: num_func[i].idade; num_func[i].sexo; num_func[i].salario;

Exibir os dados contidos nos campos idade, sexo e salario do slot i do vetor num_func[3]

Vale lembrar que a declarao da estrutura gera um estilo de armazenamento de dados, o vetor assume o tipo da estrutura e os campos fazem parte da referncia daquilo que se est trabalhando, sempre seguindo o modelo: [Estrutura: nome_da_estrutura{tipo_de_varivel: campo; tipo_de_varivel:

campo; ...};] para declarar a estrutura [Estrutura nome_da_estrutura: nome_do_vetor_ou_matriz[ndice]] para atribuir o tipo da estrutura ao vetor [nome_da_estrutura.campo] para tratar de um elemento, de um dos nmeros da tabela

dhfs@rocketmail.com danilohenriquedesouza@hotmail.com - 12 -

Mau, 1 de dezembro de 2008

[nome_do_vetor_ou_matriz[ndice].campo] para tratar de um elemento, de um dos campos de determinado slot do vetor ou matriz. A interpretao que pode ser tomada de um vetor ao qual foi atribudo um
num_func[0] modelo de estrutura a seguinte: num_func[1] num_func[2] ...

idade: sexo: salario:

idade: sexo: salario:

idade: sexo: salario:

dhfs@rocketmail.com danilohenriquedesouza@hotmail.com - 13 -

Você também pode gostar