Vous êtes sur la page 1sur 18

ALGORTMOS E FLUXOGRAMAS MAT045 - Programao cientfica FORTRAN DCC - Departamento de Cincia da Computao Prof.: Abel Costa Modelagem de problemas.

. Tcnicas para soluo de problemas LGICA Sabemos que um computador precisa de todo um processo lgico para ser programado. Cada passo que queremos que um computador execute tem que estar definido previamente e dentro de uma seqncia rgida. Todo raciocnio lgico baseado na tomada de decises a partir da avaliao de uma proposio. Na programao de computadores podem aparecer dentro de um programa uma infinidade de proposies, dentro das quais o programa ter que tomar decises especficas para que possa ser atingido um determinado objetivo. A lgica de programao uma metodologia para organizar os pensamentos de quem deseja trabalhar no desenvolvimento de sistemas e programas. Estes pensamentos podem ser descritos como uma seqncia lgica de instrues, que devem ser seguidas para se cumprir uma determinada tarefa. Seqncia Lgica de instrues so instrues executadas at atingir um objetivo ou soluo de um problema PROPOSIO: Uma proposio o ato ou efeito de propor. Expresso verbal de um juzo, suscetvel de ser dito verdadeiro ou falso. Pode tambm ser definido como um enunciado algortmico equivalente a um enunciado verbal suscetvel de ser dito falso ou verdadeiro. Uma frase ou um enunciado verbal pode ser considerado uma proposio apenas quando admite um de dois valores lgicos: F (Falso) ou V (verdadeiro). VExemplo : Dois mais dois igual a quatro FDois mais dois igual a trinta COMPOSIO DE PROPOSIES: As proposies podem ainda ser compostas de uma ou mais proposies. Considerando as 2 proposies abaixo: 1. 3 um nmero real 2. 3 um nmero impar 3. 3 no uma letra Podemos ter: NO A Negao de A 3 no um numero real NO A Negao de B 3 no um numero impar A e B Juno de A e B 3 um n real e Impar Se A Verdade ento B verdadeSe 3 impar ento 3 n Real Se A verdade ento valor no umaSe 3 impar ento 3 no letra letra

ALGEBRA BOLEANA George Bole publicou a lgebra criada por ele no ano de 1854. Uma varivel boleada somente pode assumir dois valores: F ou V. OPERAES : Podemos fazer diversas operaes com as variveis boleadas Operao AND: A and B = A.B - Esta operao resulta em verdade se e somente se os valores das duas variveis A e b forem verdade. Esquematicamente pode ser representado: Operao OR : A or B = A + B Esta verdade se qualquer das variveis for Esquematicamente pode ser representado: Operao NOT: not A a negao Resulta em Verdade se o valor da boleana A for falso e resulta em

operao verdade.

resulta em

do valor. varivel falso se o valor desta for verdade. Esquematicamente pode ser representado:

Operao NAND: A nand B = not (A and B) = not (A.B) - a combinao das operaes NOT e AND Operao NOR: A nor B = not (A or B) = not (A+B) - a combinao das operaes NOT E OR. ALGORTMO Algoritmo - Uma sequncia se aes finitas encadeadas e lgicas que descrevem como um determinado problema deve ser resolvido. Um algoritmo formalmente uma seqncia finita de passos que levam a execuo de uma tarefa. Podemos pensar em algoritmo como uma receita, uma seqncia de instrues que executam uma meta especfica. Estas tarefas no podem ser redundantes nem subjetivas na sua definio, devem ser claras e precisas. Como exemplos de algoritmos podemos citar os algoritmos das operaes bsicas (adio, multiplicao, diviso e subtrao) de nmeros reais decimais. Outros exemplos seriam os manuais de aparelhos eletrnicos, como um aparelho de som, que explicam passo-a-passo como, por exemplo, gravar um evento. At mesmo as coisas mais simples do nosso dia a dia, podem ser descritas por seqncias lgicas. Por exemplo: Apesar do nome pouco usual, algoritmos so comuns em nosso cotidiano, como por exemplo, uma receita de bolo. Nela est descrita uma srie de ingredientes necessrios e uma seqncia de diversos passos (aes) que devem ser fielmente cumpridos para que se consiga fazer o alimento desejado, conforme se esperava, antes do incio das atividades (objetivo bem definido). Observa-se, porm que uma ordem isolada no permite realizar o processo completo, para isso necessrio um conjunto de instrues colocadas em ordem seqencial lgica. No exemplo do pargrafo anterior para fazermos um bolo no podemos comear por colocar os ingredientes no forno. necessrio todo um processo passo a passo para se chegar a este fim. Formas de Representao de Algoritmos Existem diversas formas de representao de algoritmos, mas no h um consenso com relao melhor forma delas. O critrio usado para classificar hierarquicamente estas formas est diretamente ligado ao nvel de detalhe, inversamente ao grau de abstrao oferecido. Algumas formas de representao de algoritmos tratam os problemas apenas em nvel lgico, abstraindo-se de detalhes de implementao muitas vezes relacionados com alguma linguagem de programao especfica. Por outro lado, existem formas de representao de algoritmos que possuem uma maior riqueza de detalhes e muitas vezes acabam por obscurecer a idia principal, o algoritmo, dificultando seu entendimento. Dentre as formas de representao de algoritmo mais conhecidas, destacam-se: A descrio narrativa; O fluxograma convencional;

O pseudocdigo, tambm conhecido como linguagem estruturada ou Portugol.

Descrio Narrativa Nesta forma de representao, os algoritmos so expressos em linguagem natural. Exemplo: Receita de um bolo 1. Separar os ingredientes 2. Bater os ovos em neve na batedeira 3. Acrescentar acar e farinha de trigo 4. Colocar extrato de baunilha 5. Acrescentar uma colher de manteiga 6. Acrescentar uma colher de Fermento em p 7. Verificar se esta doce o suficiente 8. Colocar na forma 9. Colocar no forno e assar 10. Retirar do forno 11. Tirar da forma e servir 12. Fim do processo Quando elaboramos um algoritmo devemos especificar aes claras e precisas, que a partir de um estado inicial, aps um perodo de tempo finito, produzem um estado final previsvel e bem definido. Isto significa que o algoritmo fixa um padro de comportamento a ser seguido, uma norma de execuo a ser trilhada, com vistas a alcanar, como resultado final, a soluo de um problema, garantindo que sempre que executado, sob as mesmas condies, produza o mesmo resultado. A importncia de se construir um algoritmo: conseguimos visualizar e testar ainda no papel, a soluo criada com lgica de programao sem nos preocupar com detalhes computacionais e uma vez concebida uma soluo algortmica para um problema, esta pode ser traduzida facilmente para qualquer linguagem de programao e ser agregada das funcionalidades disponveis nos diversos ambientes, ou seja, a codificao Pseudocdigo Como foi visto at agora, o fluxograma convencional a primeira forma de notao grfica, mas existe outra, que uma tcnica narrativa denominada pseudocdigo, tambm conhecida como portugus estruturado ou chamada por alguns de portugol. Esta tcnica de algoritmizao baseada em uma PDL Program Design Language (Linguagem de Projeto de Programao). Aqui vamos apresent-la em portugus. A forma originas de escrita conhecida como ingls estruturado, muito parecida com a notao da linguagem PASCAL. A PDL (neste caso, o pseudocdigo) usada como referncia genrica para uma linguagem de projeto de programao, tendo como finalidade mostrar uma notao para elaborao de algoritmos, os quais sero utilizados na definio, criao e desenvolvimento de uma linguagem computacional (Clipper, C, Fortran, Pascal, Delphi, Visual-Objects) e sua documentao. Abaixo apresentado um exemplo deste tipo de algoritmo. Os algoritmos so independentes das linguagens de programao. Ao contrrio de uma linguagem de programao no existe um formalismo rgido de como deve ser escrito o algoritmo. O algoritmo deve ser fcil de se interpretar e fcil de codificar. Ou seja, ele deve ser o intermedirio entre a linguagem falada e a linguagem de programao. Portugol A maioria esmagadora das linguagens de programao de computadores em lngua inglesa. Para facilitar o aprendizado de lgica de programao foram criadas algumas pseudolinguagens.

O Portugol uma pseudolinguagem de programao, uma simbiose de Portugus, Algol e Pascal, criada originalmente em ingls, com a proposta de ser independente da linguagem nativa (ou seja, existe em japons, javans, russo...). Basicamente, uma notao para algoritmos, a ser utilizada na definio, criao, desenvolvimento e documentao dos programas. Algumas Palavras Chave Inicio, Fim, Algoritmo, Enquanto, Se, ento, Para, At, At que, Leia, Escreva, Faa, Repita, FimSe, FimEnquanto, FimSelecione, entre outras que veremos adiante. Regras para construo do Algoritmo Para escrever um algoritmo precisamos descrever a seqncia de instrues, de maneira simples e objetiva. Para isso utilizaremos algumas tcnicas: 1. Usar somente um verbo por frase 2. Imaginar que voc est desenvolvendo um algoritmo para pessoas que no trabalham com informtica 3. Usar frases curtas e simples 4. Ser objetivo 5. Evite usar palavras que tenham sentido dbio 6. Procure dividir o problema em etapas menores. Fases Fundamentais Vimos que ALGORITMO uma seqncia lgica de instrues que podem ser executadas. importante ressaltar que qualquer tarefa que siga comportamento padro pode ser descrita por um algoritmo. Entretanto ao montar um algoritmo, precisamos primeiro dividir o problema apresentado em trs fases fundamentais... Entrada Processamento Saida ENTRADA: So os dados de entrada do algoritmo PROCESSAMENTO: Procedimentos utilizados para chegar ao resultado final SADA: So os dados j processados Exemplo de Algoritmo Imagine o seguinte problema: Calcular a mdia final dos alunos. Pelas provas os alunos recebero 2 notas: N1, N2. Onde: N1 + N2 Mdia Final = -----------------------2 Para montar o algoritmo proposto, faremos trs perguntas:

a) Quais so os dados de entrada? b) Qual ser o processamento a ser utilizado?

R: Os dados de entrada so N1, N2 R: O procedimento ser somar todos os dados de entrada e dividi-los por 4 (quatro)

c) Quais sero os dados de sada? INICIO do algoritmo Receba a nota da prova1 Receba a nota de prova2

R: O dado de sada ser a mdia final

Some todas as notas e divida o resultado por 2 Mostre o resultado da diviso

FIM do algoritmo

Teste de Mesa Aps desenvolver um algoritmo ele dever sempre ser testado. Este teste chamado de TESTE DE MESA, que significa, seguir as instrues do algoritmo de maneira precisa para verificar se o procedimento utilizado est correto ou no, escrevendo todas as variveis e resultados em uma tabela. Programa mdia Var Nome: caractere N1, N2: real Leia nome Soma, mdia: realIncio Leia n1

Imprima Informe nome e notas do aluno: Leia n2 Soma <= n1 + n2 Imprima nome Imprima Mdia Se mdia >=5 Ento Fim Se Fim

Mdia <= soma / 2

Imprima Aprovado

Caso contrrio

Imprima Reprovado

A diferena entre uma linguagem de programao de alto nvel utilizada em computao e uma PDL que esta (seja escrita em portugus, ingls, ou qualquer outro idioma) no pode ser compilada em um computador (por enquanto). Porm, existem Processadores de PDL que possibilitam traduzir essa linguagem numa representao grfica de projeto, fornecendo uma variedade de informaes, como: tabelas de referncia cruzada, mapas de aninhamento, ndice operacional do projeto, entre tantas outras. ATENO: Lembramos que o fluxograma e o pseudocdigo so as duas tcnicas importantes para a documentao da soluo de um problema computacional Constantes, Variveis e Tipos de Variveis Variveis e constantes so os elementos bsicos que um programa manipula. Uma varivel um espao reservado na memria (endereo de memria) do computador para armazenar um contedo de determinado tipo, varivel durante a execuo do algoritmo. Variveis devem receber nomes para poderem ser referenciadas e modificadas quando necessrio. Um programa deve conter declaraes que especificam de que tipo so as variveis que ele utilizar e as vezes um valor inicial. Tipos podem ser por exemplo: inteiros, reais, caracteres, etc. As expresses combinam variveis e constantes para calcular novos valores. Variveis Varivel a representao simblica dos elementos de um certo conjunto. Cada varivel corresponde a uma posio de memria, cujo contedo pode se alterado ao longo do tempo durante a execuo de um programa. Embora uma varivel possa assumir diferentes valores, ela s pode armazenar um valor a cada instante. Exemplos de variveis Nome

Media = Soma / 20 Nome o nome dado a uma posio de memria para armazenar um contedo com letras Media o nome dado a uma posio de memria para armazenar um valor real Soma e o nome dado a uma posio de memria para armazenar um valor real Constantes Constante uma determinada varivel que possui um valor fixo (que no se modifica) durante a execuo de um algoritmo. Conforme o seu tipo, a constante classificada como sendo numrica, lgica e literal. Exemplos de constante: Nome = Jose da Silva Peso= 85 Tipos de Variveis As variveis e as constantes podem ser basicamente de seis tipos: Numrica Especficas para armazenamento de nmeros, que posteriormente podero ser utilizados para clculos. Podem ser ainda classificadas como Inteiras ou Reais. As variveis do tipo inteiro so para armazenamento de nmeros inteiros e as Reais so para o armazenamento de nmeros que possuam casas decimais (nmeros fracionrios). Caractere Especficas para armazenamento de conjunto de caracteres que no contenham nmeros (literais). Ex: nomes. Alfanumrica (Expresses) Especficas para dados que contenham letras e/ou nmeros. Pode em determinados momentos conter somente dados numricos ou somente literais. Se usado somente para armazenamento de nmeros, no poder ser utilizada para expresses (operaes matemticas). Lgica Armazenam somente dados lgicos que podem ser Verdadeiro ou Falso. Indexada Armazenam variveis uni e multidimensionais Usurio Utilizada para variveis no bsica. So definidas atravs da instruo TIPO Declarao e Atribuio de Variveis As variveis para utilizadas no programa devem ser declaradas (criadas) logo no incio do algoritmo, na seo DECLARAES, quando ser reservado espao na memria. S podem armazenar valores de um mesmo tipo. Todas as variveis quando so criadas tem um contedo nulo (ou seja, nenhum contedo). Utilizamos o comando ATRIBUIO ( ), para atribuir valor a uma varivel, bem como inicializ-la com um determinado valor. O sentido a seta sempre da direita para a esquerda, e deve ser entendida como : ... um valor ATRIBUIDO a uma varivel. Estrutura de Um Algoritmo ALGORITMO ("Nome do algoritmo" ) {Declaraes} Nome : caracter { a varivel Nome criada como caracter } Idade : inteiro { a varivel Idade nmero inteiro } {Atribuies}

Jos da silvaNome 85Peso INICIO (Nome do bloco) { se for o caso, de refinamento } {Instrues} < comandos > FIM Jos da Silva (A varivel nome recebe valor Jose da silva)Nome 85 (A varivel Peso recebe valor igual a 85)Peso Obs.: As sees Declaraes e Atribuies so PBLICAS dentro do programa. ou seja so "vistas" em qualquer parte do programa. Dentro do Bloco, as sees Declaraes e Atribuies so LOCAIS ao Bloco, ou seja so privadas (particulares, internas) ao Bloco, conforme veremos em Refinamentos Sucessivos. Imaginando o funcionamento de um computador: Vamos agora criar um algoritmo para somar dois nmeros quaisquer. Podemos criar uma seqncia de passos lgicos e encadeados para executar esta tarefa. Vamos ainda imaginar que voc um computador e que estes passos so ordens que voc dever seguir risca. Cada retngulo abaixo uma tela do computador onde estaro as instrues a serem executadas Passo 1 : Incio do processo Separe trs posies de memria para armazenar temporariamente 3 nmeros aleatrios. Duas posies para armazenar 2 nmeros a serem informados e 1 posio para armazenar o resultado solicitado da operao entre os dois primeiros nmeros. Passo 2 : Leia o numero que eu estou digitando agora na sua tela de vdeo: 25 Passo 3 : Leia o segundo numero que eu estou digitando agora na sua tela de vdeo: 30 Passo 4: Some este dois nmeros Passo 5: Mostre o resultado nesta mesma tela 55 Passo 6: Fim do processo.

Observamos at que um algoritmo precisa: 1. Ter um incio; 2. Ser escrito em termos de aes (comandos) bem definidas; 3. Que as aes sigam uma sequncia ordenada e lgica. 4. Ter um ponto de finalizao Vantagens da utilizao de algoritmos

A partir do algoritmo em linguagem humana e em portugus claro, o programador poder implement-lo em qualquer linguagem de programao que conhea ou deseje. A maioria das linguagens de programao so em lngua inglesa. No caso da linguagem Fortran, o algoritmo apresentado anteriormente poder ser escrito na forma: Program mdia Character NomeReal N1, N2 Real Soma, mdia Write (*,*) Informe nome e notas do aluno: Read (*,*) nome Read (*,*) n1 Read (*,*) n2 Soma <= n1 + n2 Write (*,*) nome Write (*,*) Mdia If (media.ge.5) then Write Aprovado Else Write Reprovado End-if End Observe que elaboramos uma seqncia de passos ou comandos que sero as ordens a serem executadas. Observe ainda que todos os comandos so constitudos de VERBOS (Read/Leia, Write/Escreva) que indicam qual ao queremos que seja executada. Mdia <= soma / 2

Exerccios: 1) Crie uma sequncia lgica para tomar banho 2) Faa um algoritimo para achar a mdia de 3 nmeros 3) Crie uma algoritimo para acrescentar 10% ao seu salrio mensal.

Programas de computador: Os programas de computadores nada mais so do que algoritmos escritos numa linguagem de computador, normalmente em ingls, (Pascal, C, Cobol, Fortran, Visual Basic, Delhi entre outras) e que so interpretados e executados por uma mquina, no caso um computador. Notem que dada esta interpretao rigorosa, um programa por natureza muito especfico e rgido em relao aos algoritmos da vida real. No nosso exemplo do tpico anterior nos antecipamos a este conceito que dever ser melhor entendido agora. Para programar um computador precisamos dar ordens escritas ao mesmo p-a-s-s-o a p-a-s-s-o. Um computador apenas uma mquina e no raciocina como ns humanos. Cada ordem composta basicamente por um verbo que indique qual ao queremos que o mesmo execute, assim se queremos que o computador escreva algo na tela podemos usar algo como: WRITE (*,*) ESTOU ESCREVENDO ALGO NA TELA Fluxograma Convencional Sabemos que uma figura fala por mil palavras. No processo de aprendizado fixamos com mais facilidade imagens do que conceitos escritos.

O diagrama de blocos ou fluxograma uma forma padronizada eficaz para representar os passos lgicos de um determinado processamento. Com o diagrama podemos definir uma seqncia de smbolos, com significado bem definido. Portanto, sua principal funo a de facilitar a visualizao dos passos de um processamento O fluxograma uma ferramenta usada e desenvolvida pelos profissionais de anlise de sistemas, bem como, por alguns profissionais de Organizao, Sistemas e Mtodos. Tem como finalidade descrever o fluxo seja manual ou mecnico, especificando os suportes usados para os dados e informaes. Usa smbolos convencionais, permitindo poucas variaes. Representado por alguns desenhos geomtricos bsicos, os quais indicaro os smbolos de entrada de dados, do processamento dedados e da sada de dados, acompanhados dos procedimentos requeridos pelo analista de sistemas e a serem realizados pelo programador por meio do desenvolvimento do raciocnio lgico, o qual dever solucionar o problema do programa a ser processado pelo computador. uma ferramenta de uso em diversas reas do conhecimento humano, por traduzir em formato grfico algum procedimento ou norma. Simbologia Existem diversos smbolos em um diagrama de bloco. No decorrer do curso apresentaremos os mais utilizados. Veja no quadro abaixo alguns dos smbolos que iremos utilizar: FLUXO DE DADOS Indica o sentido do fluxo de dados. Conecta os demais smbolos TERMINAL Indica o INCIO ou FIM de um processamento Exemplo: Incio do algoritmo PROCESSAMENTO Processamento em geral Exemplo: Calculo de dois nmeros ENTRADA/SADA (Genrica) Operao de entrada e sada de dados Exemplo: Leitura e Gravao de Arquivos DESVIO (conector) Permite o desvio para um ponto qualquer do programa ENTRADA MANUAL Indica entrada de dados via Teclado Exemplo: Digite a nota da prova 1 EXIBIR Mostra informaes ou resultados Exemplo: Mostre o resultado do calculo DECISO Permite elaborar processos de deciso

CONECTOR DE PAGINA Permite informar de qual pagina vem o fluxograma Dentro do smbolo sempre ter algo escrito, pois somente os smbolos no nos dizem nada. Veja no exemplo a seguir:. Exemplo: Fluxograma de um programa para ler dois nmeros aleatrios diferentes de zero, calcular a mdia dos mesmos e mostrar o resultado encontrado. Sim Some os dois nmeros e divida por 2 No Operadores Os operadores so meios pelo qual incrementamos, decrementamos, comparamos e avaliamos dados dentro do computador. Temos trs tipos de operadores: Operadores Aritmticos Operadores Relacionais Operadores Lgicos

Operadores Aritmticos

Operao Adio Subtrao Multiplicao Diviso

Smbolo + * /

Exponenciao ** ou ^ Os operadores aritmticos so os utilizados para obter resultados numricos. Alm da adio, subtrao, multiplicao e diviso, podem utilizar tambm o operador para exponenciao. Os smbolos para os operadores aritmticos podem ser vistos ao lado: Hierarquia das Operaes Aritmticas 1 ( ) O que estiver entre Parnteses 2 Exponenciao 3 Multiplicao, diviso (o que aparecer primeiro) 4 + ou (o que aparecer primeiro) Exemplos: TOTAL = PREO * QUANTIDADE 1 + 7 * 2 ** 2 1 = 28 3 * ( 1 - 2) + 4 * 2 = 5

Operadores Relacionais

Os operadores relacionais so utilizados para comparar String de caracteres e nmeros. Os valores a serem comparados podem ser caracteres ou variveis.

Igual a Diferente de Maior que Menor que Maior ou igual a Menor ou igual a

= <> ou > < >= <=

Estes operadores sempre retornam valores lgicos (Verdadeiro ou Falso/ True ou False) Para estabelecer prioridades no que diz respeito a qual operao executar primeiro, utilize os parnteses. Os operadores relacionais so: Exemplos Tendo duas variveis A = 5 e B = 3 , os resultados das expresses seriam:

Expresso Resultado A=B A <> B A>B A<B A >= B A <= B Falso Verdadeiro Verdadeiro Falso Verdadeiro Falso

Operadores Lgicos Os operadores lgicos servem para combinar resultados de expresses, retornando se o resultado final verdadeiro ou falso. Os operadores lgicos so: E (And) A expresso verdadeira se todas as condies forem verdadeiras OU (Or) A expresso verdadeira se pelo menos uma condio for verdadeira NO (Not) Inverte o valor da expresso ou condio, se verdadeira inverte para falsa e vice-versa. A tabela mostra todos os valores possveis criados pelos trs operadores lgicos. Exemplos Suponha que temos trs variveis A = 5, B = 8 e C =1. Os resultados das expresses seriam:

Expresses Resultado A=B A <> B AND OR B>C Falso

B < C Verdadeiro

A>B A<B A >= B A <= B

NOT AND OR NOT

Verdadeiro B > C Verdadeiro B=C Falso Falso.

Funes Intrnsecas So funes que resumem uma srie se operaes bsicas. Podem ser Aritmticas, quando no tratamento de nmeros e Literais quando no tratamento de alfanumricos. Funes Aritmticas

Sintaxe

Descrio

Caracter Int Raiz Abs Div Mod

Caracter(Num) Int(Num) Raiz(Num) Abs(Nm) Div(Num;Divisor) Mod(Num;Divisor)

Fornece o caracter correspondente a Num (entre 1 e 255) de acordo com a tabela ASCII
Arredonda um nmero real Num para baixo, retornando a parte inteira mais prxima. Retorna uma raiz quadrada de Num. Retorna o valor absoluto de Num, que um nmero sem o respectivo sinal. Retorna o quociente da diviso de Num por divisor. Retorna o resto depois da diviso de Num por divisor.

Funes Literais Usuais

Sintaxe

Descrio Elimina de Texto espaos em branco esquerda. Elimina de Texto espaos em branco direita. Fornece o total de caracteres de Texto incluindo espaos em branco. Retorna os ltimos NCaract caracteres em Texto. Retorna os primeiros Nm_Caract caracteres em Texto. Resulta uma parte de Texto que comea no caracter de numero N e tem tamanho M Indica a posio da primeira ocorrncia de Parte em Texto Fornece o valor inteiro correspondente ao primeiro caractere de Texto, segundo a tabela ASCII

Ltrim Rtrim Comp Direita

Ltrim(Texto) Rtrim(Texto) Comp(Texto) Direita(Texto;NCaract)

Esquerda Esquerda(Texto;Nm_Caract) Sub Pos ASCII


EXERCCIOS Sub(Texto; N; M) Pos(Texto; Parte) ASCII(Texto)

1. Tendo como dados de entrada a altura e o sexo de uma pessoa, construa um algoritmo que calcule seu peso ideal, utilizando as seguintes frmulas: Para homens: (72.7*h) - 58 Para mulheres: (62.1*h) - 44.7 (h = altura)

1. Crie um algoritmo que leia dois nmeros nas variveis NumA e NumB, nessa ordem e imprimir em ordem inversa, isto , se os dados lidos forem 5 e 9 (NumA e NumB), por exemplo, devem ser impressos 9 e 5 (NumA e NumB). 2. Desenvolva um algoritmo que escreva os dias da semana, um dia em cada linha, a partir de uma cadeia de caracteres "DomSegTerQuaQuiSexSb" 3. Elabore um algoritmo que exiba o resultado da expresso: A > B ou C > D 1. Idem para: A<BeC>D Estruturas Bsicas de Controle Na maioria das vezes necessitamos tomar decises no andamento do algoritmo. Essas decises interferem diretamente no andamento do programa. Trabalharemos com dois tipos de estrutura. A estrutura de Deciso e a estrutura de Repetio Deciso Os comandos de deciso ou desvio fazem parte das tcnicas de programao que conduzem a estruturas de programas que no so totalmente seqenciais. Com as instrues de SALTO ou DESVIO pode-se fazer com que o programa proceda de uma ou outra maneira, de acordo com as decises lgicas tomadas em funo dos dados ou resultados anteriores. As principais estruturas de deciso so: Se Ento, Se ento Seno e Selecione Caso SE ENTO / IF ... THEN A estrutura de deciso SE/IF normalmente vem acompanhada de um comando, ou seja, se determinada condio for satisfeita pelo comando SE/IF ento execute determinado comando. Imagine o exemplo abaixo, um algoritmo que determinado aluno somente estar aprovado se sua mdia for maior ou igual a 5.0, o diagrama de blocos ficaria conforme ao lado. SE Media >= 5.0 ENTO "alunoAprovado" SE ENTO SENO / IF ... THEN ... ELSE A estrutura de deciso SE/ENTO/SENO, funciona exatamente como a estrutura SE, com apenas uma diferena, em SE somente podemos executar comandos caso a condio seja verdadeira, diferente de SE/SENO pois sempre um comando ser executado independente da condio, ou seja, caso a condio seja verdadeira o comando da condio ser executado, caso contrrio o comando da condio falsa ser executado. Ao lado o diagrama... Em algoritmo ficaria assim: SE Mdia >= 5.0 ENTO "alunoAprovado" SENO "aluno Reprovado" FimSe No exemplo acima est sendo executada uma condio que, se for verdadeira, executa o comando APROVADO, caso contrrio executa o segundo comando REPROVADO. Podemos tambm dentro de uma mesma condio testar outras condies. Como no exemplo a o lado: SELECIONE CASO / SELECT ... CASE

A estrutura de deciso SELECIONE/CASO utilizada para testar, na condio, uma nica expresso, que produz um resultado, ou, ento, o valor de uma varivel, em que est armazenado um determinado contedo. Compara-se, ento, o resultado obtido no teste com os valores fornecidos em cada clusula Caso. No exemplo do diagrama de blocos abaixo, recebido uma varivel Op e testado seu contedo, caso uma das condies seja satisfeita, executado o bloco de comandos apropriado, caso contrrio executado a opo de comandos de caso seno. SELECIONE CASO Op CASO 1 <comandos> CASO 2 <comandos> CASO 3 <comandos> CASO 4 <comandos> CASO 5 <comandos> CASO SENO <comandos> FimSelecione EXERCCIOS 1. Elabore um diagrama de blocos que leia um nmero. Se positivo armazene-o em A, se for negativo, em B. No final mostrar o resultado. 2. Ler um nmero e verificar se ele par ou mpar. Quando for par armazenar esse valor em P e quando for mpar armazen-lo em I. Exibir P e I no final do processamento. 3. Faa um algoritmo que calcule o IMC - ndice de massa corprea de uma pessoa, segundo a frmula: 2IMC = peso * altura Classifique-a segundo a tabela:

IMC 0 a 19 19 a 25 25 a 30 30 a 40

Resultado Muito Magro Normal Sobre Peso Obeso

40 a acima Obesidade Grave 1. Construa um diagrama de blocos para ler uma varivel numrica N e imprimi-la somente se a mesma for maior que 100, caso contrrio imprimi-la com o valor zero.

2. Joo Papo de Pescador, apesar do nome, um homem de bem, comprou um microcomputador para controlar o rendimento dirio de seu trabalho. Toda vez que ele traz um peso de peixes maior que o estabelecido pelo regulamento de pesca do estado (50 quilos) deve pagar um multa de R$ 4,00 por quilo excedente. Joo precisa que voc faa um algoritmo e o diagrama de blocos que leia a varivel P (peso de peixes) e verifique se h excesso. Se houver, gravar na varivel E (Excesso) e na varivel M o valor da multa que Joo dever pagar. Caso contrrio mostrar tais variveis com o contedo ZERO. 1. Elabore um diagrama de blocos que leia as variveis C e N, respectivamente cdigo e nmero de horas trabalhadas de um operrio. E calcule o salrio sabendo-se que ele ganha R$ 10,00 por hora. Quando o nmero de horas exceder a 50 calcule o excesso de pagamento armazenando-o na varivel E, caso contrrio, zerar tal varivel. A hora excedente de trabalho vale R$ 20,00. No final do processamento imprimir o salrio total e o salrio excedente. 2. Faa um teste de mesa do diagrama apresentado abaixo, de acordo com os dados fornecidos: Teste o diagrama com os dados abaixo

SalBase Gratif 3.000,00 1.200,00 1.200,00 400,00 500,00 100,00 Memria de Clculo:

SalBase Gratif SaLBruto IR SALLIQ Dados de Sada:

SALLIQ 1. Desenvolva um diagrama que: Leia 4 (quatro) nmeros; Calcule o quadrado de cada um (x );
2

Se o valor resultante do quadrado do terceiro for >= 1000, imprima-o e finalize; Caso contrrio, imprima os valores lidos e seus respectivos quadrados. 1. Faa um diagrama de bloco que leia um nmero inteiro e mostre uma mensagem indicando se este nmero par ou mpar, e se positivo ou negativo. 2. A Secretaria de Meio Ambiente que controla o ndice de poluio mantm 3 grupos de indstrias que so altamente poluentes do meio ambiente. O ndice de poluio aceitvel varia de 0,05 at 0,25. Se o ndice sobe para 0,3 as indstrias do 1 grupo so intimadas a suspenderem suas atividades, se o ndice crescer para 0,4 as industrias do 1 e 2 grupo so intimadas a suspenderem suas atividades, se o ndice atingir 0,5 todos os grupos devem ser notificados a paralisarem suas atividades. Faa um diagrama de bloco que leia o ndice de poluio medido e emita a notificao adequada aos diferentes grupos de empresas. 3. Elabore um algoritmo que dada a idade de um nadador classifique-o em uma das seguintes categorias: Infantil A = 5 a 7 anos Infantil B = 8 a 11 anos Juvenil A = 12 a 13 anos

Juvenil B = 14 a 17 anos Adultos = Maiores de 18 anos

Repetio Utilizamos os comandos de repetio quando desejamos que um determinado conjunto de instrues ou comandos sejam executados um nmero definido ou indefinido de vezes, ou enquanto um determinado estado de coisas prevalecer ou at que seja alcanado. Trabalharemos com modelos de comandos de repetio: Enquanto <condio>, faa (Do While ...Loop); At que <condio>, faa (Do Until ... Loop); Repita, ...Enquanto <condio> (Do ... Loop While); Repita, ...At que <condio> (Do ... Loop Until); Para ...de..., at...passo...faa...seguinte (For ... To ... Next)

Enquanto <condio>, Faa (Do While ... Loop) Neste caso, o bloco de operaes ser executado enquanto a condio x for verdadeira. O teste da condio ser sempre realizado antes de qualquer operao. Enquanto a condio for verdadeira o processo se repete. Podemos utilizar essa estrutura para trabalharmos com contadores. Em diagrama de bloco: Exemplo de Contador Enquanto <condio> Faa <Comandos> FimEnquanto At que <condio>, Faa ... (Do Until ... Loop) Neste caso, o bloco de operaes ser executado at que a condio seja satisfeita, ou seja, somente executar os comandos enquanto a condio for falsa. Em diagrama de blocos: Exemplo de At Diagrama At <condio> Faa <Comandos> FimAt Repita ..., Enquanto Neste caso primeiro so realizado o teste da condio. Se a condio for novamente, caso seja falso bloco Exemplo de Enquanto Diagrama Repita <condio> (Do ... Loop While) executados os comandos, e somente depois verdadeira, os comandos so executados encerrado o comando DO. Em diagrama de

<Comandos> Enquanto <condio> Repita ..., At que <condio> (Do ... Loop Until) Neste caso, executa-se primeiro o bloco de operaes e somente depois realizado o teste de condio. Se a condio for verdadeira, o fluxo do programa continua normalmente. Caso contrrio processado novamente os comandos antes do teste da condio. Em diagrama de Bloco Exemplo de Do .... Loop - Until Repita <Comandos> At que <condio> Para ...de..., at...passo...faa...seguinte (For ...To...Next) Tem seu funcionamento varivel chamada contador. executar um determinado instrues, um determinado controlados (de 2 em 2, de 3 em 3

controlado por uma Sendo assim, conjunto de numero de vezes, a passos (intervalos) ...) PARA <contador> DE <inicio> AT <fim> <comandos> SEGUINTE EXERCCIOS

PASSO <incremento> FAA

1. Elabore um algoritmo que gere e escreva os nmeros mpares dentre os nmeros lidos entre 100 e 200. 2. Construa um algoritmo que leia 500 valores inteiros e positivos e: Encontre o maior valor Encontre o menor valor Calcule a mdia dos nmeros lidos.

1. Faa um algoritmo que leia dois nmeros, Na e Nb, nessa ordem e os imprima em ordem inversa, por exemplo, se os dados lidos forem 4 e 9, devem ser impressos 9 e 4. 2. Dado um nmero de trs algarismos N=CDU (Centena, Dezena e Unidades = 123), imprima M na ordem inversa (Unidades, Dezena e Centena = 321) 3. Crie um algoritmo que leia dois nmeros e imprima o maior deles. 4. Faa um algoritmo que leia 3 nmeros e imprima o MAIOR e o MENOR dentre eles. 5. Faa um algoritmo que determine o maior entre N nmeros. A condio de parada a entrada de um valor 0, ou seja, o algoritmo deve ficar calculando o maior at que a entrada seja igual a 0 (ZERO). 6. Elabore um algoritmo que leia um nmero e imprima a faixa a que ele pertence, sendo dadas as condies: 1. Faixa1, se N <= 10 2. Faixa2, se N > 10 e N <= 100

3. Faixa3, se N > 100 1. Uma rainha requisitou os servios de um monge e disse-lhe que pagaria qualquer preo. O monge, necessitando de alimentos , indagou rainha sobre o pagamento, se poderia ser feito com gros de trigo dispostos em um tabuleiro de xadrez, de tal forma que o primeiro quadro deveria conter apenas um gro e os quadros subseqentes , o dobro do quadro anterior. A rainha achou o trabalho barato e pediu que o servio fosse executado, sem se dar conta de que seria impossvel efetuar o pagamento. Faa um algoritmo para calcular o nmero de gros que o monge esperava receber. R= 18446744074000000000 ou 9.223.372.037.000 2. Faa um algoritmo que conte de 1 a 100 e a cada mltiplo de 10 emita uma mensagem: Mltiplo de 10. 3. Escrever um algoritmo para gerar e imprimir os N primeiros termos da srie de Fibonacci, cujo comportamento o seguinte: A partir do terceiro (inclusive) cada termo obtido somando-se os dois antecedentes. Inicie pelo nmero 1. 4. Nesses tempos eleitorais, existem 3 candidatos a uma vaga no Senado. Feita a eleio, os votos so registrados em cartes contendo cada um o voto de um eleitor. O voto de cada eleitor foi codificado da seguinte forma: 0- voto branco, 1,2,3- candidatos, 4-voto nulo e o voto -1 o critrio de parada (para finalizar o algoritmo). No ser admitido empate. Faa um algoritmo que determine : o o o o O N do candidato vencedor;e que totalize: O N de votos em branco; O N de votos nulos; O N de eleitores votantes

2. Faa um algoritmo para trocar as 10 lmpadas fluorescentes (de 100 W cada uma) de teto de um auditrio que se encontram queimadas, sabendo que voc dispe de uma caixa com 24 lmpadas sendo 10 j queimadas. 3. Faa um algoritmo que apresente os quadrados dos numero inteiros de 15 a 200. 4. Elabore um algoritmo que apresente ao seu final o somatrio dos valores pares existentes na faixa de 1 a 500 5. Elaborar o algoritmo, diagrama de blocos de um algoritmo que calcule o FATORIAL de um nmero lido. Sabendo-se que fatorial a multiplicao sucessiva do nmero de termos. DCC Dep Da Cincia da Computao - MAT045 Programao Cientfica - FORTRAN - Prof.: ABEL COSTA Pg.: 25