Baixe o app para aproveitar ainda mais
Prévia do material em texto
Técnicas de Programação Material Teórico Responsável pelo Conteúdo: Prof.a Esp. Margarete Eliane da Silva Almendro Revisão Técnica: Prof. Me. Douglas Almendro Revisão Textual: Prof.a Eliane Tavelli Alves Conceito de Lógica Aplicada a Programas 5 • Introdução • Nomenclaturas • Resolução de problemas • Tipos de Dados • Variáveis • Comandos de Entrada e Saída (Input/Output) • Características Gerais de Java • Operadores • Expressões Aritméticas Nesta unidade o aluno terá uma visão do que vem a ser algoritmos de programação, bem como suas facetas, para entender o pensamento de programação computacional. Para que você possa obter um bom aproveitamento nesta unidade vamos conferir a estrutura da mesma: Atividade de Sistematização: os exercícios disponibilizados são de autocorreção e visam permitir a você praticar o que aprendeu na disciplina e a identificar os pontos em que precisa prestar mais atenção, ou pedir esclarecimentos a seu tutor. Além disso, as notas atribuídas aos exercícios farão parte de sua média final na disciplina. Atividade de Aprofundamento: é uma atividade dissertativa ou de pesquisa. Material Complementar e Referências Bibliográficas: nestes links você poderá ampliar seus conhecimentos. Videoaula: neste link serão apresentadas algumas ferramentas e a utilização delas na prática; também se apresenta a resolução de alguns exercícios de forma prática. Lembramos a você da importância de realizar todas as atividades propostas dentro do prazo estabelecido para cada unidade, dessa forma, você evitará que o conteúdo se acumule e que você tenha problemas ao final do semestre. Uma última recomendação, caso tenha problemas para acessar algum item da disciplina, ou dúvidas com relação ao conteúdo, não deixe de entrar em contato com seu professor tutor através do botão mensagens ou fóruns. Conceito de Lógica Aplicada a Programas 6 Unidade: Conceito de Lógica Aplicada a Programas Contextualização Pela definição do Dicionário Aurélio, lógica é a sequência coerente, regular e necessária de acontecimentos, de coisas ou fatos; ou a maneira de raciocínio particular que cabe a um indivíduo ou a um grupo. Então, podemos dizer que lógica é a ciência que estuda as leis e critérios de validade que regem o pensamento e a demonstração, ou seja, ciência dos princípios formais do raciocínio. Muitos desenvolvedores “desenham” o processo do programa antes do desenvolvimento do código, essa técnica tem como objetivo: » Agilizar a codificação da escrita da programação; » Facilitar a depuração da sua leitura; » Permitir a verificação de possíveis falhas apresentadas pelos programas. Deve ser composta por quatro passos fundamentais: » Facilitar as alterações e atualizações dos programas; » Escrever as instruções em sequências ligadas entre si apenas por estruturas sequenciais, repetitivas ou de seleção; » Escrever instruções em grupos pequenos e combiná-las; » Distribuir módulos do programa entre os diferentes programadores que trabalharão sob a supervisão de um programador sênior ou chefe. 7 Introdução Lógica Para os profissionais da área de tecnologia, o uso da lógica é um fator importante a ser considerado, porque a todo tempo os programadores e analistas e precisam resolver problemas do seu cotidiano. Saber lidar com problemas de ordem administrativa, de controle, de planejamento e de estratégia requer atenção e boa técnica para representar esses problemas. Lógica aplicada no desenvolvimento de softwares ou programas Muitos desenvolvedores “desenham” o processo do programa antes do desenvolvimento do código. O que é chamado de ‘desenho’ são as etapas que o programa deveria realizar e uma forma de testar os pontos chaves do programa verificando se não existe nenhum erro de lógica de programação. Esses desenhos são chamados de diagramas de blocos que, após a conclusão, poderão ser interpretados por qualquer desenvolvedor e ser desenvolvidos em qualquer linguagem disponível no mercado. A técnica mais importante no projeto da lógica de programas denomina-se programação estruturada, a qual consiste em uma metodologia de projeto objetivando: » Agilizar a codificação da escrita da programação; » Facilitar a depuração da sua leitura; » Permitir a verificação de possíveis falhas apresentadas pelos programas. Ela deve ser composta por quatro passos fundamentais: » Facilitar as alterações e atualizações dos programas; » Escrever as instruções em sequência ligadas entre si apenas por estruturas sequenciais, repetitivas ou de seleção; » Escrever instruções em grupos pequenos e combiná-las; » Distribuir módulos do programa entre os diferentes programadores que trabalharão sobre a supervisão de um programador sênior ou chefe. 8 Unidade: Conceito de Lógica Aplicada a Programas Nomenclaturas Muitos profissionais utilizam a linguagem para denominação de símbolos que representam a linha de raciocínio lógico de fluxogramas, diagramas de blocos e algoritmos. Vejam a definição de cada um. Fluxograma Ferramenta utilizada pelos profissionais de análise de sistemas para descrever o fluxo de ação de uma atividade automatizada ou manual. Usa símbolos denominados pela norma ISO 5807:1985, e é representado por alguns desenhos geométricos Diagrama de blocos Também conhecido como diagrama de fluxo (diferente de fluxograma), uma ferramenta utilizada pelo programador com o objetivo de descrever o método e a sequência de ações ou eventos a serem executadas pelo computador. Também é utilizada diversas formas geométricas para representar as atividades. Esses símbolos são conhecidos mundialmente e definidos pela norma ISO 5807:1985(E). Após a criação do diagrama de blocos, a próxima etapa será a codificação do programa na linguagem escolhida pelo programador. Algoritmo Conjunto de regras formais que serão utilizados para a resolução do problema. Nessa solução pode-se dizer que estão embutidos as fórmulas de expressões aritméticas. Os algoritmos podem ser representados por meio da escrita ou representados por meio de formas geométricas. Em suma, o algoritmo pode ser definido como a resolução do problema e a transformação desse problema em um programa que possa ser executado por um programador. 9 Na ciência da computação, eles podem ser definidos como uma sequência de instruções ou operações básicas, cuja execução, em tempo finito resolve um problema computacional. Eles podem ser representados graficamente, em pseudocódigo ou diretamente na linguagem escolhida para desenvolvimento do programa. A forma de representação gráfica, segundo ISO 5807:1985 é uma forma de representar os dados e os procedimentos a serem executados por um programa a partir da linha de raciocínio lógico de um programador para demonstrar o resultado final de um programa. média = (nota1 + nota 2)/2 média = (nota1 + nota 2)/2 média > 6 vai para exame vai para exame nota exame nota exame Resultado = (média + exame)/2 Resultado = (média + exame)/2 Resultado ≥ 5 Resultado ≥ 5 Aprovado Aprovado AprovadoReprovado S S N N Aprovado média > 6 Aprovado S S N N 10 Unidade: Conceito de Lógica Aplicada a Programas Resolução de problemas Para que um diagrama de blocos seja desenvolvido de forma correta, deve-se levar em consideração como procedimentos prioritários as seguintes regras: » Diagramas de blocos devem ser feitos e quebrados em vários níveis; » Para o desenvolvimento correto de um diagrama de bloco, ele deve ser iniciado de cima para baixo; » Não deve ocorrer, em hipótese alguma, cruzamentos de linhas de fluxo de dados entre os símbolos. Os diagramas de blocos podem ser representados de várias formas, o que não impede que a solução seja entregue esem erros. Vejamos alguns exemplos: Linear A técnica linear é conhecida como um modelo tradicional de desenvolvimento e resolução de problemas. Estruturada Essa técnica é mais utilizada pelos profi ssionais de processamento de dados. A sequência, a seleção e a interação são as três estruturas básicas para a construção do diagrama de bloco. Modular A técnica da lógica modular deve ser elaborada como uma estrutura de partes independentes, denominadas de módulos, cujo procedimento é controlado por um conjunto de regras. Representação em Pseudocódigo Essa técnica é baseada no Program Design Language – PDL, onde a linguagem é apresentada e codifi cada na língua portuguesa. Ela foi desenvolvida com o propósito de ser uma ferramenta comercial que poderia ser utilizada com qualquer linguagem. Por ser uma escrita didática, começou a ser utilizada para o ensino de programação. Por exemplo: algoritmo <Nome do algoritmo> <declaração de variáveis> início <corpo do algoritmo> Fim 11 Tipos de Dados Quando especificamos um algoritmo, detalhamos os dados (números binários, isto é, sequências de 0s e 1s armazenadas na memória e que correspondem à porção das informações a serem processadas) que serão processados e as instruções (ou comandos; que comandam o funcionamento da máquina e determinam como devem ser manipulados os dados) que vão operar sobre esses. O objetivo é classificar os dados de acordo com o tipo de informação contida neles. A classificação apresentada não se aplica a nenhuma linguagem de programação específica. Inteiro Informações que não possuem componente decimal ou fracionário, podendo ser positivo ou negativo. Real Informações que podem possuir componentes decimais ou fracionários; podem ser positivos ou negativos. A simples existência do ponto decimal diferencia um dado numérico do tipo inteiro de um do tipo real. Caracter É constituído por uma sequência de caracteres contendo letras, dígitos e/ ou símbolos especiais. São representados nos algoritmos pela coleção de caracteres delimitada pelas aspas (“texto”). Lógico Informação que pode assumir apenas dois possíveis valores: verdadeiro ou falso, sim/não, 1/0, true / false. A figura abaixo representa a disposição dos tipos de dados. Tipos de dados Caracter LógicoNumérico RealInteiro 12 Unidade: Conceito de Lógica Aplicada a Programas Variáveis Uma variável é, simplesmente, um espaço, reservado e rotulado para armazenar dados. Toda variável tem um nome que a identifica univocamente (identificador) e um valor, que corresponde à informação a ela atribuída. 12num1 num2 Nomes Memória 3 Nos algoritmos, cada variável corresponde a uma posição de memória, cujo conteúdo pode ser alterado em algum instante no decorrer do tempo, ou seja, durante a execução de um algoritmo. Embora uma variável possa assumir diferentes valores, ela só pode armazenar um valor a cada instante. Uma variável possui três atributos: um nome (ou identificador), um tipo de dado e a informação por ela guardada. Todo nome de uma variável tem a função de diferenciá-la das demais. Cada linguagem de programação estabelece suas próprias regras de formação de nomes de variáveis. O nome de uma variável deve ser representativo do seu conteúdo e possui as seguintes regras: 1. Não pode começar com números, apenas com letras, underscore ou $. 2. Não pode conter espaços em branco. 3. Não pode conter caracteres especiais (#, ?, !, @). 4. Não pode ser palavras reservadas. Declaração de Variáveis Todas as variáveis utilizadas nos algoritmos devem ser definidas antes de serem utilizadas. Isto se faz necessário para permitir que o compilador reserve um espaço na memória para as mesmas. Para indicar o tipo de uma ou mais variáveis é feita a declaração de variáveis. A partir do momento da declaração das variáveis, é feita uma associação do nome escolhido, com a respectiva posição de memória. 13 Exemplo: inteiro number1,number2 real arquivo caracter nome lógico escolha Inicialização de Variáveis Existem várias maneiras de atribuir valores a variáveis: Dizendo no algoritmo qual o valor a variável deve assumir: real preço preço = 12.99 Definir que uma variável assuma o valor de uma outra variável: inteiro n1,n2 n1 = 10 n2 = n1 Atribuir uma variável ao resultado de uma expressão: real a,b,c a = 12.05 b = 5.20 c = a * b Observações: » Uma variável do tipo real só poderá assumir valores com ponto flutuante ou inteiro. Caso sejam valores flutuantes, somente por meio do ([.] ponto) e não da vírgula por conta de estarmos trabalhando com o padrão inglês. » Variáveis do tipo inteiro só assumem a parte inteira de um número. » Variáveis do tipo char assumem qualquer valor, pois estará convertendo os mesmos em sequência de caracteres. » Variáveis do tipo lógico assumem somente valores true ou false. 14 Unidade: Conceito de Lógica Aplicada a Programas Comandos de Entrada e Saída (Input/Output) Os algoritmos precisam ser ‘alimentados’ com dados provenientes do meio externo para efetuarem as operações e cálculos e é necessário também mostrar os resultados. Comando de entrada: LEIA tem como finalidade atribuir o dado a ser fornecido à variável identificada. leia <variável> Comando de saída: ESCREVA cuja finalidade é exibir uma mensagem. Essa mensagem pode ser um texto ou o conteúdo de uma variável, ou ambos juntos: escreva “Mensagem” escreva “Mensagem”+<variável> escreva <variável> Exemplo – Algoritmo 01 Algoritmo Quadrado de um Número inteiro q,n início escreva “Entre com o número” leia n q = n*n escreva “O quadrado de” + n + “é” + q fim Exemplo – Algoritmo 02 Algoritmo Volume de um Cilindro real a, r, v, PI PI = 3.1415 início escreva “Entre com o raio” leia r escreva “Entre com a altura” leia a v = PI * r * r * a escreva “O volume do cilindro é” + v fim 15 Características Gerais de Java Java possui uma coleção de APIs (bibliotecas) padrão que podem ser usadas para construir aplicações: » Organizadas em pacotes (java.*, javax.* e extensões). » Usadas pelos ambientes de execução (JRE) e de desenvolvimento (SDK). As principais APIs são distribuídas juntamente com os produtos para desenvolvimento de aplicações: Java 2 Standard Edition (J2SE): Ferramentas e APIs essenciais para qualquer aplicação Java (inclusive GUI). Java 2 Enterprise Edition (J2EE): Ferramentas e APIs para o desenvolvimento de aplicações distribuídas. Java 2 Micro Edition (J2ME): Ferramentas e APIs para o desenvolvimento de aplicações para aparelhos portáteis. Desenvolvimento e execução » Java Development Kit (JDK) Coleção de ferramentas de linha de comando para, entre outras tarefas, compilar, executar e depurar aplicações Java. Para habilitar o ambiente via linha de comando é preciso colocar o caminho $JAVA_ HOME/bin no PATH do sistema. » Java Runtime Environment (JRE) Tudo o que é necessário para executar aplicações Java. JVM – Java Virtual Machine (Máquina Virtual Java). Mecanismo de Trabalho Programa Java ( .java) Classes ( .class) Interpretador Javajava Execução do código Bytecodes Instruções Java Virtual Machine - JVM Compilador Java Na fase de execução é necessário que haja a Máquina Virtual Java (MVJ) A JVM interpreta os bycodes gerados pelo compilador. O objetivo da JVM é permitir que qualquer sistema operacional poassa executar uma aplicação Java Pacotes javac 16 Unidade: Conceito de Lógica Aplicada a Programas Classe Java Uma classe deve começar com a criação do seu nome de arquivo em maiúsculo e deve ter o mesmo na digitação da classe. Comentando um pouco sobre o código acima: 17 Tipo de Dados em Java Importação de dados Na classe JOptionPanehá alguns métodos que possibilitam trabalhar com janelas. Veremos os métodos showInputDialog( ) e o showMessageDialog( ). Para ter acesso a estas classes, deveremos importar o pacote onde ela se encontra. A classe JOptionPane está no pacote javax.swing. Portanto, como primeira linha do nosso programa temos que colocar o comando import javax.swing.*; Entrada de Dados Para a entrada de dados em Java temos uma particularidade, pois tudo o que o usuário digitar será sempre uma String “conjunto de caracteres”. Mas e se precisarmos atribuir um valor numérico? Para isto temos os conversores de String para número. » Integer.parseInt( ); Inteiro » Float.parseFloat( ); Float » Double.parseDouble( ); Double » Long.parseLong( ); Long A linha para entrada de dados fica da seguinte forma: » nota=Float.parseFloat(JOptionPane.showInputDialog(“Entre com a nota”) ); 18 Unidade: Conceito de Lógica Aplicada a Programas Abaixo um exemplo de uma classe em Java para apenas a entrada de uma nota. import javax.swing.*; public class EntradaSaida { public static void main(String args[ ]) { float nota; nota=Float.parseFloat( JOptionPane.showInputDialog(“Entre com a nota”)); } } Agora que já temos uma base de algoritmo e programação, vamos colocar em prática. Programando o Algoritmo 01 Algoritmo Quadrado de um Número inteiro q,n início escreva “Entre com o número” leia n q = n*n escreva “O quadrado de” + n + “é” + q fim O sinal de + tem o papel de concatenar “juntar palavras e valores para uma visualização interativa”. As palavras sempre deverão estar entre aspas. Já as variáveis devem conter antes e depois o sinal de + para juntar com a String. Agora vamos passar o algoritmo para linguagem de programação Java. //Quadrado de um Número import javax.swing.*; public class Algoritmo01 public static void main(String [] args) { int q, n; n = Integer.parseInt(JOptionPane.showInputDialog(“Entre com o número”)); q = n*n; JOptionPane.showMessageDialog( null, “O quadrado de” + n +“é“ + q); } } Observação Toda quebra de linha só poderá ocorrer depois de uma vírgula ou do sinal de + “exceto quando tivermos uma expressão matemática”. 19 Operadores São elementos funcionais que atuam sobre operandos e produzem em determinado resultado. Podem ser classificados em: Binários Quando atuam sobre dois operandos. Exemplo: (soma, subtração; multiplicação, divisão). Unários Quando atuam sobre um único operando. Exemplo: –27. Outra classificação dos operadores é feita considerando-se o tipo de dados de seus operandos e do valor resultante de sua avaliação. » Aritméticos; » Relacionais; » Lógicos. Aritméticos Operador Operação Prioridade + Soma 5º - Subtração 5º * Multiplicação 4º / Divisão 4º % ou mod Resto de uma divisão inteira 3º ^ Potência 2º + Manutenção de sinal 1º - Inversão de sinal 1º 20 Unidade: Conceito de Lógica Aplicada a Programas Exemplos Faça um algoritmo que leia dois números inteiros e calcule e mostre o resultado das seguintes operações aritméticas: soma, subtração, multiplicação, divisão e resto da divisão. Algoritmo operações int num1, num2 Inicio escreva “Digite um número” leia num1 escreva “Digite outro número” leia num2 escreva “Soma:” + num1+num2 escreva “Subtração:” + num1-num2 escreva “Multiplicação:” + num1*num2 escreva “Divisão:” + num1/num2 escreva “Resto:” + num1%num2 Fim Agora em Java 21 Vamos ver outro exemplo Escreva um algoritmo que leia a quantidade de moedas de R$ 0,25, R$ 0,10 e R$0,05 armazenados em um cofre. Calcule e mostre o valor em reais (R$). Algoritmo operações Algoritmo cofre int q25, q10, q5 real total Início escreva “Entre com a quantidade de moedas de R$ 0,25” leia q25 escreva “Entre com a quantidade de moedas de R$ 0,10” leia q10 escreva “Entre com a quantidade de moedas de R$ 0,05” leia q5 total = q25*0.25+q10*0.10+q5*0.05 escreva “O valor total em reais é: R$” + total Fim Agora em Java 22 Unidade: Conceito de Lógica Aplicada a Programas Relacionais Comparações só podem ser feitas entre objetos de mesma natureza, isto é, variáveis do mesmo tipo de dados. O resultado de uma comparação é sempre um valor lógico. Operador Comparação == Igual != ou <> Diferente < Menor <= Menor ou igual > Maior >= Maior ou igual Lógicos Operador Tipo Operação ou Binário Disjunção e Binário Conjunção não Unário negação Operadores Lógicos em Java Operador Operador ou || e && não ! Tabela Verdade A B A OU B A E B não A F F F F V F V V F V V F V F F V V V V F » OU basta que um dos seus operandos seja V para que o resultado seja V. » E é necessário que seus dois operandos tenham o valor lógico V para que o resultado seja V. 23 Prioridade entre os operadores Operador Operador Lógicos 4º Relacionais 3º Aritméticos 2º Parênteses 1º Expressões Aritméticas As expressões aritméticas são definidas pelo relacionamento existente entre variáveis, constantes numéricas e valores, por meio da utilização dos operadores aritméticos. Exemplo: Escreva um programa capaz de calcular o valor de ‘x’ em uma equação do segundo grau ax2 + bx + c = 0. Os valores de ‘a’, ‘b’ e ‘c’ devem ser informados pelo usuário. O programa não deve tratar as raízes complexas. A equação de Bhaskara é: 24 Unidade: Conceito de Lógica Aplicada a Programas Vamos fazer o algoritmo lembrando que neste exemplo não iremos tratar dos números complexos. Algoritmo equação real a, b, c, x1,x2 Início escreva “Digite o valor de a” leia a escreva “Digite o valor de b” leia b escreva “Digite o valor de c“ leia c x1=(-b+sqrt(b^2-4*a*c))/(2*a) x2=(-b-sqrt(b^2-4*a*c))/(2*a) escreva “x1 é igual a:” + x1 + “e x2 é igual a:” + x2 Fim. Em Java 25 Material Complementar Vídeos: Comandos de Entradas e Saídas - Expressões e Operadores https://youtu.be/G8haXi-EgSc - Acesso em: 15 de janeiro de 2018. Livros: Capítulo 3 - Programação com Sequência 3.5 - Os Operadores Aritméticos 3.6 - Expressões Aritméticas Capítulo 4 - Programação com Decisão 4.1 - Decisões, Condições e Operadores Relacionais 4.1.1 - Desvio Condicional Simples 4.1.2 - Desvio Condicional Composto 4.1.3 - Desvio Condicional Sequencial 4.1.4 - Desvio Condicional Encadeado 4.1.5 - Desvio Condicional por Seleção 4.2 - Operadores Lógicos 4.2.1 - Operador Lógico: E 4.2.2 - Operador Lógico: OU 4.2.3 - Operador Lógico: NÃO 4.3 - Divisibilidade: Múltiplos e Divisores 4.4 - Exercícios de Aprendizagem 4.5 - Exercícios de Fixação MANZANO, J. A. N. G.; OLIVEIRA, J. F. Estudo Dirigido de Algoritmos. 24ª ed São Paulo: Érica, 2010. WIRTH, N. Algoritmos e estruturas de dados. Rio de Janeiro: Ltc-Livros Técnicos e Científi cos, 1999. 26 Unidade: Conceito de Lógica Aplicada a Programas Referências ASCENCIO, A. F. G.; CAMPOS, E. A. V. Fundamentos da programação de computadores: algoritmos, Pascal, C/C++ e Java. 2ª ed. São Paulo: Pearson Education Brasil, 2010. E-BOOK. CHRISTOS, P.; UMESH, V. Algoritmos. Porto Alegre: Grupo A, 2011. E-BOOK. DEITEL, H. M. Java: como programar. 6ª ed. Porto Alegre: Bookman, 2003. E-BOOK. EDELWEISS, N.; GALANTE, R. Estruturas de dados. Porto Alegre: Grupo A, 2011. E-BOOK. FARRER, H. Algoritmos estruturados. 3ª ed. Rio de Janeiro: Ltc-Livros Técnicos e Científicos, 1999. FERREIRA, A. B. H. Dicionário aurélio da língua portuguesa. 5ª ed. Curitiba: Positivo, 2010. FORBELLONE, A. L. V.; EBERSPACHER, H. F. Lógica de programação: a construção de algoritmos e estrutura de dados. 3ª ed. São Paulo: Pearson Prentice Hall, 2008. FURGERI, S.JAVA 6 ensino didático: desenvolvendo e implementando aplicações. 2ª ed. São Paulo: Érica, 2009. GOODRICH, M. T.; TAMASSIA, R. Estruturas de dados e algoritmos em Java. Porto Alegre: Grupo A, 2011. E-BOOK. HORSTMANN, C. Conceitos de computação com Java. 5ª ed. Porto Alegre: Grupo A, 2009. E-BOOK. MANZANO, J. A. N. G. Algoritmos: lógica para desenvolvimento de programação. 24ª ed. São Paulo: Érica, 2010. OLIVEIRA, J. F.; MANZANO, J. A. N. G. Algoritmos: lógica para desenvolvimento de programação de computadores. 16ª ed. São Paulo: Érica, 2004. [Ver o conteúdo de Parte II – Técnicas Básicas de Programação – Cap. 3 – Tipo de Dados e Instruções Primitivas]. VILARIM, G. O. Algoritmos: programação para iniciantes. Rio de Janeiro: Ciência Moderna, 2004. Bibliografia Complementar WIRTH, N. Algoritmos e estruturas de dados. Rio de Janeiro: Ltc-Livros Técnicos e Científicos, 1999. 27 Anotações
Compartilhar