Baixe o app para aproveitar ainda mais
Prévia do material em texto
Paradigmas de linguagens de programação Aula 8: Comandos e modularização Apresentação Percebemos, ao longo das duas últimas aulas, a importância de um entendimento apropriado sobre os tipos de dados e a forma como as linguagens de programação (LPs) implementam suas possíveis expressões. Destacaremos nesta aula que elas também executam comandos que serão traduzidos em ações ao hardware, ou seja, controlam o computador. Pontuaremos ainda que tais comandos são típicos de linguagens imperativas, sendo interpretados como se fossem ordens ao PC. Também conheceremos os comandos primitivos realizados pelas LPs, desde os de atribuição, que possuem diferentes recursos, até os de desvios incondicionais e escapes. Objetivos Listar as classi�cações e os tipos de comandos de uma LP; Identi�car a implementação dos comandos de atribuição nas LPs; Declarar a inclusão de comandos de entrada e saída e de desvio incondicional nas LPs. Classi�cações de uma linguagem de programação Nosso campo de estudos volta-se para os comandos conforme a classi�cação das linguagens imperativas e orientadas a objeto, já que a implementação dos métodos das classes usa os comandos destes tipos de linguagem. Sabemos que as imperativas concentram-se em comandos de atribuição de valores a variáveis e estruturas que controlam o �uxo de execução do programa por meio da simulação do funcionamento da máquina de Von Neumman, base da arquitetura dos computadores. Figura 1: Representação da arquitetura de Von Neumman. | Fonte: Wikipedia. Uma LP imperativa precisa dos seguintes comandos para ser minimamente efetiva em seus objetivos: Atribuição Permite que os valores de variáveis sejam atualizados; Seleção Permite diferentes caminhos no �uxo de controle; Repetição Permite que comandos possam se repetir ao longo do programa. As LPs costumam oferecer algumas alternativas para esses tipos de comandos, além de outros que as complementam. Percebemos, assim, o poder deles para formar estruturas que controlam o hardware, passando-lhe as instruções necessárias a �m de que o programa atinja o seu objetivo. Comandos são classi�cados em: Clique nos botões para ver as informações. Não podem ser subdivididos em outros comandos. O comando primitivo mais relevante para uma LP imperativa é o comando de atribuição de valores a variáveis. a) Primitivos (ou simples) Os compostos podem sofrer essa subdivisão, possuindo outros comandos sob o seu controle (escopo de ação). b) Compostos (ou estruturados) Exemplo As diferentes implementações para os de repetição (iteração), que executam um ou mais comandos repetidamente, controlando o início e a parada da repetição. http://estacio.webaula.com.br/cursos/go0138/aula8.html javascript:void(0); Atenção! Aqui existe uma videoaula, acesso pelo conteúdo online Tipos de comandos Em 1990, Watt, em seu livro Programming languages: concepts and paradigms, classi�cou os comandos das LPs. Utilizaremos uma adaptação desta classi�cação, dividindo-os da seguinte maneira: Atribuições (primitivo); Entrada e saída (primitivo); Desvio incondicional (primitivo); Sequenciais (composto); Condicionais (composto); Iterativos (composto). Figura 2: Classificação dos comandos das LPs. | Fonte: (WATT, 1990) Comandos de atribuição Estes comandos atribuem o valor a uma variável, que pode ser uma constante, o resultado de uma expressão, outra variável ou o resultado da execução de uma função. Cada LP usa um símbolo para designar a operação de atribuição. Exemplo C, C++ e Java, entre outros, usam o símbolo =. Outras LPs, como Ada, Pascal e Modula-2, usam :=, pois consideram que a igualdade deve ser usada como operador relacional, podendo confundir um programador aprendiz. Avaliando a expressão Num = Num+1, ela, do ponto de vista matemático, parece um absurdo, mas, como atribuição, simboliza a adição de uma unidade a Num. Supondo que Num seja igual a 6, a expressão Num = Num + 1 retornará o valor 7 para Num. Segundo Sebesta (2018), há diferentes formas de uma LP implementar uma atribuição. Apresentaremos a seguir cinco maneiras de fazê-lo: 1. Atribuição simples; 2. Atribuição múltipla; 3. Atribuição condicional; 4. Atribuição composta; 5. Atribuição unária; Leiamos, com atenção, o texto a seguir com o detalhamento de cada atribuição. Leitura Leia o texto Formas de atribuição. Comandos de entrada e saída Os comandos de entrada e saída implementados nas LPs permite que sejam obtidos dados dos dispositivos de entrada (mouse, teclado, arquivos, scanner e outros exemplos) e exibidos nos dispositivos de saída (tela, impressora etc.). Leia o texto, a seguir, com mais detalhes sobre ambos. Leitura Comandos de entrada e comandos de saída. Atenção! Aqui existe uma videoaula, acesso pelo conteúdo online Desvios incondicionais A programação estruturada trouxe consigo algumas diretrizes ao programador para deixar a escrita de programas mais legíves duráveis. Uma delas é evitar a todo o custo o uso de comandos de desvios incondicionas, ou seja, a instrução que vai desviar o �uxo de controle para o local indicado. A�nal, isso pode desestruturar a lógica do programa. Entre as implementaçõs possíveis de desvio incondicional em uma LP, destacam-se: Desvios irrestritos; Escapes. Leiamos, com atenção, sobre as implementações citadas. javascript:void(0); javascript:void(0); Leitura Desvios irrestritos e escapes. Atenção! Aqui existe uma videoaula, acesso pelo conteúdo online Atividade 1. Sobre conceitos, tipos e classi�cações de comandos, avalie as assertivas: I. Os comandos de uma LP são classi�cados em simples e complexos. II. Os comandos de atribuição e de entrada e saída são simples. III. Os comandos de decisão e repetição são compostos ou estruturados. IV. Os comandos primitivos não podem ser subdivididos, sendo atômicos. Já os complexos possuem um ou mais comandos sob sua ação. Com base em sua análise, marque a opção que apresenta apenas as assertivas corretas. a) II e III b) II c) III d) I, II e III e) I, II, III e IV javascript:void(0); 2. Sobre os comandos de atribuição implementados pelas LPs, acompanhe e avalie a execução de um trecho de código na linguagem C: int main(void) { int iQtdSegundos, iHoras, iMinutos, iSegundos; printf("\nEntre com o valor em segundos:"); scanf("%d", &iQtdSegundos); /* divisao de inteiros */ iHoras = iQtdSegundos / 3600; iMinutos = (iQtdSegundos - (iHoras*3600)) / 60; iSegundos = (iQtdSegundos - (iHoras/3600)) % 60; printf("\nHora convertida %02d:%02d:%02d", iHoras, iMinutos, iSegundos); return 0; } Diga qual a �nalidade do programa. Considerando que seu dado de entrada seja 1850, quais serão as saídas dele? 3. No que se refere exclusivamente às expressões compostas, avalie as assertivas a seguir: I. A atribuição sempre é a associação de um valor a uma e somente uma variável. II. A diferença entre as duas atribuições à variável b em: b=a++ e b=++a é que, naquela, “a” é atribuída à variável “b” e, em seguida, incrementada de uma unidade, enquanto nesta atribuição o valor de “a” é incrementado de uma unidade e depois atribuído a “b”. III. A atribuição soma+= num equivale à soma=soma+num, ou seja, a variável soma é incrementada de num. IV. Em todas as LPs, o comando de atribuição é o mesmo e representado pelo símbolo “=”. Está correto apenas o que se a�rma em: a) I, II, III e IV b) II e III c) II d) I, II e III e) III 4. Leia as duas assertivas a seguir: I. O desvio condicional deve ser usado sempre que possível... porque II. O desvio incondicional desloca a execução para qualquer parte do programa especi�cado por um rótulo. Analisando a relação de causa e efeito entre as assertivas I e II, responda: a) As duas assertivas são verdadeiras, e a II justifica a I. b) As duas assertivas são verdadeiras, mas a II não justifica a I. c) As duas assertivas são falsas. d) A assertiva I é verdadeira; a II, falsa. e) A assertiva I é falsa; a II, verdadeira. Notas Comandos1 Comandos são instruções do programa cujo objetivo é atualizaro estado das variáveis em memória e/ou controlar o �uxo de execução de um programa. Título modal 1 Lorem Ipsum é simplesmente uma simulação de texto da indústria tipográ�ca e de impressos. Lorem Ipsum é simplesmente uma simulação de texto da indústria tipográ�ca e de impressos. Lorem Ipsum é simplesmente uma simulação de texto da indústria tipográ�ca e de impressos.Referências BR-C. Comando exit. Disponível em: http://www.br-c.org/doku.php?id=exit. Acesso em: 28 ago. 2019. BR-C. Comando return. Disponível em: http://www.br-c.org/doku.php?id=return. Acesso em: 28 ago. 2019. GHEZZI, C.; JAZEYERI, M. Conceitos de linguagens de programação. 2. ed. Rio de Janeiro: Campus; 1987. MDN WEB DOCS. Operadores de atribuição. Disponível em: https://developer.mozilla.org/pt- BR/docs/Web/JavaScript/Reference/Operators/Assignment_Operators. Acesso em: 28 ago. 2019. SEBESTA, R. W. Conceitos de linguagem de programação. 11. ed. Porto Alegre: Bookman, 2018. TUCKER, A. B. Programação: princípios e paradigmas. 2. ed. Porto Alegre: AMGH, 2010. VAREJÃO, F. M. Linguagem de programação: conceitos e técnicas. Rio de Janeiro: Elsevier, 2004. WATT, D.A. Programming languages: concepts and paradigms. New York: Prentice-Hall, 1990. WEB DROPS. Java – o operador de atribuição composto. 25 out. 2007. Disponível em: https://webdrops.wordpress.com/2007/10/25/java-o-operador-de-atribuicao-composto/. Acesso em: 28 ago. 2019. Próxima aula Comandos compostos ou estruturados implementados pelas LPs. Explore mais Operadores de atribuição;; Compostos de Python;; Lei da criminalidade informática (Lei nº 109/91);; Java – o operador de atribuição composto;; Conceitos �nais do For e comandos Break e Continue – laços de repetições;; Comando Exit.; javascript:void(0); javascript:void(0); javascript:void(0); javascript:void(0); javascript:void(0); javascript:void(0);
Compartilhar