Baixe o app para aproveitar ainda mais
Prévia do material em texto
Aula 2 PROFESSOR: MARCELO TAKASHI UEMURA DISCIPLINA: INTRODUÇÃO À PROGRAMAÇÃO ESTRUTURADA EM C - ARA0017 O PENSAMENTO ESTRUTURADO APLICADO À INFORMÁTICA; REPRESENTAÇÃO FORMAL DA SOLUÇÃO DE PROBLEMAS DE INFORMÁTICA UTILIZANDO LINGUAGEM NATURAL, FLUXOGRAMAS E LINGUAGEM DE PROGRAMAÇÃO Objetivos da Aula Apresentar as diferentes formas de expressar soluções computacionais baseadas em fluxogramas, algoritmos escritos em linguagem natural e em linguagem de programação; Situação problema Tem-se em mãos duas jarras: uma com capacidade para quatro litros; e outra, com capacidade para três litros. As jarras não possuem marcações intermediárias, de forma que, se qualquer uma das jarras não estiver completamente cheia, não será possível saber quanta água haverá dentro dela. Existe uma torneira disponível para encher as jarras e um ralo que permite que a água seja jogada fora. As únicas instruções disponíveis são: a. Encher completamente uma jarra, utilizando a torneira; b. Passar a água de uma jarra para outra; c. Esvaziar completamente uma jarra, jogando a água que estiver dentro dela no ralo. O objetivo é indicar como as jarras devem ser manipuladas, de modo que, ao final da manipulação, a jarra com capacidade para quatro litros de tenha exatamente dois litros de água. Ciclo de obtenção de um Programa Ciclo de obtenção de um Programa Entender Planejar Executar Verificar Interpretação do enunciado do problema e das questões envolvidas Escolha da linguagem; e Estruturação da solução Construção do algoritmo Execução em um interpretador ou compilador Etapas para construção de um algoritmo Representação de Algoritmos Linguagem Natural Escrever: Olá, como vai, tudo bem? Ler: “resposta” Escrever: Seja bem-vindo, é um prazer conhecê-lo. Linguagem Natural Depende diretamente de quem está escrevendo e de quem está lendo; Necessário clareza; Ambiguidade léxica. Representação de Algoritmos Linguagem Natural Ingredientes: 2 xícaras (chá) de açúcar 3 xícaras (chá) de farinha de trigo 4 colheres (sopa) de margarina bem cheias 3 ovos 1 1/2 xícara (chá) de leite aproximadamente 1 colher (sopa) de fermento em pó bem cheia Modo de preparo: Bata as claras em neve. Reserve. Bata bem as gemas com a margarina e o açúcar. Acrescente o leite e farinha aos poucos sem parar de bater. Por último, agregue as claras em neve e o fermento. Coloque em forma grande de furo central untada e enfarinhada. Pré-aqueça o forno a 180 C por 10 minutos. Asse por 40 minutos. Representação de Algoritmos Linguagem Natural ‹#› 1 – Utilizar frases curtas; 2 – Usar somente um verbo em cada frase, sempre no infinitivo ou imperativo; 3 – Evitar palavras com ambíguas; 4 – Detalhar todas as etapas. Representação de Algoritmos Outras formas de representar algoritmos Fluxogramas – descrição gráfica ou linguagem gráfica Pseudocódigo – descrição textual que se aproxima da linguagem natural Fluxograma É uma forma universal de representação, pois se utiliza de figuras geométricas para ilustrar passos a serem seguidos para a resolução de problemas Fluxograma ISO 5807 INÍCIO Acordar Escovar os dentes Preparar e tomar café Preparar roupas e lanches para o clube Há tarefas a fazer? Verificar programação do cinema Ir ao shopping Fazer Refeição Ir ao Cinema Ir ao clube Ir à piscina Fazer refeição Praticar esportes Voltar pra casa Fazer tarefas Tomar banho Fazer Refeição Assistir TV Dormir Dia de sol? FIM Não Não Sim Sim Fluxogramas Fluxogramas Exemplo: Algoritmo de troca de lâmpada com teste para 10 soquetes com repetição Exemplo Fluxograma Pseudocódigo Código de escrita que : utiliza uma combinação de termos convencionais para indicar as instruções do programa os termos utilizados são usualmente um misto de palavras da nossa linguagem natural com palavras e notações típicas das linguagens de programação. Características: Não tem um notação standard Tem maior proximidade com as linguagens de programação permitindo diminuir o esforço gasto no desenvolvimento/codificação Pseudocódigo Início Escrever (“Introduza dois valores”) Ler (valor1) Ler (valor2) SE valor 1 > valor 2 ENTÃO Escrever (valor 1, “é maior”) SENÃO SE valor 1 < valor 2 ENTÃO Escrever (valor 2, “é maior”) SENÃO Escrever (“valores iguais”) Fim Pseudocódigo (Pseudolinguagem) Facilita descrever o algoritmo antes de passá-lo para uma linguagem de programação; Descrição do algoritmo, menos rigorosa que na linguagem de programação (código fonte) Fácil de entender e fácil de codificar depois Intermediária: linguagem natural – linguagem de programação Independente da linguagem de programação Abstrai os problemas da linguagem natural; Facilita o aprendizado da lógica de algoritmos; Focada no aprendizado e não na estrutura. Semântica 🡪 definição do comando. Sintaxe 🡪 como se escreve um comando. Pseudo-código (Pseudolinguagem) Exemplo pseudocódigo Gere um pseudocódigo que aplique um desconto de 30% sobre o valor de um produto, recebido como entrada, e retorne o resultado da manipulação na saída padrão. Exemplo pseudocódigo Construa o pseudocódigo de um algoritmo capaz de ler dois valores inteiros armazenando-os em variáveis distintas, após o armazenamento o conteúdo das variáveis deve ser trocado e, ao termino do processo, o algoritmo deve retornar na saída padrão o novo conteúdo de cada uma das variáveis . Atividade Aura (Questão 1) Um algoritmo pode ser escrito utilizando diferentes linguagens. Relacione o tipo de algoritmo com a respectiva descrição: A - Linguagem Natural B - Linguagem Gráfica C - Pseudolinguagens 1 - Foi criada com o objetivo de facilitar o aprendizado da lógica de algoritmos ou lógica de programação, devendo o aprendiz focar na resolução do problema ou lógica do problema, e não na estrutura e formalismo de como representá-lo de forma clara e sem ambiguidade. 2 - A escolha das palavras e termos utilizados dependem diretamente da pessoa que está escrevendo e da compreensão de quem lê. Assim, uma mesma palavra pode ter diversos significados. 3 - Baseadas em imagens e esquemas, de forma a tentar facilitar a visualização e o entendimento das etapas e processos. Alternativas: A) A1, B2, C3 B) A2, B3, C1 C) A3, B2, C1 D) A1, B3, C2 E) A2, B1, C3 Atividade Aura (Questão 2) A cerca de Fluxogramas considere as seguintes afirmativas: I - É um diagrama padronizado utilizado para representações esquemáticas. II - É baseado na norma ISO 5807, que os padroniza, facilitando seu aprendizado e compreensão. III - É composto basicamente de figuras geométricas que representam as possíveis diferentes etapas de um processo, conectadas por setas que indicam a sequência das etapas e suas transições. Pode-se dizer que: Alternativas: A) Apenas as afirmativas I e II estão certas B) Apenas as afirmativas I e III estão certas C) Apenas as afirmativas II e III estão certas D) Todas as afirmativas estão certas E) Nenhuma afirmativa está certa. Algoritmo escrito em uma linguagem de computador (linguagem de programação - C, Pascal, COBOL, Fortran, Basic, Java, etc.) Interpretado e executado por um computador Interpretação rigorosa, exata, do computador ⇒ ⇒ escrita do algoritmo na linguagem de prog. tem que seguir regras mais rigorosas Programa ‹#› A abordagem Estruturada Linguagens de Programação Estruturadas => Abordagem Estruturada Abordagem Estruturada - abordagem sistemática da construção de SW que os princípios como: a separação das definições de dados e de programa a concepção descendente ou “Top-Down” e refinamento progressivo => A separação das definições de dados e de programa Os programas surgem com duas partes principais bem diferenciadas: Parte declarativa: declaram-se os tipos de dados e variáveis a utilizar no corpo das instruções do programa Parte operativa: o corpo de instruções comque se pretende concretizar as operações e atingir os objectivos pretendidos A abordagem Estruturada => A concepção descendente ou “Top-Down” É um método de abordagem dos problemas que se decompondo o problema original em problemas particulares, em níveis sucessivamente mais concretos até ao pormenor desejado => Refinamento Progressivo É um complemento lógico da abordagem descendente Consiste em ir concretizando, cada vez com mais detalhe, com maior exactidãoe perfeição, os passos sucessivos do projeto em questão Muito útil no desenvolvimento de pseudocódigo Abordagem Modular – apresenta semelhanças com a abordagem estruturada, consistindo na decomposição de um problema complexo nos seus componentes, aos quais se chamam módulos Os módulos são unidades com alguma autonomia, mas também relacionáveis entre si, pois podem-se integrar (ligar) num todo Reutilização de bibliotecas de módulos Componentes fundamentais de um programa Estruturação e componentes fundamentais de um programa “A estruturação de programas subdivide-se na estruturação das suas acções e na estruturação dos seus dados.A escolha destas estruturas é o problema fundamental da programação estruturada. Da escolha criteriosa destas estruturas depende que o programa seja eficaz, compreensível, robusto, modular e versátil. A sintaxe de uma linguagem define determinados construtores, de entre os quais os mais importantes são as expressões e os comandos Uma expressão é uma fórmula ou regra de computação que especifica um valor ou um resultado. Uma espressão consiste em operandos e operadores. Os operandos são constantes, variáveis, ou valores gerados por funções. Os operadores são usualmente classificados em monádicos ou unários (operam sobre um único operador) e diádicos (operam sobre dois operadores). Um comando é uma formula que especifica uma acção que o computador deve executar para produzir certo efeito” Coelho, Helder Programa = Dados + Instruções básicas + Expressões + Estruturas de Controle + Subprogramas Atividade Verificadora de Aprendizagem Utilizar a lista de exercícios disponibilizada no Anexo da Aula 2 para que os alunos exercitem a solução dos problemas usando as 3 metodologias apresentadas. A verificação deverá ocorrer com a geração e disponibilização do gabarito pelo docente, esclarecendo apenas as eventuais dúvidas. Leitura Específica [1] ANDRADE, Mairum C. Algoritmos. Rio de Janeiro: SESES, 2014. Páginas 16 a 29. Disponível em: http://repositorio.savaestacio.com.br/site/index.html#/objeto/detalhes/377757CE-7C5A438D-A742-482DDDC54D12 Aprenda+ Alguns sites com jogos de raciocínio lógico e que podem ser usados como apoio para a aula: 1. Jogo das Jarras de água, Disponível em: https://www.novelgames.com/en/jars/ 2. Jogo de travessia do rio, disponível em: https://rachacuca.com.br/jogos/o-lobo-e-aovelha/ 3. Jogo da velha, disponível em: http://www.cardiol.br/jogos/velha/ 4. Jogo do Teste de Einstein, disponível em: http://rachacuca.com.br/teste-de-einstein/
Compartilhar