De MediaWiki do Campus São José
Ir para navegação
Ir para pesquisar
Dados importantes
Dados da Disciplina
Algoritmos utilizando fluxograma
Introdução aos algoritmos utilizando fluxograma
Introdução aos algoritmos utilizando fluxograma
|
- Ementa disponível nos slides disponibilizados no moodle.
- Conceito de Algoritmo: Sequência ordenada de passos para resolução de um dado problema.
- Para que serve e como abordaremos?
- Algoritmos estão associados a automação de processos, permitem descrever os passos que uma máquina (mecânica ou eletrônica) irá realizar geralmente de maneira repetitiva (garantindo repetibilidade).
- Trabalharemos neste curso com problemas bem definidos que possuem objetivos, caminhos de solução e expectativa de solução claros.
- Formas de representação
- Descrição narrativa: Descrição informal de uma situação e passos para solução de um problema
- Fluxograma: Operações são representadas por formas geométricas
- Pseudo-código: Representação de comportamento e ações por meio de regra predefinida
- Códigos de programação: Um PROGRAMA implementa um algoritmo. É o algoritmo materializado na forma de uma sequência de instruções.
- Descrição narrativa
- Trata-se de um texto livre mas é sugerido organizar em tópicos como os seguintes:
- Cenário;
- Problema;
- Dados de entrada e saída;
- Solução esperada;
- Etapas;
- Solução proposta.
- Exemplos comuns são receitas de culinária, mas pode-se descrever de forma narrativa qualquer tipo de algoritmo.
- Descreva o algoritmo para fazer um ovo frito
- Descreva o algoritmo para cozinhar macarrão instantâneo
- Fluxogramas
- Um fluxograma é uma linguagem semi-gráfica que pode ser utilizada para descrição de algoritmos.
- Existem diferentes padrões, aqui utilizaremos o ANSI.
- Para desenvolver um algoritmo utilizaremos operações basicamente as seguintes operações:
- Sinalização de início e fim do algoritmo (ovalado): representam quando o programa é instanciado e quando é destruído
- Processamento (Instrução): são ações gerais, podem ser processamentos matemáticos, ações físicas de movimentação e muitas outras. Há outros símbolos de fluxograma que especificam mais ações como gravar em banco de dados, gerar relatório, neste caso aqui podemos usar o símbolo de processamento para representar estas ações bastando especificá-las.
- Entrada de dados: representa algo que o programa lê, alguma informação vinda, normalmente do usuário, que está sendo inserida no programa.
- Saída de dados: representa alguma informação que o programa gerou ao usuário, pode ser uma mensagem na tela, uma luz piscando, etc.
- Decisão: Este bloco representa a tomada de decisão, a resposta a uma pergunta que normalmente pode ser SIM ou NÃO. Terá portanto duas flexas de saída. Observe que o programa poderá tomar cursos diferentes a partir deste bloco.
- Processo pré-definido (subrotina): Usado na abstração de alguns processos que seriam melhor descritos isoladamente. O início e fim de uma subrotina utiliza os mesmos blocos início e fim descritos acima (utilizando o nome da subrotina para especificar).
- Terminador (início/fim) redondo: representa normalmente um concentrador de fluxo, quando vários caminhos chegam a um certo ponto. Pode também ser usado na paginação numerando términos parciais para representação em outra área do desenho.
- No libreoffice utilize a ferramenta Libreoffice Draw, há uma paleta específica para fluxogramas.
- Exemplos de algoritmos (como seriam os fluxogramas destes algoritmos?):
- Calcula média de dois números
- Observar uso de Terminador de inicio, Entrada de dados: NUM1, Entrada de dados: NUM2, Calcula, Exibe a média e Terminador de fim
- Outros exemplos de algoritmos para exercitar fluxogramas (pode-se abstrair e fazer de modo simplificado na forma de uma série de processos ou modo mais completo com condicionais):
- Fritar um ovo
- Trocar o pneu de um carro
- Enviar um e-mail
- Pegar um livro na biblioteca
- Calcular a área de um cômodo
- Cozinhar macarrão instantâneo
- Cozinhar miojo com ovo
- Outros conceitos trabalhados
- abstração
- estruturas de dados
|
Desenvolvendo algoritmos na forma de fluxogramas
Desenvolvendo algoritmos na forma de fluxogramas
|
Exercícios para resolver em sala de aula:
- Desenvolve um algoritmo na forma de fluxograma para cálculo da média de dois números fracionários exibindo o resultado
- Desenvolva um algoritmo na forma de fluxograma que calcula a média de consumo de um veículo. Deve obter a distância que um veículo percorreu e a quantidade de litros consumida, exibindo em tela o consumo médio em km/l.
- Desenvolva um algoritmo na forma de fluxograma que lê dois valores inteiros e apresenta qual é o valor maior
- Desenvolva um algoritmo na forma de fluxograma que lê dois valores inteiros e apresenta a diferença do maior para o menor
- Desenvolva um algoritmo na forma de fluxograma que obtém a nota do aluno e mostra em tela o conceito sabendo que A se for >= 9.0, B >= 7.5 e < 9.0, C >= 6.0 e < 7.5 e D < 6.0
- Desenvolva um algoritmo na forma de fluxograma que obtém do usuário 10 valores, calcula a média e exibe (utilize uma estrutura de repetição)
- Desenvolva um algoritmo na forma de fluxograma que implementa a técnica de pomodoro na forma de um aplicativo, mostrando ao usuário o cronômetro e mensagens de quando deve fazer pausas (Siga os passos descritos aqui
- Solicitar ao usuário digitar o nome da tarefa que ele vai se concentrar
- Iniciar o cronômetro em 25 minutos para realizar o pomodoro.
- Mostrar o cronômetro decrescente até alcançar 0:00.
- Não fez os 4 pomodoros ainda?
- Iniciar o cronômetro em 5 minutos para o "break".
- Mostrar o cronômetro decrescente até alcançar 0:00.
- Repetir o pomodoro
- Senão (caso já tenha feito 4 pomodoros)
- Colocar o cronômetro para um "long break" de 15 minutos.
- Mostrar o cronômetro decrescente até alcançar 0:00.
- Fim do programa
- Desenvolva um algoritmo na forma de fluxograma que exibe todos os números pares de 1 a 100
|
Pseudo-código
Pseudo-código utilizando Portugol - Introdução e condicionais
- Slides sobre pseudocódigo disponibilizados no moodle.
Ver exemplos de códigos Portugol dentro do software portugol (menu Arquivo->Abrir exemplo)
Exercícios - Pseudocodigo (série 0)
|
Exercícios - Pseudocodigo (série 0):
- Implemente por fluxograma e pseudocódigo um controlador de acesso que verifica se a senha digitada é igual a senha padrão “1234” abrindo a porta. O sistema deve sinalizar tanto no caso de acesso liberado ou negado. (id:0.07)
- Implemente um pseudocódigo que converte “celsius para fahrenheit” ou “fahrenheit para celsius” conforme opção que deve ser apresentada pelo algoritmo. (id:0.09)
- Desenvolva um algoritmo na forma de pseudocódigo que obtenha três números inteiros distintos e escreva na tela os valores do menor para o maior. (id:0.10)
- Desenvolva um algoritmo na forma de pseudocódigo que obtenha duas datas fornecidas pelo usuário (três números inteiros cada: dia, mês e por último ano com 4 dígitos) e mostra como resultado qual das duas datas é cronologicamente maior. (id:0.13)
- Implementar em pseudocódigo um algoritmo que através do valor ôhmico dado diz qual é a sequencia de cores de um resistor. Considere apenas resistores de 4 bandas de cores incluindo a tolerância, porém neste exercício ignore a tolerância. Desconsidere resistores de precisão, aqueles com multiplicadores ouro e prata. Considere que o multiplicador máximo é de 10MOhm (violeta). (id:0.12)
- Implementar em pseudocódigo um algoritmo que através de uma sequencia de cores de um resistor dado dá o valor ôhmico do resistor. Considere apenas resistores de 4 bandas de cores incluindo a tolerância, porém neste exercício ignore a tolerância. Desconsidere resistores de precisão, aqueles com multiplicadores ouro e prata. Considere que o multiplicador máximo é de 10MOhm (violeta). (id. 0.17)
- Implemente em pseudocódigo o algoritmo descrito no fluxograma abaixo (clique na imagem para ampliar) (id:0.08):
- Implementar em pseudocódigo algoritmo que imprime em tela o ranking de países através das medalhas obtidas nas olimpíadas. Sabendo que fica melhor colocado no ranking o país que soma mais medalhas de ouro, caso haja empate aquele que soma mais prata entre os empetados e caso haja empate na quantidade de prata também será melhor colocado no ranking o que tiver mais bronzes. O algoritmo deve ser capaz de armazenar e ranquear três países. Dica: crie as variáveis paisA_ouro, paisA_prata e paisA_bronze como numéricas para armazenar as medalhas obtidas pelo país A, da mesma forma para o país B e país C. Você pode limitar a quantidade de medalhas total e determinar pesos para obter um valor absoluto de pontuação. (id:0.18)
- Implemente um algoritmo em pseudocódigo que informa ao usuário se ele é obrigado ou não a fazer sua declaração de imposto de renda. O algoritmo deve solicitar ao usuário que responda sim ou não para as seguintes questões, sendo que o contribuinte deve declarar se se enquadrar em uma delas ou conforme descreve as condições (o texto está resumido, caso de dúvidas ver fonte):
- Recebeu RENDIMENTOS TRIBUTÁVEIS superior a R$ 28.123,91
- Recebeu RENDIMENTOS ISENTOS superior a R$ 40.000,00
- OBTEVE GANHO DE CAPITAL NA ALIENAÇÃO DE BENS ou BOLSAS DE VALORES
- Caso relacionado a ATIVIDADE RURAL: obteve receita superior a R$ 140.619,55 ou pretenda compensar, PREJUÍZOS de anos anteriores
- Tem POSSE total superior a R$ 300.000,00, estando dispensado se seus bens estiverem lançados na declaração do cônjuge
- Passou à CONDIÇÃO DE RESIDENTE no Brasil em qualquer mês
- Quem optou pela ISENÇÃO DO IMPOSTO SOBRE A RENDA INCIDENTE SOBRE O GANHO DE CAPITAL auferido na VENDA DE IMÓVEIS RESIDENCIAIS
- Implemente um algoritmo que solicita ao usuário entrar com 10 temperaturas, o algoritmo deve usar um laço de repetição para isso. No final deve mostrar a maxima, minima e média das temperaturas (id:0.16)
- Desenvolva em pseucodigo um algortimo que testa o vencedor de uma rodada de truco. A sequencia das cartas esta descrita na imagem abaixo bem como dos naipes franceses. Além da sequencia ali descrita, uma carta será sorteada e fará com que se torne a mais forte (manilha) aquela de força imediatamente superior sorteada (no caso da carta sorteada ser um 3 a manilha é o 4). A rodada é vencida numa disputa de melhor de três. As manilhas nunca empatam, neste caso prevalesce o naipe conforme sequencia. No caso de empate no último turno vence a rodada quem venceu o primeiro turno. Na ocorrência de empate nos três turnos vence a rodada quem foi o primeiro a jogar.
|
Pseudo-código utilizando Portugol - repetições
Exercícios - Pseudocodigo (série 1)
|
Exercícios - Pseudocodigo (série 1):
- Implemente um algoritmo que solicita ao usuario entrar com um numero negativo qualquer. O algoritmo deve mostrar todos os números impares e pares de 0 até este negativo indicado. Utilize a estrutura para, verifique qual o passo adequado para resolver esta questão. (id:1.07)
- Desenvolva uma algoritmo para marcar o placar de um jogo de futebol, deve solicitar ao usuário digitar A ou B, ao digitar A é somado um gol a equipe A e o mesmo para a B. Se digitado F deve encerrar e mostrar o placar final. (id:1.11)
- Implemente um algoritmo que obtém um número do usuário e utilizando laço para verifica se um número primo. Valide seu algoritmo comparando com a lista de primos Lista de números primos (id:1.14)
- Implemente um algoritmo que obtém dois números inteiros positivos do usuário e utilizando laço de repetição realização a multiplicação destes dois números através de operações de soma. (id:1.09)
- Implemente um algoritmo que obtém dois números inteiros positivos do usuário e utilizando laço de repetição realização a divisão destes dois números através de operações de subtração. (id:1.10)
- Faça um algoritmo que apresente a sequencia de Fibonacci dado um valor “n” que representa a quantidade de números em série que se deseja exibir. (id:1.15)
- Implemente um algoritmo que utiliza uma estrutura "PARA" afim de desenhar uma moldura com 10 colunas e "n" linhas. A quantidade de linhas "n" deve ser obtida do usuário. Se o usuário digitar 6 ficaria conforme mostrado a seguir:
XXXXXXXXXX
X X
X X
X X
X X
XXXXXXXXXX
</syntaxhighlight>
|
Exercícios - Pseudocodigo (série 2)
|
Exercícios - Pseudocpodigo (série 2):
- Rode e teste o exemplo do "Quadro 42 - Exemplo de uso de vetores em Portugol" do TCC de Antônio Medeiros, compare com a implementação de teste de números primos feito na lista anterior. Com o uso de vetores o que mudou?
- Implemente um algoritmo que solicita do usuário 10 números, após a leitura mostra ao usuários os números na ordem inversa em que foram digitados
- Escreva um algoritmo que solicita ao usuário digitar 6 números para uma aposta na megasena. O algoritmo deve utilizar a estrutura repita, gravar em um vetor cada número que deve estar entre 1 e 60. Deve garantir que os 6 números são diferentes entre si e no final mostrar os números digitados
- Implemente o pseudocódigo de uma calculadora que realiza operações de soma ou subtração de dois números. A calculadora deve operar em um laço infinito encerrando sua operação se o usuário digitar "q"
- Implemente o pseudocódigo de um programa que solicita o nome e idade de 5 pessoas gravando em dois vetores distintos (um literal e outro numérico). No final imprime em tela o indice de memória de cada usuário e seus dados como no exemplo a seguir "O nome do usuário '1' é 'Joao' e tem 40 ano(s)" (Neste exemplo o usuário digitou nome: Joao, Idade: 40). Utilize estrutura de repetição REPITA.
- Implemente o pseudocódigo de um programa que utiliza uma matriz para armazenar informações NUMERICAS de um estoque de produtos. Cada linha desta matriz representa um produto, usaremos o limite de 5 produtos para este exercicio. A matrriz deve ter 3 colunas, a primeira representará a quantidade em estoque, a segunda o valor de custo e a terceira o preço de venda. O programa deve apresentar uma entrada de dados para receber do usuário parâmetros destes 5 produtos. No final um relatório deve ser apresentado mostrando a quantidade em estoque e o lucro bruto em % que está sendo aplicado para cada produto. Utilize estrutura de repetição ENQUANTO.
- Implemente em pseudocódigo um programa que obtém o nome de 10 alunos e suas 4 notas para cada aluno. No final deve imprimir um relatório mostrando cada aluno por nome, a média de suas notas e sua situação final (aprovado se a média for >= 6). Utilize vetores, matrizes e estruturas de repetição PARA.
Exercícios complementares:
- Sessão 12.5 (página 294) de Araújo, Everton Coimbra de. Algoritmos: fundamento e prática; 3ª ed. [S.l]:Visual Books, 2007. 414p. ISBN 9788575022092.
|
Pseudo-código utilizando Portugol - sub-rotinas e registros
Exercícios - Pseudocodigo (série 3)
|
Exercícios - Pseudocodigo (série 3):
- Execute o código do TCC do Antonio Medeiros, "Quadro 49 - Exemplo de passagem de parâmetros por referência em Portugol"
- Execute o código do TCC do Antonio Medeiros, "Quadro 50 - Exemplo de uso de sub-rotina que retorna valor em Portugol"
- Implemente um algoritmo que realiza análises combinatórias pelo uso de uma sub-rotina de cálculo de fatorial. Neste caso o usuário deve entrar com um inteiro e o algoritmo deve retornar o número de possíveis combinações para aquele dado realizando análise de Permutações Simples. (id:3.01)
- Implemente um algoritmo que utilizando as sub-rotinas pré-definidas do portugol (seno e cosseno) criando outras sub-rotinas para cálculos da tangente, arco-seno, arco-coseno e arco-tangente. Neste caso utilizando angulos em radianos
- Implemente um algoritmo anterior agora aceitando angulos em graus
- Execute o código do TCC do Antonio Medeiros, "Quadro 56 - Exemplo de uso de vetor de registros em Portugol"
- Desenvolva uma algoritmo para marcar o placar de um jogo de futebol, deve solicitar ao usuário digitar o nome das equipes A e B, guardando esta informação em campos de registros bem como deve possuir campos para armazenar o placar de cada equipe. Depois que o usuário digitar os nomes deve aguardar o anúncio de gols. Ao digitar A é somado um gol a equipe A e o mesmo para a B. Se digitado F deve encerrar e mostrar o placar final mostrando os nomes das equipes.
- Implemente o pseudocódigo de um programa que solicita o nome e idade de 5 pessoas gravando em uma estrutura de dados tipo registro com dois campos (um literal e outro numérico). No final imprime em tela o indice de memória de cada usuário e seus dados como no exemplo a seguir "O nome do usuário '1' é 'Joao' e tem 40 ano(s)" (Neste exemplo o usuário digitou nome: Joao, Idade: 40).
Parte da implementação do problema das funções trigonométricas
algoritmo
declare angulo,s,c,t numerico
escreva "Digite um angulo: "
leia angulo
s <- arredonda(seno(angulo))
escreva "O seno do angulo ",angulo," é: ",s
c <- arredonda(cosseno(angulo))
escreva "O cosseno do angulo ",angulo," é: ",c
t <- arredonda(tangente(angulo))
escreva "O tangente do angulo ",angulo," é: ",t
fim_algoritmo
sub-rotina tangente (x numerico)
declare aux numerico
aux <- seno(x) / cosseno(x)
retorne aux
fim_sub_rotina tangente
</syntaxhighlight>
|