Logica Programação

September 27, 2017 | Author: coringa13 | Category: Algorithms, Programming Language, Logic, Computer Program, Variable (Computer Science)
Share Embed Donate


Short Description

modulo I - Curso de programação técnico de informática...

Description

Curso Técnico em Informática

Lógica de Programação

Robson Braga de Andrade Presidente da Confederação Nacional da Indústria

Rafael Lucchesi Diretor do Departamento Nacional do SENAI

Regina Maria de Fátima Torres Diretora de Operações do Departamento Nacional do SENAI

Alcantaro Corrêa Presidente da Federação da Indústria do Estado de Santa Catarina

Sérgio Roberto Arruda Diretor Regional do SENAI/SC

Antônio José Carradore Diretor de Educação e Tecnologia do SENAI/SC

Marco Antônio Dociatti Diretor de Desenvolvimento Organizacional do SENAI/SC

Confederação Nacional da Indústria Serviço Nacional de Aprendizagem Industrial

Curso Técnico em Informática

Lógica de Programação Helenilson Ricardo Kitzberger

Florianópolis/SC 2011

É proibida a reprodução total ou parcial deste material por qualquer meio ou sistema sem o prévio consentimento do editor.

Autor Helenilson Ricardo Kitzberger

Fotografias Banco de Imagens SENAI/SC http://www.sxc.hu/ http://office.microsoft.com/en-us/ images/ http://www.morguefile.com/ http://www.bancodemidia.cni.org.br/

Ficha catalográfica elaborada por Luciana Effting CRB14/937 - Biblioteca do SENAI/SC Florianópolis

K62l

Kitzberger, Helenilson Ricardo Lógica de programação / Helenilson Ricardo Kitzberger. – Florianópolis : SENAI/SC, 2011. 67 p. : il. color ; 28 cm. Inclui bibliografias. 1. Programação (Computadores). 2. Programação lógica. 3. Algoritmos. 4. Estruturas de dados (Computação). I. SENAI. Departamento Regional de Santa Catarina. II. Título. CDU 004.43

SENAI/SC — Serviço Nacional de Aprendizagem Industrial Rodovia Admar Gonzaga, 2.765 – Itacorubi – Florianópolis/SC CEP: 88034-001 Fone: (48) 0800 48 12 12 www.sc.senai.br

Prefácio Você faz parte da maior instituição de educação profissional do estado. Uma rede de Educação e Tecnologia, formada por 35 unidades conectadas e estrategicamente instaladas em todas as regiões de Santa Catarina. No SENAI, o conhecimento a mais é realidade. A proximidade com as necessidades da indústria, a infraestrutura de primeira linha e as aulas teóricas, e realmente práticas, são a essência de um modelo de Educação por Competências que possibilita ao aluno adquirir conhecimentos, desenvolver habilidade e garantir seu espaço no mercado de trabalho. Com acesso livre a uma eficiente estrutura laboratorial, com o que existe de mais moderno no mundo da tecnologia, você está construindo o seu futuro profissional em uma instituição que, desde 1954, se preocupa em oferecer um modelo de educação atual e de qualidade. Estruturado com o objetivo de atualizar constantemente os métodos de ensino-aprendizagem da instituição, o Programa Educação em Movimento promove a discussão, a revisão e o aprimoramento dos processos de educação do SENAI. Buscando manter o alinhamento com as necessidades do mercado, ampliar as possibilidades do processo educacional, oferecer recursos didáticos de excelência e consolidar o modelo de Educação por Competências, em todos os seus cursos. É nesse contexto que este livro foi produzido e chega às suas mãos. Todos os materiais didáticos do SENAI Santa Catarina são produções colaborativas dos professores mais qualificados e experientes, e contam com ambiente virtual, mini-aulas e apresentações, muitas com animações, tornando a aula mais interativa e atraente. Mais de 1,6 milhões de alunos já escolheram o SENAI. Você faz parte deste universo. Seja bem-vindo e aproveite por completo a Indústria do Conhecimento.

Sumário Conteúdo Formativo Apresentação

9

28 Unidade de estudo 3 Estruturas de Seleção

11

12 Unidade de estudo 1 Introdução à Lógica de Programação 13

Seção 1 - Conceitos

14

Seção 2 - Formas de representação

16

Seção 3 - Teste de mesa

16

Seção 4 - Ambiente

20 Unidade de estudo 2 Algoritmos

21

Seção 1 - Tipos de dados

23

Seção 2 - Constantes e variáveis

23

Seção 3 - Expressões

25

Seção 4 - Funções

26

Seção 5 - Atribuição

27

Seção 6 - Comandos de entrada e saída

48 Unidade de estudo 6 Estruturas Heterogêneas

29

Seção 1 - Introdução

49

Seção 1 - Introdução

29

Seção 2 - Comando Se

49

Seção 2 - Registros

31

Seção 3 - Ninhos de comando Se

32

Seção 4 - Comando Escolha

54 Unidade de estudo 1 Funções

34 Unidade de estudo 4 Estruturas de Repetição 35

Seção 1 - Introdução

36

Seção 2 - Comando Enquanto

37

Seção 3 - Comando Repita

38

Seção 4 - Comando Para

40 Unidade de estudo 5 Estruturas Homogêneas 41

Seção 1 - Introdução

42

Seção 2 - Vetores

45

Seção 3 - Matrizes

55

Seção 1 - Introdução

55

Seção 2 - Utilização de subprogramas

56

Seção 3 - Argumentos e parâmetros

57

Seção 4 - Funções

58

Seção 5 - Procedimentos

58

Seção 6 - Âmbito de variáveis

59

Seção 7 - Argumentos de subprogramas

61

Seção 8 - Erros mais comuns

Finalizando

62

Referências

64

8

CURSOS TÉCNICOS SENAI

Conteúdo Formativo Carga horária da dedicação Carga horária: 120 horas

Competências Desenvolver algoritmos e programas utilizando técnicas, lógica e linguagens de programação para soluções computacionais.

Conhecimentos ▪▪ Estruturas de controle e repetição. ▪▪ Estruturas de dados heterogêneas (registros). ▪▪ Estruturas de dados homogêneas (vetores, matrizes). ▪▪ Ferramentas de auxílio à aprendizagem/interpretador de portugol. ▪▪ Fluxogramas. ▪▪ Funções, procedimentos, métodos. ▪▪ Matrizes. ▪▪ Metodologias de testes (teste de mesa). ▪▪ Programação estruturada. ▪▪ Pseudocódigo. ▪▪ Tipos de dados. ▪▪ Variáveis e constantes. ▪▪ Vetores. ▪▪ Operadores aritméticos, relacionais e lógicos, expressões lógicas e aritméticas.

Habilidades ▪▪ Aplicar a lógica de programação. ▪▪ Aplicar linguagens para construção de algoritmos. ▪▪ Estruturar soluções lógicas. ▪▪ Elaborar documentação do algoritmo. ▪▪ Executar testes manuais e automatizados. ▪▪ Aplicar abstração.

LÓGICA DE PROGRAMAÇÃO

9

Atitudes ▪▪ Organização e zelo na utilização de equipamentos. ▪▪ Foco no conteúdo trabalhado. ▪▪ Acesso a sítios relacionados ao tema trabalhado. ▪▪ Organização e limpeza dos ambientes coletivos. ▪▪ Dedicação e empenho nas atividades curriculares e extracurriculares. ▪▪ Capacidade de abstração. ▪▪ Trabalho em equipe. ▪▪ Apresentação de novas soluções para situações-problema. ▪▪ Cumprimento de prazos. ▪▪ Análise crítica de suas produções.

10

CURSOS TÉCNICOS SENAI

Apresentação Seja bem-vindo à unidade curricular de Lógica de Programação! O objetivo principal é demonstrar técnicas para a resolução de problemas e, consequentemente, automatização de tarefas. Você sabia que o aprendizado da lógica é essencial para a formação de um bom programador? É verdade. E os conhecimentos sobre lógica servirão de base para o aprendizado de todas as linguagens de programação, estruturadas ou não. De um modo geral, esses conhecimentos serão de suma importância, pois ajudarão no cotidiano para o desenvolvimento de um raciocínio rápido. Nesta unidade curricular você estudará os conceitos básicos de lógica de programação, as formas de representação e, principalmente, os algoritmos, que auxiliam na estruturação de uma sequência lógica para resolução de problemas e automatização de tarefas. Você irá aprender de que forma utilizamos os algoritmos para a tomada de decisões, repetições e manipulação de informações. Esperamos que, por meio desse conteúdo, você conheça em detalhes o que é e como aplicar a lógica de programação em sua vida profissional. Bons estudos!

Helenilson Ricardo Kitzberger Helenilson Ricardo Kitzberger é graduado em Sistemas de Informação pelo Centro Universitário de Jaraguá do Sul. Atualmente trabalha como analista de sistemas e também é proprietário de uma empresa de desenvolvimento de software para gestão empresarial. Atua também como pesquisador e professor no SENAI de Jaraguá do Sul, onde ministra aulas no curso Técnico em Informática.

LÓGICA DE PROGRAMAÇÃO

11

Unidade de estudo 1 Seções de estudo Seção 1 – Conceitos Seção 2 – Formas de representação Seção 3 – Teste de mesa Seção 4 – Ambiente

Introdução à Lógica de Programação Seção 1 Conceitos

Você já ouviu falar em lógica de programação, sequência lógica, instruções, algoritmos e programas? Esses são alguns dos conceitos elementares de lógica que você verá a seguir. Em relação aos algoritmos, você verá que, relacionados à lógica, eles resultam em programação. Vamos iniciar? Aperte os cintos e embarque no mundo da lógica de programação!

Lógica de programação Para Forbellone e Eberspächer (2005, p. 12), a lógica pode ser relacionada com a “correção do pensamento”. Correção de pensamento? Isso mesmo! Uma de suas preocupações é determinar quais operações são válidas e quais não são, fazendo análises das formas e leis do pensamento.

A lógica de programação significa o uso correto das leis do pensamento e de processos de raciocínio e simbolização formais na programação de computadores, objetivando a racionalidade e o desenvolvimento de técnicas que cooperem para a produção de soluções logicamente válidas e coerentes, que resolvam com qualidade os problemas que se deseja programar.

A lógica de programação é necessária para pessoas que desejam trabalhar com o desenvolvimento de sistemas e programas. Ela permite definir a sequência lógica para o desenvolvimento. Lógica de programação é a técnica de encadear pensamentos para atingir determinado objetivo.

E sequência lógica, você sabe o que é? Então acompanhe!

Sequência lógica Os pensamentos que você estudou na lógica de programação podem ser descritos como uma sequência de instruções, que devem ser seguidas para cumprir uma determinada tarefa. Sequência lógica são passos executados até atingir um objetivo ou solução de um problema.

Em informática, porém, instrução é a informação que indica a um computador uma ação elementar a executar. Convém ressaltar que uma ordem isolada não permite realizar o processo completo. Para isso, é necessário um conjunto de instruções colocadas em ordem sequencial lógica. Por exemplo, para fazer uma omelete de batatas, é preciso colocar em prática uma série de instruções: descascar as batatas, bater os ovos, fritar as batatas etc. É evidente que essas instruções precisam ser executadas em uma ordem adequada – não se pode descascar as batatas depois de fritá-las. Dessa maneira, uma instrução tomada de forma isolada não tem muito sentido. Para se obter o resultado, é preciso colocar em prática o conjunto de todas as instruções, na ordem correta.

Instruções Na linguagem comum, entende-se por instruções um conjunto de regras ou normas definidas para a realização ou emprego de algo.

Instruções são um conjunto de regras ou normas definidas para a realização ou emprego de algo. Em informática, é o que indica a um computador uma ação elementar a executar.

LÓGICA DE PROGRAMAÇÃO

13

Algoritmos Um algoritmo é formalmente uma sequência finita de passos que levam à execução de uma tarefa. É possível pensar em algoritmo como uma receita, uma sequência de instruções que dão cabo de uma meta específica. Essas tarefas não podem ser redundantes nem subjetivas na sua definição. Elas devem ser claras e precisas. Como exemplos de algoritmos existem os algoritmos das operações básicas (adição, multiplicação, divisão e subtração) de números reais decimais. Outros exemplos seriam os manuais de aparelhos eletrônicos, que explicam passo a passo como utilizá-los. Até mesmo as coisas mais simples podem ser descritas por sequências lógicas. Vamos a um exemplo: como chupar bala. Observe!

▪▪ ▪▪ ▪▪ ▪▪

Os programas de computadores nada mais são do que algoritmos escritos em uma linguagem de computador (Pascal, C, Cobol, Fortran, Visual Basic, entre outras) e que são interpretados e executados por uma máquina; no caso, um computador. Com essa interpretação rigorosa, um programa é, por natureza, muito específico e rígido em relação aos algoritmos da vida real. Com esses conceitos, certamente agora você estará pronto para seguir para a próxima seção. Vamos lá!

Seção 2

Formas de representação

Retirar o papel.

As formas mais comuns de representação de algoritmos são as seguintes. Acompanhe!

Chupar a bala.

▪▪ Descrição narrativa: os algo-

Pegar a bala.

Jogar o papel no lixo.

Algoritmo é a descrição de um conjunto de ações que, obedecidas, atingem o objetivo esperado.

Segundo Lopes e Garcia (2002), algoritmo não é a solução de um problema, pois, se assim fosse, cada problema teria um único algoritmo. Algoritmo é um conjunto de passos que levam à solução de um determinado problema e, em geral, são muitos os caminhos que levam à solução.

14

Programas

CURSOS TÉCNICOS SENAI

ritmos são expressos diretamente em linguagem natural.

▪▪ Fluxograma convencional: é

uma representação gráfica que emprega formas geométricas padronizadas para indicar as diversas ações e decisões que devem ser executadas para resolver o problema.

▪▪ Pseudolinguagem: emprega uma linguagem intermediária entre a linguagem natural e uma linguagem de programação para descrever os algoritmos.

Mas veja bem! Não existe consenso entre os especialistas sobre qual seria a melhor maneira de representar um algoritmo. Atualmente, a maneira mais comum de representar algoritmos é por meio de uma pseudolinguagem ou pseudocódigo. Essa forma de representação tem a vantagem de fazer com que o algoritmo seja escrito de uma maneira próxima de uma linguagem de programação de computadores.

Descrição narrativa Como ilustração de algoritmo em linguagem natural, considera a seguinte receita. Providencie manteiga, ovos, 2 Kg de massa etc.

▪▪ Misture os ingredientes. ▪▪ Despeje a mistura na forma

de bolo.

▪▪ ▪▪ ▪▪ ▪▪ ▪▪

Leve a forma ao forno. Espere 20 minutos. Retire a forma do forno. Deixe esfriar. Prove.

Essa forma de representação é bastante conhecida, por utilizar a linguagem natural, porém tem algumas desvantagens, como imprecisão, pouca confiabilidade e principalmente ser extensa, pois escreve-se muito para dizer pouca coisa.

Fluxograma convencional Essa representação de algoritmos emprega várias formas geométricas para descrever cada uma das possíveis ações durante a execução dos algoritmos. Existem algumas formas geométricas empregadas normalmente e que você poderá ver na figura seguinte. Cada uma das formas se aplica a uma determinada ação, como está indicado. Existem outras formas que podem ser aplicadas, no entanto, essas formas serão suficientes para os exemplos que serão mostrados nesta unidade curricular.

Figura 1: Formas geométricas

Como primeiro exemplo de um algoritmo descrito por meio de fluxogramas, considere o exemplo do algoritmo para decidir o que fazer em um dia de domingo. Veja a próxima figura!

Figura 2: Fluxograma de um domingo

LÓGICA DE PROGRAMAÇÃO

15

A representação gráfica por meio de fluxograma é uma das ferramentas mais conhecidas na representação de algoritmos, utiliza um padrão mundial e diz muito mais do que palavras. Porém, sua utilização reflete em pouca atenção aos dados, não oferecendo recursos para descrevê-los, e complica-se na medida em que o algoritmo cresce. Você sabe o que é uma pseudolinguagem? Vamos descobrir juntos!

Pseudolinguagem Esse modo de representar algoritmos procura empregar uma linguagem que esteja o mais próxima possível de uma linguagem de programação de computadores de alto nível, mas evitando definir regras de construção gramatical muito rígidas. A ideia é usar as vantagens do emprego da linguagem natural, mas restringindo o escopo da linguagem. Normalmente, essas linguagens são versões ultrarreduzidas de linguagens de alto nível do tipo Pascal ou C. Ficou mais claro agora? Então veja a seguir um exemplo de pseudolinguagem. algoritmo“CALCULA_DOBRO” var varNum, varDobro : inteiro inicio leia (varNum) varDobro ← 2 * varNum Escreva (varDobro) fimalgoritmo

16

CURSOS TÉCNICOS SENAI

O uso da pseudolinguagem, ou linguagem algorítmica, tem inúmeras vantagens, como utilização do português como base e a passagem quase imediata do algoritmo para uma linguagem de programação qualquer. No entanto, não tem padrão definido, dificultando a leitura em alguns momentos.

Seção 3

Teste de mesa Após desenvolver um algoritmo é preciso testá-lo. Esse teste é chamado de TESTE DE MESA, que significa seguir as instruções do algoritmo de maneira precisa para verificar se o procedimento utilizado está correto ou não. Mas como esse teste deve ser feito? Veja na tabela seguinte um exemplo de teste de mesa que valida o algoritmo CALCULA_DOBRO, apresentado na seção anterior.

Seção 4 Ambiente

O computador Os computadores podem ser usados de forma eficiente na solução de certos tipos de problemas. Os problemas que suportam tratamento por computador em geral envolvem grandes quantidades de dados ou são problemas de natureza complexa, exigindo a execução de um grande número de passos para alcançar a solução. Basicamente, são problemas na área de processamento de dados e na área científica.

Tabela 1: Teste de mesa

varNum

varDobro

2

4

6

12

Nesse exemplo deve-se atribuir valores a “varNum”, executar o cálculo descrito no algoritmo e avaliar se “varDobro” vai resultar como na tabela anterior.

O computador é uma ferramenta que permite a realização do processamento automático (ou eletrônico) de dados.

Mas o que é processamento de dados? Define-se por processamento de dados qualquer atividade que, utilizando informações (ou dados), efetua transformações para obter novas informações (ou dados) como resultado.

Figura 3: Processamento de dados

Porém, a tarefa desempenhada pelos computadores é apenas parte do processo de solução de problemas. As etapas na solução de problemas são:

▪▪ entendimento do problema; ▪▪ criação de uma sequência de operações (ou ações) que, quando exe-

cutadas, produzem a solução para o problema;

▪▪ execução dessa sequência de operações; ▪▪ verificação da adequação da solução. As etapas de entendimento do problema, criação de sequência de ações e verificação da adequação da solução são tarefas desempenhadas por pessoas. Já a execução das operações pode ser desempenhada por computadores. Os computadores têm a capacidade de executar processos complicados e com grande quantidade de informações de forma rápida e confiável.

Programação Programação é a sequência de planejamento, projeto, escrita e testes de instruções desempenhados pelo computador. É uma arte e uma ciência. Arte porque existem muitas maneiras de se realizar o trabalho de programação. Existe espaço para uma considerável dose de criatividade. É também uma ciência, porque existem algumas regras que devem ser seguidas, porque é necessário o uso de lógica e porque existem alguns métodos rigorosos de programação que asseguram a eficiência, economia e a utilidade dos programas gerados. Para tornar o trabalho de programação mais fácil, divida sistematicamente em partes menos complexas (essa técnica denomina-se “dividir para conquistar”). E você sabe quando um programa é confiável?

Um programa é considerado confiável quando consegue fazer com que o computador cumpra com o objetivo proposto. Os programas construídos devem ser eficazes, realizando a tarefa definida de forma eficiente, utilizando os melhores meios para realizá-la. O maior problema na construção de programas é a complexidade. Essa complexidade representa a quantidade de situações diferentes que um problema pode apresentar e que devem ser previstas na solução do mesmo. Portanto, ao se construir um programa, o objetivo principal é vencer a complexidade do problema a ser solucionado.

LÓGICA DE PROGRAMAÇÃO

17

Mas o que fazer para trabalhar com essa complexidade?

Você poderá dividir a programação em duas fases distintas. Acompanhe!

Figura 4: Fases da programação

Para a fase da programação você terá as seguintes etapas:

▪▪ Modelização (ou resolução) do problema: determinação do modelo de solução para o problema proposto na forma de um algoritmo computacional. Assim, a elaboração de um algoritmo é o primeiro passo para a preparação de um programa de computador. Esse algoritmo deve ser independente da linguagem de programação que será utilizada. ▪▪ Implementação: é a transformação (ou codificação) do algoritmo

em alguma linguagem de programação adequada ao modelo elaborado. Linguagem de programação? O que é isso? Veja a seguir!

Linguagens de programação Linguagem é uma maneira de comunicação que segue uma forma e uma estrutura com significado interpretável. Portanto, linguagem de programação é um conjunto finito de palavras, comandos e instruções, escritos com o objetivo de orientar a realização de uma tarefa pelo computador. Logicamente, a linguagem utilizada pelos indivíduos no cotidiano é diferente da linguagem utilizada pela máquina. A máquina trabalha somente com códigos numéricos (linguagem de máquina), baseados nos números 0 e 1 (sistema binário), que representam impulsos elétricos, ausente e presente. Assim, qualquer linguagem de programação deve estar situada entre dois extremos: o da linguagem natural do homem (muito clara, porém lenta) e o da linguagem de máquina (muito rápida, porém complexa).

18

CURSOS TÉCNICOS SENAI

Esse é o conceito de nível de linguagem: alto nível para as mais próximas da linguagem humana; baixo nível para as mais semelhantes à linguagem de máquina.

Tradutores Para que um computador possa “entender” um programa escrito em uma linguagem de alto nível, torna-se necessário um meio de tradução entre a linguagem utilizada no programa e a linguagem de máquina. Esse meio pode ser de dois tipos: compilador e interpretador. Saiba mais sobre cada um deles!

Compilador Traduz o programa escrito em linguagem de alto nível (programa-fonte) para um programa equivalente escrito em linguagem de máquina (programa-objeto).

Interpretador Traduz e envia para execução instrução por instrução e o programa permanece na forma de fonte.

Aqui você finaliza a primeira unidade do curso, onde conheceu conceitos de lógica de programação, sequência lógica, instruções, algoritmos e programas. Viu que os algoritmos podem ser representados por descrição narrativa, fluxograma convencional e pseudolinguagem, além do teste de mesa e do ambiente. Agora você está pronto para seguir para a próxima etapa: o estudo da seção seguinte, cujo tema será algoritmos. Então, reúna motivação e comprometimento e vá em busca de novos saberes!

LÓGICA DE PROGRAMAÇÃO

19

Unidade de estudo 2 Seções de estudo Seção 1 – Tipos de dados Seção 2 – Constantes e variáveis Seção 3 – Expressões Seção 4 – Funções Seção 5 – Atribuição Seção 6 – Comandos de entrada e saída

Algoritmos Seção 1

Tipos de dados Como você já estudou, um algoritmo é constituído de uma sequência de instruções a serem seguidas para a obtenção de soluções a algum problema. Nessa solução, são manipulados diversos dados. Esses dados podem ser os apresentados pelo problema – os dados intermediários – que são gerados durante a execução do algoritmo, ou os dados que representam a solução do problema. Com isso, pode-se concluir que os dados manipulados dentro de um algoritmo podem ser classificados em vários tipos, com suas características e operações. Cada linguagem de programação tem sua própria classificação.

Inteiro Toda e qualquer informação numérica que pertença ao conjunto dos números inteiros (negativo, nulo ou positivo). Exemplos: 39; 0; -56 entre outros.

Real Toda e qualquer informação numérica que pertença ao conjunto dos números reais (negativo, nulo ou positivo, inteiro ou fracionário). Exemplos: -4, 3; 0, 35; 1,23

Caractere São caracterizadas como tipos caracteres as sequências contendo letras, números e símbolos especiais. Uma sequência de caracteres deve ser indicada entre aspas (“ ”). Esse tipo de dado é também conhecido como alfanumérico, string, literal ou texto. Exemplos: “Rua Alfa, 52 Apto 1”; “Fone: 3276-9988”; “04387-456”; “ “; “7”.

Lógico Todo dado a ser tratado em um algoritmo deve pertencer a algum tipo, que irá determinar o domínio de seu conteúdo. Os tipos mais comuns de dados são conhecidos como tipos primitivos de dados. São eles: inteiro, real, caractere e lógico. Quer saber o que cada um deles representa? Vamos adiante!

São caracterizados como tipos lógicos os dados com valores verdadeiros e falsos, sendo que podem representar apenas um desses dois valores. Ele é chamado por alguns de tipo booleano, devido à contribuição do filósofo e matemático inglês George Boole na área da lógica matemática. A tabela que você verá a seguir resume os tipos de dados mais comuns e sua definição nas linguagens utilizadas no decorrer do material. Veja! Tabela 2: Tipos de dados

Tipo

Exemplo

VisuAlg

Java

Inteiro

2 | 45 | 100

inteiro

int

Real

2,456 | 101,19

real

float

Caractere

“A” | “4” | “Teste”

caractere

char / string

Lógico

Verdadeiro | Falso

logico

true / false

LÓGICA DE PROGRAMAÇÃO

21

Seção 2

Constantes e variáveis

Uma variável é composta por dois elementos básicos:

▪▪ conteúdo: valor da variável e

identificador;

Constantes Constante é um determinado valor fixo que não se modifica ao longo do tempo durante a execução de um programa. Conforme o seu tipo, a constante é classificada como sendo inteira, real, caractere e lógica. Exemplo: constPI = 3.14

Variáveis Variável é um objeto (uma posição frequentemente localizada na memória), capaz de armazenar um valor ou expressão. As variáveis só “existem” em tempo de execução, sendo associadas a “nomes”, chamadas identificadores, durante a criação dos algoritmos. Em relação à variável, estamos tratando de uma região de memória (do computador) previamente identificada, cuja finalidade é armazenar os dados ou informações de um programa por um determinado espaço de tempo. Para que você entenda melhor, pense que a memória do computador se organiza tal qual um armário com várias divisões. Cada divisão é identificada por um endereço diferente em uma linguagem que o computador entende. Assim, o computador armazena os dados nessas divisões, sendo que em cada divisão só é possível armazenar um dado e, toda vez que o computador armazenar um dado em uma dessas divisões, o dado que antes estava armazenado é eliminado. Mas lembre-se de que o conteúdo pode ser alterado, mas somente um dado pode ser armazenado por vez naquela divisão.

22

CURSOS TÉCNICOS SENAI

▪▪ nome: dado à variável para possibilitar sua utilização e localização. O conteúdo de uma variável pode ser de vários tipos: inteiro, real, caractere ou lógico, entre outros. Normalmente, quando se ensina algoritmo, trabalha-se com os quatro tipos citados. Uma vez definidos o nome e o tipo de uma variável, não será possível alterá-los no decorrer do algoritmo. Por outro lado, o conteúdo de uma variável é um objeto de constante modificação no decorrer do programa, de acordo com o fluxo de execução do mesmo. Em algoritmos, as variáveis serão definidas no início, por meio de um comando definido conforme o exemplo seguinte. algoritmo “CALCULA_DOBRO” var varNum, varDobro : inteiro inicio fimalgoritmo

Existem duas variáveis declaradas. Uma é a “varNum” e a outra é a “varDobro”, ambas possuindo o mesmo tipo de dado, no caso inteiro. Como pode ser visto, “varNum” e “varDobro” são os nomes das variáveis, e é por meio desses nomes que é possível alterar e resgatar o valor presente nela.

Quer saber o que são variáveis globais e variáveis locais? Então vá em frente para saber mais!

Variáveis globais Uma variável global é uma variável acessível em todos os escopos de um algoritmo. O mecanismo de interação com variáveis globais é chamado ambiente global. Mas fique atento! O uso de variáveis globais é geralmente considerado inadequado, pois seu conteúdo pode ser potencialmente modificado de qualquer local e qualquer parte de um código pode depender dele.

Variáveis locais Variáveis locais são aquelas declaradas no início de um subalgoritmo. São visíveis, ou seja, podem ser utilizadas somente pelo subalgoritmo onde foram declaradas. Outros subalgoritmos ou mesmo o algoritmo principal não pode utilizá-la. Variáveis locais somente permanecem válidas durante a execução da função ou procedimento e, em seguida, são reinicializadas em zero.

Cada vez que a função é chamada, os valores gerados anteriormente não estão disponíveis. E você sabe qual a diferença entre constantes e variáveis? Acompanhe!

Constantes X variáveis A diferença primordial entre esses dois conceitos é que constantes são valores inalterados e variável é uma entidade capaz de manifestar diferenças em valor. Diz-se que a variável possui qualquer valor dentro de um campo determinado. Atua como uma “gaveta”, onde se pode guardar qualquer valor, desde que o tipo seja respeitado.

Seção 3 Expressões

Para que você entenda melhor, é possível ligar o conceito de expressão ao conceito de expressão (ou fórmula) matemática, onde um conjunto de variáveis e constantes numéricas relaciona-se por meio de operadores, compondo uma fórmula que, uma vez avaliada, resulta em um valor. As expressões dividem-se em:

▪▪ aritméticas; ▪▪ relacionais; ▪▪ lógicas. Saiba o que significa cada uma delas.

Aritméticas Expressões aritméticas são aquelas que apresentam como resultado um valor numérico que pode ser um número inteiro ou real, dependendo dos operandos e operadores. Observe os operadores aritméticos na tabela seguinte.

Tabela 3: Operadores aritméticos

Operadores

Simbologia

Prioridade

+

3

Subtração

-

3

Multiplicação

*

2

Divisão

/

2

Módulo

%

2

Exponenciação

^

1

Radiciação

//

1

Soma

Mas o que representa a prioridade? A prioridade indica a ordem em que cada operação deverá ser executada. Quanto menor o número, maior a prioridade da operação. Observe que o operador de multiplicação é o caractere asterisco, um símbolo que é empregado na maioria das linguagens para essa operação. Expressões aritméticas podem manipular operandos de dois tipos: reais e inteiros. Se todos os operandos de uma expressão são do tipo inteiro, então a expressão fornece como resultado um número inteiro. Caso pelo menos um dos operandos seja real, o resultado será real. Isso pode parecer estranho a princípio, mas esse procedimento reflete a forma como as operações são executadas pelos processadores. Por exemplo, o resultado da operação 1/5 é 0, porque os dois operadores são inteiros. Caso a expressão tivesse sido escrita como 1.2/5, o resultado 0.24 seria o correto. A seguir temos exemplos de algumas expressões aritméticas. Confira!

▪▪ A + B - C ▪▪ A / B ▪▪ 3.14 * (A + B)

Um ponto importante é a ordem de avaliação das expressões. As prioridades que você viu na tabela anterior não são suficientes para resolver todas as situações. Para isso, você precisa conhecer algumas regras adicionais. Veja a seguir!

▪▪ Deve-se observar primeiro a prioridade dos operadores, conforme a tabela anterior. Ou seja, operadores com maior prioridade (números menores) são avaliados primeiramente. Caso haja empate na ordem de prioridade, deve-se resolver a expressão da esquerda para a direita. ▪▪ Parênteses servem para mudar

a ordem de prioridade de execução das operações. Quando houver parênteses dentro de parênteses, as expressões dentro dos mais internos são avaliadas primeiro.

Ficou claro até aqui? Para entender melhor, observe alguns exemplos que mostram como essas regras são aplicadas. Considere as seguintes variáveis:

▪▪ A = 2 ▪▪ B = 4 ▪▪ C = 1

LÓGICA DE PROGRAMAÇÃO

23

Vamos então analisar expressões com essas variáveis e seus resultados.

▪▪ ▪▪ ▪▪ ▪▪

A*B-C A * (B - C) B+A/C+5 (B + A) / (C + 5)

A primeira expressão tem como resultado o valor 7, como era de se esperar. Na segunda expressão, a ordem de avaliação foi alterada pelos parênteses e primeiro é feita a subtração e o resultado passa a ser 6. A primeira operação na terceira expressão é a divisão que tem maior prioridade. Nesse caso, o resultado final é 11. Na última expressão as somas são realizadas primeiro e, por último, a divisão, ficando o resultado igual a 1.

Para entender melhor, considere alguns exemplos que mostram como é possível utilizar os operadores relacionais. Considere as seguintes variáveis:

▪▪ Não: uma expressão “não» inverte o valor da expressão ou condição; se verdadeira, inverte para falsa e vice-versa.

▪▪ A = 5 ▪▪ B = 3

tem resultado verdadeiro se seus dois operandos lógicos forem diferentes e falso, se forem iguais. Os resultados das operações lógicas são sempre valores lógicos (verdadeiro ou falso). Para trabalharmos adequadamente com operadores lógicos, temos que conhecer a tabela verdade para cada um dos operadores. Tabela verdade? Isso mesmo! Uma tabela verdade é o conjunto de todas as possibilidades combinatórias entre os valores das variáveis lógicas, conforme você verá nas tabelas seguintes.

Vamos então analisar as expressões com essas variáveis e seus resultados. Tabela 5: Expressões com variáveis e resultados

Expressão

Resultado

A=B

Falso

A B

Verdadeiro

A>B

Verdadeiro

A= B

Verdadeiro

A

Menor que

<

Maior ou igual a

>=

Menor ou igual a varNum2 entao escreva (“Maior valor é o primeiro”) senão escreva (“Maior valor é o segundo”) fimse fimalgoritmo

Como você pode perceber, nesse algoritmo é determinado o maior valor entre dois valores. Se os dois números forem iguais, o algoritmo informará que o “varNum2” é o maior valor, o que obviamente não é verdade. Assim, esse algoritmo não está correto. Note que nesse problema há três situações possíveis: “varNum1” maior que “varNum2”, “varNum1” menor que “varNum2” e os dois com valores iguais. Utilizando um único comando Se, conseguimos avaliar apenas duas situações. Para levar em conta as três situações, outro comando de seleção faz-se necessário. Quer saber a seleção para esse problema? Então veja o exemplo seguinte.

LÓGICA DE PROGRAMAÇÃO

31

algoritmo “MAXIMO” var varNum1, varNum2 : inteiro inicio leia (varNum1) leia (varNum2) se varNum1 > varNum2 entao escreva (“Maior valor é o primeiro”) senão se varNum1 < varNum2 escreva (“Maior valor é o segundo”) senão escreva (“Os dois valores são iguais”) fimse fimse fimalgoritmo

Note que, nessa nova versão, caso o valor da expressão “varNum1 > varNum2” seja falso, o fluxo de execução irá executar o que estiver dentro do Senão do primeiro Se. Dentro do Senão do primeiro Se, um outro Se é executado, sendo então verificado se o conteúdo de “varNum1” é menor que conteúdo de “varNum2”. Veja que o comando de seleção que está colocado dentro do Senão do primeiro Se, só será executado se ao executar o primeiro Se, a expressão for falsa. Em seguida, é feita a verificação se o conteúdo de “varNum1” é menor que o conteúdo de “varNum2”. Caso positivo, será definido que o conteúdo de “varNum2” é maior, senão definirá que ambos são iguais. E você já ouviu falar no Comando Escolha? Mesmo que não saiba o que é fique tranquilo, pois esse será o tema da seção seguinte. Até lá!

Seção 4

Comando Escolha Quando um conjunto de valores discretos precisa ser testado e ações diferentes são associadas a esses valores, estamos diante de uma seleção com ninhos de comando Se. Como essa situação é bastante frequente na construção de algoritmos que dependem de alternativas, utilizaremos uma estrutura específica para esses casos: a seleção de múltipla escolha. O comando Escolha é uma alternativa para os comandos Se aninhados, deixando o algoritmo com uma estrutura melhor.

32

CURSOS TÉCNICOS SENAI

Suponha que o conceito de um aluno seja determinado em função de sua nota. Suponha também que essa nota seja um valor inteiro na faixa de 1 a 4. O problema está na seguinte situação: dada a nota, determine o respectivo conceito. Considere ainda os conceitos que você verá na tabela seguinte. Tabela 10: Notas e conceitos

Nota

Conceito

1

Insuficiente

2

Regular

3

Bom

4

Ótimo

Para resolver o problema, veja a seguir o algoritmo por meio da utilização de Se´s aninhados.

algoritmo “CONCEITO” var varNota : inteiro varConceito : caractere inicio leia (varNota) se varNota = 1 entao varConceito ← “Insuficiente” senão se varNota = 2 varConceito ← “Regular” senão se varNota = 3 varConceito ← “Bom” senão varConceito ← “Ótimo” fimse fimse fimse escreva (varConceito) fimalgoritmo

Perceba que, no algoritmo anterior, vários testes são feitos sobre o conteúdo da variável “varNota”. Em vez de escrevermos os vários testes utilizando Se´s aninhados e considerando que todos os testes são realizados sobre uma mesma expressão, é possível utilizar um comando alternativo, que tem essa função. Trata-se do comando Escolha, cuja função é tornar possível a escolha de uma alternativa, entre as várias disponíveis. Usando o comando Escolha, o problema de determinação do conceito de um aluno pode ser resolvido conforme apresentado no próximo algoritmo. Acompanhe com atenção!

Com isso, ao executar o comando Escolha no algoritmo anterior, será avaliada cada uma das opções de valores de “varNota”. Portanto, veja que a opção 1, por exemplo, significa valor igual a 1. Assim, se o valor de “varNota” for igual ao da comparação, essa opção será satisfeita. As opções serão sempre avaliadas na ordem em que aparecem e será executada a instrução relativa à primeira opção que satisfazer o valor de “varNota”. Caso nenhuma das opções satisfaça o valor da expressão do comando Escolha, serão executadas as instruções colocadas no Outrocaso. Quantos comandos importantes você aprendeu nesta unidade de estudo, não é mesmo? O comando Se, os ninhos de comando Se e o comando Escolha certamente serão muito úteis para seus cálculos! Existem muitos outros comandos que você aprenderá no decorrer desta unidade curricular. Então não perca tempo. Aplique seus conhecimentos praticando e siga com dedicação e disciplina!

algoritmo “CONCEITO” var varNota : inteiro varConceito : caractere inicio leia (varNota) escolha varNota caso 1 varConceito ← “Insuficiente” caso 2 varConceito ← “Regular” caso 3 varConceito ← “Bom” outrocaso varConceito ← “Ótimo” fimescolha escreva (varConceito) fimalgoritmo

LÓGICA DE PROGRAMAÇÃO

33

Unidade de estudo 4 Seções de estudo Seção 1 – Introdução Seção 2 – Comando Enquanto Seção 3 – Comando Repita Seção 4 – Comando Para

Estruturas de Repetição Seção 1

Introdução Existem situações em que, para obter-se a solução do problema, é necessário fazer com que um conjunto de instruções seja executado várias vezes. Esta unidade de estudo tem por objetivo apresentar e discutir estruturas que possibilitem a execução de um conjunto de instruções por várias vezes, com o programador escrevendo este conjunto apenas uma vez. Em detalhes, uma estrutura de repetição é uma estrutura de desvio do fluxo de controle que realiza e repete diferentes ações dependendo se uma condição é verdadeira ou falsa, em que a expressão é processada e transformada em um valor booleano. Estão associadas a uma estrutura de repetição uma condição (também chamada “expressão de controle” ou “condição de parada”) e um bloco de código: verifica-se a condição e, caso seja verdadeira, o bloco é executado. Após o final da execução do bloco, a condição é verificada novamente e, caso ela ainda seja verdadeira, o código é executado novamente.

Mas atenção! Caso o bloco de código nunca modifique o estado da condição, observe que a estrutura será executada para sempre. E essa será uma situação chamada laço infinito. Da mesma forma, é possível especificar uma estrutura em que o bloco de código modifica o estado da condição, mas esta é sempre verdadeira. Algumas linguagens de programação especificam ainda uma palavra reservada para sair da estrutura de repetição de dentro do bloco de código, “quebrando” a estrutura. Também é oferecida por algumas linguagens uma palavra reservada para terminar uma iteração específica do bloco de código, forçando uma nova verificação da condição. Ficou claro até aqui? Esta unidade de estudo é uma das mais importantes para o seu estudo! Você notará que a partir desse ponto começará a ter mais dificuldade na resolução dos algoritmos em função da dificuldade de entender onde as estruturas de repetição deverão ser colocadas para atender às exigências dos enunciados. Portanto, continue atento!

Vamos a um exemplo. Suponha que um determinado clube social tenha registrado a quantidade de latas de cerveja vendidas no último carnaval. Considerando que cada lata foi vendida a R$ 1,40, deseja-se saber o total arrecadado no último carnaval, com a venda das latas de cerveja. Obviamente que para esse problema tem-se como entrada a quantidade de latas vendidas e deseja-se saber, como solução do problema, qual o total arrecadado. Veja a seguir o respectivo algoritmo. algoritmo “QUANTIDADE_ ARRECADADA” var varQuantidadeVendida : inteiro varValorArrecadado : real inicio leia (varQuantidadeVendida) varValorArrecadado ← varQuantidadeVendida * 1,40 escreva (varValorArrecadado) fimalgoritmo

LÓGICA DE PROGRAMAÇÃO

35

Como você pôde perceber, o problema apresentado consiste em determinar o total arrecadado com a venda de latas de cerveja no último carnaval. Se desejarmos determinar o total arrecadado em cada um dos último três carnavais, o algoritmo poderia ser escrito da forma seguinte: algoritmo “QUANTIDADE_ARRECADADA” var varQuantidadeVendida : inteiro varValorArrecadado : real inicio // Total arrecadado no último ano leia (varQuantidadeVendida) varValorArrecadado ← varQuantidadeVendida * 1,40 escreva (varValorArrecadado) // Total arrecadado no penúltimo ano leia (varQuantidadeVendida) varValorArrecadado ← varQuantidadeVendida * 1,40 escreva (varValorArrecadado) // Total arrecadado no antepenúltimo ano leia (varQuantidadeVendida) varValorArrecadado ← varQuantidadeVendida * 1,40 escreva (varValorArrecadado) fimalgoritmo

Observe no algoritmo anterior que a solução do problema é a mesma para cada ano. Assim, as instruções para cada um dos anos podem ser as mesmas. Veja também que, se você quisesse determinar o total arrecadado em cada um dos últimos 30 anos, usando a mesma metodologia, teríamos que escrever 30 vezes o mesmo conjunto de instruções, o que obviamente se tornaria impraticável. Considerando que para cada um dos casos as instruções a serem executadas são as mesmas, é muito mais adequado que se escreva um conjunto de instruções apenas uma vez, e que instrua o computador para que repita a execução das instruções por um determinado número de vezes. Os laços de repetição também são conhecidos por sua tradução em inglês: loops ou looping. Ganham esse nome por lembrarem uma execução finita em círculos, que depois segue seu curso normal.

Nesta unidade, você estudará três tipos de estrutura de repetição: com teste no início (comando Enquanto), com teste no final (comando Repita) e automática (comando Para). Ficou curioso para saber o que cada um dos comandos representa? Vamos iniciar com o comando Enquanto. Em frente!

Seção 2

Comando Enquanto O comando Enquanto é uma estrutura recomendada quando o número de repetições for desconhecido, sendo necessária uma chave (um teste) para interromper a repetição.

36

CURSOS TÉCNICOS SENAI

Consiste em uma estrutura de controle do fluxo de execução que permite repetir diversas vezes um mesmo trecho do algoritmo, porém, sempre verificando antes de cada execução se é permitido executar o mesmo trecho.

Para realizar a repetição com teste no início, utilizamos a estrutura Enquanto, que permite que um bloco ou uma ação primitiva seja repetido enquanto uma determinada Condição for verdadeira. O modelo genérico desse tipo de repetição é o que você verá a seguir. algoritmo “ENQUANTO” inicio enquanto faca // Trecho a ser repetido fimenquanto fimalgoritmo

Preste atenção! Quando o resultado de Condição for falso, o comando de repetição é abandonado. Se já da primeira vez o resultado é falso, os comandos não são executados nenhuma vez, o que representa a característica principal desse modelo de repetição. Com isso, é possível concluir que em algum momento do processo de repetição das instruções internas ao comando Enquanto será necessário que a expressão lógica assuma o valor falso, pois, do contrário, o fluxo jamais sairá de dentro do Enquanto e o conjunto de instruções será repetido infinitas vezes. Para que você entenda melhor, veja a seguir um exemplo de análise de saldo bancário. Se você quiser um algoritmo que faça a análise para dez contas, pode escrever a solução conforme o exemplo.

algoritmo “ANALISE_BANCARIA” var varSaldo : real varConta, varContador : inteiro inicio varContador ← 0 enquanto varContador < 10 faca varContador ← varContador + 1 leia (varConta) leia (varSaldo) se varSaldo < 0 entao escreva (varConta, “ está estourada”) senao escreva (varConta, “ está normal”) fimse fimenquanto fimalgoritmo

Observe que no algoritmo anterior utilizamos uma variável “varContador”, que inicialmente assume o valor zero. Na primeira vez que o fluxo de execução chega ao Enquanto, a expressão lógica “varContador < 10” tem o valor verdadeiro. Assim, são executados todos os comandos internos do Enquanto. Observe também que no interior do comando Enquanto colocamos o comando “varContador ß varContador + 1”, o qual fará com que o conteúdo da variável “varContador” seja incrementado de uma unidade toda vez que o mesmo for executado. Mas o que é incrementar nesse tipo de cálculo? Incrementar é o mesmo que somar um valor constantemente. O ponteiro dos segundos de um relógio é um legítimo contador de segundos, que sempre vai incrementando 1 a cada instante de tempo, equivalente a 1 segundo. Quando atinge 60 segundos, é a vez do ponteiro dos minutos ser incrementado e assim por diante.

E o comando Repita, você sabe qual sua função? Esse será o assunto da próxima seção!

Seção 3

Comando Repita O comando Repita é uma estrutura recomendada quando o número de repetições for desconhecido, sendo necessária uma chave (um teste) para interromper a repetição. Sua diferença em relação ao Enquanto é que ele testa ao final, executando o trecho pelo menos uma vez. Essa estrutura também precisa de uma condição para interromper a repetição. Veja um modelo genérico: algoritmo “REPITA” inicio repita // Trecho a ser repetido ate fimalgoritmo

Quando o fluxo de execução chegar ao Repita, automaticamente serão executados os comandos internos ao Repita. Chegando no ate, será avaliada a condição. Se a condição for falsa, então o fluxo de execução retornará ao Repita, e os comandos internos serão novamente executados. Quando o fluxo de execução chegar no ate e a condição for verdadeira, a execução sairá do Repita. O algoritmo seguinte utiliza o Repita para determinar o melhor aluno de uma turma. Observe com atenção!

LÓGICA DE PROGRAMAÇÃO

37

algoritmo “MELHOR_ALUNO” var varNota, varMaximo, varQuantidade, varContador : inteiro varNome, varMelhor : caractere inicio escreval (‘Entre com a quantidade de alunos’) leia (varQuantidade) varMaximo ← -1 varContador ← 0 repita escreval (“Entre com o nome do aluno”) leia (varNome) repita escreval (“Digite um valor de 0 a 10”) leia (varNota) ate (varNota >=0) e (varNota varMaximo entao varMaximo ← varNota varMelhor ← varNome fimse varContador ← varContador + 1 ate varContador = varQuantidade fimalgoritmo

Ficou mais fácil com o exemplo, não é mesmo? Como você pôde ver, a cada vez que for executado o conjunto de instruções internas ao primeiro comando Repita, um aluno é processado. Ou seja, é solicitado o nome e a nota de cada aluno. Cada nota de um aluno é comparada com o conteúdo da variável “varMaximo” e, se o conteúdo de “varNota” for maior que “varMaximo”, então é possível concluir que essa nota é a maior entre as que já foram processadas. Portanto, o conteúdo de “varMaximo” deve ser alterado para o valor de “varNota”. Como o algoritmo se propõe a determinar também qual o nome do melhor aluno, então toda vez que for encontrada uma nota maior que o conteúdo de “varMaximo”, o nome do aluno é salvo na variável “varMelhor”. Note que, a cada aluno processado, o conteúdo da variável “varContador” é incrementado em uma unidade, resultando em algum momento do processo de repetição, que a expressão “varContador = varQuantidade” assumirá o valor verdadeiro, fazendo com que a repetição seja encerrada. Ainda no algoritmo, o segundo comando Repita faz com que o valor lido para nota do aluno esteja no intervalo de 0 a 10. Veja que este Repita só é encerrado se a expressão “(varNota >= 0) e (varNota
View more...

Comments

Copyright ©2017 KUPDF Inc.
SUPPORT KUPDF