61
1 Lógica de Programação ESCOLA Lógica de Programação

Lógica de Programação - rosalbamonteiro.com.brrosalbamonteiro.com.br/arquivos/logica_programacao.pdf · com programação, ... (Clipper, C, Pascal, Delphi) e sua documentação

  • Upload
    buidat

  • View
    238

  • Download
    4

Embed Size (px)

Citation preview

Page 1: Lógica de Programação - rosalbamonteiro.com.brrosalbamonteiro.com.br/arquivos/logica_programacao.pdf · com programação, ... (Clipper, C, Pascal, Delphi) e sua documentação

1

Lógica de Programação

E S C O L A

Lógica de Programação

Page 2: Lógica de Programação - rosalbamonteiro.com.brrosalbamonteiro.com.br/arquivos/logica_programacao.pdf · com programação, ... (Clipper, C, Pascal, Delphi) e sua documentação

2

Escola Alcides Maya - Primeiro MóduloSumário

Lógica de Programação1 INTRODUÇÃO ............................................................................................................................... 41.1 Definições básicas .......................................................................................................................................................... 41.2 Necessidade do uso da lógica ........................................................................................................................................ 41.3 Uso da lógica no desenvolvimento de programas .......................................................................................................... 41.4 Diferenciação de nomenclaturas .................................................................................................................................... 52 INTRODUÇÃO À LÓGICA .......................................................................................................... 62.1 Princípios de resolução de problemas ............................................................................................................................ 62.2 Particularidades entre lógicas ........................................................................................................................................ 62.2.1 Técnica Modular ......................................................................................................................................................... 72.2.2 Portugês Estruturada ................................................................................................................................................... 73 Técnicas Básicas de Programação ................................................................................................. 83.1 Tipos de Informação ...................................................................................................................................................... 83.2 Tipos de Dados ............................................................................................................................................................... 83.3 O Uso de Variáveis ......................................................................................................................................................... 83.4 O Uso de Constantes ...................................................................................................................................................... 93.5 Os Operadores Aritméticos ............................................................................................................................................ 93.6 As Expressões Aritméticas ou Fórmulas Matemáticas ................................................................................................. 93.7 Instruções Básicas ...................................................................................................................... 103.7.1 Entrada, Processamento e Saída ............................................................................................................................... 103.8 Exercícios de Aula ...................................................................................................................................................... 133.9 Exercícios de Fixação .................................................................................................................................................. 154 Estruturas de Controle – A Tomada de Decisões ....................................................................... 164.1 Desvio Condicional Simples ........................................................................................................................................ 174.1.1 Exercício de Aula ...................................................................................................................................................... 184.2 Operadores Relacionais .............................................................................................................................................. 184.3 Desvio Condicional Composto ................................................................................................................................... 184.3.1 Exercício de Aula ...................................................................................................................................................... 194.4 Exercícios de Fixação .................................................................................................................................................. 204.5 Desvio Condicional Encadeado ................................................................................................................................... 214.5.1 Exercício de Aula ...................................................................................................................................................... 224.6 Exercícios de Fixação .................................................................................................................................................. 234.7 Operadores Lógicos ..................................................................................................................................................... 234.7.1 Operador Lógico: .e. ................................................................................................................................................. 244.7.1.1 Exercício de Aula ................................................................................................................................................... 244.7.2 Operador Lógico: .ou. ............................................................................................................................................... 254.7.2.1 Exercício de Aula ................................................................................................................................................... 264.7.3 Operador Lógico: .não. ............................................................................................................................................. 274.7.3.1 Exercício de Aula ................................................................................................................................................... 274.8 Exercícios de Fixação .................................................................................................................................................. 29 5 Estruturas de Controle – Laços de Repetição ........................................................................... 325.1 Repetição do tipo: Teste Lógico no início do looping ................................................................................................. 335.1.1 Exercício de Aula ...................................................................................................................................................... 345.1.1.1 Exercícios de Fixação ............................................................................................................................................ 355.1.2 Exercícios de Fixação ............................................................................................................................................... 365.2 Repetição do tipo: Teste Lógico no fim do looping ..................................................................................................... 375.2.1 Exercício de Aula ...................................................................................................................................................... 375.2.1.1 Exercícios de Fixação ............................................................................................................................................ 385.2.2 Exercício de Aula ..................................................................................................................................................... 385.2.2.1 Exercícios de Fixação ............................................................................................................................................ 385.3 Repetição do tipo: Variável de Controle ...................................................................................................................... 395.3.1 Exercício de Aula ...................................................................................................................................................... 395.3.2 Exercícios de Fixação ............................................................................................................................................... 405.4 Exercícios de Fixação .................................................................................................................................................. 416 Estruturas de Dados Homogêneas I ............................................................................................ 426.1 Matrizes de uma dimensão ou vetores ......................................................................................................................... 43

Page 3: Lógica de Programação - rosalbamonteiro.com.brrosalbamonteiro.com.br/arquivos/logica_programacao.pdf · com programação, ... (Clipper, C, Pascal, Delphi) e sua documentação

3

Lógica de Programação6.2 Operações básicas com Matrizes de uma dimensão ................................................................................................... 446.2.1 Atribuição de uma Matriz ........................................................................................................................................ 456.2.2 Leitura de dados de uma Matriz ................................................................................................................................ 456.2.3 – Escrita dos dados de uma Matriz ........................................................................................................................... 456.3 Exercício de Aula ......................................................................................................................................................... 466.4 Exercícios de Fixação .................................................................................................................................................. 487 Estruturas de Dados Homogêneas II........................................................................................... 497.1 Matrizes com mais de uma dimensão .......................................................................................................................... 49 7.2 Operações básicas com matrizes de duas dimensões .................................................................................................. 507.2.1 – Atribuição de uma Matriz ...................................................................................................................................... 517.2.2 – Leitura de dados de uma Matriz ............................................................................................................................. 517.3 Exercício de Aula ......................................................................................................................................................... 527.4 Exercícios de Fixação ................................................................................................................. 538 Procedimentos e Funções ............................................................................................................. 54

Page 4: Lógica de Programação - rosalbamonteiro.com.brrosalbamonteiro.com.br/arquivos/logica_programacao.pdf · com programação, ... (Clipper, C, Pascal, Delphi) e sua documentação

4

Escola Alcides Maya - Primeiro Módulo1 iNTrodUção

1.1 Definições básicasMuitas pessoas gostam de falar ou julgar que possuem e sabem usar o raciocínio lógico, porém, quando

necessitam do mesmo, perdem esta linha de raciocínio, pois este depende de inúmeros fatores para completá-lo, tais como: calma, conhecimento, vivência, versatilidade, experiência, criatividade, ponderação, responsabilidade, entre outros.

Para usar a lógica, é necessário ter domínio sobre o pensamento, bem como saber pensar, ou seja, possuir a “Arte de Pensar”.

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.

1.2 Necessidade do uso da lógicaUsar a lógica é um fator a ser considerado por todos, principalmente pelos profissionais da área de tecnologia

de informação, ou seja, pelos profissionais de informática.Estes profissionais, no seu dia-a-dia dentro das organizações, têm a incumbência de solucionar problemas e

atingir os objetivos apresentados por seus usuários com eficiência e eficácia, utilizando recursos computacionais e/ou automatizados.

Neste treinamento vamos mostrar como desenvolver e aperfeiçoar melhor esta técnica, lembrando que para isto você deverá ser persistente e praticá-la constantemente, chegando à exaustão sempre que julgar necessário.

1.3 Uso da lógica no desenvolvimento de programasÉ comum aos bons programadores, na preparação de um novo programa, iniciar com um diagrama de

blocos para demonstrar sua linha de raciocínio lógico. Este diagrama também é chamado de fluxograma, e estabelece a seqüência de operações a se efetuar em um programa.

Esta técnica permite uma posterior codificação em qualquer linguagem de programação.A técnica mais importante no projeto de lógica de programas é chamada Programação Estruturada, a qual

consiste em uma Metodologia de Projeto, objetivando:

• Agilizar a codificação do programa;• Facilitar a depuração do programa;• Permitir a verificação de possíveis falhas;• Facilitar as alterações e atualizações dos programas.

E deve ser composta por quatro passos fundamentais:

• Escrever as instruções em seqüências lógicas;• Escrever instruções em grupos pequenos;• Distribuir módulos de programa entre diferentes programadores para que trabalhem sob a supervisão de

um programador sênior;• Revisar o trabalho executado, em reuniões regulares.

Page 5: Lógica de Programação - rosalbamonteiro.com.brrosalbamonteiro.com.br/arquivos/logica_programacao.pdf · com programação, ... (Clipper, C, Pascal, Delphi) e sua documentação

5

Lógica de Programação1.4 Diferenciação de nomenclaturas

Vamos identificar as diferenças entre as seguintes nomenclaturas:Fluxograma: é uma ferramenta usada e desenvolvida pelo profissional que está envolvido diretamente

com programação, tendo como objetivo descrever o método e a seqüência do processo dos planos num computador.

Português Estruturado: é uma ferramenta de representação textual de um determinado algoritmo computacional. Este método é utilizado com a finalidade de apresentar uma codificação simples que seja de fácil tradução para outras linguagens de programação de computador.

Algoritmo: é um processo de cálculo matemático ou de resolução de um grupo de problemas semelhantes. Pode-se dizer, também, que são regras formais para obtenção de um resultado ou da solução de um problema, englobando fórmulas de expressões aritméticas.

1.5 Formas de representação gráficaÉ uma maneira simples e concisa de representar dados sobre uma superfície plana, por meio de diferentes

formas, de modo a facilitar a visualização completa e imediata de dados ou fenômenos tabulados.

1.6 Simbologias básicasEstes são alguns dos símbolos mais utilizados ao longo dos anos pelos profissionais de Processamento de

Dados:

Terminal – símbolo utilizado como ponto para indicar o início e/ou fim do fluxo de um programaSeta de fluxo de dados – permite indicar o sentido do fluxo de dados.

Processamento – Símbolo ou bloco que se utiliza pra indicar cálculos a efetuar, atribuições de valores ou qualquer manipulação de dados que tenha um bloco específico para sua descrição.

Entrada e saída de dados – símbolo em função de um dispositivo qualquer de entrada ou saída de dados, como fornecedor de informações para processamento, gravação e outros.

Decisão – indica a decisão que deve ser tomada indicando a possibilidade de desvio para outros pontos do fluxo, dependendo do resultado de comparação e de acordo com situações variáveis.

Page 6: Lógica de Programação - rosalbamonteiro.com.brrosalbamonteiro.com.br/arquivos/logica_programacao.pdf · com programação, ... (Clipper, C, Pascal, Delphi) e sua documentação

6

Escola Alcides Maya - Primeiro Módulo

Conector – utilizado quando é preciso particionar o fluxograma. Quando ocorrer mais de uma partição, é colocada uma letra ou número dentro do símbolo de conexão para identificar os pares de ligação.

Conector – específico para indicar conexão do fluxo em outra página.

Módulo de sub-rotina

2 iNTrodUção À Lógica

2.1 Princípios de resolução de problemasNós programadores que somos solucionadores de problemas, devemos entender que problema é uma

questão que foge a uma determinada regra, ou melhor, é o desvio de um percurso, o qual impede de atingir com sucesso um determinado objetivo com eficiência e eficácia.

Portanto para resolver um problema de lógica usamos um procedimento de desenvolvimento para o fluxo de informações.

Vamos usar como exemplo uma Escola Técnica de Informática, em que o cálculo da média é realizado por quatro notas bimestrais que determinam a aprovação ou reprovação dos seus alunos. Considere que o valor da média deva ser maior ou igual a 7 para que ocorra a aprovação.

A primeira etapa apresenta um detalhamento no que se refere à entrada e saída, ou seja, deve-se entrar com as quatro notas bimestrais para se obter, como resultado, o cálculo da média e assim definir a aprovação ou reprovação do aluno.

A segunda etapa consiste em trabalhar o termo: “determinar a aprovação”. Para ser possível determinar algo, é necessário estabelecer uma condição. Assim sendo, uma condição envolve uma decisão a ser tomada segundo um determinado resultado. No caso, a média. Desta forma, a condição de aprovação: média maior ou igual a 7 deve ser considerada no algoritmo.

2.2 Particularidades entre lógicasComo um Arquiteto desenha e escreve especificações para descrever como uma construção de um edifício

deverá ser efetuada e o engenheiro de projeto desenvolve um esquema detalhado das atividades de construção, um especialista em informação desenvolve um plano, que será comunicado a outros, de como o problema de processamento de dados deve ser resolvido.

Para auxiliarmos na sua compreensão, mostraremos como estes conceitos de estruturas, bem como as particularidades de conexões e dos procedimentos entre o método lógico, encaixam-se ou não para resolução dos problemas de processamento de dados. A seguir, são apresentados alguns tipos de procedimentos individualmente.

Page 7: Lógica de Programação - rosalbamonteiro.com.brrosalbamonteiro.com.br/arquivos/logica_programacao.pdf · com programação, ... (Clipper, C, Pascal, Delphi) e sua documentação

7

Lógica de Programação2.2.1 Técnica Modular

Esta técnica deve ser elaborada como uma estrutura de partes independentes, denominada de módulos, cujo procedimento é controlado por um conjunto de regras, onde suas metas são as seguintes:

• Decompor o problema em partes independentes;• Dividir um problema complexo em problemas menores e mais simples;• Verificar a correção de um módulo de blocos, independentemente de sua utilização como uma unidade em

processo maior.

A modularização deve ser desenvolvida, se possível, em diferentes níveis. Ela pode ser utilizada para separar um problema em sistemas, um sistema em programas e um programa em módulos.

O modelo padrão de um módulo consiste em três partes: Entrada, Processamento e Saída.

Dados de Entrada

Processo de transformação

Dados de Saída

2.2.2 Portugês Estruturada

É uma técnica narrativa denominada pseudocódigo, também conhecida como português estruturado ou chamado por alguns de portugol.

Esta técnica de é baseada em uma PDL – Program Design Language (Linguagem de Projeto de Programação) e é utilizada como referência genérica para uma linguagem de projeto de programação, tendo como

finalidade mostrar uma notação para elaboração de algoritmos, os quais serão utilizados na definição, criação e desenvolvimento de uma linguagem computacional (Clipper, C, Pascal, Delphi) e sua documentação. A seguir, é apresentado um exemplo deste tipo de algoritmo:

início caractere: resultado; real: n1, n2, n3, n4; real: soma, media;

leia n1, n2, n3, n4;

soma n1 + n2 + n3 + n4; media soma / 4;

se ( media >= 7 ) então resultado “Aprovado”; senão resultado “Reprovado”; fim_se

escreva “Nota 1: “, n1; escreva “Nota 2: “, n2; escreva “Nota 3: “, n3; escreva “Nota 4: “, n4; escreva “Soma: “, soma; escreva “Média: “, media; escreva “Resultado: “, resultado;fim

Page 8: Lógica de Programação - rosalbamonteiro.com.brrosalbamonteiro.com.br/arquivos/logica_programacao.pdf · com programação, ... (Clipper, C, Pascal, Delphi) e sua documentação

8

Escola Alcides Maya - Primeiro Módulo

A diferença entre uma linguagem de programação de alto nível utilizada em computação e uma PDL é que esta não pode ser compilada em um computador.

3 TécNicas Básicas de ProgramaçãoA partir deste momento vamos ter um contato direto com a parte prática da Lógica de Programação.Na parte anterior tivemos uma introdução teórica básica de alguns pontos e desta parte em diante teremos um

contato mais com a aplicação prática dos algoritmos, testes de mesa e por fim a codificação em pseudocódigo: “Português estruturado”. Mas ainda são necessários alguns conceitos.

3.1 Tipos de InformaçãoAntes de iniciar o estudo de programação, é necessário considerar que um computador nada mais é do que

uma ferramenta utilizada para solucionar problemas que envolvam a manipulação de informações, sendo que essas informações classificam-se em dois tipos básicos: dados e instruções.

3.2 Tipos de DadosOs dados são representados pelas informações a serem tratadas (processadas) por um computador. Essas

informações estão caracterizadas por três tipos de dados, a saber: dados numéricos (inteiros e reais), dados caracteres e dados lógicos.

Tipo de Dado Descrição ExemplosInteiro São caracterizados como tipos inteiros os dados numéricos

positivos ou negativos, excluindo-se deste qualquer número fracionário.

350-56

Real São caracterizados como tipos reais os dados numéricos positivos, negativos e números fracionários.

351.2-45.897

Caracteres São caracterizados como tipos caracteres às seqüências contendo letras, números e símbolos especiais. Uma seqüência de caracteres deve ser indicada entre aspas (“”). Este tipo de dado é também conhecido como: alfanumérico, string, literal ou cadeia.

“PROGAMAÇÃO”,“Rua Alfa, 52 apto 1”“Fone: 574-9988”“90387-456”“77”

Lógicos São caracterizados como tipos lógicos os dados com valores verdadeiro e falso, sendo que este tipo de dado poderá representar apenas um dos dois valores. Ele também é chamado de tipo booleano. Para facilitar a citação de um dado do tipo lógico, fica declarado que estes deverão ser apresentados e delimitados pelo caractere ponto (.).

.Falso.

.F.

.Verdadeiro.

.V.

3.3 O Uso de VariáveisTem-se como definição de variável tudo aquilo que é sujeito a variações, que é incerto, instável ou inconstante.

E quando se fala de computadores, temos que ter em mente que o volume de informações a serem tratadas é grande e diversificado. Desta forma, os dados a serem processados serão bastante variáveis.

Todo dado a ser armazenado na memória de um computador deve ser previamente identificado, ou seja, primeiro é necessário saber qual o seu tipo para depois fazer o seu armazenamento adequado. Estando armazenado o dado desejado, ele poderá ser utilizado e manipulado a qualquer momento.

Page 9: Lógica de Programação - rosalbamonteiro.com.brrosalbamonteiro.com.br/arquivos/logica_programacao.pdf · com programação, ... (Clipper, C, Pascal, Delphi) e sua documentação

9

Lógica de ProgramaçãoPara utilizar o conceito de variável, imagine que a memória de um computador é um grande arquivo com

várias gavetas, sendo que cada gaveta pode armazenar apenas um único valor (Seja ele: numérico, lógico ou caractere). Se for um grande arquivo com várias gavetas você há de concordar que é necessário identificar com um nome a gaveta que se pretende utilizar. Desta forma o valor armazenado pode ser utilizado a qualquer momento.

O nome de uma variável é utilizado para sua identificação e posterior uso em um programa. Sendo assim, é necessário estabelecer algumas regras de utilização de variáveis:

• Nomes de uma variável poderão ser atribuídos com um ou mais caracteres;• O primeiro caractere do nome de uma variável deverá ser uma letra;• O nome de uma variável não poderá possuir espaços em branco;• Não pode ser uma palavra reservada a uma instrução de programa;• Não poderão ser utilizados outros caracteres a não ser letras e números.

São nomes válidos de variáveis: nomeusuario, nome_cliente, fone1, delta25, z4, entre outros.Devemos ainda considerar que dentro de um programa uma variável pode exercer dois papéis. Um de ação,

quando é modificada ao longo de um programa para apresentar um determinado resultado, e o segundo de controle, a qual poderá ser “vigiada” e controlada durante a execução de um programa.

3.4 O Uso de ConstantesTem-se como definição de constante tudo aquilo que é fixo ou estável. Existirão vários momentos em que este conceito deverá estar em uso. Por exemplo, o valor 1.23 da fórmula

seguinte é uma constante: resultado = entrada * 1.23

3.5 Os Operadores AritméticosTanto variáveis como constantes poderão ser utilizadas na elaboração de cálculos matemáticos, ou seja, na

elaboração de expressões aritméticas, desde que sejam estabelecidas como do tipo real ou inteira, e para que isto ocorra é necessário à utilização de operadores aritméticos.

Veja a seguir a tabela dos operadores aritméticos

Operador Operação Tipo de resultadoh Exponenciação Inteiro ou Real/ Divisão Real

Div Divisão Inteiro* Multiplicação Inteiro ou Real+ Adição Inteiro ou Real- Subtração Inteiro ou Real

3.6 As Expressões Aritméticas ou Fórmulas MatemáticasSerá muito comum trabalharmos com expressões aritméticas ou fórmulas matemáticas, uma vez que a maior

parte do trabalho computacional está relacionada com a utilização de cálculos. Estas expressões são definidas pelo relacionamento existentes entre variáveis e constantes numéricas por meio da utilização dos operadores aritméticos.

Considere a fórmula: area = PI . raio² para o cálculo da área de uma circunferência, em que estão presentes as variáveis área e raio, a constante PI (pi = 3.14159) e os operadores aritméticos de multiplicação e também a operação de potência, elevando o valor da variável raio ao quadrado.

As expressões aritméticas em computação são escritas de uma forma um pouco diferente da forma conhecida em matemática, por exemplo, a expressão: x = {43 . [55 : (30 + 2) ] } será escrita na forma computacional como: x (43 * (55 / (30 +2))).

Page 10: Lógica de Programação - rosalbamonteiro.com.brrosalbamonteiro.com.br/arquivos/logica_programacao.pdf · com programação, ... (Clipper, C, Pascal, Delphi) e sua documentação

10

Escola Alcides Maya - Primeiro MóduloPerceba que as chaves e colchetes são abolidos, utilizando-se em seu lugar apenas os parênteses. É também

substituído o sinal de (=) igual pelo sinal de () implicando ou atribuindo.O sinal de atribuição () é utilizado para indicar que o valor de uma expressão aritmética ou fórmula está

sendo armazenado em uma variável. No caso da fórmula para o cálculo da área de uma circunferência, ela poderia ser escrita da seguinte maneira: area 3.14159 * raio h2 ou area 3.14159 * raio * raio

3.7 iNsTrUções BásicasAs instruções são representadas pelo conjunto de palavras-chave de uma determinada linguagem de

programação, que tem por finalidade comandar o computador.Para a lógica de programação podemos utilizar o Português Estruturado.Agora teremos contato com algumas instruções como: início, fim, var, programa, enquanto, se, então,

senão, escreva, leia, etc.

3.7.1 Entrada, Processamento e SaídaPara criar um programa que seja executável dentro de um computador, deve-se ter em mente três pontos

de trabalho: a entrada de dados, o seu processamento e a saída deles. Sendo assim todo programa estará trabalhando com estes três conceitos.

O processo de execução de um programa ocorre após a entrada de dados com a instrução leia e a sua saída com a instrução escreva. O processamento será uma conseqüência da manipulação das variáveis de ação.

Uma entrada e uma saída poderão ocorrer dentro de um computador de diversas formas. Por exemplo, uma entrada poderá ser feita via teclado, modem, leitores óticos, disco, entre outros. Uma saída poderá ser feita em vídeo, impressora, disco, entre outras formas. Devido a esta grande variedade, nossos programas escritos em português estruturado farão menção às instruções leia e escreva.

Considere o seguinte exemplo de um problema: “Deverá ser criado um programa que efetue a leitura de dois valores numéricos. Faça a operação de soma entre os dois valores e apresente o resultado obtido”.

Note: Sempre estaremos diante de um problema, o qual deverá ser resolvido primeiro por nós, para que depois seja resolvido por um computador. O que queremos dizer é que primeiro você deve entender bem o problema, para depois buscar a sua solução dentro de um computador, ou seja, você deverá ensinar a máquina a resolver o seu problema, por meio de um programa. Desta forma, o segredo de uma boa lógica está na compreensão adequada do problema a ser solucionado.

Com relação ao problema proposto, deverá ser primeiro muito bem interpretado. Isto ocorre com o auxílio de uma ferramenta denominado algoritmo, que deverá estabelecer todos os passos necessários a serem cumpridos na busca de uma solução para um problema. Lembre-se de que um algoritmo é na verdade uma “receita” de como fazer.

Para tanto, observe a estrutura do algoritmo com relação ao problema da leitura dos dois valores (que não conhecemos e também não precisamos conhecer, pois neste caso utilizaremos duas variáveis para trabalhar estas incógnitas a e B) e a sua respectiva soma (conseqüência dos valores informados, a qual também é uma incógnita e depende dos valores fornecidos; utilizaremos para esta a variável X).

Algoritmo1 – Ler dois valores, no caso as variáveis a e B;2 – Efetuar a soma das variáveis a e B, atribuindo o seu resultado para a variável X;3 – Apresentar o valor da variável X após a operação de soma dos dois valores fornecidos

Perceba que o algoritmo é a interpretação passo a passo de um determinado problema. É como ter um problema matemático: “João foi à feira com R$ 20,00, comprou uma dúzia de laranjas por R$ 5,00. com quanto João voltou para casa?”. Na verdade, o que interessa não é o fato ocorrido com João e sim efetuar os cálculos necessários para se saber quanto sobrou na mão de João. Em processamento de dados é parecido, pois precisamos somente efetuar o levantamento das variáveis e saber o que fazer com elas.

Page 11: Lógica de Programação - rosalbamonteiro.com.brrosalbamonteiro.com.br/arquivos/logica_programacao.pdf · com programação, ... (Clipper, C, Pascal, Delphi) e sua documentação

11

Lógica de ProgramaçãoFLUXogramaCompletada a fase de interpretação do problema e da definição das variáveis a serem utilizadas, passa-se

para a fase de diagramação do algoritmo, que é o fluxograma.

Inicio

Ler ALer B

X <-- A + B

Escrever X

Fim

Figura 3.1 – Fluxograma para leitura, soma de dois valores e apresentação do resultado.

Observe a indicação de Início e Fim do fluxograma com o símbolo Terminal. Este símbolo deverá estar sempre presente, indicando o ponto de início e fim de um fluxograma. Note também a existência de uma seta na linha que liga um símbolo ao outro. Isto é necessário, pois desta forma sabe-se a direção que o processamento de um programa deverá seguir.

O símbolo retângulo significa Processamento e será utilizado para representar diversas operações, principalmente os cálculos matemáticos executados por um programa.

PorTUgUês esTrUTUradoPodemos utilizar outra forma de representação da lógica do programa, através de uma representação textual

chamada: Português Estruturado.A seguir escrevemos o programa nesta forma de representação:início inteiro: A, B, X;

leia A; leia B;

X A + B;

escreva X;fim

Page 12: Lógica de Programação - rosalbamonteiro.com.brrosalbamonteiro.com.br/arquivos/logica_programacao.pdf · com programação, ... (Clipper, C, Pascal, Delphi) e sua documentação

12

Escola Alcides Maya - Primeiro MóduloDesta forma, são utilizadas três variáveis: A, B e X, estabelecendo-se assim o seu respectivo tipo.Tendo relacionado todas as variáveis que serão utilizadas no programa, passa-se para a fase de montagem

do que está estabelecido no fluxograma, ou seja, de tudo que está relacionado entre os símbolos Terminal (Indicação de início e fim do fluxograma)

Observe que o bloco de instruções de programa, indicado entre as instruções início e fim é apresentado deslocado um pouco para a direita. Este estilo de escrita deve ser obedecido, para facilitar a leitura de um bloco de programa, recebendo o nome de endentação.

Após a leitura dos valores para as variáveis A e B, eles serão somados e atribuídos na variável X, a qual será apresentada com o valor da soma processada.

codiFicação em PascaLPara exemplificar vamos codificar o algoritmo que soma os números na linguagem Pascal:

program soma_num;var X : integer; A : integer; B : integer;begin readln (A); readln (B); X := A + B; writeln (X);end.

Depois de codificar o programa (escrever o programa em uma linguagem) você deve compilar o programa fonte.

O que significa compilar? Compilar é: “Transformar a linguagem fonte do programa em um programa executável”, ou seja, transformar o programa na linguagem de máquina.

Como compilamos? “Compilamos utilizando um programa especial que faz este trabalho”Observação: Se houver problemas de sintaxe, se você escreveu alguma instrução errada, o compilador não

irá gerar o programa executável, ele apenas irá emitir uma mensagem de erro de sintaxe.Se não houver erro na compilação, teremos o programa executável, também chamado de aplicativo, que será

utilizado para testar o programa, verificando se o mesmo faz o que o fluxograma determinou.Resumindo: Para fazer o computador resolver um problema qualquer temos que: 1 – Fazer o algoritmo do problema 2 – Codificar o programa em uma linguagem de programação 3 – Compilar este programa para verificar erros de sintaxe e criar o programa executável 4 – Testar o programa executável

Page 13: Lógica de Programação - rosalbamonteiro.com.brrosalbamonteiro.com.br/arquivos/logica_programacao.pdf · com programação, ... (Clipper, C, Pascal, Delphi) e sua documentação

13

Lógica de ProgramaçãocodiFicação em LiNgUagem cAgora vamos codificar o algoritmo que soma os números na linguagem C.main( ){int X;int A;int B;

scanf(“%d”, &A);scanf(“%d”, &B);

X = A + B;

printf(“%d”, X);}

Depois de codificar este programa, você deverá também compilar, para verificar possíveis erros de sintaxe, e testar o programa.

3.8 Exercícios de AulaAbaixo são apresentados exemplos que aplicam os conceitos até aqui estudados. Sendo assim, olhe

atentamente cada exemplo para perceber os seus detalhes. Trabalharemos apenas com o Português Estruturado, pois na disciplina de Fundamentos de Programação

você irá codificar o programa na linguagem C.

Primeiro eXemPLoDesenvolver a lógica para um programa que efetue o cálculo da área de uma circunferência, apresentando

a área calculada.aLgoriTmoPara efetuar o cálculo da área de uma circunferência é necessário conhecer a fórmula que executa este

cálculo sendo esta: A = pR², em que A é a variável que conterá o resultado do cálculo da área, p é o valor de pi (3.14159), sendo uma constante na fórmula e R o valor do raio. Sendo assim, basta estabelecer:

1 – Ler um valor para o raio, no caso a variável R;2 – Estabelecer que PI possua o valor 3,14159;3 – Efetuar o cálculo da área, elevando ao quadrado o valor de R e multiplicando por PI;4 – Apresentar o valor da variável A.

A fórmula para o cálculo da área passará a ser escrita como: A 3.14159 * Rh2 ou se você preferir poderá escrever da seguinte forma: A 3.14159 * R * R.

Page 14: Lógica de Programação - rosalbamonteiro.com.brrosalbamonteiro.com.br/arquivos/logica_programacao.pdf · com programação, ... (Clipper, C, Pascal, Delphi) e sua documentação

14

Escola Alcides Maya - Primeiro MóduloPorTUgUês esTrUTUradoinício real: A, R;

escreva “Digite o valor do raio: “; leia R;

A 3.14159 * R * R;

escreva “A área ´: “, A;fim

segUNdo eXemPLoConstruir um programa que efetue o cálculo do salário líquido de um professor. Para fazer este programa, você

deverá possuir alguns dados, tais como: valor da hora aula, número de horas trabalhadas no mês e percentual de desconto do INSS. Em primeiro lugar, deve-se estabelecer qual será o seu salário bruto para efetuar o desconto e ter o valor do salário líquido.

aLgoriTmo1 – Estabelecer a leitura da variável HT (Horas trabalhadas no mês);2 – Estabelecer a leitura da variável VH (valor hora aula);3 – Estabelecer a leitura da variável PD (Percentual de desconto de INSS);4 – Calcular o salário bruto (SB), sendo este a multiplicação das variáveis HT e VH;5 – Calcular o total de desconto (TD) com base no valor de PD dividido por 100;6 – Calcular o salário líquido (SL), deduzindo o desconto do salário bruto;7 – Apresentar os valores dos salários bruto e líquido: SB, TD e SL.

PorTUgUês esTrUTUradoinício inteiro: HT; real : VH, PD, TD, SB, SL ;

escreva “Digite a quantidade de horas trabalhadas: “; leia HT; escreva “Digite o valor da hora: “; leia VH; escreva “Digite o percentual de desconto do INSS: “; leia PD;

SB HT * VH; TD ( PD / 100 ) * SB; SL SB – TD;

escreva “Valor do salário bruto....................: “, SB; escreva “Total de desconto de INSS...........: “ , TD; escreva “Valor do salário líquido..................: “ , SL;fim

Page 15: Lógica de Programação - rosalbamonteiro.com.brrosalbamonteiro.com.br/arquivos/logica_programacao.pdf · com programação, ... (Clipper, C, Pascal, Delphi) e sua documentação

15

Lógica de Programação3.9 Exercícios de Fixação

1 – Indique com um X quais dos dados abaixo são do tipo Inteiro.( ) 1000( ) “0”( ) “-900”( ) .Verdadeiro.( ) -456( ) 34( ) “Casa 8”( ) 0( ) .Falso.( ) –1.56

2 – Indique com um X quais dos dados abaixo são do tipo Real.( ) -678( ) “0.87”( ) “-9.12”( ) .Verdadeiro.( ) -456( ) –99.8( ) “Cinco”( ) 45.8976( ) .Falso.( ) –1.56

3 – Indique com um X quais dos dados abaixo são do tipo Literal.( ) 678( ) “0.87”( ) “-9.12”( ) “Verdadeiro”( ) -456( ) –99.8( ) “Cinco”( ) 45.8976( ) .Falso.( ) –1.56

4 – Indique com um X quais dos dados abaixo são do tipo Lógico.( ) -678( ) “0.87”( ) “-9.12”( ) .Verdadeiro.( ) -456( ) .V.( ) “Cinco”( ) .Falso.( ) .F.( ) –1.56

Page 16: Lógica de Programação - rosalbamonteiro.com.brrosalbamonteiro.com.br/arquivos/logica_programacao.pdf · com programação, ... (Clipper, C, Pascal, Delphi) e sua documentação

16

Escola Alcides Maya - Primeiro Módulo

5 Desenvolva os programas a seguir em português estruturado:a) Ler dois valores numéricos. Calcular e apresentar o produto entre eles.b) Ler três valores numéricos. Calcular e apresentar a média entre eles.c) Ler a idade de uma pessoa. Calcular e apresentar a existência desta pessoa em número de dias, em

número de horas, em número de minutos e em número de segundos.d) Ler uma temperatura em graus Fahrenheit e apresenta-la convertida em graus Celsius. A fórmula de

conversão é C ( F – 32 ) * ( 5 / 9 ), sendo F a temperatura em Fahrenheit e C a temperatura em Celsius.e) Calcular e apresentar o valor do volume de uma lata de óleo, utilizando a fórmula: VOLUME

3.14159 * RAIO h 2 * ALTURA.f) Efetuar o cálculo da quantidade de litros de combustível gasta em uma viagem, utilizando um automóvel

que faz 12 KM por litro. Para obter o cálculo, o usuário deve fornecer o tempo gasto (TEMPO) e a velocidade média (VELOCIDADE) durante a viagem. Desta forma, será possível obter a distância percorrida com a fórmula DISTÂNCIA TEMPO * VELOCIDADE. Possuindo o valor da distância, basta calcular a quantidade de litros de combustível utilizada na viagem com a fórmula LITROS_USADOS DISTÂNCIA / 12. Ao final o programa deve apresentar os valores da velocidade média (VELOCIDADE), tempo gasto na viagem (TEMPO), a distância percorrida (DISTÂNCIA) e a quantidade de litros (LITROS_USADOS) utilizada na viagem.

g) Efetuar o cálculo e a apresentação do valor de uma prestação em atraso, utilizando a fórmula PRESTAÇÃO VALOR + (VALOR * (TAXA / 100) * TEMPO).

h) Ler dois valores (inteiros, reais ou caracteres) para as variáveis A e B, e efetuar a troca dos valores de forma que a variável A passe a possuir o valor da variável B e a variável B passe a possuir o valor da variável A . Apresentar os valores trocados.

i) Elaborar um programa que calcule e apresente o volume de uma caixa retangular por meio da fórmula VOLUME COMPRIMENTO * LARGURA * ALTURA.

j) Efetuar a leitura de um número inteiro e apresentar o resultado do quadrado desse númerok) Elaborar um programa que leia as 4 notas escolares de um aluno. Calcular e apresentar a média do

aluno.l) Elaborar um programa que leia a idade de duas pessoas. Calcular e apresentar a diferença das idades.m) Elaborar um programa que leia de um vendedor o salário fixo, o valor total de vendas por ele efetuadas na

loja e o percentual de comissão que ganha pelas vendas. Calcular e apresentar o valor da comissão que ele vai receber e o salário total.

n) Elaborar um programa que calcula a área de um triângulo. O programa deve ler o valor da base e o valor da altura do triângulo. A fórmula da área é: area = (base * altura) / 2. Após o calculo apresentar a área.

4 esTrUTUras de coNTroLe – a Tomada de decisõesFoi visto anteriormente como trabalhar com entrada, processamento e saída utilizando variáveis, constantes

e operadores aritméticos. Apesar de já se conseguir solucionar problemas e transformá-los em programas, os recursos até aqui estudados são limitados, pois haverá momentos em que um determinado valor dentro de um programa necessitará ser tratado para se efetuar um processamento mais adequado.

Imagine a seguinte situação: Um programa que apresente a média de um aluno e a informação se ele está aprovado ou reprovado. Observe que será necessário verificar a média do aluno para tomar uma decisão no sentido de apresentar a sua real situação: aprovado ou reprovado.

Page 17: Lógica de Programação - rosalbamonteiro.com.brrosalbamonteiro.com.br/arquivos/logica_programacao.pdf · com programação, ... (Clipper, C, Pascal, Delphi) e sua documentação

17

Lógica de Programação4.1 Desvio Condicional Simples

Para solucionar o problema proposto, é necessário trabalhar uma nova instrução: se...então...fim_se. FluxogramaObserve no fluxograma a existência das letras S e N, além das linhas com seta indicando a direção do

processamento, colocada juntamente com o símbolo de Decisão. O S representa o sim e está posicionado para indicar que um determinado bloco de operações será executado

quando a condição atribuída for verdadeira.O N está para não e será executado quando a condição for falsa.O símbolo do losango, ou melhor, dizendo, Decisão deverá ser utilizado em situações em que haja necessidade

de usar uma decisão dentro do programa. Uma decisão será tomada sempre com base em uma pergunta, como Resposta = sim, e é esta pergunta que

deverá estar indicada dentro do símbolo de losango.

CondiçãoInstruções executadas quando a condição for

verdadeira

Instruções executadas quando a condição for

falsa ou após ser verdadeira

S

N

PorTUgUês esTrUTUradose (condição) então < instruções para condição verdadeira >fim_se

Sendo a condição verdadeira, serão executadas todas as instruções que estejam entre a instrução se...então e a instrução fim-se.

Sendo a condição falsa, serão executadas as instruções que estejam após o comando fim_se.

Page 18: Lógica de Programação - rosalbamonteiro.com.brrosalbamonteiro.com.br/arquivos/logica_programacao.pdf · com programação, ... (Clipper, C, Pascal, Delphi) e sua documentação

18

Escola Alcides Maya - Primeiro Módulo4.1.1 Exercício de Aula

Primeiro eXemPLoDesenvolver a lógica para um programa que leia dois valores numéricos. Efetuar a adição e apresentar o seu

resultado caso o valor somado seja maior que 10.aLgoriTmo1 – Ler um valor para a variável A e outro valor para a variável B;2 – Efetuar a soma dos valores incógnitos A e B, atribuindo o valor da soma na variável X; 3 – Apresentar o valor da soma contido na variável X, caso o valor de X seja maior que 10.Português Estruturadoinício inteiro: A, B, X;

escreva “Digite um número: “; leia A; escreva “Digite outro número: “; leia B;

X A + B;

se ( X > 10 ) então escreva X; fim sefim

4.2 Operadores RelacionaisAo utilizarmos os desvios condicionais necessitamos dos operadores relacionais.

Operador Ação Exemplo Resultado> maior que 5 > 2 V

>= maior ou igual a 5 >= 7 F< menor que 5 < 7 V

<= menor ou igual a 5 <= 7 V= igual a 5 = 7 F

< > Diferente 5 < > 7 V

4.3 Desvio Condicional CompostoVamos aprender agora a fazer uso da instrução se...então...senão...fim_se. Fluxograma.

Page 19: Lógica de Programação - rosalbamonteiro.com.brrosalbamonteiro.com.br/arquivos/logica_programacao.pdf · com programação, ... (Clipper, C, Pascal, Delphi) e sua documentação

19

Lógica de Programação

CondiçãoInstruções executadas

quando condição verdadeira

Instruções executadas quando condição for

falsa

S

N

Figura 4.3 – Estrutura do símbolo para instrução se...então...senão...fim-se

PorTUgUês esTrUTUradose (condição) então < instruções para condição verdadeira >senão < instruções para condição falsa >fim se

Sendo a condição verdadeira, serão executadas todas as instruções que estejam posicionadas entre o se...então e a instrução senão.

Sendo a condição falsa, serão executadas as instruções que estejam entre o senão e a instrução fim se.

4.3.1 Exercício de Aula

Primeiro eXemPLoDesenvolver a lógica para um programa que leia dois valores numéricos e efetue a adição destes valores.

Caso o valor somado seja maior ou igual a 10, deverá ser apresentado somando a ele mais 5; caso o valor somado não seja maior ou igual a 10, este deverá ser apresentado subtraindo 7.

Algoritmo1 – Ler um valor para a variável A e outro valor para a variável B;2 – Efetuar a soma dos valores incógnitos A e B, atribuindo o valor da soma na variável X; 3 – Verificar se X é maior ou igual a 10; caso seja verdadeiro, calcule R x + 5. Senão calcule R X – 7

Page 20: Lógica de Programação - rosalbamonteiro.com.brrosalbamonteiro.com.br/arquivos/logica_programacao.pdf · com programação, ... (Clipper, C, Pascal, Delphi) e sua documentação

20

Escola Alcides Maya - Primeiro MóduloPorTUgUês esTrUTUradoinício inteiro: A, B, X, R;

escreva “Digite um número: “; leia A; escreva “Digite outro número: “; leia B;

X A + B;

se ( X >= 10 ) então R X + 5; senão R X – 7; fim se

escreva “O resultado é: “ , R; fimObserve que após a definição dos tipos de variáveis, é solicitada a leitura dos valores para as variáveis A e

B, depois esses valores são atribuídos na variável X, a qual possui o resultado da adição dos dois valores. Neste ponto, é questionada no programa uma condição que permitirá escrever o resultado da soma adicionado de 5, caso esta seja maior ou igual a 10, e não sendo, o programa apresentará o resultado subtraindo 7.

4.4 Exercícios de FixaçãoVamos fazer alguns exercícios:a) Faça um Programa que leia dois números quaisquer, e escreva o maior deles.b) Faça um Programa que leia um número inteiro. Informar se o número é “PAR” ou “ÍMPAR”.c) Faça um Programa que leia dois números quaisquer, e escreva o resultado do cálculo do maior dividido

pelo menor.d) Faça um Programa que leia a receita e a despesa de uma empresa e apresente se ela está com LUCRO

ou com PREJUÍZO.e) Faça um Programa que leia 4 notas escolares de um aluno. Calcule e apresente a média. Sabendo-se que

a média de aprovação da escola é 7, apresente a informação se o aluno foi APROVADO ou REPROVADO.f) Faça um Programa que leia dois números e apresente o sinal do produto entre eles. Considere que

somente números diferentes de zero serão digitados.g) Faça um Programa que leia um número e escreva “maior do que 100”, se o número digitado for maior que

100 e escreva “menor do que 100”, se o número for menor do que 100.h) Faça um Programa que leia um código:1 – sinal vermelho, 2 – sinal verde. Baseado no código digitado

diga para o pedestre que está esperando no sinal:“SIGA” ou “ESPERE”i) Faça um Programa que leia a quantidade de vitórias e a quantidade de derrotas de um time de futebol.

Escrever BOM se o número de vitórias for maior que o número de derrotas, caso contrário escrever RUIM.

Page 21: Lógica de Programação - rosalbamonteiro.com.brrosalbamonteiro.com.br/arquivos/logica_programacao.pdf · com programação, ... (Clipper, C, Pascal, Delphi) e sua documentação

21

Lógica de Programação4.5 Desvio Condicional Encadeado

Existem casos em que é necessário estabelecer a verificação de condições sucessivas, em que uma determinada ação poderá ser executada se um conjunto anterior de instruções ou condições for satisfeito. Sendo a ação executada, ela poderá ainda estabelecer novas condições. Isto significa utilizar uma condição dentro de outra condição. Este tipo de estrutura poderá possuir diversos níveis de condição, sendo chamadas de encadeamentos.

FLUXograma

Condição1Instruções executadas

quando condição 1 verdadeira

S

N

Condição2S

N

Instruções executadas quando condição 1 é

falsa, mas a condição 2 é verdadeira

Instruções executadas quando condição 1 e condição 2 são falsas

Page 22: Lógica de Programação - rosalbamonteiro.com.brrosalbamonteiro.com.br/arquivos/logica_programacao.pdf · com programação, ... (Clipper, C, Pascal, Delphi) e sua documentação

22

Escola Alcides Maya - Primeiro MóduloFigura 4.5 – Estrutura condicional composta ou encadeada.Português Estruturadose (condição 1) então < instruções para condição 1 verdadeira >senão se (condição 2) então < instruções para condição 2 verdadeira > senão < instruções para condição 1 e condição 2 falsa > fim sefim se

4.5.1 Exercício de Aula

Primeiro eXemPLoDesenvolver a lógica para um programa que efetue o cálculo do reajuste de salário de um funcionário.

Considere que o funcionário deverá receber um reajuste de 15% caso seu salário seja menor ou igual a 500. Se o salário for maior que 500, mas, menor ou igual a 1000, seu reajuste será de 10%; caso seja ainda maior que 1000, o reajuste deverá ser de 5%”.

aLgoriTmoPerceba que o problema em questão estabelece três condições para calcular o reajuste do salário do

funcionário, sendo:

• Salário <= 500, reajuste de 15%• Salário > 500, mas <= 1000, reajuste será de 10%• Salário > 1000, reajuste será de 5%

Estas condições deverão ser encadeadas, pois todas as possibilidades de reajuste deverão ser cercadas. Sendo assim, observe o algoritmo abaixo:

1 – Definir uma variável para o salário reajustado: novo_salario;2 – Ler um valor para a variável salário;3 – Verificar se o valor de salario <= 500, se sim reajustar em 15%;4 – Verificar se o valor de salario <= 1000, se sim reajustar em 10%;5 – Verificar se o valor de salario > 1000, se sim reajustar em 5%;6 – Apresentar o valor reajustado, atribuindo a novo_salário.

PorTUgUês esTrUTUradoinício real: salário, novo_salario;

escreva “Digite o valor do salário: “; leia salario;

se ( salario <= 500 ) então novo_salário salário * ( 15 / 100 ); senão se ( salario <= 1000 ) então novo_salário salário * ( 10 / 100 ); senao novo_salário salário * ( 5 / 100 );

Page 23: Lógica de Programação - rosalbamonteiro.com.brrosalbamonteiro.com.br/arquivos/logica_programacao.pdf · com programação, ... (Clipper, C, Pascal, Delphi) e sua documentação

23

Lógica de Programação fim se fim se escreva “O valor do novo salário é: “ ,novo_salario; fim

4.6 Exercícios de FixaçãoVamos fazer alguns exercícios

a) Faça um Programa que leia o valor do salário hora, a quantidade de horas trabalhadas e a quantidade de filho menores de 14 anos de um funcionário. Calcular o valor do salário bruto. Para calcular o valor do salário família levar em consideração o seguinte:

• Se o salário bruto for até R$ 500,00 o salário família será de R$ 10,50 por cada filho;• Se o salário bruto for acima de R$ 500,00 até R$ 1.000,00 o salário família será de R$ 6,50 por cada

filho;• Se o salário bruto for acima de R$ 1.000,00 o salário família será de R$ 1,50 por cada filho.

No final apresentar o valor do salário bruto e o valor do salário família a ser recebido.

b) Faça um Programa que leia o salário bruto de uma pessoa e calcule o desconto do INSS levando em consideração o seguinte:

• Para salários até R$ 500,00 a alíquota de INSS será de 8%• Para sal.acima de R$ 500,00 até R$ 1.000,00 a alíquota de INSS será de 10%• Para sal.acima de R$ 1.000,00 a alíquota de INSS será de 12%.

No final deverá ser apresentado:

• Salário bruto• Taxa de INSS• Valor de INSS• Salário líquido

c) Faça um Programa que leia o código de uma mercadoria e que escreva o nome do produto conforme tabela abaixo:

1 – Sabão 2 – Vassoura 3 – Detergente

4.7 Operadores LógicosPode ser que você necessite, em algum momento, trabalhar com o relacionamento de duas ou mais condições

ao mesmo tempo na mesma instrução se, efetuando desta forma testes múltiplos. Para estes casos é necessário trabalhar com a utilização dos operadores lógicos.

Os operadores lógicos mais comuns são: .e., .ou. e .não., e serão representadores em português estruturado sempre entre pontos.

Em alguns casos, o uso de operadores lógicos evita a utilização de instruções se encadeadas.

Page 24: Lógica de Programação - rosalbamonteiro.com.brrosalbamonteiro.com.br/arquivos/logica_programacao.pdf · com programação, ... (Clipper, C, Pascal, Delphi) e sua documentação

24

Escola Alcides Maya - Primeiro Módulo4.7.1 Operador Lógico: .e.

O operador do tipo .e. é utilizado quando dois ou mais relacionamentos lógicos de uma determinada condição necessitam ser verdadeiros.

Condição 1 Condição 2 ResultadoFalsa Falsa FalsoVerdadeira Falsa FalsoVerdadeira Verdadeira Verdadeiro

Para facilitar a compreensão deste operador imagine que você possua dois fios ligados a uma lâmpada e a uma bateria. A lâmpada somente acenderá se você tiver ligado ambos os fios aos pólos da bateria. Acompanhe esse exemplo no seguinte diagrama:

Fio Vermelho Ligado Fio Preto Ligado Lâmpada AcendeFalso Falso FalsoVerdadeiro Falso FalsoFalso Verdadeiro FalsoVerdadeiro Verdadeiro Verdadeiro

PorTUgUês esTrUTUradose (condição 1) .e. (condição 2) então < instruções executadas se condição 1 e condição 2 verdadeiras >fim_se

O operador .e. faz com que somente seja executada uma determinada operação se todas as condições mencionadas forem simultaneamente verdadeiras.

4.7.1.1 Exercício de Aula

Primeiro eXemPLoDesenvolver a lógica para um programa que leia um número. Informar se o número digitado está na faixa de

20 a 90.aLgoriTmo1 – Ler um valor para a variável num;2 – Se o valor digitado estiver na faixa de 20 a 90 apresentar uma mensagem informando.PorTUgUês esTrUTUradoinício inteiro: num;

escreva “Digite um número: “; leia num;

se ( num >= 20 ) .e. ( num <= 90 ) então escreva “O número está na faixa de 20 a 90”; senão escreva “O número está fora da faixa de 20 a 90”; fim sefim

Page 25: Lógica de Programação - rosalbamonteiro.com.brrosalbamonteiro.com.br/arquivos/logica_programacao.pdf · com programação, ... (Clipper, C, Pascal, Delphi) e sua documentação

25

Lógica de ProgramaçãoO exemplo mostra, por meio da utilização do operador .e. que somente será apresentada a mensagem “O

número está na faixa de 20 a 90”, caso o valor fornecido para a variável num seja entre 20 e 90. Qualquer valor fornecido fora da faixa definida apresentará a mensagem “O número não está na faixa de 20 a 90”.

Segundo exemploDesenvolver a lógica para um programa que leia um ângulo (entre 0º e 360º) e que escreva o quadrante ao

qual pertence. Ignorar os eixos. Algoritmo1 – Ler um valor para a variável angulo;2 – Verificar se o ângulo digitado é > 0 e < 90, se for verdade: “ângulo está no primeiro quadrante”3 – Verificar se o ângulo digitado é > 90 e < 180, se for verdade: “ângulo está no segundo quadrante”4 – Verificar se o ângulo digitado é > 180 e < 270, se for verdade: “ângulo está no terceiro quadrante”5 – Verificar se o ângulo digitado é > 270 e < 360, se for verdade: “ângulo está no quarto quadrante” Português Estruturadoinício inteiro: ângulo;

escreva “Digite um ângulo: “; leia angulo;

se ( angulo > 0 ) .e. ( angulo < 90 ) então escreva “Ângulo está no primeiro quadrante”; senão se ( angulo > 90 ) .e. ( angulo < 180 ) então escreva “Ângulo está no segundo quadrante”; senão se ( angulo > 180 ) .e. ( angulo < 270 ) então escreva “Ângulo está no terceiro quadrante”; senão se ( angulo > 270 ) .e. ( angulo < 360 ) então escreva “Ângulo está no quarto quadrante”; fim se fim se fim se fim sefimO programa acima não se preocupa se o usuário digitar um valor indevido, ou seja, se não estiver na faixa

ou estiver em um dos eixos. Este exemplo foi feito desta forma para que possamos nos concentrar apenas no operador lógico .e.

4.7.2 Operador Lógico: .ou.

O operador do tipo .ou. é utilizado quando pelo menos um dos relacionamentos lógicos (quando houver mais de um relacionamento) de uma condição necessita ser verdadeiro. Abaixo, é apresentada a tabela de decisão para este tipo de operador:

Condição 1 Condição 2 ResultadoFalsa Falsa FalsoVerdadeira Falsa VerdadeiroFalsa Verdadeira VerdadeiroVerdadeira Verdadeira Verdadeiro

Considere agora, como exemplo, que você deseja escrever uma carta. Se você tiver uma máquina de escrever

Page 26: Lógica de Programação - rosalbamonteiro.com.brrosalbamonteiro.com.br/arquivos/logica_programacao.pdf · com programação, ... (Clipper, C, Pascal, Delphi) e sua documentação

26

Escola Alcides Maya - Primeiro Móduloou (OR) um microcomputador, pode tranqüilamente satisfazer seu desejo. Acompanhe o diagrama em seguida:

Tem Máquina Tem Computador Pode EscreverFalso Falso FalsoVerdadeiro Falso VerdadeiroFalso Verdadeiro VerdadeiroVerdadeiro Verdadeiro Verdadeiro

PorTUgUês esTrUTUradose (condição 1) .ou. (condição 2) então < instruções executadas se condição 1 ou se condição 2 for verdadeiras >fim_se

O operador .ou. faz com que seja executada uma determinada operação se pelo menos uma das condições mencionadas for verdadeira.

4.7.2.1 Exercício de Aula

Primeiro eXemPLoDesenvolver a lógica para um programa que leia o código relativo ao sexo (masculino=1 ou feminino=2). Se

for digitado um código correto informar que o código é válido, caso contrário informar que o código é inválido.

aLgoriTmo1 – Ler um código numérico para a variável codigo;2 – Se o código digitado for igual a 1 ou igual a 2 apresentar uma mensagem informando que o código é válido

caso contrário informar que o código é inválido.PorTUgUês esTrUTUradoinício inteiro: código;

escreva “ Digite um código: “; leia código;

se ( codigo = 1 ) .ou. ( código = 2 ) então escreva “O código do sexo é válido”; senão escreva “O código do sexo é inválido” ; fim sefim

O exemplo mostra, por meio da utilização do operador .ou. que somente será apresentada a mensagem “O código do sexo é válido”, caso o valor fornecido para a variável codigo seja 1 ou 2. Qualquer outro valor fornecido apresentará a mensagem: “O código do sexo é inválido”.

Page 27: Lógica de Programação - rosalbamonteiro.com.brrosalbamonteiro.com.br/arquivos/logica_programacao.pdf · com programação, ... (Clipper, C, Pascal, Delphi) e sua documentação

27

Lógica de Programação4.7.3 Operador Lógico: .não.

O operador do tipo .não. é utilizado quando houver necessidade de estabelecer a inversão do resultado lógico de uma determinada condição. Se a condição for verdadeira, será considerada falsa. Se a condição for falsa, será considerada verdadeira. Abaixo, é apresentada a tabela de decisão para este tipo de operador:

Condição ResultadoFalsa VerdadeiroFalsa Verdadeiro

Considere agora, como exemplo, que se você possui um carro e o pneu está furado, você não (NOT) pode viajar. É o que mostra a tabela abaixo:

Peneu Está furado ResultadoFalso VerdadeiroVerdadeiro Falso

Português Estruturadose .não. (condição) então < instruções executadas se condição não for verdadeira >fim se

O operador .não. faz com que seja executada uma determinada operação se a condição não for verdadeira, portanto, considerada falsa ou vice-versa.

4.7.3.1 Exercício de Aula

Primeiro eXemPLoDesenvolver a lógica para um programa que somente efetue o cálculo de C (A + B) * X, se o valor da

variável X não for maior que 5. Qualquer valor de 5 para baixo efetuará o cálculo C (A + B) * X. Se forem informados os valores 5, 1 e 2, respectivamente, para as variáveis A, B e X, resultará para a

variável C o valor 12, pois o valor 2 da variável X é controlado pela instrução se .não. (X > 5) então, como sendo verdadeiro, uma vez que não é maior que 5. Sendo assim, os valores 5 e 1 são somados resultando 6 e multiplicados por 2 resultando 12.

Mas se forem informados os valores 5, 1 e 6, respectivamente, para as variáveis A, B e X, resultará para a variável C o valor 24, pois o valor 6 da variável X é controlado pela instrução se. não. (X > 5) então, como sendo falso. Sendo assim, os valores 5 e 1 são subtraídos resultando 4 e multiplicados por 6 resultando 24.

aLgoriTmo1 – Ler um valor numérico para a variável A ,B, X;2 – Se .não. (X > 5) então calcular: C (A + B) * X caso contrário calcular: C (A – B) * X 3 - Apresentar o valor do resultado do cálculo.Português Estruturadoinício inteiro: A, B, C, X;

leia A, B, X;

se .não. ( X > 5 ) então C (A + B) * X; senão C (A – B) * X; fim se

Page 28: Lógica de Programação - rosalbamonteiro.com.brrosalbamonteiro.com.br/arquivos/logica_programacao.pdf · com programação, ... (Clipper, C, Pascal, Delphi) e sua documentação

28

Escola Alcides Maya - Primeiro Módulo escreva C;fim

segUNdo eXemPLoLer três valores para os lados de um triângulo, considerando lados como: A, B e C. Verificar se os lados

fornecidos formam realmente um triângulo, e se for esta condição verdadeira, deverá ser indicado qual tipo de triângulo foi formado: isósceles, escaleno ou eqüilátero.

aLgoriTmoPara estabelecer este algoritmo, é necessário em primeiro lugar saber o que realmente é um triângulo. Se

você não souber o que é um triângulo, conseqüentemente não conseguirá resolver o problema. Triângulo é uma forma geométrica (polígono) composta por três lados, sendo que cada lado é menor que

a soma dos outros dois lados. Perceba que isto é uma regra (uma condição) e deverá ser considerada. É um triângulo quando A<B+C, quando B<A+C e quando C<A+B.

Tendo certeza de que os valores informados para os três lados formam um triângulo, serão então analisados os valores para estabelecer qual tipo de triângulo será formado: isósceles, escaleno ou eqüilátero.

Um triângulo é isósceles quando possui dois lados iguais e um diferente, sendo A=B ou A=C ou B=C; é escaleno quando possui todos os lados diferentes, sendo A<>B e B<>C e é eqüilátero quando possui todos os lados iguais, sendo A=B e B=C.

1 – Ler três valores para os lados de um triângulo: A, B e C;2 – Verificar se cada lado é menor que a soma dos outros dois lados. Se sim, saber se A=B e B=C, sendo

verdade o triângulo é eqüilátero. Se não, verificar se A=B ou A=C ou B=C, sendo verdade o triângulo é isósceles; caso contrário, o triângulo

é escaleno.3 – Caso os lados fornecidos não caracterizem um triângulo, avisar a ocorrência.PorTUgUês esTrUTUradoinício real: A, B, C ;

leia A, B, C;

se ( A < B + C ) .e. ( B < A + C ) .e. ( C < A + B ) então se ( A = B ) .e. ( B = C ) então escreva “Triângulo Eqüilátero”; senão se ( A = B ) .ou. ( A = C ) .ou. ( C = B ) então escreva “Triângulo Isósceles”; senão escreva “Triângulo Escaleno”; fim se fim se senão escreva “As medidas não formam um triângulo”; fim sefim

Page 29: Lógica de Programação - rosalbamonteiro.com.brrosalbamonteiro.com.br/arquivos/logica_programacao.pdf · com programação, ... (Clipper, C, Pascal, Delphi) e sua documentação

29

Lógica de Programação4.8 Exercícios de Fixação

1. Faça um Programa que leia as coordenadas de um ponto no plano (x,y) e escreva o quadrante ao qual pertence o ponto no plano. No primeiro quadrante x e y são positivos. No segundo quadrante y é positivo. No terceiro quadrante nem x nem y é positivo. No quarto quadrante x é positivo.

X

Y

Primeiro Quadrante

Quarto Quadrante

Terceiro Quadrante

Segundo Quadrante

2. Faça um Programa que leia o QI de uma pessoa e escreva uma mensagem baseada na tabela abaixo. Observe que os colchetes identificam um intervalo fechado e os parênteses identificam um intervalo aberto.

[ 000, 030 ) - Ameba[ 030, 050 ) - Débil Mental[ 050, 070 ) - Regular[ 070, 100 ) - Normal[ 100, 150 ] - GênioOutros - QI inválido

3. Faça um Programa que leia três notas de uma pessoa. Calcular a média e apresentar um conceito conforme a tabela abaixo:

[ 10, 09 ] - A ( 09, 07 ] - B ( 07, 04 ] - C ( 04, 00 ] - D

4. A empresa XYZ & Cia Ltda decidiu conceder um aumento de salários a seus funcionários de acordo com a tabela abaixo:

SALÁRIO ATUAL ÍNDICE DE AUMENTODe 0 até 400 15%Acima de 400 até 700 12%Acima de 700 até 1000 10%Acima de 1000 até 1800 7%Acima de 1800 até 2500 4%Acima de 2500 0%

Page 30: Lógica de Programação - rosalbamonteiro.com.brrosalbamonteiro.com.br/arquivos/logica_programacao.pdf · com programação, ... (Clipper, C, Pascal, Delphi) e sua documentação

30

Escola Alcides Maya - Primeiro MóduloFaça um Programa que leia o número do funcionário, o seu salário atual. Calcular e apresentar o valor do

salário já corrigido. 5. Determine o resultado lógico das expressões mencionadas, assinalando se são verdadeiras ou falsas..

Considere para as repostas os seguintes valores: X = 1, A = 3, B = 5, C = 8 e D = 7.a) .não. ( X > 3 ) Verdadeiro ( ) Falso ( )b) ( X < 1 ) .e. ( B > D) Verdadeiro ( ) Falso ( )c) ( D < 0 ) .e. ( C > 5 ) Verdadeiro ( ) Falso ( )d) ( X > 3 ) .ou. ( C < 7 ) Verdadeiro ( ) Falso ( )e) ( A > B ) .ou. ( C > B ) Verdadeiro ( ) Falso ( )f) ( X >= 2 ) Verdadeiro ( ) Falso ( )g) ( X < 1 ) .e. ( B >= D ) Verdadeiro ( ) Falso ( )h) ( D < 0 ) .ou. ( C > 5 ) Verdadeiro ( ) Falso ( )i) .não. ( D > 3 ) Verdadeiro ( ) Falso ( )j) ( A > B ) .ou. ( C < B ) Verdadeiro ( ) Falso ( )

6. Indique a saída dos trechos de programa em português estruturado, mostrado abaixo. Para as saídas considere os seguintes valores: A=2, B=3, C=5 e D=9. Não é necessário calcular os valores de X. Marque na resposta apenas a fórmula que será executada de acordo com a condição.

a – Resposta: ____________________________________________________________________

se ( D > 5 ) então X ( A + B ) * Dsenão X ( A – B ) / Cfim seescreva X

b – Resposta: ____________________________________________________________________

se ( A > 2 ) .e. ( B < 7 ) então X ( A + 2 ) * ( B – 2 )senão X ( A + B ) / D * ( C + D )fim seescreva X

c – Resposta: ____________________________________________________________________

se ( A = 2 ) .ou. ( B < 7 ) então X ( A + 2 ) * ( B – 2 )senão X ( A + B ) / D * ( C + D )fim seescreva X

Page 31: Lógica de Programação - rosalbamonteiro.com.brrosalbamonteiro.com.br/arquivos/logica_programacao.pdf · com programação, ... (Clipper, C, Pascal, Delphi) e sua documentação

31

Lógica de Programação

d – Resposta: ____________________________________________________________________

se ( A > 2 ) .ou. ( B < 7 ) então X A + B - 2senão X A – B fim seescreva X

e – Resposta: ____________________________________________________________________

se .não. ( A > 2 ) .ou. .não. ( B < 7 ) então X A + B senão X A / B fim seescreva X

f – Resposta: ____________________________________________________________________

se ( A > 3 ) .e. ( B < 5 ) então X A + Dsenão X D / Bfim seescreva X

g – Resposta: ____________________________________________________________________

se ( C >= 2 ) .e. ( B <= 7 ) então X ( A + B ) / 2senão X D * Cfim seescreva X

h – Resposta: ____________________________________________________________________

se ( A >= 2 ) .ou. ( C <= 1 ) então X ( A + D ) / 2senão X A * Cfim seescreva X

Page 32: Lógica de Programação - rosalbamonteiro.com.brrosalbamonteiro.com.br/arquivos/logica_programacao.pdf · com programação, ... (Clipper, C, Pascal, Delphi) e sua documentação

32

Escola Alcides Maya - Primeiro Módulo

7. Desenvolva os algoritmos em português estruturado dos seguintes programas:

a) Ler dois valores numéricos inteiros e apresentar o resultado da diferença do maior pelo menor valor.b) Efetuar a leitura de um valor inteiro positivo ou negativo e apresentar o número lido como sendo um valor

positivo, ou seja, o programa deverá apresentar o módulo de um número fornecido. Lembre-se de verificar se o número fornecido é menor que zero; sendo, multiplique-o por –1.

c) Ler quatro valores referentes a quatro notas escolares de um aluno e escrever uma mensagem dizendo que o aluno foi aprovado, se o valor da média escolar for maior ou igual a 7. Se o aluno não for aprovado indicar uma mensagem informando esta condição. Apresentar junto das mensagens o valor da média do aluno para qualquer condição.

d) Ler quatro valores referentes a quatro notas escolares de um aluno e escrever uma mensagem dizendo que o aluno foi aprovado, se o valor da média escolar for maior ou igual a 7. Se o valor da média for menor do que 7, solicitar a nota de exame, somar com o valor da média e obter nova média. Se a nova média for maior ou igual a 5, apresentar uma mensagem dizendo que o aluno foi aprovado em exame. Se o aluno não foi aprovado, indicar uma mensagem informando esta condição. Apresentar com as mensagens o valor da média do aluno, para qualquer condição.

e) Efetuar a leitura de três valores (variáveis A, B e C) e efetuar o cálculo da equação completa de segundo grau, apresentando as duas raízes, se para os valores informados for possível efetuar o referido cálculo. Lembre-se de que a variável A deve ser diferente de zero.

f) Efetuar a leitura de três valores (variáveis A, B e C) e apresenta-los dispostos em ordem crescente. Para solucionar o problema, utilizar os conceitos da propriedade distributiva e troca de valores entre variáveis.

g) Efetuar a leitura de quatro números inteiros e apresentar os números que são divisíveis por 2 e 3.h) Efetuar a leitura de cinco números inteiros e identificar o maior e o menor valores.i) Elaborar um programa que efetue a leitura de um número inteiro e apresentar uma mensagem informando

se o número é par ou ímpar.j) Elaborar um programa que efetue a leitura de um valor que esteja entre a faixa de 1 a 9. Após a leitura

do valor fornecido pelo usuário, o programa deverá indicar uma de duas mensagens: “O valor está na faixa permitida”, caso o usuário forneça o valor nesta faixa, ou a mensagem “O valor está fora da faixa permitida”, caso o usuário forneça valores menores que 1 ou maiores que 9.

k) Elaborar um programa que efetue a leitura de um número inteiro e efetue a sua apresentação, caso o valor não seja maior que três.

5 ESTRUTURAS DE CONTROLE – LAçOS DE REPETIçãOExistem ocasiões em que é necessário efetuar a repetição de um trecho de programa um determinado

número de vezes. Neste caso, poderá ser criado um looping que efetue o processamento de um determinado trecho, tantas vezes quantas forem necessárias. Os loopings também são chamados de laços de repetição.

Supondo que um programa deva executar um determinado trecho de instruções por cinco vezes. Com o conhecimento adquirido até este momento, você iria escrever o mesmo trecho, repetindo-o o número de vezes necessárias.

Por exemplo, imagine um programa que peça a leitura de um valor para a variável num, multiplique esse valor por 3, colocando a resposta na variável result e apresente o valor obtido, repetindo esta seqüência por cinco vezes, conforme mostrado abaixo:

PorTUgUês esTrUTUradoinício inteiro: num, result;

leia num; result num * 3; escreva result;

leia num;

Page 33: Lógica de Programação - rosalbamonteiro.com.brrosalbamonteiro.com.br/arquivos/logica_programacao.pdf · com programação, ... (Clipper, C, Pascal, Delphi) e sua documentação

33

Lógica de Programação result num * 3; escreva result;

leia num; result num * 3; escreva result;

leia num; result num * 3; escreva result;

leia num; result num * 3; escreva result;fim

Para estes casos existem comandos apropriados para efetuar a repetição de determinados trechos de programas o número de vezes que for necessário. A principal vantagem deste recurso é que o programa passa a ter um tamanho menor, podendo sua amplitude de processamento ser aumentada sem alterar o tamanho do código de programação. Desta forma, pode-se determinar repetições com números variados de vezes.

5.1 Repetição do tipo: Teste Lógico no início do loopingCaracteriza-se por uma estrutura que efetua um teste lógico no início de um looping, verificando se é permitido

executar o trecho de instruções subordinado a esse looping. A estrutura em questão é denominada de enquanto, sendo conseguida com a utilização do conjunto de instruções enquanto...faça...fim_enquanto.

A estrutura enquanto...faça...fim_enquanto tem o seu funcionamento controlado por decisão. Sendo assim, poderá executar um determinado conjunto de instruções enquanto a condição verificada for Verdadeira. No momento em que esta condição se torna Falsa, o processamento da rotina é desviado para fora do looping. Se a condição for Falsa logo de início, as instruções contidas no looping são ignoradas.

Page 34: Lógica de Programação - rosalbamonteiro.com.brrosalbamonteiro.com.br/arquivos/logica_programacao.pdf · com programação, ... (Clipper, C, Pascal, Delphi) e sua documentação

34

Escola Alcides Maya - Primeiro MóduloNo início desta aula fizemos um programa que fazia a leitura de um valor para a variável num, multiplicava

esse valor por 3, colocando a resposta na variável result e apresentava o valor obtido, repetindo esta seqüência por cinco vezes, porque não conhecíamos a estrutura enquanto...faça...fim_enquanto, agora vamos fazer o mesmo exemplo utilizando a estrutura para o controle do laço de repetição.

FLUXogramaCuidado para não confundir esta nova estrutura com a estrutura de decisão usada anteriormente. Aqui existe

um retorno à condição após a execução do bloco de operações, até que a condição se torne falsa.

Condição

Instruções executadas enquanto

a condição é verdadeira

S

N

Figura 5.2 – Fluxograma da instrução enquanto...faça...fim_enquanto

5.1.1 Exercício de Aula

Primeiro eXemPLoDesenvolver a lógica para um programa que faça a leitura de um valor para a variável num, multiplique esse

valor por 3, colocando a resposta na variável result e apresentar o valor obtido, repetindo esta seqüência por cinco vezes.

aLgoriTmo1 – Criar uma variável para servir de contador com valor inicial 1;2 – Enquanto o valor do contador for menor ou igual a 5, processar os passos 3, 4, 5 e 63 – Ler um valor para a variável num;4 – Efetuar a multiplicação do valor de num por 3, atribuindo o resultado em result;5 – Apresentar o valor calculado contido na variável result;6 – Acrescentar +1 a variável do tipo contador, definida no passo 1;7 – Quando contador for maior que 5, encerrar o processamento do looping.

Page 35: Lógica de Programação - rosalbamonteiro.com.brrosalbamonteiro.com.br/arquivos/logica_programacao.pdf · com programação, ... (Clipper, C, Pascal, Delphi) e sua documentação

35

Lógica de ProgramaçãoPorTUgUês esTrUTUradoinício inteiro: num, result; inteiro: cont;

cont 1; enquanto ( cont <= 5 ) faça leia num; result num * 3; escreva result; cont cont + 1; fim enquanto fim

Além da utilização das variáveis num e result, foi necessário criar uma terceira variável (cont) para controlar a contagem do número de vezes que o trecho de programa deverá ser executado.

Logo após o início do programa, a variável contador é atribuída com o valor 1 (cont 1). Em seguida, a instrução enquanto (cont <= 5) faça efetua a checagem da condição estabelecida, verificando que a condição é verdadeira, pois o valor da variável cont que neste momento é 1, é realmente menor ou igual a 5, e enquanto for deverá processar o looping.

Sendo assim, tem início a execução da rotina de instruções contidas entre as instruções enquanto e a instrução fim enquanto.

Depois de efetuar a primeira leitura, cálculo e apresentação do valor calculado, o programa encontra a linha cont cont + 1, reinicializando o conteúdo da variável contador. Observe que a variável cont possui neste momento o valor 1 e somado a mais 1 esta passa a ter o valor 2, ou seja, cont cont + 1, sendo assim cont 1 + 1 que resultará cont = 2.

Agora que a variável cont possui o valor 2, o processamento do programa volta para a instrução enquanto (cont <= 5 ) faça, uma vez que o valor da variável cont é menor ou igual a 5.

Será então executada a rotina de instruções, só que desta vez a variável cont passará a possuir o valor 3. Desta forma o programa processará novamente a rotina de instruções, passando o valor de cont para 4 que será verificado e sendo menor ou igual a 5, será executada mais uma vez a mesma rotina de instruções. Neste ponto, a variável cont passa a possuir o valor 5. Perceba que a instrução enquanto (cont <= 5) faça irá efetuar a checagem do valor da variável cont que é 5 com a condição cont <= 5. Veja que 5 não é menor que 5, mas é igual. Sendo esta condição verdadeira, deverá a rotina ser executada mais uma vez.

Neste momento, o valor da variável cont passa a ser 6, que resultará para a instrução enquanto uma condição falsa. E por conseguinte, desviará o processamento para a primeira instrução após a instrução fim_enquanto que no caso é a instrução fim, dando o encerramento do programa.

5.1.1.1 Exercícios de Fixação

Vamos fazer alguns exercícios

1. Faça um Programa que escreva na tela os números de 0 até 20.2. Faça um Programa que escreva na tela os números pares de 0 até 20.3. Faça um Programa que escreva na tela os números de 20 até 04. Faça um Programa que leia 10 valores inteiros e escreva no final a soma dos valores lidos.5. Faça um Programa que leia 10 valores inteiros e escreva no final a média dos valores lidos.6. Faça um Programa que leia 20 valores e escreva no final a soma dos valores positivos e a média dos

negativos.5.1.2 – Exercício de Aula

Page 36: Lógica de Programação - rosalbamonteiro.com.brrosalbamonteiro.com.br/arquivos/logica_programacao.pdf · com programação, ... (Clipper, C, Pascal, Delphi) e sua documentação

36

Escola Alcides Maya - Primeiro MódulosegUNdo eXemPLoPara ilustrar de forma um pouco diferente, imagine que o primeiro exemplo deverá ser executado enquanto

o usuário queira. Desta forma, em vez de possuir dentro da rotina um contador de vezes, pode-se possuir uma instrução pedindo que o usuário informe se deseja continuar ou não.

aLgoriTmo1 – Criar uma variável para ser utilizada como resposta;2 – Enquanto a reposta for sim, executar os passos 3, 4 e 5.3 – Ler um valor para a variável num;4 – Efetuar a multiplicação do valor de num por 3, atribuindo o resultado em result;5 – Apresentar o valor calculado contido na variável result;6 – Quando a resposta for diferente de sim, encerrar o processamento do looping.PorTUgUês esTrUTUradoinício inteiro: num, result; caractere: resp;

resp ‘S’; enquanto ( resp = ‘S’ ) faça leia num; result num * 3; escreva result; escreva “Deseja continuar ?”; leia resp; fim enquanto fim

Veja que o contador foi substituído pela variável resp, que enquanto for igual a ‘S’ executará a rotina existente entre as instruções enquanto e fim_enquanto.

Neste caso, o número de vezes que a rotina irá repetir será controlado pelo usuário e será encerrada somente quando alguma informação diferente de ‘S’ for fornecida para a variável resp.

5.1.2 Exercícios de Fixação

Vamos fazer alguns exercícios

1. Faça um Programa que leia números até que o usuário não queira mais digitar os números. No final escrever a soma dos valores lidos.

2. Faça um Programa que leia números até que o usuário não queira mais digitar os números. No final escrever a média dos valores lidos.

3. Faça um Programa que leia números até que o usuário não queira mais digitar os números. No final escrever a soma dos valores positivos e a soma dos valores negativos.

4. Faça um Programa que leia números até que o usuário não queira mais digitar os números. No final escrever a soma dos valores positivos e a média dos valores negativos.

Page 37: Lógica de Programação - rosalbamonteiro.com.brrosalbamonteiro.com.br/arquivos/logica_programacao.pdf · com programação, ... (Clipper, C, Pascal, Delphi) e sua documentação

37

Lógica de Programação5.2 Repetição do tipo: Teste Lógico no fim do looping

Caracteriza-se por uma estrutura que efetua um teste lógico no fim de um looping.Esta estrutura é parecida com a enquanto. A estrutura em questão é denominada de repita, sendo conseguida

com a utilização do conjunto de instruções repita...até_que. A estrutura repita...até_que tem o seu funcionamento controlado por decisão. Porém, irá efetuar a execução de

um conjunto de instruções pelo menos uma vez antes de verificar a validade da condição estabelecida. Diferente da estrutura enquanto que executa somente um conjunto de instruções, enquanto a condição é verdadeira.

Desta forma repita tem seu funcionamento em sentido contrário a enquanto, pois sempre irá processar um conjunto de instruções no mínimo uma vez até que a condição se torne verdadeira. Para a estrutura repita um conjunto de instruções é executado enquanto a condição se mantém Falsa até que ela seja Verdadeira.

5.2.1 Exercício de Aula

Primeiro eXemPLoDesenvolver a lógica para um programa que faça a leitura de um valor para a variável num, multiplique esse

valor por 3, colocando a resposta na variável result e apresentar o valor obtido, repetindo esta seqüência por cinco vezes. É o mesmo exemplo utilizado na estrutura enquanto para que você possa fazer uma comparação entre as estruturas.

aLgoriTmo1 – Criar uma variável para servir de contador com valor inicial 1;2 – Ler um valor para a variável num;3 – Efetuar a multiplicação do valor de num por 3, atribuindo o resultado em result;4 – Apresentar o valor calculado contido na variável result;5 – Acrescentar +1 a variável do tipo contador, definida no passo 1;6 – Repita os passos 2, 3, 4 e 5 até que o contador seja maior que 5. PorTUgUês esTrUTUradoinício inteiro: num, result; inteiro: cont;

cont 1; repita leia num; result num * 3; escreva result; cont cont + 1; até que ( cont > 5 ) fimLogo após o início do programa, a variável contador é atribuída com o valor 1 ( cont 1 ). Em seguida a instrução

repita indica que todo trecho de instruções situado até a instrução até_que deverá ter o seu processamento repetido até que a condição cont > 5 seja satisfeita.

Sendo assim, tem início a execução da rotina de instruções contidas em ter as instruções repita e até_que. Depois de efetuar a primeira execução das instruções, o programa encontra a linha cont cont + 1 ; neste momento a variável cont é somada a mais 1, passando a ter o valor 2. Em seguida é encontrada a linha com a instrução até_que ( cont > 5 ) , que efetuará o retorno à instrução repita para que seja reprocessada a seqüência de comandos, até que o valor da variável cont seja maior que 5 e encerre o looping.

Page 38: Lógica de Programação - rosalbamonteiro.com.brrosalbamonteiro.com.br/arquivos/logica_programacao.pdf · com programação, ... (Clipper, C, Pascal, Delphi) e sua documentação

38

Escola Alcides Maya - Primeiro Módulo5.2.1.1 Exercícios de Fixação

Vamos fazer alguns exercícios

1. Faça um Programa que escreva na tela os números de 0 até 10.2. Faça um Programa que escreva na tela os números ímpares de 0 até 20.3. Faça um Programa que escreva na tela os números de 10 até -54. Faça um Programa que leia 10 valores inteiros e escreva no final a soma dos valores lidos.5. Faça um Programa que leia 10 valores inteiros e escreva no final a média dos valores lidos.6. Faça um Programa que leia 20 valores e escreva no final a soma dos valores positivos e a média dos

negativos.

5.2.2 Exercício de Aula

segUNdo eXemPLoA seguir, é apresentado o exemplo em que não se utiliza o contador como forma de controle de execução

de uma rotina em uma estrutura de repetição. Considere que será o usuário que encerrará o processamento segundo a sua vontade.

aLgoriTmo1 – Criar uma variável para ser utilizada como resposta;2 – Ler um valor para a variável num;3 – Efetuar a multiplicação do valor de num por 3, atribuindo o resultado em result;4 – Apresentar o valor calculado contido na variável result;5 – Repetir os passos 2, 3, 4 e 5 até que a resposta do usuário seja não.PorTUgUês esTrUTUradoinício inteiro: num, result; caractere: resp;

repita leia num; result num * 3; escreva result; escreva “Deseja continuar ?”; leia resp; até que ( resp < > ‘S’ ) fimVeja que a variável resp não precisou ser inicializada com algum valor, pois mesmo que o tivesse feito, não

exerceria influência direta sobre a estrutura repita, uma vez que no mínimo são sempre executadas as instruções constantes no looping, para somente no final ser verificada a condição, no caso resp <> ‘S’

5.2.2.1 Exercícios de FixaçãoVamos fazer alguns exercícios

1. Faça um Programa que leia números até que o usuário não queira mais digitar os números. No final escrever a soma dos valores lidos.

2. Faça um Programa que leia números até que o usuário não queira mais digitar os números. No final escrever a média dos valores lidos.

3. Faça um Programa que leia números até que o usuário não queira mais digitar os números. No final escrever a soma dos valores positivos e a soma dos valores negativos.

4. Faça um Programa que leia números até que o usuário não queira mais digitar os números. No final escrever a soma dos valores positivos e a média dos valores negativos.

Page 39: Lógica de Programação - rosalbamonteiro.com.brrosalbamonteiro.com.br/arquivos/logica_programacao.pdf · com programação, ... (Clipper, C, Pascal, Delphi) e sua documentação

39

Lógica de Programação5.3 Repetição do tipo: Variável de Controle

Anteriormente, foram vistas duas formas de elaborar looping. Uma usando o conceito enquanto e a outra usando o conceito repita. Foi visto também como elaborar rotinas que efetuaram a execução de um looping um determinado número de vezes com a utilização de um contador (por meio de uma variável de controle).

Porém, existe uma possibilidade de facilitar o uso de contadores finitos sem fazer uso das duas estruturas anteriores, deixando-as para utilização de loopings em que não se conhece de antemão o número de vezes que uma determinada seqüência de instruções deverá ser executada. Os loopings que possuem um número finito de execuções poderão ser processador por meio de estrutura de laços contados do tipo para, sendo conseguida com a utilização do conjunto de instruções para...de...até...passo...faça...fim_para.

A estrutura para...de...até...passo...faça...fim_para tem o seu funcionamento controlado por uma variável denominada contador. Sendo assim, poderá executar um determinado conjunto de instruções um determinado número de vezes.

FLUXogramaCom relação ao fluxograma, será indicada a variável a ser controlada com a implicação dos valores de início,

fim e incremento, separados por vírgula. Para representar esta operação em um fluxograma, será utilizado o símbolo denominado Processamento predefinido ou Preparação, representado pela figura de um hexágono.

Figura 5.7 – Estrutura do símbolo da instrução para...fim_paraPortuguês Estruturadopara <variável> de <início> até <fim> passo <incremento> faça <instruções>fim_para

5.3.1 Exercício de Aula

Primeiro eXemPLoDesenvolver a lógica para um programa que faça a leitura de um valor para a variável num, multiplique esse

valor por 3, colocando a resposta na variável result e apresentar o valor obtido, repetindo esta seqüência por cinco vezes. É o mesmo exemplo utilizado na estrutura enquanto para que você possa fazer uma comparação entre as estruturas.

aLgoriTmo1 – Definir um contador, variando de 1 a 5;2 – Ler um valor para a variável num;3 – Efetuar a multiplicação do valor de num por 3, atribuindo o resultado em result;4 – Apresentar o valor calculado contido na variável result;5 – Repitir os passos 2, 3, 4 e 5 até que o contador seja encerrado. PorTUgUês esTrUTUradoinício inteiro: num, result; inteiro: cont;

para cont de 1 até 5 passo 1 faça leia num; result num * 3; escreva result; fim para fim

Page 40: Lógica de Programação - rosalbamonteiro.com.brrosalbamonteiro.com.br/arquivos/logica_programacao.pdf · com programação, ... (Clipper, C, Pascal, Delphi) e sua documentação

40

Escola Alcides Maya - Primeiro MóduloSerá executado o conjunto de instruções entre a instrução para e a instrução fim_para, sendo a variável cont

(variável de controle) inicializada com valor 1 e incrementada de mais 1 por meio da instrução passo até o valor 5. Esse tipo de estrutura de repetição poderá ser utilizada todas as vezes que houver a necessidade de repetir trechos finitos, em que se conhecem os valores inicial e final.

segUNdo eXemPLoDesenvolver a lógica para um programa que escreva na tela os números de 1 até 10.Repare que estamos desejando escrever os números na seguinte seqüência: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10.Vamos utilizar a estrutura para...de...até...passo...faça...fim_para mas com o passo incrementando o valor da

variável contadora.Algoritmo1 – Definir um contador, variando de 1 a 10;2 – Apresentar o valor contido na variável contador;5 – Repitir o passo 2 até que o contador seja encerrado.Português Estruturadoinício inteiro: cont;

para cont de 1 até 10 passo 1 faça escreva cont; fim para fim Terceiro eXemPLoDesenvolver a lógica para um programa que escreva na tela os números de 10 até 1.Repare que estamos desejando escrever os números na seguinte seqüência: 10, 9, 8, 7, 6, 5, 4, 3, 2, 1.Vamos utilizar a estrutura para...de...até...passo...faça...fim_para mas com o passo decrementando o valor

da variável contadora.Algoritmo1 – Definir um contador, variando de 10 a 1;2 – Apresentar o valor contido na variável contador;5 – Repitir o passo 2 até que o contador seja encerrado.Português Estruturadoinício inteiro: cont;

para cont de 10 até 1 passo -1 faça escreva cont; fim para fim

5.3.2 Exercícios de Fixação

Vamos fazer alguns exercícios

1. Faça um Programa que escreva na tela os números de 0 até 50.2. Faça um Programa que escreva na tela os números pares de 0 até 20.3. Faça um Programa que escreva na tela os números de 20 até 0.4. Faça um Programa que escreva na tela os números de 50 até 0.5. Faça um Programa que escreva na tela os números pares de 20 até 0.6. Faça um Programa que escreva na tela os números ímpares de 20 até 0.

Page 41: Lógica de Programação - rosalbamonteiro.com.brrosalbamonteiro.com.br/arquivos/logica_programacao.pdf · com programação, ... (Clipper, C, Pascal, Delphi) e sua documentação

41

Lógica de Programação

5.4 Exercícios de Fixação

Desenvolva a codificação em português estruturado dos seguintes programas:

1. Faça um Programa que escreva a soma dos números de 1 até 100, ou seja, quanto é 1+2+3+...+98+99+100.

2. Faça um Programa que leia 10 valores e escreva no final a soma dos valores lidos.3. Faça um Programa que leia 10 valores e escreva no final a soma dos valores positivos e a média dos

negativos.4. Faça um Programa que leia valores e escreva no final a soma dos valores positivos e a média dos

negativos. Neste programa o usuário é quem vai determinar o fim da leitura dos números, ou seja, você deverá perguntar ao usuário se ele deseja continuar digitando valores.

5. Faça um Programa que leia 4 notas escolares de 15 alunos. Para cada um dos alunos calcular e apresentar a média.

6. Faça um Programa que leia 4 notas escolares de “n” alunos. Para cada um dos alunos calcular e apresentar a média. Sabendo-se que a média da escola é 7, informar também se o aluno foi “Aprovado” ou “Reprovado”. Neste programa o usuário é quem vai determinar o fim da leitura das notas, ou seja, você deverá perguntar ao usuário se ele deseja continuar digitando notas.

7. Faça um Programa que leia dois números inteiros quaisquer. No final escrever os números entre eles. Por exemplo, se forem digitados 6 e 2, deverá escrever 6, 5, 4, 3 , 2. Mas se forem digitados 2 e 6, deverá escrever 2, 3, 4, 5, 6.

8. Faça um Programa que leia 20 vezes o código de um produto. Os produtos podem ser:1 – Panela2 – Chaleira3 – PratoOutro – Código inválidoAo final escrever o total digitado de cada código, inclusive a quantidade de códigos inválidos digitados.9. Faça um Programa que leia 4 notas escolares dos alunos de uma escola. Para cada um dos alunos

calcular e apresentar a média e informar o conceito do aluno baseado na informação abaixo:[0 – 4) - Conceito D[4 – 7) - Conceito C[7 – 9) - Conceito B[9 – 10] - Conceito AOs colchetes marcam o intervalo fechado e os parênteses marcam um intervalo aberto. Neste programa o usuário é quem vai determinar o fim da leitura das notas, ou seja, você deverá perguntar

ao usuário se ele deseja continuar digitando notas.10. Faça um Programa que leia códigos e execute tarefas, conforme tabela abaixo:0 – Encerra o programa1 – Inclui uma unidade no estoque2 – Exclui uma unidade no estoque3 – Mostra o total disponível no estoque4 – Mostra o total de entradas no estoque5 – Mostra o total de saídas no estoqueOutro código escrever: “Código Inválido” 11. Faça um Programa para controlar o acesso de pessoas a um restaurante. O restaurante possui uma

capacidade de 40 vagas, que não poderá ser ultrapassada. O controle se dará através de códigos, conforme a tabela:

0 – FIM1 – ENTRA UMA PESSOA (escrever: “Entrou”)

Page 42: Lógica de Programação - rosalbamonteiro.com.brrosalbamonteiro.com.br/arquivos/logica_programacao.pdf · com programação, ... (Clipper, C, Pascal, Delphi) e sua documentação

42

Escola Alcides Maya - Primeiro Módulo2 – SAI UMA PESSOA (escrever: “Saiu”)3 – MOSTRAR QUANTOS LUGARES ESTÃO DISPONÍVEIS4 – MOSTRAR O TOTAL DE PESSOAS QUE ENTRARAM5 – MOSTRAR O TOTAL DE PESSOAS QUE SAÍRAMOutro código escrever: “Código Inválido”12. Faça um Programa que calcule o desconto do imposto de renda. O programa deverá perguntar quando

a pessoa deseja encerrar o programa (“Deseja fazer outro cálculo? (S/N)”). O programa deve pedir o valor do salário, calcular e apresentar o valor do desconto baseado na seguinte informação:

Salário até R$ 900,00 é isento (Não paga imposto de renda)Salário acima de R$ 900,00 até R$ 1.800,00 para 15% de imposto de rendaSalário acima de R$ 1.800,00 para 27% de imposto de renda13. Faça um Programa que leia o peso das pessoas que querem entrar em um elevador. A capacidade

máxima do elevador é de 15 pessoas ou 800 Kg, o que ocorrer primeiro. O programa deve ler o peso da pessoa que deseja entrar, se a sua entrada não fizer com que seja ultrapassado qualquer um dos limites, deverá escrever: “PODE ENTRAR”, caso contrário, ou seja, ultrapassando os limites, deverá escrever: “NÃO PODE ENTRAR: ELEVADOR LOTADO” e encerrar o programa, mostrando o número de pessoas transportadas e o peso total transportado.

14. Faça um Programa que leia dois números e a operação desejada ( + , - , * , / ) e que escreva na tela o resultado da operação. O programa depois de apresentar o resultado deverá perguntar quando a pessoa deseja encerrar o programa (“Deseja fazer outro cálculo? (S/N)”). Se a reposta for S deverá pedir outros números e a operação desejada, se a resposta for N deverá encerrar o programa.

15. Em uma fábrica de chocolates, foi designado ao programador, fazer um programa que calcule o desconto de INSS dos funcionários. Este programa deve ler o nome do funcionário e o valor do salário bruto. Calcular o desconto do INSS levando em consideração o seguinte:

a) Para salários até R$ 500,00 a alíquota de INSS será de 8%b) Para salários acima de R$ 500,00 até R$ 1.000,00 a alíquota de INSS será de 10%c) Para salários acima de R$ 1.000,00 a alíquota de INSS será de 12%Para cada funcionário deverá ser apresentado na tela:a) Nome do Funcionário b) Salário Brutoc) Taxa de INSSd) Valor de INSSe) Salário LíquidoApós estas apresentações o programa deverá fazer uma pergunta: “Deseja fazer mais algum cálculo? (S/N)”,

se a resposta for afirmativa o programa deverá continuar com os dados do próximo funcionário, caso contrário deverá ser terminado.

16. Faça um Programa que possibilite calcular a área total de uma residência (sala, cozinha, banheiro, quartos, área de serviço, quintal, garagem, etc). O programa deve solicitar a entrada do nome, a largura e o comprimento de um determinado cômodo. Em seguida, deve apresentar a área do cômodo lido e também uma mensagem solicitando do usuário a confirmação de continuar calculando novos cômodos. Caso o usuário responda que “NÃO”, o programa deve apresentar o valor total acumulado da área residencial.

6 esTrUTUras de dados HomogêNeas iDurante os pontos estudados em Desvios condicionais e Estruturas de repetição, percebeu-se que o poder de

programação tornou-se maior, antes limitado somente ao que foi estudado em técnicas básicas de programação. Porém, tendo o domínio das técnicas anteriores, ainda correr-se-á o risco de não conseguir resolver alguns tipos de problemas, pois foram trabalhadas até aqui apenas variáveis simples que somente armazenam um valor por vez.

Vamos agora apresentar uma técnica de programação que permitirá trabalhar como o agrupamento de várias informações dentro de uma mesma variável, sendo sempre do mesmo tipo de dado, e por esta razão é chamado de estrutura de dados homogênea.

Page 43: Lógica de Programação - rosalbamonteiro.com.brrosalbamonteiro.com.br/arquivos/logica_programacao.pdf · com programação, ... (Clipper, C, Pascal, Delphi) e sua documentação

43

Lógica de ProgramaçãoA utilização deste tipo de estrutura de dados recebe diversos nomes, como: variáveis indexadas, variáveis

compostas, variáveis subscritas, arranjos, vetores, matrizes, tabelas em memória ou arrays (do inglês). São vários os nomes encontrados, a que nós iremos tratar por matrizes.

Vamos trabalhar com estes dados direcionados para a linguagem “C”, pois a escola irá tratar na disciplina de Fundamentos de Programação com esta linguagem. Portanto vamos adaptar a estrutura lógica para esta linguagem, facilitando assim o entendimento de nossos alunos.

6.1 Matrizes de uma dimensão ou vetoresEste tipo de estrutura é conhecida como matrizes unidimensionais ou também de vetor. Caracteriza-se por

ser definida uma única variável dimensionada com um determinado tamanho. A dimensão de uma matriz é constituída por uma constante inteira positiva. Os nomes dados às matrizes seguem as mesmas regras de nomes utilizados para identificar as variáveis simples.

Para ter uma idéia de como utilizar matrizes em uma determinada situação considere o seguinte problema: “Em uma Escola Técnica de Informática, há um professor que faz 6 avaliações durante o semestre. Gostaríamos de fazer um programa que leia as 6 notas de um aluno. No final calcular e apresentar a média do aluno”.

Desta forma será necessário somar as 6 notas de cada aluno e calcular a sua média. A tabela a seguir apresenta um aluno, suas notas bimestrais e a coluna da média do aluno que deverá ser calculada.

Aluno Nota 1 Nota 2 Nota 3 Nota 4 Nota 5 Nota 6 Média1 4.0 5.0 5.0 3.0 7.5 4.0 ?

Agora basta escrever um programa para efetuar o cálculo da média de cada aluno.Vamos começar pelo cálculo da média de cada aluno, iremos representar as notas de cada aluno pelas

variáveis: nota1, nota2, nota3, nota4, nota5, nota6, e para o cálculo da média a variável media, todas do tipo real.

Algoritmo1 – Ler as notas do aluno para as variáveis nota1, nota2, nota3, nota4, nota5, nota6;2 – Efetuar a soma das notas e a divisão delas por 6, atribuindo o seu resultado para a variável media;3 – Apresentar o valor da variável media após a operação de soma e divisão dos valores fornecidos.

Com o conhecimento adquirido até este momento, seria então elaborado um programa que efetuaria a leitura de cada nota, a soma delas e a divisão do valor da soma por 6, obtendo-se desta forma a média do aluno.

Page 44: Lógica de Programação - rosalbamonteiro.com.brrosalbamonteiro.com.br/arquivos/logica_programacao.pdf · com programação, ... (Clipper, C, Pascal, Delphi) e sua documentação

44

Escola Alcides Maya - Primeiro MóduloPorTUgUês esTrUTUradoinício real: nota1; real: nota2; real: nota3; real: nota4; real: nota5; real: nota6; real: nota7; real: soma; real: media;

leia nota1; leia nota2; leia nota3; leia nota4; leia nota5; leia nota6;

soma nota1 + nota2 + nota3 + nota4 + nota5 + nota6; media soma / 6;

escreva media;fimPerceba que para receber as notas foram utilizadas 6 variáveis. Com a técnica de matrizes poderia ter sido

utilizada apenas uma variável com a capacidade de armazenar 6 valores.

6.2 Operações básicas com Matrizes de uma dimensão

Uma matriz de uma dimensão ou vetor será representada por seu nome e seu tamanho (dimensão) entre colchetes. Desta forma seria uma matriz nota[6], sendo seu nome nota, possuindo um tamanho de 6.

Isto significa que poderão ser armazenados em nota até 6 elementos. Perceba que na utilização de variáveis simples existe uma regra: uma variável somente pode conter um valor por vez. No caso das matrizes, poderão armazenar mais de um valor por vez, pois são dimensionadas exatamente para este fim. Desta forma poder-se-á manipular uma quantidade maior de informação com pouco trabalho de processamento. Deve-se apenas considerar que com relação à manipulação dos elementos de uma matriz, eles ocorrerão de forma individualizada, pois não é possível efetuar a manipulação de todos os elementos do conjunto ao mesmo tempo.

No caso do exemplo do cálculo da média do aluno, ter-se-ia então uma única variável indexada (a matriz) contendo todos os valores das 8 notas. Isto seria representado da seguinte forma:

nota[0] = 4.0nota[1] = 6.0nota[2] = 5.0nota[3] = 3.0nota[4] = 7.5nota[5] = 4.0

Observe que o nome é um só. O que muda é a informação indicada dentro dos colchetes. A esta informação dá-se o nome de índice, sendo este o endereço em que o elemento está armazenado. É

necessário que fique bem claro que o elemento é o conteúdo da matriz, neste caso os valores das notas. No caso de nota[0] = 4.0, o número 0 é o índice; o endereço onde cujo elemento é 4.0 está armazenado.

Page 45: Lógica de Programação - rosalbamonteiro.com.brrosalbamonteiro.com.br/arquivos/logica_programacao.pdf · com programação, ... (Clipper, C, Pascal, Delphi) e sua documentação

45

Lógica de Programação6.2.1 Atribuição de uma Matriz

Anteriormente, foram utilizadas várias instruções para poder definir e montar um programa. No caso da utilização de matrizes, será definida a instrução conjunto que indicará em português estruturado a utilização de uma matriz, tendo como sintaxe: <tipo de dado> conjunto[<dimensão>], sendo que <dimensão> será a indicação do tamanho do vetor e <tipo de dado> se o vetor em questão utilizar valores reais, inteiros, lógicos ou caracteres.

6.2.2 Leitura de dados de uma Matriz

A leitura de uma matriz é processada passo a passo, um elemento por vez. A instrução de leitura é leia seguida da variável mais o índice. A seguir, é apresentado a codificação em português estruturado da leitura das notas dos alunos, cálculo da média e a sua apresentação.

PorTUgUês esTrUTUradoinício real: nota[6]; real: soma, media; inteiro: índice;

soma 0; para índice de 0 até 5 passo 1 faça leia nota[índice]; soma soma + nota[índice]; fim para

media soma / 6;

escreva media;fimVeja que o programa ficou mais compacto, além de possibilitar uma mobilidade maior, pois se houver a

necessidade de efetuar o cálculo para um número maior de alunos, basta dimensionar a matriz e mudar o valor final da instrução para. Observe que a leitura é processada uma por vez. Desta forma, a matriz é controlada pelo número do índice que faz com que cada entrada aconteça em uma posição diferente da outra. Assim sendo, a matriz passa a ter todas as notas. A tabela a seguir, mostra como ficarão os valores armazenados na matriz:

Matrícula:Indice Elemento

0 4.01 6.02 5.03 3.04 7.55 4.0

6.2.3 – Escrita dos dados de uma Matriz

O processo de escrita de uma matriz é bastante parecido com o processo de leitura de seus elementos. Para esta ocorrência deverá ser utilizada a instrução escreva seguida da indicação da variável e seu índice.

Page 46: Lógica de Programação - rosalbamonteiro.com.brrosalbamonteiro.com.br/arquivos/logica_programacao.pdf · com programação, ... (Clipper, C, Pascal, Delphi) e sua documentação

46

Escola Alcides Maya - Primeiro MóduloSupondo que após a leitura das 6 notas, houvesse a necessidade de apresenta-las antes da apresentação

do valor da média. Abaixo é apresentada a codificação em português estruturado da escrita das 6 notas antes de ser apresentado o cálculo da média.

PorTUgUês esTrUTUradoinício real: nota[6]; real: soma, media; inteiro: índice;

soma 0; para índice de 0 até 5 passo 1 faça leia nota[índice]; soma soma + nota[índice]; fim para

media soma / 6;

para índice de 0 até 5 passo 1 faça escreva nota[índice]; fim_para

escreva media;fim

6.3 Exercício de AulaPara demonstrar a utilização de uma matriz em um exemplo um pouco maior, considere como problemas os

exemplos apresentados em seguida:Primeiro eXemPLoDesenvolver um programa que efetue a leitura de dez elementos de uma matriz A tipo vetor. Construir uma

matriz B de mesmo tipo, observando a seguinte lei de formação: se o valor do índice for par, o valor deverá ser multiplicado por 5, sendo ímpar, deverá ser somado com 5. Ao final mostrar o conteúdo da matriz A e B

aLgoriTmoEste exemplo de resolução estará mostrando como fazer o tratamento da condição do índice.

1 – Iniciar o contador de índice, variável índice como 0 em um contador até 9;2 – Ler os 10 valores, um a um;3 – Verificar se o índice é par se sim multiplica por 5, se não soma 5. Criar a matriz B;4 – Apresentar o conteúdo das duas matrizes.

Deverá ser verificado se o valor do índice em um determinado momento é par (ele será par quando dividido por 2 obtiver resto igual a zero). Sendo a condição verdadeira, será atribuído na matriz B[índice] a multiplicação do elemento da matriz A[índice] por 5. Caso o valor do índice seja ímpar, será atribuído na matriz B[índice] a soma do elemento da matriz A[índice] por 5.

Page 47: Lógica de Programação - rosalbamonteiro.com.brrosalbamonteiro.com.br/arquivos/logica_programacao.pdf · com programação, ... (Clipper, C, Pascal, Delphi) e sua documentação

47

Lógica de ProgramaçãoPorTUgUês esTrUTUradoinício inteiro: matrizA[10]; inteiro: matrizB[10]; inteiro: indice, resp;

para índice de 0 até 9 passo 1 faça leia matrizA[índice]; fim_para

para índice de 0 até 9 passo 1 faça resp indice mod 2; se ( resp = 0 ) então matrizB[índice] matrizA[índice] * 5; senão matrizB[índice] matrizA[índice] + 5; fim_se fim_para

para índice de 0 até 9 passo 1 faça escreva matrizA[índice]; fim_para

para índice de 0 até 9 passo 1 faça escreva matrizB[índice]; fim_para

fim

segUNdo eXemPLoDesenvolver um programa que efetue a leitura de dez elementos de uma matriz A do tipo vetor. No final,

apresente o total da soma de todos os elementos que sejam ímpares.aLgoriTmoPerceba que em relação ao primeiro exemplo, este apresenta uma diferença: o primeiro pedia para verificar

se o índice era par ou ímpar. Neste exemplo, está sendo solicitado que analise a condição do elemento e não do índice. Já foi alertado anteriormente para se tomar cuidado para não confundir elemento com índice. Vamos a solução:

1 – Iniciar o contador de índice, variável índice como 0 em um contador até 9;2 – Ler os 10 valores, um a um;3 – Verificar se o elemento é ímpar; se sim efetuar a soma dos elementos;4 – Apresentar o total somado de todos os elementos ímpares da matriz.Observe que quando se faz menção ao índice indica-se a variável que controla o contador de índice, e no

caso do exemplo anterior, a variável índice. Quando se faz menção ao elemento, indica-se matrizA[índice] pois desta forma está se pegando o valor armazenado e não a sua posição de endereço.

Page 48: Lógica de Programação - rosalbamonteiro.com.brrosalbamonteiro.com.br/arquivos/logica_programacao.pdf · com programação, ... (Clipper, C, Pascal, Delphi) e sua documentação

48

Escola Alcides Maya - Primeiro MóduloPorTUgUês esTrUTUradoinicio inteiro: matriz[10]; inteiro: indice, resp, soma;

soma 0;

para indice de 0 até 9 passo 1 faça leia matrizA[índice]; fim_para

para indice de 0 até 9 passo 1 faça resp matrizA[indice] mod 2; se ( resp = 1 ) então soma soma + matrizA[indice] ; fim_se fim_para

escreva soma;fim

6.4 Exercícios de Fixação1 – Desenvolva a codificação em português estruturado dos seguintes programas:a) Faça um programa para ler 10 elementos de uma matriz tipo vetor e apresenta-los.b) Faça um programa para ler duas matrizes A e B com 20 elementos. Construir uma matriz C, onde cada

elemento de C é a soma do elemento correspondente de A com B. Apresentar a matriz C.c) Faça um programa que leia 15 elementos de uma matriz A do tipo vetor. Construir uma matriz B de mesmo

tipo, observando a seguinte lei de formação: “Todo elemento de B deverá ser o quadrado do elemento de A correspondente”. Apresentar as matrizes A e B.

d) Faça um programa para ler uma matriz A do tipo vetor com 15 elementos. Construir uma matriz B de mesmo tipo, sendo que cada elemento da matriz B seja o fatorial do elemento correspondente da matriz A. Apresentar as matrizes A e B.

e) Faça um programa para ler duas matrizes A e B com 15 elementos cada. Construir uma matriz C, sendo esta a junção das duas outras matrizes. Desta forma C deverá ter o dobro de elementos, ou seja, 30. Apresentar a matriz C.

f) Faça um programa para ler 20 elementos de uma matriz A tipo vetor e construir uma matriz B de mesma dimensão com os mesmos elementos da matriz A, sendo que deverão estar invertidos. Ou seja, o primeiro elemento de A passa a ser o último de B, o segundo elemento de A passa a ser o penúltimo de B e assim por diante. Apresentar as matrizes A e B.

g) Faça um programa para ler uma matriz A tipo vetor com 10 elementos. Construir uma matriz B de mesmo tipo, sendo que cada elemento de B deverá ser a metade de cada elemento de A . Apresentar os elementos das matrizes A e B.

h) Ler 20 elementos (valores reais) para temperaturas em graus Celsius em uma matriz A de uma dimensão do tipo vetor. O programa deverá apresentar a menor, a maior e a média das temperaturas lidas.

i) Ler 25 elementos (valores reais) para temperaturas em graus Celsius em uma matriz A de uma dimensão do tipo vetor. Construir uma matriz B de mesmo tipo e dimensão, em que cada elemento da matriz B deverá ser a conversão da temperatura em graus Fahrenheit do elemento correspondente da matriz A . Apresentar os elementos das matrizes A e B.

j) Ler 12 elementos inteiros para uma matriz A de uma dimensão do tipo vetor. Construir uma matriz B de mesmo tipo e dimensão, observando a seguinte lei de formação: “Todo elemento da matriz A que for ímpar deverá

Page 49: Lógica de Programação - rosalbamonteiro.com.brrosalbamonteiro.com.br/arquivos/logica_programacao.pdf · com programação, ... (Clipper, C, Pascal, Delphi) e sua documentação

49

Lógica de Programaçãoser multiplicado por 2 e armazenado na matriz B; caso contrário, o elemento da matriz A deverá ser armazenado na matriz B sem nenhum cálculo”. Apresentar os elementos das matrizes A e B.

k) Faça um programa que leia uma matriz numérica de 10 elementos. No final apresentar quantos números são positivos e quantos são negativos

l) Faça um programa que leia uma matriz numérica de 10 elementos. No final encontrar nesta matriz o maior valor lido, apresentando a sua posição na matriz e o seu valor.

m) Faça um programa que leia uma matriz numérica de 10 elementos. No final encontrar nesta matriz o maior valor lido e o menor valor lido

n) Em uma Escola Técnica de Informática, há um professor que faz 6 provas. Faça um programa que leia as notas destas provas para um vetor notas. No final calcular e apresentar a média do aluno e o resultado obtido conforme a tabela a seguir:

[00,05) - Reprovado[05,07) - Recuperação[07,09) - Satisfatório[09,10] - Ótimo

7 esTrUTUras de dados HomogêNeas iiNo capítulo anterior trabalhamos com o agrupamento de várias informações dentro de uma mesma variável,

de mesmo tipo de dado, chamada de estrutura de dados homogênea, ou seja, matrizes, do tipo vetor. Agora iremos trabalhar com uma estrutura um pouco mais complexa, também chamada de matrizes, mas de mais de uma dimensão.

7.1 Matrizes com mais de uma dimensãoAnteriormente, houve contato com o uso de uma única variável indexada com apenas uma dimensão (uma

linha e várias colunas), quando foi utilizado o exemplo para efetuar o cálculo da média do aluno. A partir deste ponto, serão apresentadas tabelas com mais colunas, sendo assim, teremos variáveis no sentido horizontal e vertical.

Com o conhecimento adquirido até este ponto, você tem condições suficientes para elaborar um programa que leia as notas dos alunos, calcule a média de cada aluno e no final apresente a média de toda a turma, utilizando-se de matrizes bidimensionais.

Porém, cuidado, é necessário manter um controle de cada índice em cada matriz para um mesmo aluno.Para facilitar o trabalho com estruturas deste porte é que serão utilizadas matrizes com mais dimensões. A

mais comum é a matriz de duas dimensões por se relacionar diretamente com a utilização de tabelas. Matrizes com mais de duas dimensões são utilizadas com menos freqüência, mas poderão ocorrer em

momentos em que se necessite trabalhar com um número maior de dimensões, porém estas são fáceis de utilizar, se estivermos dominando bem a utilização de uma matriz com duas dimensões.

É importante considerar que na manipulação de uma matriz unidimensional é utilizada uma única instrução de looping. No caso de matrizes com mais dimensões, deverão ser utilizadas o número de loopings relativo ao tamanho de sua dimensão. Desta forma, uma matriz de duas dimensões deverá ser controlada com dois loopings de três dimensões deverá ser controlada por três loopings e assim por diante.

Em matrizes de mais de uma dimensão os seus elementos são também manipulados de forma individualizada, sendo a referência feita sempre por meio de dois índices; o primeiro para indicar a linha e o segundo para indicar a coluna.

Para você ter uma idéia de como utilizar matrizes de duas dimensões vamos utilizar o mesmo exemplo que usamos no capítulo anterior, mas agora com um número maior de alunos: “Em uma Escola Técnica de Informática, há um professor que faz 4 avaliações durante o semestre. Gostaríamos de fazer um programa que leia as 4 notas de cada aluno da turma (turma com 8 alunos), calcule e apresente a média de cada aluno.”.

Page 50: Lógica de Programação - rosalbamonteiro.com.brrosalbamonteiro.com.br/arquivos/logica_programacao.pdf · com programação, ... (Clipper, C, Pascal, Delphi) e sua documentação

50

Escola Alcides Maya - Primeiro MóduloVeja como ficaria nossa tabela com as notas e as médias de cada aluno:

Aluno NOTA 1 NOTA 2 NOTA 3 NOTA 41 4.0 6.0 5.0 3.02 6.0 7.0 5.0 8.03 9.0 8.0 9.0 6.04 3.0 5.0 4.0 2.05 4.0 6.0 6.0 8.06 7.0 7.0 7.0 7.07 8.0 7.0 6.0 5.08 6.0 7.0 2.0 9.0

7.2 Operações básicas com matrizes de duas dimensõesUma matriz de duas dimensões está sempre fazendo referência a linhas e a colunas e é representada por

seu nome e seu tamanho (dimensão) entre colchetes.Desta forma é uma matriz de duas dimensões nota[8][4], onde seu nome é nota, possuindo um tamanho de

8 linhas e 4 colunas, ou seja, é uma matriz de 8 por 4 (8 x 4). Isto significa que podem ser armazenados em nota até 32 elementos.

Para armazenar as 4 notas do primeiro aluno deveríamos fazer algo como visto abaixo:

nota[0] [0] = 4.0nota[0] [1] = 6.0nota[0] [2] = 5.0nota[0] [3] = 3.0

Observe que o nome é um só. O que muda é a informação indicada dentro dos colchetes. No primeiro colchete está a informação da linha e no segundo colchete está a informação da coluna.

Para armazenar as 4 notas do segundo aluno deveríamos fazer o seguinte:

nota[1] [0] = 6.0nota[1] [1] = 7.0nota[1] [2] = 5.0nota[1] [3] = 8.0

Para armazenar as 4 notas do terceiro aluno deveríamos fazer o seguinte:

nota[2] [0] = 9.0nota[2] [0] = 8.0nota[2] [0] = 9.0nota[2] [0] = 6.0

E assim sucessivamente até que se armazene as notas de todos os oito alunos.

Page 51: Lógica de Programação - rosalbamonteiro.com.brrosalbamonteiro.com.br/arquivos/logica_programacao.pdf · com programação, ... (Clipper, C, Pascal, Delphi) e sua documentação

51

Lógica de Programação7.2.1 – Atribuição de uma Matriz

Uma matriz de duas dimensões é atribuída pela instrução conjunto já utilizada para definir o uso de uma matriz de uma dimensão, sendo bastante parecidas em sua referência.

A sintaxe é: <tipo de dado> : conjunto[<dimensão1>][<dimensão2>], sendo que <dimensão1> e <dimensão2> são a indicação do tamanho da tabela e <tipo de dado> o tipo da matriz, que poderá ser formada por valores reais, inteiros, lógicos ou caracteres.

7.2.2 – Leitura de dados de uma Matriz

A leitura de uma matriz de duas dimensões, assim como das matrizes de uma dimensão é processado passo a passo, um elemento por vez. A instrução de leitura é leia seguida da variável mais os seus índices. A seguir, são apresentados o fluxograma e a codificação em português estruturado da leitura das notas dos alunos, cálculo da média e a sua apresentação.

Observe que está sendo considerada a leitura de 4 notas de 8 alunos. Assim sendo, a tabela em questão armazena 32 elementos. Um detalhe a ser considerado é a utilização de duas variáveis para controlar os dois índices de posicionamento de dados na tabela. Anteriormente, utilizamos a variável índice para controlar as posições dos elementos dentro da matriz, ou seja, a posição em nível de linha. Neste exemplo a variável índice passa a ser tratada como lin, controlando a posição da linha, e a segunda variável será tratada como col, controlando a posição da coluna. Muitos programadores utilizam i no lugar de lin e utilizam j no lugar de col.

Analisando o fluxograma, temos a inicialização das variáveis lin e col como 0, ou seja, a leitura será efetuada na primeira linha da primeira coluna. Em seguida é iniciado em primeiro lugar o looping da variável lin para controlar a posição em relação às linhas e depois é iniciado o looping da variável col para controlar a posição em relação às colunas.

Veja que, ao serem iniciados os valores para o preenchimento da tabela, eles são colocados na posição nota[0][0], lembrando que o primeiro valor dentro dos colchetes representa a linha e o segundo representa a coluna.

Será digitado então, para o primeiro aluno a primeira nota. Depois é incrementado mais 1 em relação à coluna, sendo colocada para a entrada a posição nota[0][1], linha 0 coluna 1. Desta forma, será digitado para o primeiro aluno a segunda nota.

Quando o contador de coluna atingir o valor 4, ele será encerrado e será efetuado o cálculo e a apresentação da média. Em seguida o contador da variável lin será incrementado com mais 1, tornando-se 1. Será então inicializado novamente o contador col em 0, permitindo que seja digitado um novo dado na posição nota[1][0].

O mecanismo de preenchimento estender-se-á até que o contador de linhas atinja o seu último valor, no caso 8. Esse looping é o principal, tendo a função de controlar o posicionamento na tabela por aluno. O segundo looping, mais interno, controla o posicionamento das notas.

PorTUgUês esTrUTUradoinício real : nota[8][4]; real : soma, media; inteiro : lin, col ;

para lin de 0 até 7 passo 1 faça soma 0; para col de 0 até 3 passo 1 faça leia nota[lin][col]; soma soma + nota[lin][col]; fim_para media soma / 4; escreva media; fim_parafim

Page 52: Lógica de Programação - rosalbamonteiro.com.brrosalbamonteiro.com.br/arquivos/logica_programacao.pdf · com programação, ... (Clipper, C, Pascal, Delphi) e sua documentação

52

Escola Alcides Maya - Primeiro Módulo7.3 Exercício de Aula

Para demonstrar a utilização de uma matriz de duas dimensões, considere o exemplo apresentado a seguir:Primeiro exemploDesenvolver um programa que efetue a leitura das receitas e despesas dos primeiros 6 meses de uma

empresa. Calcular e armazenar o resultado mensal da empresa.Algoritmo1 – Ler as receitas de cada mês2 – Ler as despesas de cada mês3 – Calcular o resultado de cada mês subtraindo a receita da despesa4 – Apresentar as receitas, as despesas e o resultados de cada mês

Pela característica do programa a ser desenvolvido, seria ideal utilizarmos uma matriz 3 x 6, para armazenar estes dados. Nas colunas teremos os meses, nas linhas teremos respectivamente receitas, despesas e resultados, veja o desenho a seguir:

Janeiro Fevereiro Março Abril Maio JunhoReceitasDespesasResultados

PorTUgUês esTrUTUradoinício real : caixa[3][ 6]; inteiro: lin, col;

lin 1; para col de 0 até 5 passo 1 faça escreva ‘Digite a receita do mês’; leia caixa[lin][col]; fim_para

lin 2; para col de 0 até 5 passo 1 faça escreva ‘Digite a despesa do mês’; leia caixa[lin][col]; fim_para

para col de 0 até 5 passo 1 faça caixa[2][col] caixa[0][col] - caixa[1][col]; fim_para

para col de 0 até 5 passo 1 faça escreva ‘A receita do mês’, caixa[0][col]; escreva ‘A despesa do mês’,caixa[1][col]; escreva ‘O resultado do mês’,caixa[2][col]; fim_para

fim

Page 53: Lógica de Programação - rosalbamonteiro.com.brrosalbamonteiro.com.br/arquivos/logica_programacao.pdf · com programação, ... (Clipper, C, Pascal, Delphi) e sua documentação

53

Lógica de Programação

7.4 eXercícios de FiXação1 – Desenvolva a codificação em português estruturado dos seguintes programas:

a) Faça um programa para ler duas matrizes A e B, cada uma de duas dimensões com 5 linhas e 3 colunas. Construir uma matriz C de mesma dimensão, que é formada pela soma dos elementos da matriz A com os elementos da matriz B. Apresentar a matriz C.

b) Faça um programa para ler duas matrizes A e B, cada uma com 7 elementos. Construir uma matriz C, de duas dimensões, em que a primeira coluna deverá ser formada pelos elementos da matriz A e a segunda coluna deverá ser formada pelos elementos da matriz B. Apresentar a matriz C.

c) Faça um programa para ler 20 elementos para uma matriz qualquer, considerando que ela tenha o tamanho de 4 linhas por 5 colunas, em seguida apresentar a matriz.

d) Faça um programa para ler uma matriz A de uma dimensão com 10 elementos. Construir uma matriz C de duas dimensões com três colunas, em que a primeira coluna da matriz C é formada pelos elementos da matriz A somados com mais 5, a segunda coluna é formada pelo valor do cálculo da fatorial de cada elemento correspondente da matriz A e a terceira e última coluna deverá ser formada pelos quadrados dos elementos correspondentes da matriz A . Apresentar a matriz C.

e) Faça um programa para ler duas matrizes A e B, cada uma com uma dimensão pra 12 elementos. Construir uma matriz C de duas dimensões, sendo que a primeira coluna da matriz C deverá ser formada pelos elementos da matriz A multiplicados por 2 e a segunda coluna deverá ser formada pelos elementos da matriz B subtraídos de 5. Apresentar a matriz C.

f) Faça um programa para ler uma matriz A de duas dimensões com 5 linhas e 4 colunas. Construir uma matriz B de mesma dimensão, onde cada elemento da matriz B deverá ser o fatorial de cada elemento correspondente da matriz A . Apresentar ao final as matrizes A e B.

g) Faça um programa para ler uma matriz A de duas dimensões com 5 linhas e 5 colunas. Construir uma matriz B de mesma dimensão, sendo que cada elemento da matriz B deverá ser o dobro de cada elemento correspondente da matriz A, com exceção para os valores situados na diagonal principal (posições B[1,1], B[2,2], B[3,3], B[4,4] e B[5.5] ) os quais deverão ser o triplo de cada elemento correspondente da matriz A . Apresentar ao final a matriz B.

h) Faça um programa para ler uma matriz A de duas dimensões com 7 linhas e 7 colunas. Construir uma matriz B de mesma dimensão, sendo que cada elemento da matriz B deverá ser o somatório de cada elemento correspondente da matriz A, com exceção para os valores situados na diagonal principal (posições B[1,1], B[3,3], B[5.5] e B[7,7] ) os quais deverão ser o fatorial de cada elemento correspondente da matriz A . Apresentar ao final a matriz B.

i) Faça um programa para ler uma matriz A de duas dimensões com 6 linhas e 5 colunas. Construir uma matriz B de mesma dimensão, que deverá ser formada do seguinte modo: para cada elemento par da matriz A deverá ser somado 5 e para cada elemento ímpar da matriz A deverá ser subtraído 4. Apresentar ao final a matriz A e B.

j) Faça um programa para ler uma matriz A de duas dimensões com 4 linhas e 4 colunas. Apresentar o somatório dos elementos situados na diagonal principal (posições A[1,1], A[2,2], A[3,3], A[4.4] ) da referida matriz.

k) Faça um programa que leia uma matriz A de duas dimensões com 15 linhas e 15 colunas. Apresentar o somatório dos elementos pares situados na diagonal principal da referida matriz.

l) Faça um programa que leia uma matriz A de duas dimensões com 7 linhas e 7 colunas. Ao final apresentar o total de elementos pares existentes dentro da matriz.

m) Faça um programa que leia uma matriz de duas dimensões com 7 linhas e 7 colunas. Ao final apresentar o total de elementos positivos, o total de elementos negativos e o total de elementos cujo valor é zero.

n) Faça um programa que leia uma matriz numérica de duas dimensões de 5 linhas e 8 colunas. No final encontrar e apresentar desta matriz o maior valor lido e o menor valor lido.

o) Faça um programa que leia uma matriz de duas dimensões com 5 linhas e 5 colunas. Apresentar o somatório dos elementos positivos situados na diagonal principal da referida matriz.

Page 54: Lógica de Programação - rosalbamonteiro.com.brrosalbamonteiro.com.br/arquivos/logica_programacao.pdf · com programação, ... (Clipper, C, Pascal, Delphi) e sua documentação

54

Escola Alcides Maya - Primeiro Módulo8 ProcedimeNTos e FUNções

A partir deste momento vamos aprender o conceito da técnica de sub-rotinas.Estas sub-rotinas também são conhecidas pela denominação de módulos, sub-programas, ou sub-

algoritmos.Na linguagem C as sub-rotinas são tratadas como FUNÇÕES. Na realidade, não importa como são chamadas, o que importa é a forma como funcionam e como devem ser

aplicadas em um programa, e é isto que iremos aprender a partir deste momento.Iremos rever o conceito de criação estruturada de programas, pois para escrever um programa de computador

necessita-se de estudo (levantamento de todas as necessidades e detalhes do que deverá ser feito) e metodologia (regras básicas que deverão ser seguidas).

Sem a aplicação de métodos não será possível resolver grandes problemas; quando muito, pequenos problemas.

As Sub-rotinasNo geral, problemas complexos exigem algoritmos complexos. Mas sempre é possível dividir um problema

grande em problemas menores. Desta forma, cada parte menor tem um algoritmo mais simples, e é esse trecho menor que é chamado de sub-rotina. Uma sub-rotina é na verdade um programa, e sendo um programa poderá efetuar diversas operações computacionais (entrada, processamento e saída) e deverá ser tratada como foram os programas projetados até este momento. As sub-rotinas são utilizadas na divisão de algoritmos complexos, permitindo assim possuir a modularização de um determinado problema, considerado grande e de difícil solução.

Quando trabalhamos com esta técnica, pode-se deparar com a necessidade de dividir uma sub-rotina em outras tantas quantas forem necessárias, buscando uma solução mais simples de uma parte do problema maior. O processo de dividir sub-rotinas em outras é denominado Método de Refinamento Sucessivo.

O Método Top-DownDesde muito tempo este é um dos processos mais simples e mais utilizados pelos programadores.O processo de programar um computador torna-se bastante simples quando aplicado o método de utilização

de sub-rotinas (módulos de programas). Porém, a utilização dessas sub-rotinas deverá ser feita com aplicação do método top down.

Um método bastante adequado para a programação de um computador é trabalhar com o conceito de programação estruturada, pois a maior parte das linguagens de programação utilizadas atualmente também é, o que facilita a aplicação deste processo de trabalho.

O método mais adequado para a programação estruturada é o Top-Down (De cima para baixo) o qual se caracteriza basicamente por:

• Antes de iniciar a construção do programa, o programador deverá ter em mente as tarefas principais que este deverá executar. Não é necessário saber como funcionarão, somente saber quantas são.

• Conhecidas todas as tarefas a serem executadas, tem-se em mente como deverá ser o programa principal, o qual vai controlar todas as outras tarefas distribuídas em suas sub-rotinas.

• Tendo definido o programa principal, é iniciado o processo de detalhamento para cada sub-rotina. Desta forma são definidos vários algoritmos, um para cada rotina em separado, para que se tenha uma visão do que deverá ser executado em cada módulo de programa. Existem programadores que estabelecem o número máximo de linhas de programa que uma rotina deverá possuir. Se o número de linhas ultrapassa o limite preestabelecido, a rotina em desenvolvimento é dividida em outra sub-rotina (é neste ponto que se aplica o método de refinamento sucessivo).

O método Top-Down faz com que o programa tenha uma estrutura semelhante a um organograma.A utilização do método “de cima para baixo” permite que seja efetuado cada módulo de programa em

separado. Desta forma, cada um pode ser testado separadamente garantindo que o programa completo esteja sem erro ao seu término.

Outro detalhe a ser considerado é que muitas vezes existem em um programa trechos de códigos que são repetidos várias vezes. Esses trechos poderão ser utilizados como sub-rotinas, proporcionando um programa menor e mais fácil de ser alterado num futuro próximo.

Page 55: Lógica de Programação - rosalbamonteiro.com.brrosalbamonteiro.com.br/arquivos/logica_programacao.pdf · com programação, ... (Clipper, C, Pascal, Delphi) e sua documentação

55

Lógica de Programação

A utilização de sub-rotinas e o uso do método Top-Down na programação permitem ao programador elaborar rotinas exclusivas. Por exemplo, uma rotina somente para entrada, outra para a parte de processamento e outra para saída dos dados.

Aplicação prática do uso de Sub-RotinasAs sub-rotinas podem ser subdivididas em dois tipos: Procedimentos e Funções. Entre estes dois tipos de

sub-rotinas existem algumas diferenças, mas o conceito é o mesmo para ambas.

Um Procedimento é um bloco de programa contendo início e fim e será identificado por um nome, por meio do qual será referenciado em qualquer parte do programa principal ou do programa chamador da rotina.

Quando uma sub-rotina é chamada por um programa, ela é executada e ao seu término o controle de processamento retorna automaticamente para a primeira linha de instrução após a linha que efetuou a chamada de sub-rotina.

Uma função também é um bloco de programa, como são os procedimentos, contendo inicio e fim e sendo identificada por um nome, por meio do qual também será referenciada em qualquer parte do programa principal. Uma sub-rotina de função é na verdade muito parecida com uma sub-rotina de procedimento. A sua principal diferença está no fato de uma função retornar um determinado valor.

As funções formam o alicerce da programação em C. Você faz toda a programação C dentro de uma função, porque todos os programas devem incluir main, que é uma função.

Em outras linguagens como Pascal, são utilizados procedimentos e funções, FORTRAN utiliza somente funções e a linguagem Assembly utiliza somente procedimentos.

A linguagem C utiliza somente funções com e sem retorno de valores, tornando-se um pouco diferente na qualificação de sub-rotinas e funções, conforme a lógica de programação.

Mas, não se preocupe, isto não irá mudar a forma como você vai trabalhar na linguagem C.

Exercício de Aula

Vamos criar um programa de calculadora que apresente um menu de seleções no programa principal. Esse menu deverá dar ao usuário a possibilidade de escolher uma entre quatro operações aritméticas. Escolhida a opção desejada, deverá ser solicitada à entrada de dois números e depois de processada a operação, deverá ser exibido o resultado.

Este programa deverá ser um conjunto de cinco rotinas, sendo uma principal e quatro secundárias. A rotina principal efetuará o controle das quatro rotinas secundárias que, por sua vez, pedirão a leitura de dois valores, farão a operação e apresentarão o resultado obtido. A figura a seguir apresenta um organograma com a idéia de hierarquização das rotinas do programa. A quinta opção não se caracteriza por ser uma rotina, apenas a opção que vai encerrar o looping de controle do menu.

Tendo uma idéia da estrutura geral do programa, será escrito em separado cada algoritmo com os seus detalhes de operação. Primeiro o programa principal e depois as outras rotinas, de preferência na mesma ordem em que estão mencionadas no organograma.

É ideal que você codifique o programa aos poucos, como por exemplo: na definição do programa acima, primeiro vamos testar o menu e ver se a interação entre as partes funciona.

Veja no programa a seguir:

Page 56: Lógica de Programação - rosalbamonteiro.com.brrosalbamonteiro.com.br/arquivos/logica_programacao.pdf · com programação, ... (Clipper, C, Pascal, Delphi) e sua documentação

56

Escola Alcides Maya - Primeiro Móduloinicio character: opcao;

opcao <- 0;enquanto opcao <> ‘5’ faça escrever “1 – Adição”; escrever “2 - Subtracao”; escrever “3 - Multiplicacao”; escrever “4 – Divisão”; escrever “5 - Fim do programa”; escrever “Escolha uma opcao: “; leia opcao;

se opcao = ‘1’ entao somar; senão se opcao = ‘2’ entao subtrair; senão se opcao = ‘3’ então multiplicar; senão se opcao = ‘4’ então dividir; senão se opcao = ‘5’; então escrever “Encerrando o programa”; senão escrever “Opcao invalida”; fim_se fim_se fim_se fim_se fim_se

fim_enquantofim

procedimento somarinicio real: valorA, valorB, result;

escrever “Rotina de Soma”; escrever “Digite um valor para A: “; leia valorA; escrever “Digite um valor para B: “; leia valorB;

Page 57: Lógica de Programação - rosalbamonteiro.com.brrosalbamonteiro.com.br/arquivos/logica_programacao.pdf · com programação, ... (Clipper, C, Pascal, Delphi) e sua documentação

57

Lógica de Programação result <- valorA + valorB;

escrever “A soma de A com B e: “ , result; fim [somar]

procedimento subtrairinicio real: valorA, valorB, result;

escrever “Rotina de Subtração”; escrever “Digite um valor para A: “; leia valorA; escrever “Digite um valor para B: “; leia valorB;

result <- valorA - valorB;

escrever “A subtração de A com B e: “ , result; fim [subtrair]

procedimento multiplicarinicio real: valorA, valorB, result;

escrever “Rotina de Multiplicação”; escrever “Digite um valor para A: “; leia valorA; escrever “Digite um valor para B: “; leia valorB;

result <- valorA * valorB;

escrever “A multiplicação de A com B e: “ , result; fim [multiplicar]

procedimento dividirinicio real: valorA, valorB, result;

escrever “Rotina de Divisão”; escrever “Digite um valor para A: “; leia valorA; escrever “Digite um valor para B: “; leia valorB;

result <- valorA / valorB;

Page 58: Lógica de Programação - rosalbamonteiro.com.brrosalbamonteiro.com.br/arquivos/logica_programacao.pdf · com programação, ... (Clipper, C, Pascal, Delphi) e sua documentação

58

Escola Alcides Maya - Primeiro Módulo escrever “A subtração de A com B e: “ , result; fim [dividir]

FunçõesAs funções podem ser utilizadas da forma mais simples possível, como as que não recebem nenhuma

informação e também não retornam nenhuma informação. Mas podem ser um pouco mais sofisticadas podendo receber informações de quem as chamou e se for necessário retornar uma informação para a função que a chamou.

A principal diferença existente entre uma sub-rotina do tipo procedimento e uma sub-rotina do tipo função é a capacidade que uma função tem de retornar sempre um valor.

Vamos ver um exemplo através da função somar:

função inteiro somar ( )inicio real: valorA, valorB, result;

escrever “Rotina de Soma”; escrever “Digite um valor para A: “; leia valorA; escrever “Digite um valor para B: “; leia valorB;

result <- valorA + valorB;

return result; fim [somar]

No programa acima podemos perceber o comando return que retorna o valor da variável result.

Page 59: Lógica de Programação - rosalbamonteiro.com.brrosalbamonteiro.com.br/arquivos/logica_programacao.pdf · com programação, ... (Clipper, C, Pascal, Delphi) e sua documentação

59

Lógica de ProgramaçãoeXercícios de FiXação1. Faça um programa que efetue o cálculo de uma prestação em atraso. Para tanto, utilize a fórmula PREST

= VALOR + (VALOR * (TAXA / 100) * TEMPO). O programa deverá chamar uma função que faça a entrada dos dados e o cálculo da prestação e retorne o valor deste cálculo para a função principal (main). Finalmente apresentar o valor da prestação.

2. Faça um programa que possua uma função que efetue e permita apresentar o somatório dos N primeiros números inteiros. (1+2+3+4+5+6+...+N). Esta função deverá receber da função principal (main) o número N e no final esta mesma função deverá retornar o valor do somatório, que deverá ser apresentado ao usuário pela função principal (main).

3. Faça um programa que possua uma função para calcular e apresentar o valor de uma potência de um número qualquer. Ou seja, ao informar para a função o número e sua potência, deverá ser apresentado o seu resultado. Por exemplo, se for mencionado no programa principal a função POTENCIA(2,3), deverá ser apresentado o valor 8.

4. Faça um programa que possua uma função para calcular e apresentar a série de Fibonacci de N termos. A série de Fibonacci é formada pela seqüência: 1, 1, 2, 3, 5, 8, 13, 21, 34,...etc. Está série caracteriza-se pela soma de um termo posterior com o seu anterior subseqüente. A função main deve apenas chamar a função que calcula a série de Fibonacci.

5. Faça um programa que efetua a leitura de um número inteiro e apresente uma mensagem informando se o número é par ou ímpar. Usar uma função que identifique se o número é par ou ímpar.

6. Faça um programa que apresente um menu com as seguintes opções de cálculos:• Calcular a área do quadrado• Calcular a área do retângulo• Calcular a área do circulo• Encerrar o programaEstes cálculos devem ser realizados em funções, ou seja, deverá ter uma função para cada tipo de cálculo.

Cada função deverá ter entrada de dados (digitação dos dados para o cálculo), processamento dos dados (cálculos propriamente ditos) e a saída de dados (apresentação dos resultados dos cálculos).

7. Faça um programa que apresente um menu com as seguintes opções e efetue os respectivos cálculos através de funções:

• Calcular o volume de uma lata de óleo• Calcular o volume de uma caixa• Encerrar o programa

8. Em uma Escola Técnica de Informática, há um professor que faz 6 provas. Faça um programa para calcular a média dos alunos de uma escola. O programa deverá ter um menu com as seguintes informações:

• Calcular a média• Encerrar o programaO cálculo da média deverá ser realizado em uma função onde deverá ser solicitado o valor das 6 notas

escolares, efetuar o cálculo da média e apresentar no final o resultado obtido conforme a tabela a seguir:[00,05) - Reprovado[05,07) - Recuperação[07,09) - Satisfatório[09,10] - Ótimo

Page 60: Lógica de Programação - rosalbamonteiro.com.brrosalbamonteiro.com.br/arquivos/logica_programacao.pdf · com programação, ... (Clipper, C, Pascal, Delphi) e sua documentação

60

Escola Alcides Maya - Primeiro Módulo9. Faça um programa para ler uma temperatura em graus Celsius. Criar uma função que converte a

temperatura de Celsius para Fahrenheit. A fórmula de conversão é F ( 9 * C + 160 ) / 5, sendo F a temperatura em Fahrenheit e C a temperatura em Celsius. A função de conversão deve receber como entrada de dados a temperatura em Celsius em tipo de dado float, fazer a conversão e retornar o valor convertido em graus Fahrenheit.

10. Faça um programa para ler uma temperatura em graus Fahrenheit. Criar uma função que converte a temperatura de Fahrenheit para Celsius. A fórmula de conversão é C ( F – 32 ) * ( 5 / 9 ), sendo F a temperatura em Fahrenheit e C a temperatura em Celsius. A função de conversão deve receber como entrada de dados a temperatura em Fahrenheit em tipo de dado float, fazer a conversão e retornar o valor convertido em graus Celsius.

11. Faça um programa que leia um caracter do teclado. Criar uma função que irá converter esta letra para uma letra minúscula e retorna-la.

12. Faça um programa que leia dois números. Criar uma função chamada potencia que eleva o primeiro número a uma potência inteira do segundo número e retorna o valor calculado. Por exemplo, se for lido os números 2 e 3, a função irá calcular 2³ ou seja 2 * 2 * 2

13. Faça um programa que leia e calcule a área de um retângulo. O programa deverá ter uma função que leia a base e a altura do retângulo, calcule a área e retorne o valor do resultado que deverá ser apresentada na função main. Fórmula: Área do retângulo = base * altura.

14. Faça um programa que leia e calcule a área de um triângulo. O programa deverá ter uma função que leia a base e a altura do retângulo, calcule a área e retorne o valor do resultado que deverá ser apresentada na função main. Fórmula: Área do triângulo = (base * altura) / 2.

15. Faça um programa que leia e calcule a área de um trapézio. O programa deverá ter uma função que leia a base maior, a base menor e a altura do trapézio, calcule a área e retorne o valor do resultado que deverá ser apresentada na função main. Fórmula: Área do trapézio = ((base maior + base menor) /2) * altura.

16. Faça um programa que leia e calcule a área de um círculo. O programa deverá ter uma função que leia o raio do círculo, calcule a área e retorne o valor do resultado que deverá ser apresentada na função main. Fórmula: Área do círculo = * r².

Anotações:________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________

Page 61: Lógica de Programação - rosalbamonteiro.com.brrosalbamonteiro.com.br/arquivos/logica_programacao.pdf · com programação, ... (Clipper, C, Pascal, Delphi) e sua documentação

61

Lógica de Programação

Bibliografia utilizada:1. MANZANO, JOSÉ AUGUSTO N. G. – Algoritmos: Lógica para Desenvolvimento de Programação, Editora

Érica, São Paulo, 2000.2. MANZANO, JOSÉ AUGUSTO N. G. – Lógica estruturada para Programação, Editora Érica, São Paulo,

2001.3. BOHI, MARILYN – Guia para programadores, Editora Campus, Rio de Janeiro, 1988.4. ALCIDES MAYA - Polígrafo Técnicas de Programação – Porto Alegre, 20015. ALCIDES MAYA - Polígrafo Algoritmo – Porto Alegre, 20016. REIS, ANTONIO – Manual Básico de Linguagem C, Porto Alegre, 2000.7. Outras fontes – Internet, Revistas e Periódicos.