Algoritmos e Linguagem de Programação I Roberto Ferreira roberto.ferreira@lapa.ifbaiano.edu.br 2014.1 Módulo I Aula 3 Algoritmos Computacionais
Na aula anterior vimos... Quais são os passos para solucionar um determinado problema. Exemplo: Estado inicial Estado final
Outro exemplo como fritar um ovo
ALGORITMOS COMPUTACIONAIS
Hardware x Software Usuário Software (Programas) Hardware (Máquina) Hardware: corresponde a parte física, o computador propriamente dito. Software: corresponde a parte lógica, são os programas e dados que rodam dentro do computador.
Programas O computador possui diversos programas. Um programa é um conjunto de instruções que indicam ao computador, passo a passo, o que ele tem que fazer. Logo, um programa nada mais é do que um algoritmo computacional descrito em uma linguagem de programação.
Programas O programa principal é chamado Sistema Operacional; Windows Linux (Ubuntu, Debian,...) Mac OS Exemplo de outros programas: Editor de texto: Word e Writer; Planilhas eletrônicas: Excel e Calc; Navegador de Internet: Internet Explorer, Firefox e Chrome. Jogos: Paciência, Campo Minado, outros.
Programas Linguagem de Programação Para que um algoritmo possa ser executado pelo computador, é necessário que ele seja programado, isto é, que ele seja transcrito para uma linguagem que o computador possa entender, direta ou indiretamente. Na disciplina, estudaremos inicialmente o Portugol e depois a linguagem de programação C.
Tradutor Os computadores só podem executar diretamente os algoritmos expressos em linguagem de máquina (que é um conjunto de instruções capazes de ativar diretamente os dispositivos eletrônicos do computador). Um tradutor é um programa que traduz um algoritmo que está escrito em uma determinada linguagem de programação em linguagem de máquina. Programa fonte Tradutor Programa Objeto Algoritmo ou programa escrito em uma determinada linguagem de programação Algoritmo ou programa traduzido para linguagem de máquina
Principais tipos de Linguagem de Programação Linguagem de Máquina (ou absoluta) Linguagem Simbólica (de Baixo Nível, de Montagem ou Assembler) Linguagem Automática (ou de Alto Nível) Linguagem que computador compreende Surgiu afim de simplificar a difícil programação da linguagem de máquina. Semelhantes às linguagens usadas para descrever o problema que se deseja resolver, ressaltando a linguagem profissional a que o usuário está acostumado. Instruções representadas por códigos binários: sequências de zeros e uns: 0001000010100011. Substitui os códigos binários por abreviações de nomes sugestivos que lembram a função da instrução. Existem várias linguagens automáticas: FORTRAN (FORmula TRANslation), ALGOL, PLI, APL, BASIC, LISP, SNOBOL, PASCAL, ADA, MODULA etc.
ALGORITMO Representa fielmente o raciocínio envolvido na Lógica de Programação Uma vez escrito pode ser traduzido para qualquer linguagem de programação
Diferença! ASPECTO ESTÁTICO Texto contendo instruções. Devem ser executados em uma ordem prescrita. ASPECTO DINÂMICO Efeitos que são causados pela execução do programa no tempo. Resultam em um conjunto de valores iniciais.
Foco no aspecto estático! Criar algoritmos para resolver problemas! Entrada: São os dados de entrada do algoritmo. Processamento: São os procedimentos utilizados para chegar ao resultado final. Saída: São os dados já processados.
Analogia ao ser humano
Exemplo Imagine o seguinte problema: Realizar a soma de dois números: N1 e N2. Para montar o algoritmo proposto, faremos três perguntas: a) Quais são os dados de entrada? b) Qual será o processamento a ser utilizado? c) Quais serão os dados de saída?
Exemplo Imagine o seguinte problema: Realizar a soma de dois números: N1 e N2. Para montar o algoritmo proposto, faremos três perguntas: a) Quais são os dados de entrada? Os dados de entrada são N1 e N2 b) Qual será o processamento a ser utilizado? O procedimento será somar todos os dados de entrada: Soma = N1 + N2 c) Quais serão os dados de saída? O dado de saída será a soma entre esses dois números
Algoritmo do exemplo Imagine o seguinte problema: Realizar a soma de dois números: N1 e N2. 1. Receba o número 1 2. Receba o número 2 3. Some os números 4. Mostre o resultado
Algoritmos Formas de representação Descrição Narrativa Fluxograma Convencional Diagrama de Chapin Pseudolinguagem
Descrição Narrativa Nesta forma de representação os algoritmos são expressos diretamente em linguagem natural. Exemplos: Troca de um pneu furado: Afrouxar ligeiramente as porcas Suspender o carro Retirar as porcas e o pneu Colocar o pneu reserva Apertar as porcas Abaixar o carro Dar o aperto final nas porcas
Descrição Narrativa Observação: Cálculo da média de um aluno: Obter as notas da primeira e da segunda prova Calcular a média aritmética entre as duas Se a média for maior ou igual a 6, o aluno foi aprovado, senão ele foi reprovado. Esta representação é pouco usada na prática porque o uso de linguagem natural muitas vezes dá oportunidade a más interpretações, ambiguidades e imprecisões.
Fluxograma Representação gráfica de algoritmos onde formas geométricas diferentes implicam ações distintas. Tal propriedade facilita o entendimento das idéias contidas nos algoritmos e justifica sua popularidade. Sua principal função é a de facilitar a visualização dos passos de um processamento.
Quadro de símbolos SÍMBOLO FUNÇÃO Início e fim do fluxograma Operação de entrada de dados Operação de saída de dados Operação de atribuição Decisão
Representação de algoritmo através de fluxograma Calcula a média e informa se o aluno foi aprovado ou não.
Diagrama de Chapin O diagrama foi criado por Ned Chapin. Substituir o fluxograma tradicional por um diagrama que apresenta uma visão hierárquica e estruturada da lógica do programa.
Pseudocódigo Também conhecida como pseudolinguagem, português estruturado ou portugol. É bastante rica em detalhes e, por assemelhar-se bastante à forma em que os programas são escritos. Esta representação é suficientemente geral para permitir que a tradução de um algoritmo nela representado para uma linguagem de programação específica seja praticamente direta.
Pseudocódigo
Seja um algoritmo Durante o desenvolvimento É importante verificar o estado dos dados a cada instrução. Verificando o conteúdo de todas as variáveis contidas no algoritmo. Este teste é chamado de Teste de mesa Significa, seguir as instruções do algoritmo de maneira precisa para verificar se o procedimento utilizado está correto ou não. Após desenvolver Deverá sempre ser testado.
Teste de mesa Deve-se enumerar as linhas do algoritmo. Em seguida criar uma tabela onde, a cada linha, são mostrados os conteúdos das variáveis do algoritmo e o número da linha executada. Para uma melhor visualização do processo, adotaremos a seguinte convenção: nas linhas em que uma variável é lida (entrada), o valor da variável ficará entre colchetes [ ]; quando o conteúdo de uma variável for escrito (saída), ficará entre chaves { }.
Relembrando os sólidos de Platão: As faces são constituídas por seções de planos, considerando que entre duas faces temos as arestas, as quais possuem em suas extremidades os vértices. Platão foi um filósofo grego, que viveu entre os séculos V e IV A.C., e estabeleceu importantes propriedades em alguns poliedros. O número de arestas é igual em todas as faces; Os ângulos poliédricos possuem o mesmo número de arestas; Nos sólidos considerados poliedros de Platão vale a relação de Euler (V A + F = 2) onde V = vértices, A = arestas e F = faces. Para encontrarmos o número de vértices, vamos isolar o vértice da equação acima, obtendo que: V = 2 + A - F.
Algoritmo para determinar o número de vértices de uma figura geométrica Inicio 1. Escreva ( Entre com o número de faces da figura geométrica: ) 2. Leia (faces) 3. Escreva ( Entre com um número de arestas da figura geométrica: ) 4. Leia (arestas) 5. Vértices <- arestas + 2 faces 6. Escreva ( O número de vértices do objeto especificado é:, vértices) Fim
Teste de mesa para este algoritmo Inicio 1. Escreva ( Entre com o número de faces da figura geométrica: ) 2. Leia (faces) 3. Escreva ( Entre com um número de arestas da figura geométrica: ) 4. Leia (arestas) 5. Vértices <- arestas + 2 faces 6. Escreva ( O número de vértices do objeto especificado é:, vértices) Fim Linha Vértices Faces Arestas 1???
Teste de mesa para este algoritmo Inicio 1. Escreva ( Entre com o número de faces da figura geométrica: ) 2. Leia (faces) 3. Escreva ( Entre com um número de arestas da figura geométrica: ) 4. Leia (arestas) 5. Vértices <- arestas + 2 faces 6. Escreva ( O número de vértices do objeto especificado é:, vértices) Fim Linha Vértices Faces Arestas 1??? 2? [6]?
Teste de mesa para este algoritmo Inicio 1. Escreva ( Entre com o número de faces da figura geométrica: ) 2. Leia (faces) 3. Escreva ( Entre com um número de arestas da figura geométrica: ) 4. Leia (arestas) 5. Vértices <- arestas + 2 faces 6. Escreva ( O número de vértices do objeto especificado é:, vértices) Fim Linha Vértices Faces Arestas 1??? 2? [6]? 3? 6?
Teste de mesa para este algoritmo Inicio 1. Escreva ( Entre com o número de faces da figura geométrica: ) 2. Leia (faces) 3. Escreva ( Entre com um número de arestas da figura geométrica: ) 4. Leia (arestas) 5. Vértices <- arestas + 2 faces 6. Escreva ( O número de vértices do objeto especificado é:, vértices) Fim Linha Vértices Faces Arestas 1??? 2? [6]? 3? 6? 4? 6 [12]
Teste de mesa para este algoritmo Inicio 1. Escreva ( Entre com o número de faces da figura geométrica: ) 2. Leia (faces) 3. Escreva ( Entre com um número de arestas da figura geométrica: ) 4. Leia (arestas) 5. Vértices <- arestas + 2 faces 6. Escreva ( O número de vértices do objeto especificado é:, vértices) Fim Linha Vértices Faces Arestas 1??? 2? [6]? 3? 6? 4? 6 [12] 5 8 6 12
Teste de mesa para este algoritmo Inicio 1. Escreva ( Entre com o número de faces da figura geométrica: ) 2. Leia (faces) 3. Escreva ( Entre com um número de arestas da figura geométrica: ) 4. Leia (arestas) 5. Vértices <- arestas + 2 faces 6. Escreva ( O número de vértices do objeto especificado é:, vértices) Fim Linha Vértices Faces Arestas 1??? 2? [6]? 3? 6? 4? 6 [12] 5 8 6 12 6 {8} 6 12
Exercícios 1. Quais são as etapas na criação de um algoritmo? 2. Identifique os dados de entrada, processamento e saída no algoritmo abaixo: Receba código do produto Receba valor do produto Receba quantidade comprada do produto Calcule o valor da compra Mostre o valor da compra 3. Crie um algoritmo utilizando descrição narrativa para resolver os seguintes problemas: a) Trocar uma lâmpada b) Preparar um café c) Receber um número e informe se ele é negativo, zero ou positivo 4. Represente os algoritmos criados na questão 3 através de fluxograma. 5. Faça um teste de mesa para o algoritmo da letra C da questão 3.