apostila - algoritmos e logica de programacao

66
Faculdade FORTIUM Curso de Sistemas de Informação Algoritmos e Lógica de Programação Prof. Giselle Barbosa Gomes Machado

Upload: alexandre-de-morais

Post on 31-Dec-2015

56 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: Apostila - Algoritmos e Logica de Programacao

Faculdade FORTIUM Curso de Sistemas de Informação

Algoritmos e Lógica de Programação

Prof. Giselle Barbosa Gomes Machado

Page 2: Apostila - Algoritmos e Logica de Programacao

Curso de Sistemas de Informação Algoritmos e Lógica de Programação _______________________________________________________________________________________________________________________

~ 1 ~

1- INTRODUÇÃO A automatização de tarefas é um aspecto marcante da sociedade moderna. O

aperfeiçoamento tecnológico alcançado, com respeito a isto, teve como elementos fundamentais a análise e a obtenção de descrições da execução de tarefas em termos de ações simples o suficiente, tal que pudessem ser automatizadas por uma máquina especialmente desenvolvida para este fim, O COMPUTADOR.

Em Ciência da Computação houve um processo de desenvolvimento simultâneo e interativo de máquinas (hardware) e dos elementos que gerenciam a execução automática (software) de uma dada tarefa. E essa descrição da execução de uma tarefa, como considerada acima, é chamada algoritmo.

O objetivo dessa matéria é a Lógica de Programação dando uma base teórica e prática, suficientemente boa, para que, o aluno domine os algoritmos e esteja habilitado a aprender uma linguagem de programação. Será mostrado também um grupo de algoritmos clássicos para tarefas cotidianas, tais como: ordenação e pesquisa. 2- DEFINIÇÕES DE ALGORITMO

• "O conceito central da programação e da Ciência da Computação é o conceito de algoritmos, isto é, programar é basicamente construir algoritmos."

• É a descrição, de forma lógica, dos passos a serem executados no cumprimento de determinada tarefa.

• "O algoritmo pode ser usado como uma ferramenta genérica para representar a solução de tarefas independente do desejo de automatizá-las, mas em geral está associado ao processamento eletrônico de dados, onde representa o rascunho para programas (Software)."

• "Serve como modelo para programas, pois sua linguagem é intermediária à linguagem humana e às linguagens de programação, sendo então, uma boa ferramenta na validação da lógica de tarefas a serem automatizadas."

• "Um algoritmo é uma receita para um processo computacional e consiste de uma série de operações primitivas, interconectadas devidamente, sobre um conjunto de objetos. Os objetos manipulados por essas receitas são as variáveis."

• Como qualquer modelo, um algoritmo é uma abstração da realidade. A abstração é o processo de identificar as propriedades relevantes do fenômeno que esta sendo modelado. Usando o modelo abstrato, podemos nos centrar unicamente nas propriedades relevantes para nós, dependendo da finalidade da abstração, e ignorar as irrelevantes.

• É a forma pela qual descrevemos soluções de problemas do nosso mundo, de forma que possam ser implementadas utilizando os recursos do mundo computacional. Como o mundo computacional possuí severas limitações em relação ao nosso mundo, é necessário que sejam impostas algumas regras básicas na forma de solucionar os problemas, para que possamos utilizar os recursos de hardware e software disponíveis. Algoritmos apesar de servirem para representar a solução de qualquer problema, no caso do Processamento de Dados, eles devem seguir as regras básicas de programação para que sejam compatíveis com as linguagens de programação.

Page 3: Apostila - Algoritmos e Logica de Programacao

Curso de Sistemas de Informação Algoritmos e Lógica de Programação _______________________________________________________________________________________________________________________

~ 2 ~

*** ATENÇÃO *** Algoritmo não é a solução de um problema, pois, se assim fosse, cada problema teria um único algoritmo. Algoritmo é um caminho para a solução de um problema, e em geral, os caminhos que levam a uma solução são muitas. O aprendizado de algoritmos é como aprender a jogar futebol, não se consegue a não ser através de muitos exercícios. Algoritmos não se aprendem: - Copiando Algoritmos - Estudando Algoritmos Algoritmos só se aprendem: - Construindo Algoritmos

- Testando Algoritmos

2.1- Fases de um Algoritmo Quando temos um problema e vamos utilizar um computador para resolvê-lo inevitavelmente temos que passar pelas seguintes etapas: a) Definir o problema.

b) Realizar um estudo da situação atual e verificar quais a(s) forma(s) de resolver o problema. c) Terminada a fase de estudo, utilizar uma linguagem de programação para escrever o programa que deverá a princípio, resolver o problema. d) Analisar junto aos usuários se o problema foi resolvido. Se a solução não foi encontrada, deverá ser retornado para a fase de estudo para descobrir onde está a falha.

2.2- Conceitos Algoritmo

É uma seqüência finita de ações que descrevem como um problema pode ser resolvido.

Instrução

São frases que indicam as ações a serem executadas. São compostas de um verbo no

imperativo/infinitivo mais um complemento.

Ex. Bata(bater) duas claras em neve

Ligue os faróis

Abra a porta

Programa

Ações de um algoritmo obedecendo à sintaxe de uma linguagem de programação.

Page 4: Apostila - Algoritmos e Logica de Programacao

Curso de Sistemas de Informação Algoritmos e Lógica de Programação _______________________________________________________________________________________________________________________

~ 3 ~

2.3- Como Construir um algoritmo

a) Análise Preliminar

Entenda o problema, identifique os dados envolvidos e os resultados esperados.

b) Solução

Desenvolver algoritmo para resolver o problema

c) Teste de qualidade (Teste de mesa)

Ideal testar o algoritmo com o máximo de combinações possíveis

d) Alteração

Caso o resultado do algoritmo não seja satisfatório, altere-o e submeta a um novo teste.

e) Produto Final

Algoritmo concluído e testado.

2.4- Decomposição (Top-Down)

Dividir o problema em problemas menores.

Exemplo.

1. Troque o pneu furado.

1. Pegue o material necessário (Inicio)

2.Troque o pneu furado (Meio)

3.Guarde o material (Fim)

� Abra o porta-malas

� Retire o macaco, o estepe e a chave em cruz e o sinalizador

� Coloque o sinalizador atrás do carro

� Afrouxe as porcas do pneu furado

� Coloque o macaco na posição correta

� Levante o carro

� Retire as porcas

� Retire o pneu

� Coloque o estepe

Detalhamento Pequeno

Um pouco mais de Detalhes

Operações Detalhadas

Page 5: Apostila - Algoritmos e Logica de Programacao

Curso de Sistemas de Informação Algoritmos e Lógica de Programação _______________________________________________________________________________________________________________________

~ 4 ~

� Coloque as porcas

� Desça o carro

� Retire o macaco

� Aperte as porcas do pneu trocado

� Guarde o macaco, o pneu furado , o sinalizador e a chave em cruz.

� Feche o porta-malas

Obs. Algumas instruções poderiam ser dividas mais uma vez.

2.5- Desenvolvimento Estruturado

São técnicas que permitem sistematizar e ajudar no desenvolvimento de algoritmos para

a resolução de grandes e complexos problemas computacionais.

Objetivos destas técnicas

- Facilitar o desenvolvimento do algoritmo

- Facilitar o seu entendimento pelos humanos

- Antecipar a comprovação de sua correção

- Facilitar a sua manutenção e modificação

- Permitir que o seu desenvolvimento possa ser empreendido simultaneamente por uma

equipe de pessoas

2.6- Formas de representação

a) Descrição Narrativa

Ex. Cálculo da média de um aluno:

– Obter as notas da primeira e da segunda prova

– Calcular a média aritmética entre as duas

– Se a média for maior ou igual a 7, o aluno foi aprovado, senão ele foi reprovado

Page 6: Apostila - Algoritmos e Logica de Programacao

Curso de Sistemas de Informação Algoritmos e Lógica de Programação _______________________________________________________________________________________________________________________

~ 5 ~

b) Fluxograma

Representação gráfica de algoritmos, ou seja, das instruções e/ou módulos do processamento. Conhecido também como diagrama de blocos utiliza modelagem visual para especificar o conjunto de instruções através de formas geométricas, facilitando a compreensão da lógica utilizada pelo profissional. Existem atualmente vários padrões para definir as formas geométricas a serem utilizadas para as diversas instruções (passos) a serem seguidos pelo sistema, o padrão utilizado nesta disciplina, será definido pelo professor durante as aulas. Abaixo, veja alguns símbolos que são utilizados no fluxograma:

SÍMBOLO DESCRIÇÃO

- Marcador de Inicio ou fim do fluxograma

- Entrada de dados

- Saída de dados

.V.

- Estrutura condicional (Se – Então – Senão)

.F.

- Processamento - Laço de repetição - Conector

Vamos a seguir, exibir um fluxograma que teria o objetivo de calcular o valor diário de um salário mínimo. Seguindo uma lógica simples, teríamos que dividir o valor do salário mínimo (que sabemos ser equivalente a R$ 360,00) e dividir este total por 30 (número de dias de um mês).

Inicio Fim

Idade

“A idade é”, Idade

Idade >= 18

Nasc <- Ano - Idade

I de 1 até 10 passo 1

Page 7: Apostila - Algoritmos e Logica de Programacao

Curso de Sistemas de Informação Algoritmos e Lógica de Programação _______________________________________________________________________________________________________________________

~ 6 ~

Observe como ficaria este fluxograma:

• A princípio marcamos o início do fluxograma; • Em seguida, armazenamos em uma posição de memória (variável), o resultado do cálculo 360,00 dividido por 30; • Em seguida, apresentamos a frase “O valor diário é” seguido do valor constante na posição de memória (variável) VlrDia

O valor diário é: 32,00 • Em seguida, finalizamos o fluxo. c) Pseudocódigo, também conhecido como Linguagem Estruturada ou Portugol. A representação de um algoritmo na forma de pseudocódigo é a seguinte:

Algoritmo Nome_Do_Algoritmo Variáveis Declaração das variáveis Procedimentos Declaração dos procedimentos Funções Declaração das funções Início Corpo do Algoritmo Fim

Inicio

VlrDia <- 360,00 / 30

“O valor diário é:”, VlrDia

Fim

Page 8: Apostila - Algoritmos e Logica de Programacao

Curso de Sistemas de Informação Algoritmos e Lógica de Programação _______________________________________________________________________________________________________________________

~ 7 ~

Exemplo.

Algoritmo “Média”

Variáveis

N1, N2, Média: real

Início

Escreva (“informe o primeiro valor”)

Leia (N1)

Escreva (“informe o segundo valor”)

Leia (N2)

Média <- (N1+N2)/2

Se Média >= 7 Então

Escreva (“Aprovado!!”)

Senão

Escreva (“Reprovado!!)”

Fim se

Fim.

A identação (deslocamento para a direita) de uma instrução significa que tais instruções

estão subordinadas a instrução anterior e facilita em muito a compreensão e manutenção

do algoritmo e dos códigos fontes em uma linguagem de programação.

Page 9: Apostila - Algoritmos e Logica de Programacao

Curso de Sistemas de Informação Algoritmos e Lógica de Programação _______________________________________________________________________________________________________________________

~ 8 ~

2.7- Tipos de processamento

a) Processamento Seqüencial

As instruções do algoritmo são executadas uma após a outra, sem que haja desvio na

seqüência das instruções, sendo cada instrução executada uma única vez.

Ex. Obter a média aritmética das quatro notas

1. Inicio

2. Some as duas primeiras notas

3. Some a terceira nota com o resultado da instrução 2

4. Some a Quarta nota com o resultado da instrução 3

5. Divida resultado da instrução 4 por 4

6. Fim

Se as quatro notas são 10,5,8,1 a execução das instruções ficara da seguinte forma

1. Inicio

2. 10+5 = 15

3. 15+8 =23

4. 23+1 =24

5. 24 / 4=6

6.Fim

b) Processamento Condicional

Um conjunto de instruções (pode ser apenas uma instrução) é executado ou não

dependendo de uma condição. Se a condição que estiver sendo testada tiver resposta

afirmativa, o conjunto de instruções é executado.

Ex. Obter a média aritmética das quatro notas. Se a média for maior ou igual a sete, o

aluno está aprovado, caso contrário, está reprovado.

Page 10: Apostila - Algoritmos e Logica de Programacao

Curso de Sistemas de Informação Algoritmos e Lógica de Programação _______________________________________________________________________________________________________________________

~ 9 ~

1. Inicio

2. Some as duas primeiras notas

3. Some a terceira nota com o resultado da instrução 2

4. Some a Quarta nota com o resultado da instrução 3

5. Divida resultado da instrução 4 por 4

6. Se o resultado da instrução 5 for maior ou igual a 7

7. Aprove o aluno

8. Se o resultado da instrução 5 for menor que 7

9. Reprove o aluno

10.Fim

Se as quatro notas são 10,5,8,1 a execução das instruções ficara da seguinte forma

1. Inicio

2. 10+5 = 15

3. 15+8 =23

4. 23+1 =24

5. 24 / 4=6

6. Resposta negativa

7. Resposta afirmativa � resultado < 7

então � aluno reprovado

6. Fim

Note que a instrução 6 foi executada. Como a resposta foi negativa (a média foi inferior a

sete), o aluno foi reprovado não sendo executada a instrução sete.

c) Processamento com repetição

Conjunto de instruções (pode ser apenas uma) que é executado um determinado número

de vezes.

Sendo determinada uma condição de parada.

Page 11: Apostila - Algoritmos e Logica de Programacao

Curso de Sistemas de Informação Algoritmos e Lógica de Programação _______________________________________________________________________________________________________________________

~ 10 ~

Ex. Obter a média aritmética das quatro notas de todos os alunos da sala.

1. Inicio

2. Para cada aluno da sala

3. Some as duas primeiras notas

4. Some a terceira nota com o resultado da instrução 3

5. Some a Quarta nota com o resultado da instrução 4

6. Divida o resultado da instrução 5 por 4

7. Fim

Se existem dois alunos na sala e suas notas são: 10, 5, 8, 1 e 4, 6, 7, 3 a execução das

instruções ficará da seguinte forma

3. 10+5 = 15

4. 15+8 =23

5. 23+1 =24

6. 24/4 = 6

3. 4+6 = 10

4. 10+7=17

5. 17+3=20

6. 20/4 = 5

Observe que um laço de repetição necessita sempre de uma condição de parada

que seja válida, caso contrário o programa entrará em um “laço” infinito.

Page 12: Apostila - Algoritmos e Logica de Programacao

Curso de Sistemas de Informação Algoritmos e Lógica de Programação _______________________________________________________________________________________________________________________

~ 11 ~

2.8- Tipos de dados

Os dados são representados pelas informações a serem processadas por um

computador. Estas informações estão caracterizadas por quatro tipos de dados: inteiros,

reais, caracteres e lógicos.

a) Tipo Inteiro

Dados numéricos positivos ou negativos, excluindo-se qualquer número fracionário.

Ex. 35, 0, -56

b) Tipo Real

Dados numéricos positivos, negativos e números fracionários.

Ex. 1.2, -45.897

c) Tipo Caractere

São do tipo caractere as seqüências contendo letras, números e símbolos especiais. Uma

seqüência de caracteres deve ser indicada entre aspas. Sendo também conhecido como:

alfanumérico, string, literal ou cadeia.

Ex. “PROGRAMAÇÃO”, “Rua Alfa, 52 apto 1”, “7”, “249-4455”

d) Tipo Lógico

São do tipo lógico ou booleano os dados com valores verdadeiro/true (.T.) e falso/false

(.F.), sendo que este tipo poderá representar um dos dois valores.

2.9- Variáveis (identificadores)

Podemos imaginar uma variável como sendo um local onde se pode colocar qualquer

valor do conjunto de valores possíveis para o tipo definido para a variável.

Toda variável possui um Nome, um Tipo e um valor associado.

O nome de uma variável é utilizado para sua identificação e posterior uso dentro de um

programa, sendo assim, é necessário estabelecer algumas regras de utilização das

mesmas.

� O nome de uma variável pode conter um ou mais caracteres;

� O primeiro caractere do nome de uma variável deve ser sempre uma letra;

Page 13: Apostila - Algoritmos e Logica de Programacao

Curso de Sistemas de Informação Algoritmos e Lógica de Programação _______________________________________________________________________________________________________________________

~ 12 ~

� Não pode 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 que não sejam letras e números.

� Os nomes escolhidos devem explicitar seu conteúdo.

Qualquer caminho seguido no diagrama abaixo levara a um nome de variável valido:

Onde: Letra: Qualquer letra do alfabeto [a..z, A..Z] Digito: Dígitos de [0..9] São identificadores válidos: NOMEUSUARIO, FONE1, X, DELTA25, Z4, Idade, X1, mODELoDeVeiculo, São identificadores inválidos: *nome, 2Fone, NOME/USUARIO, mODELO-DE-VEICULO, Nota do Aluno 2.10- Declaração de variáveis Para que os programas manipulem valores, estes devem ser armazenados em variáveis e para isso, devemos declará-las de acordo com a sintaxe:

NomeVariável : Tipo Ex.: VARIÁVEIS

SalMes, Inss: REAL Nome: CARACTER[30] // Cadeia de caracteres Sexo: CARACTER // Caractere

Nesta definição, deveremos seguir as regras seguintes:

Page 14: Apostila - Algoritmos e Logica de Programacao

Curso de Sistemas de Informação Algoritmos e Lógica de Programação _______________________________________________________________________________________________________________________

~ 13 ~

• VARIÁVEIS é a palavra chave, que deverá ser utilizada uma única vez na definição das variáveis e antes do uso das mesmas; • Variáveis de tipos diferentes deverão ser declaradas em linhas diferentes; • Em uma mesma linha, quando quisermos definir variáveis de mesmo tipo, deveremos usar o símbolo de vírgula (,) para separar as mesmas. 2.11- Constantes

Tudo aquilo que é fixo ou estável

Ex. o valor do ��- 3.14159

EXERCÍCIOS: 1 - Identifique os atributos e declare variáveis para um objeto automóvel 2 - Identifique os Atributos e declare variáveis para um objeto Pessoa 3 - Identifique os atributos e declare variáveis para um objeto Eleitor 4 - Assinale com C os nomes corretos de variável e com I os incorretos. Explique o que está errado nos nomes incorretos. (a) ( ) certo (b) ( ) *oi (c) ( ) oi! (d) ( ) 'Lucio' (e) ( ) soda# (f) ( ) i123453 (g) ( ) Nota do Aluno (h) ( ) o (i) ( ) arquivox11 (j) ( ) 1ate 5 - Classifique os dados especificados abaixo de acordo com seu tipo, assinalando com I os dados do tipo inteiro, com R os reais, com C os caracteres (literais), com B os lógicos (booleanos), e com N aqueles para os quais não é possível definir o tipo de dado. (a) ( ) -988786,987 (b) ( ) "34,50" (c) ( ) "Casa do Titio" (d) ( ) .F. (e) ( ) site (f) ( ) -33 (g) ( ) ".V". (h) ( ) 0,5 (i) ( ) .'V'. (j) ( ) ".F." (l) ( ) 12,89 (m) ( ) 215333

Page 15: Apostila - Algoritmos e Logica de Programacao

Curso de Sistemas de Informação Algoritmos e Lógica de Programação _______________________________________________________________________________________________________________________

~ 14 ~

2.12- Operações Básicas: a) Expressões Na lógica de programação uma expressão tem o mesmo objetivo/conceito do termo expressão da matemática comum, ou seja, um conjunto de variáveis e constantes que se relacionam por meio de operadores aritméticos. Este conjunto de expressão e operadores aritméticos (soma por exemplo), formam uma fórmula que, após solucionada fornecem um resultado em específico. Observe o gráfico a seguir:

Neste caso, a fórmula para se calcular a área de um retângulo é igual ao produto de sua altura por sua base, poderemos então montar a fórmula como se segue: AREA <- altura * base Observe que no exemplo acima, utilizamos três variáveis: altura, base e área, sendo que o resultado final é armazenado na variável AREA, ou seja, local de memória onde será armazenado o resultado da avaliação da expressão e o operador é o sinal de ‘*’ que em linguagem de computador representa a multiplicação. Já que falamos em operadores, vamos ser um pouco mais claros neste tópico. Os operadores são elementos ativos que tem influência sobre os operandos e através de sua ação resultam em um determinado valor. No exemplo acima, os operandos seriam as variáveis “altura” e “base” e o operador de multiplicação o “*”. Em lógica de programação, os operadores podem ser classificados em dois grupos: • Binários: quando trabalham sobre os operandos em uma expressão. Os mais conhecidos são os símbolos + - * /, que representam a soma, subtração, multiplicação e divisão respectivamente. • Unários: quando tem influência sobre um único operando, indicando, por exemplo, que este se trata de um número negativo e não vem acompanhado nenhum outro operando. Exemplo: ao representar o número quatro negativo podemos utilizar (-4). Isso não quer dizer que queremos subtrair o número quatro de outro valor.

Page 16: Apostila - Algoritmos e Logica de Programacao

Curso de Sistemas de Informação Algoritmos e Lógica de Programação _______________________________________________________________________________________________________________________

~ 15 ~

Assim como classificamos os operadores, podemos também classificar as expressões quanto ao seu tipo, conforme mostra a lista a seguir: • Expressão aritmética: quando o resultado de sua avaliação for um número, podendo este ser positivo ou negativo assim como inteiro ou real; • Expressão lógica: quando o resultado de sua avaliação for um valor lógico, ou seja, verdadeiro (.T.) ou falso (.F.); • Expressão literal: quando o resultado de sua avaliação for um valor literal. Cada uma das expressões vistas acima possui seus operadores em específico. A seguir, vamos mostrar uma tabela contendo esses operadores: b) Operadores Na solução da grande maioria dos problemas é necessário que as variáveis tenham seus valores consultados ou alterados e para isto devemos definir um conjunto de OPERADORES, sendo eles:

• OPERADOR DE ATRIBUIÇÃO: NomeDaVariavel ← Valor ou Expressão Atribuída. ATENÇÃO!! Em nossa disciplina usaremos o símbolo ← para atribuição.

• OPERADORES ARITMÉTICOS: + Adição a Div b Divisão Inteira * Multiplicação a Resto b Resto da divisão de inteiros - Subtração ou inversor do sinal. ^ Exponenciação ab (^ ou **) / Divisão

• FUNÇÕES PRIMITIVAS: SEN(x); COS(x); TG(x); ABS(x); INT(x); Raizq(x).

• OPERADORES RELACIONAIS: São utilizados para relacionar variáveis ou expressões, resultando num valor lógico

(Verdadeiro ou Falso), sendo eles:

= - igual (==) <> - diferente (!=) < - menor > - maior <= - menor ou igual >= - maior ou igual

Page 17: Apostila - Algoritmos e Logica de Programacao

Curso de Sistemas de Informação Algoritmos e Lógica de Programação _______________________________________________________________________________________________________________________

~ 16 ~

• OPERADORES LÓGICOS: São utilizados para avaliar expressões lógicas, sendo eles:

.E. - e lógico ou conjunção.

.Ou. - ou lógico ou disjunção. Não - negação.

A B A .E. B A .OU. B VERDADEIRO/TRUE/.T./.V./1 VERDADEIRO/TRUE/.T./.

V./1 VERDADEIRO/TRUE/.T./.V.

/1 VERDADEIRO/TRUE/.T./.V./

1

VERDADEIRO/TRUE/.T./.V./1 FALSO/FALSE/.F./0 FALSO/FALSE/.F./0 VERDADEIRO/TRUE/.T./.V./1

FALSO/FALSE/.F./0 VERDADEIRO/TRUE/.T./.V./1

FALSO/FALSE/.F./0 VERDADEIRO/TRUE/.T./.V./1

FALSO/FALSE/.F./0 FALSO/FALSE/.F./0 FALSO/FALSE/.F./0 FALSO/FALSE/.F./0

Tabela verdade dos operadores .E. e .OU.

APROVADO?? (Media >= 60) .E. (Frequencia > 0.75)

REPROVADO??

(Media < 60) .OU. (Frequencia < 0.75)

TABELA VERDADE DO OPERADOR .E. A B A .E. B 1 1 1

1 0 0

0 1 0

0 0 0

TABELA VERDADE DO OPERADOR .OU.

A B A .OU. B 1 1 1

1 0 1

0 1 1

0 0 0

TABELA VERDADE DO OPERADOR .Não.

A Não(A) 1 0

0 1

Page 18: Apostila - Algoritmos e Logica de Programacao

Curso de Sistemas de Informação Algoritmos e Lógica de Programação _______________________________________________________________________________________________________________________

~ 17 ~

PRIORIDADE DE OPERADORES: Durante a execução de uma expressão que envolve vários operadores, é necessário a existência de prioridades, caso contrário poderemos obter valores que não representam o resultado esperado. A maioria das linguagens de programação utiliza as seguintes prioridades de operadores: 1º - Efetuar operações embutidas em parênteses "mais internos" 2º - Efetuar Funções 3º - Efetuar multiplicação e/ou divisão 4º - Efetuar adição e/ou subtração 5º - Operadores Relacionais 6º - Operadores Lógicos OBS: O programador tem plena liberdade para incluir novas variáveis, operadores ou funções para adaptar o algoritmo as suas necessidades, lembrando sempre, que estes devem ser compatíveis com a linguagem de programação a ser utilizada. Exercícios: Na expressão A*B-C, qual será a seqüência de execução? Na expressão (A*B)-C, qual será a seqüência de execução? Na expressão A*(B-C), qual será a seqüência de execução? Na expressão ( A*(B-C*(D/E))), qual será a seqüência de execução? A lógica para se montar uma expressão é ponto determinante na questão do resultado ser ou não verdadeiro, ou seja, de ser o resultado esperado. 2.13- Primeiras instruções Após dominarmos os assuntos anteriormente tratados, passaremos a estudar as instruções primitivas, ou seja, comandos básicos que executam tarefas consideradas essenciais para a execução de qualquer programa de computador. Um exemplo deste tipo de instrução são aquelas responsáveis pela comunicação do operador com o computador por meio do teclado (entrada de dados) ou ainda a impressão de um relatório (saída de dados “sem contar com a parte estética do relatório, alinhamento de colunas, etc...). Toda linguagem de programação tem por obrigação possuir instruções primitivas, pois sem estas não existiria comunicação com os periféricos. Antes de qualquer coisa, você saberia diferenciar periféricos de entrada e de saída de dados? A resposta é simples, periféricos de entrada são aqueles responsáveis pela

Page 19: Apostila - Algoritmos e Logica de Programacao

Curso de Sistemas de Informação Algoritmos e Lógica de Programação _______________________________________________________________________________________________________________________

~ 18 ~

passagem de dados do mundo externo para a memória do computador, como por exemplo, o teclado, unidade de CD-ROM, etc... Já os periféricos de saída recebem os dados do computador para outro equipamento externo, como por exemplo, o monitor de vídeo, impressora, etc... Toda instrução, primitiva ou não possui uma sintaxe, ou seja, uma regra que deverá ser seguida para a construção de seu código e caso esta não seja obedecida, o seu programa pode simplesmente não funcionar. Devemos saber também que o conjunto de ações que serão realizadas pelo computador após a execução de um determinado comando é conhecida como semântica. EXERCÍCIOS:

1) Quais os valores das expressões a seguir: 2 + 3 * 6 12 / 3 * 2 – 5 31 / 4 31 div 4 31 Resto 4 9 ** (3-1) 3 ** 3

2) Considere o seguinte trecho do algoritmo: Algoritmo “Exercicio2” Variaveis Pig,Vari, Total, A, I : Inteiro ValorA, X : Real Inicio Vari ← 2 Total ← 10 ValorA ← 7.0 A ← -4 I ← 80 X ← 4.0 X ← Total / Vari X ← X + 1 A ← A + I Pig ← 10 A ← I div Pig A ← A + I Resto 6 ValorA ← Pig * ValorA + X Fim

Pig Vari Total

A I

ValorA X

Mostre quais os valores armazenados em cada uma das variáveis após a execução de cada um dos comandos do algoritmo acima.

Page 20: Apostila - Algoritmos e Logica de Programacao

Curso de Sistemas de Informação Algoritmos e Lógica de Programação _______________________________________________________________________________________________________________________

~ 19 ~

3) Considerando o conteúdo das variáveis conforme a seguir, diga qual o valor de cada uma das expressões:

Nome Apelido Qquer Aux Resp K Karol

“ANA” “flor” “ana” 10 .F. 3 2

a) Nome == Apelido b) (Nome == Qquer) .E. (Nome <> “ANa”) c) Nome == “Nome” d) (K >= Karol + 1) .OU. (Qquer == “ana”) e) Não Resp f) (Não Resp) .E. (K < Aux) g) (Aux <= Aux / K + K) .E. ((Resp) .OU. (Apelido == “flor”)) h) K > Karol + (K – Karol) i) ((Não Resp .E. Resp) .OU. (Não Resp)) .E. (Resp .OU. (Não Resp))

4) Faça o teste de mesa do algoritmo a seguir: Algoritmo “exercicio4” Variaveis Q, W, R : inteiro Ex : Real Inicio Q ← 10 Q ← 10 + 30 W ← -1 W ← W + Q Q ← Q Resto W Q ← W div (Q + 4) Ex ← 2 * Q / W R ← 0 R ← R + 1 R ← R + 1 Fim

5) Considerando as variáveis abaixo, indique o resultado de cada uma das expressões a seguir:

X Y Z W Q

.V. 2 4 1,50 “PROVA” a) (2 * (5 resto 3) + Y + W * 2) > Z .OU. (Y < Z -1) .E. não((Z * (Y – 1) + Y) < 100) ( ) b) (X .OU. .V.) .OU. (Z * 2 div Y < W * Y) ( ) c) .F. .E. X = não(.V.) .OU. Y < Z ( ) d) Y + 4 * (Z RESTO 3 + 1) ( ) e) (3 + W – (Y + 1) / 2) + 1,5 ( )

Page 21: Apostila - Algoritmos e Logica de Programacao

Curso de Sistemas de Informação Algoritmos e Lógica de Programação _______________________________________________________________________________________________________________________

~ 20 ~

6) Dada a declaração de variáveis: variáveis I1, I2, I3 : inteiro R1, R2, R3 : real L1, L2 : literal B1, B2 : lógico Para as variáveis declaradas acima, às quais são dados os valores seguintes: I1 ← 9 R3 ← 6.0 I2 ← 7 L1 ← 'Olá' I3 ← 6 L2 ← 'A1' R1 ← 5.5 B1 ← .V. R2 ← 3.92 B2 ← .V. Determine o resultado da avaliação das expressões abaixo. Se caso não for possível resolver a expressão responda “Expressão Inválida”: (a) (I1+I2) > 10 .OU. (I1+I2) = (I3+R1) (b) (I1^2) + (I3^ 2) (c) L1 <> L2 (d) (I1+I2) > 10 .OU. (I1+I2) = (I3+R1) .E. (I1>=I3) .E. (R1 >= I3) (e) (R1 * I1) / (R3^B1) - B2 (na sintaxe do VisuAlg)

7) Faça o teste de mesa do algoritmo a seguir: algoritmo "horas" var ht:inteiro sm,a,a1,b,c,d:real inicio escreval("informe o salario minimo:") leia(sm) escreval("informe as horas trabalhadas:") leia(ht) a <- sm /2 b <- ht*a c <- b*3/100 d <- b - c escreval("Uma hora trabalhada corresponde a :",a) escreval("o salario bruto é :",b) escreval(" imposto :",c) escreval("salario bruto menos imposto:",d) fimalgoritmo

Page 22: Apostila - Algoritmos e Logica de Programacao

Curso de Sistemas de Informação Algoritmos e Lógica de Programação _______________________________________________________________________________________________________________________

~ 21 ~

8) Faça o teste de mesa do algoritmo a seguir: algoritmo "peso" var idade,pesideal,altura:real sexo:caracter inicio escreval("Informe o sexo: ") leia(sexo) escreva("Informe a altura: ") leia(altura) se sexo = "M"entao pesideal <-(72.7 * altura)-58 senao pesideal<-(62.1 * altura)-44,7 fimse escreval("Peso ideal é: ",pesideal) fimalgoritmo

Page 23: Apostila - Algoritmos e Logica de Programacao

Curso de Sistemas de Informação Algoritmos e Lógica de Programação _______________________________________________________________________________________________________________________

~ 22 ~

3- COMANDOS DE ENTRADA E SAÍDA:

No algoritmo é preciso representar a troca de informações que ocorrerá entre o mundo da máquina e o nosso mundo, para isso, devemos utilizar comandos de entrada e saída. Em nível de algoritmo esses comandos representam apenas a entrada e a saída da informação, independe do dispositivo utilizado (teclado, discos, impressora, monitor,...), embora nas linguagens de programação essa independência não existe, ou seja, nas linguagens de programação temos comandos específicos para cada tipo de unidade de Entrada/Saída.

Comando de Entrada de Dados

Leia (variável_1, variável_2,...) Comando de Saída de Dados

Escreva (expressão_1, expressão_2,...) Algoritmo “media” Variáveis quilometragem,litros,media: REAL Inicio ESCREVA (“Entre com a quilometragem inicial e a Quantidade de litros gastos”) LEIA (quilometragem) LEIA (litros) Media ← quilometragem/litros ESCREVA (“A média é:”, media) Fim. Observe que no pseudocódigo, quando queremos enviar uma expressão como saída, a mesma é colocada dentro de aspas, porém quando queremos enviar o conteúdo de uma variável, esta deverá estar fora de aspas. EXERCÍCIOS: 01 - Construa o fluxograma e o algoritmo que receba um número, calcule o seu quíntuplo e mostre o número recebido e o resultado. 02 - Construa o fluxograma e o algoritmo que receba um número, calcule a sua metade, mostre o resultado. 03 - Construa o fluxograma e o algoritmo que receba dois números, calcule o produto entre eles, mostre o resultado e os números recebidos. 04 - Construa o fluxograma e o algoritmo que receba três números, calcule a diferença do primeiro pelo segundo, o resultado deve ser multiplicado pelo terceiro número e mostre os resultados obtidos.

Page 24: Apostila - Algoritmos e Logica de Programacao

Curso de Sistemas de Informação Algoritmos e Lógica de Programação _______________________________________________________________________________________________________________________

~ 23 ~

05 - Construa o fluxograma e o algoritmo que receba dois números, calcule: a divisão, a multiplicação, a soma, a diferença entre eles e mostrar os resultados. 06 - Construa o fluxograma e o algoritmo que receba, a idade de três pessoas, calcule e mostre a média das idades. 07 - Construa o fluxograma e o algoritmo que receba a matrícula, o nome e o salário-base de um funcionário, calcule o salário líquido a receber e o total do desconto, sabendo que: o imposto a ser descontado é de 12% sobre o salário-base. Mostre os resultados e os dados do funcionário. 08 - Uma Empresa de Energia Elétrica calcula o valor da conta de luz de acordo com o consumo em Kw/h. Faça o fluxograma e o algoritmo que receba o número da conta, a leitura anterior e a leitura atual, calcule o valor a ser pago, sabendo que a tarifa do Kw/h é de 0.20725. Mostre o número da conta, o valor da conta e o consumo de luz de um usuário. 09 - Faça o fluxograma e o algoritmo que receba a matrícula e três notas do aluno, calcule a sua média sabendo que a primeira nota tem peso dois, a segunda peso três e a terceira peso quatro. Mostre a matrícula e a média do aluno. 10 -. Uma loja está vendendo os seus produtos a prazo com juros de 10% e a vista com desconto de 5%. Faça o fluxograma e o algoritmo que receba o valor da compra, calcule o valor à vista, a prazo e mostre os resultados. 11 - Faça o fluxograma e o algoritmo que receba a matrícula, o nome e o salário-base de um funcionário, calcule os descontos com vale transporte (vt) 3% e vale refeição (vr) 5%. Mostre o nome, a matrícula e os valores descontados separadamente. 12 - Um comércio está vendendo os seus produtos com um desconto de 25%. Faça o fluxograma e o algoritmo que calcule e mostre o valor do desconto obtido em uma determinada compra, valor da compra com e sem desconto. 13 - Uma firma paga a seus vendedores o salário-base e uma comissão de 20% sobre o valor das vendas do mês. Faça o fluxograma e o algoritmo que calcule e mostre, a comissão e o líquido a receber de um vendedor. 14 - Faça o fluxograma e o algoritmo que receba a matrícula, o salário-base de um funcionário, calcule 7% de gratificação sobre as vendas da loja, mostre a matrícula, o total dos vencimentos, a gratificação e o salário-base do funcionário. 15 - O custo ao consumidor de um carro novo é a soma do custo de fábrica, a percentagem do distribuidor e a percentagem da concessionária (aplicados ao custo de fábrica). Faça o fluxograma e o algoritmo que receba o custo de fábrica de um carro, informe o custo ao consumidor. Sabendo que: a percentagem do distribuidor é de 28% e a percentagem da concessionária é de 48%. Mostre os valores separadamente.

Page 25: Apostila - Algoritmos e Logica de Programacao

Curso de Sistemas de Informação Algoritmos e Lógica de Programação _______________________________________________________________________________________________________________________

~ 24 ~

16 - Construa o fluxograma e o algoritmo que receba o código, o preço unitário, a quantidade e o desconto em percentual de um produto, calcule o valor total, o total a pagar com desconto e o valor do desconto. Mostre o código do produto e os resultados. 4- COMANDOS DE CONTROLE DE FLUXO: Para representar a solução de um problema devemos escrever o conjunto de passos a serem seguidos, sendo que a maioria dos problemas exige uma dinâmica na sua solução, impondo assim que os algoritmos executem o conjunto de instruções de acordo com as possíveis situações encontradas no problema original. De acordo com a Programação Estruturada os mecanismos utilizados para esse controle são: Seqüência, Seleção e Repetição.

• SEQUÊNCIA: usada para executar comandos passo a passo, sabendo que todos eles serão executados na ordem de escrita, sem nenhum desvio. Uma seqüência pode possuir um ou vários comandos, os quais devem ser delimitados pelos identificadores Início e Fim.

Inicio Comando_1 ... Comando_n Fim

• SELEÇÃO: usada para tomar decisões, ou seja, desviar a execução do algoritmo de acordo com uma condição, podendo ser simples ou composta.

Simples Composta Se (Expressão Lógica) Então Seqüência_1 Fim se

Se (Expressão Lógica) Então Seqüência_1 Senão Seqüência_2 Fim se

Imagine a seguinte situação: em uma empresa, será solicitado o salário de um determinado funcionário para se calcular seu novo salário, sendo que, se este tiver um salário superior a R$ 1500,00, o reajuste será de 5%, caso contrário o reajuste será de 8%. Observe que teremos que testar o valor do salário, para saber o índice a ser aplicado. Vamos criar então um pseudocódigo com este objetivo:

Page 26: Apostila - Algoritmos e Logica de Programacao

Curso de Sistemas de Informação Algoritmos e Lógica de Programação _______________________________________________________________________________________________________________________

~ 25 ~

Algoritmo testa_salario Variáveis Salario: REAL Salario_final: REAL Inicio Escreva(“Informe o salario”) Leia (salario) Se salario <= 1500 então Salario_final=(salario*1,08) senão Salario_final=(salario*1,05) Fim se Escreva(“Salario final = ”,Salario_final) Fim. Observe que, durante a execução do pseudocódigo, após obtermos, através de uma instrução de entrada de dados, o valor do salário do funcionário, efetuamos um teste “Se”, que possui duas condições, uma verdadeira e uma falsa. As instruções que serão executadas no caso de um teste verdadeiro devem estar abaixo da cláusula “Então”, já as instruções que serão executadas no caso de um teste falso, devem estar abaixo da cláusula “senão”. A instrução “Fim_se” termina o bloco de testes. Observe a sintaxe de uma estrutura de decisão a seguir: Se <teste> Então Lista de comandos a serem executados caso teste=verdadeiro Senão Lista de comandos a serem executados caso teste=falso. Fim se Em fluxograma, uma estrutura de decisão é representada pelo símbolo:

Os símbolos que estiverem na direção de “True” serão executados caso o teste seja verdadeiro. Já os símbolos que estiverem na direção de “false” serão executados caso o teste tenha um resultado falso.

teste .T.

.F.

Page 27: Apostila - Algoritmos e Logica de Programacao

Curso de Sistemas de Informação Algoritmos e Lógica de Programação _______________________________________________________________________________________________________________________

~ 26 ~

Observe o trecho do pseudocódigo acima, representado no fluxograma: Existem casos em que não basta ter apenas as “direções” verdadeiro e falso para tomar uma determinada decisão, e sim, uma série de testes sobre um mesmo bloco. Este tipo de estrutura é chamado de estrutura de decisão do tipo “ESCOLHA”. Observe a seguir a sintaxe da estrutura de decisão do tipo escolha em pseudocódigo: Faça Caso Caso <condição 1> Lista de instruções caso condição 1 = verdadeira Caso <condição 2> Lista de instruções caso condição 2 = verdadeira Caso <condição 3> Lista de instruções caso condição 3 = verdadeira Outro caso Lista de instruções caso todas as condições = falsa Fim_Caso

salario <= 300

salario_final = salario * 1,08

salario_final = salario * 1,05

True

False

salario_final

Page 28: Apostila - Algoritmos e Logica de Programacao

Curso de Sistemas de Informação Algoritmos e Lógica de Programação _______________________________________________________________________________________________________________________

~ 27 ~

No fluxograma, o símbolo que representa cada uma das condições acima, é o mesmo que o símbolo que representa a estrutura de decisão. Veja a sintaxe da estrutura de decisão de escolha no fluxograma:

Vamos imaginar um exemplo parecido, de reajuste de salário, porém teremos as seguintes situações para reajuste: Salários inferiores a R$ 400,00 = reajuste de 9% Salários iguais a R$ 400,00 e inferiores a R$ 800,00 = reajuste de 7% Salários iguais a R$ 800,00 e inferiores a R$ 1000,00 = reajuste de 5% Fora das faixas supracitadas = reajuste de 3% Veja o pseudocódigo do exemplo citado: Algoritmo testa_salario2 Variáveis Salário , Salario_final: REAL Inicio Ler salario Faca caso Caso salario < 400 Salario_final=(salario*1.09) Caso salario >= 400 .e. salario<800 Salario_final=(salario*1.07) Caso salario>=800 .e. salario<1000 Salario_final=(salario*1.05) Outro caso Salario_final=(salario*1.03) Escrever Salario_final Fim.

Teste1 True

False

Teste2

Teste3

False

False

Instruções Condição 01

True Instruções Condição 02

True Instruções Condição 03

Page 29: Apostila - Algoritmos e Logica de Programacao

Curso de Sistemas de Informação Algoritmos e Lógica de Programação _______________________________________________________________________________________________________________________

~ 28 ~

Observe que, temos aqui uma novidade, ou seja, em uma única condição, estamos na verdade realizando dois testes, isto porque usamos o operador lógico “AND”“. e.”, ou seja, se salário menor ou igual a 400 e salário menor que 800 faça isso... assim sucessivamente. Quando usamos o operador lógico “.e.”, os testes, neste caso dois, que formam o caso, devem ser verdadeiros. O outro operador lógico “.ou.”, retorna verdadeiro caso um dos testes que formam o conjunto satisfaça a uma determinada condição. Como exercício, crie o fluxograma do pseudocódigo visto acima. A seguir iremos estudar as estruturas de repetição e desenvolver mais exemplos sobre o que estudamos neste módulo. EXERCÍCIOS: Seleção Simples: 01 - Construa o fluxograma e o algoritmo que receba um número e mostre o seu quíntuplo somente quando o número digitado for maior que trinta. 02 - Construa o fluxograma e o algoritmo que receba um número e mostre a sua metade somente quando ela for maior que cinqüenta. 03 - Construa o fluxograma e o algoritmo que receba um número e mostre o número e o seu dobro somente quando o número for maior que noventa e menor que cem. 4 - Construa o fluxograma e o algoritmo que receba. um número e mostre a sua quinta parte somente quando ela for menor que cinqüenta ou maior que mil. 05 - Construa o fluxograma e o algoritmo que receba um número e mostre o seu sêxtuplo somente quando o resultado não for menor que trezentos. 06 - Construa o fluxograma e o algoritmo que receba um número e mostre o número e o sêxtuplo somente quando o número for maior que noventa. 07 - Construa o fluxograma e o algoritmo que receba dois números e mostre a diferença somente quando o primeiro for maior que o segundo. 08 - Construa o fluxograma e o algoritmo que receba um número e mostre o número somente quando o número for par. 09- Construa o fluxograma e o algoritmo que receba um número e mostre o número se ele estiver entre quinze(inclusive) e quarenta. 10 - Construa o fluxograma e o algoritmo que receba um número e mostre o número somente se ele estiver entre trinta e duzentos e oitenta e um (inclusive).

Page 30: Apostila - Algoritmos e Logica de Programacao

Curso de Sistemas de Informação Algoritmos e Lógica de Programação _______________________________________________________________________________________________________________________

~ 29 ~

11 - Faça o fluxograma e o algoritmo que receba nome, idade e a altura, exiba somente o nome da pessoa com 1, 70m e idade acima de 17 anos. 12 - Faça o fluxograma e o algoritmo que receba o código, o valor unitário e a quantidade de mercadoria adquirida. Calcule 6% de descontos somente para o total da compra que ultrapassar a R$ 100,00. Ao final mostre o código, o total a pagar com, sem desconto e o valor do desconto. 13 - Faça o fluxograma e o algoritmo que receba o número da conta, o nome, o endereço e o consumo em kw/h, informe o número da conta, o nome e o endereço da conta de luz em que o consumo for inferior a 100 kw/h. 14 - Faça o fluxograma e o algoritmo que receba Nome, Turma e Três Notas do aluno. Calcule a média ponderada considerando: primeira nota peso um, segunda nota peso dois e terceira nota peso três, informar o nome, a turma e a média do aluno que a média for inferior a sete. 15 - Construa o fluxograma e o algoritmo que receba um número e mostre se o número recebido é ímpar. 16 - Faça o fluxograma e o algoritmo que receba o salário de um funcionário, calcule e mostre o novo salário, sabendo-se que este sofreu um aumento de 25%. Este aumento é válido para os funcionários com mais de cinco anos de serviço. 17 - Faça o fluxograma e o algoritmo que receba o salário de um funcionário, calcule e mostre o salário a receber, sabendo-se que esse funcionário tem gratificação de 5% sobre o salário-base. Pagará imposto de 7% sobre o salário, o funcionário cujo salário mais a gratificação ultrapassar a R$1.000,00. Seleção Composta: 01 - Construa um algoritmo que receba dois números e mostre quando o primeiro for maior e quando for menor que o segundo. 02 - Construa um algoritmo que receba dois números e mostre quando o primeiro for maior, quando for menor e quando for igual ao segundo. 03 - Construa um algoritmo que receba três números e mostre quando o número estiver na situação de maior número digitado. 04 - Faça um algoritmo que receba dois números e informe a diferença do maior pelo menor. 05 - Faça um algoritmo que receba a matrícula e duas notas do aluno. Calcular a média e mostrar a matrícula do aluno com as seguintes mensagens de acordo com a tabela abaixo: média> 7,0 - "Aluno Aprovado" média = 7,0 - "Aluno em Recuperação" média < 7,0 -" Aluno Reprovado"

Page 31: Apostila - Algoritmos e Logica de Programacao

Curso de Sistemas de Informação Algoritmos e Lógica de Programação _______________________________________________________________________________________________________________________

~ 30 ~

06 - Faça um algoritmo que receba o código, o preço e o tamanho da camiseta. Sabe-se que de acordo com o tamanho há um desconto conforme tabela abaixo. Informar o código, e o valor do desconto. tamanho "G" - 1 0% tamanho "M" - 20% tamanho "P" - 30% 07 - Faça um algoritmo que receba o nome e o salário do funcionário, calcule os descontos conforme a tabela e informe o nome, o salário a receber e os descontos (separados) do funcionário.

SALARIO INSS IR

Até 500,00 3,00% 2,00%

500,01 a 950,00 5,00% 4,00%

Acima de 950,00 7,00% 6,00% 08- Faça um algoritmo que receba o código e o total de vendas do vendedor, calcule a comissão conforme a tabela e informe o código e a comissão do vendedor.

TOTAL DAS VENDAS COMISSÃO

Até 100,00 0,00%

Acima 100,00 até 350,00 5,00%

Acima 350,00 10,00% 09 - Faça um algoritmo que receba a matrícula e o salário do funcionário, calcule a gratificação conforme a tabela e informe a matrícula, salário a receber e o valor da gratificação do funcionário.

SALÁRIO GRATIFICAÇÃO

até 500,00 15,00%

500,01 a 1.000,00 10,00%

Acima 1.000,00 5,00% 10 - Faça um algo ritmo que receba um número e informe quando ele for maior e menor que o número 100. 11 - Faça um algoritmo que receba dois pesos e mostre quando o primeiro peso for maior que o segundo peso.

Page 32: Apostila - Algoritmos e Logica de Programacao

Curso de Sistemas de Informação Algoritmos e Lógica de Programação _______________________________________________________________________________________________________________________

~ 31 ~

12 - Faça um algoritmo que receba duas idades e mostre quando a primeira idade for maior, quando for igual e quando for menor que a segunda idade (mostrar separadamente) 13 - Faça um algoritmo que receba três alturas e informe quando a altura quando ela estiver na situação de maior altura. 14 - Faça um algoritmo que receba o nome e o sexo de uma pessoa. Informar o nome quando masculino e quando feminino. 15 - Faça um algoritmo que receba a matrícula e o salário do funcionário. Sabe-se que de acordo com o salário há uma gratificação conforme tabela abaixo. Informar a matrícula e a gratificação. Acima de R$300,OO - 5% Abaixo de R$ 300,00 - 10% R$ 300,00 - 6%

Page 33: Apostila - Algoritmos e Logica de Programacao

Curso de Sistemas de Informação Algoritmos e Lógica de Programação _______________________________________________________________________________________________________________________

~ 32 ~

5- ESTRUTURAS DE REPETIÇÃO Vamos falar um pouco sobre as estruturas de repetição, ou seja, uma parte do código que deverá ser executada n vezes. Em linguagem de programação, as estruturas de repetição são conhecidas como laços (loops). Trabalhamos basicamente com dois tipos de estruturas de repetição: 1. LAÇOS CONTADOS: Quando se tem, de forma prévia, o número de vezes que uma determinada seqüência de comandos será executada. 2. LAÇOS CONDICIONAIS: Aqueles que não possuem um número pré-determinado de vezes que a estrutura de comandos será executada, porém este número estará vinculado a uma determinada condição. Laços Contados (PARA): Em pseudocódigo, utilizamos a seguinte sintaxe para laços contados: Para <variável> = <valor inicial> até <valor final> Passo <numero> faca <Comandos> Fim para Onde: A variável é aquela que irá receber a contagem. Os valores iniciais e finais representam onde começa e termina a contagem da repetição. O número de Passo (incremento) estipula a forma da contagem, como por exemplo, incrementos de 1 em 1, 2 em 2 .... e após , a seqüência de comandos que será executada durante o laço. No fluxograma, utilizamos a seguinte sintaxe para representar laços contados:

Page 34: Apostila - Algoritmos e Logica de Programacao

Curso de Sistemas de Informação Algoritmos e Lógica de Programação _______________________________________________________________________________________________________________________

~ 33 ~

A lógica de trabalho do laço contado é apresentada a seguir: 1. No inicio da leitura do código/fluxo, o valor inicial é atribuído à variável; 2. O valor da variável é comparado ao valor final; 3. Se o valor da variável for maior que o valor final, a seqüência de comandos que faz parte do laço não é executado e o controle do processo passa para a próxima linha após o final do laço (FIM PARA) ou para o símbolo ao lado (no caso de fluxograma); 4. Se o valor da variável for menor ou igual ao do valor final, a seqüência de comandos é executada e, ao final do último comando, o valor do incremento é adicionado a variável e retorna-se à comparação entre variável e valor_final, repetindo todo o processo anterior. Vale lembrar que o incremento não é de declaração obrigatória, e, caso não seja declarado, assume automaticamente o valor 1. laços Condicionais ENQUANTO/REPITA ATE: Já os laços condicionais são aqueles cujo conjunto de comandos em seu interior é executado até que uma determinada condição seja satisfeita. ENQUANTO: O pseudocódigo mais comum utilizado neste sentido (enquanto) é o apresentado a seguir: Enquanto <condição> Faça <seqüência de comandos> Fim enquanto A sintaxe de execução deste é:

Page 35: Apostila - Algoritmos e Logica de Programacao

Curso de Sistemas de Informação Algoritmos e Lógica de Programação _______________________________________________________________________________________________________________________

~ 34 ~

1. No inicio da execução do enquanto, a condição é testada; 2. Se o resultado do teste for verdadeiro, a seqüência de comandos é executada e ao término desta, retorna-se ao teste da condição; 3. Sendo a condição falsa, o controle da aplicação passa para a próxima linha após o Fim_enquanto. No fluxograma, poderemos representar este tipo de operação da forma que segue:

Em resumo, neste tipo de operação, a execução somente abandonará o laço quando a condição for falsa e neste caso a condição de parada deve ser elaborada com todo o cuidado para evitar laços infinitos na execução do algoritmo. REPITA ATE: Outro tipo de laço condicional é o REPITA ATE, apresentado a seguir: Repita <seqüência de comandos> Ate <condição> A sintaxe de execução deste é: 1.Executa a primeira iteração do laço;

Page 36: Apostila - Algoritmos e Logica de Programacao

Curso de Sistemas de Informação Algoritmos e Lógica de Programação _______________________________________________________________________________________________________________________

~ 35 ~

2.Se o resultado do teste for verdadeiro, a seqüência de comandos é executada e ao término desta, retorna-se ao teste da condição; 3.Se a condição for falsa, executa nova iteração do laço, se a condição de parada for verdadeira encerra a execução do laço No fluxograma, poderemos representar este tipo de operação da forma que segue:

Veja um exemplo a seguir, utilizando-se de pseudocódigo, onde iremos apresentar a soma de uma contagem de números de 1 à 5: Algoritmo soma Variáveis Soma: REAL // Acumulador Contador: INTEIRO // Contador Inicio Soma = 0 Escrever“A soma dos números de 1 à 10 é igual a” Para contador = 1 até 10 faca Soma = soma + contador Fim para Escrever soma Fim. No exercício acima, teremos como resultado a expressão :

Page 37: Apostila - Algoritmos e Logica de Programacao

Curso de Sistemas de Informação Algoritmos e Lógica de Programação _______________________________________________________________________________________________________________________

~ 36 ~

A soma dos números de 1 à 10 é igual a 55 Desenhe o fluxograma do pseudocódigo acima descrito. EXERCÍCIOS: Laços contados: 01 - Construa um algoritmo que receba trinta números e mostre a soma total dos números recebidos. 02 - Construa um algoritmo que receba cinqüenta números e mostre a média dos números que foram digitados. 03 - Construa um algoritmo que receba a idade de cem pessoas e mostre a média das idades destas pessoas. 04 - Construa um algoritmo que leia cem números e mostre qual o maior número que foi lido. 05 - Construa um algoritmo que leia cinqüenta números e mostre qual o menor número lido. 06 - Construa um algoritmo que leia cento e cinqüenta números e mostre qual o maior e o menor número lido. 07 - Construir um algoritmo que receba cem números e informe a média e a soma entre os números positivos. 08 - Construa um algoritmo que receba quinze números quaisquer e informe qual o maior e o menor entre os números que foram lidos. 09 - Escrever um algoritmo que receba 100 números, e contar quantos deles estão no intervalo [10,20] e quantos deles estão fora do intervalo, escrevendo estas informações. 10 - Faça um algoritmo que receba o peso, a idade e a altura de cem pessoas, calcule e informe os valores de: maior peso, menor peso, maior altura, menor altura, maior idade e menor idade deste grupo. 11 - Escrever um algoritmo que lê 50 números e informar quantos destes valores são negativos.

Page 38: Apostila - Algoritmos e Logica de Programacao

Curso de Sistemas de Informação Algoritmos e Lógica de Programação _______________________________________________________________________________________________________________________

~ 37 ~

12 - Uma loja tem 150 clientes cadastrados e deseja mandar uma correspondência a cada um deles anunciando um bônus especial. Escreva um algoritmo que leia o nome, o endereço do cliente e o valor de suas compras e calcule um bônus de 10% se o valor das compras for menor ou igual a 500.000 e de15 %, se superior a este valor. 13 - Faça um algoritmo que receba o salário-base dos1200 funcionário de uma fábrica, calcular os descontos com vale transporte (vt) 2% e vale refeição (vr) 3%.Mostrar o total dos descontos efetuados separadamente. 14 - Faça um algoritmo que receba o número do apartamento e o consumo em kw/h dos setenta e dois apartamentos deste edifício. Informe os apartamentos com. o consumo inferior ou igual a 100 kw/h(inclusive} e os que ultrapassaram este consumo.. 15 - Faça um algoritmo que receba o tamanho de 500 camisetas existente no almoxarifado e ao final informe quantas camisetas de cada tamanho P, M, G, GG. Laços condicionais: 1 - Construa um algoritmo para somar os números recebidos. O algoritmo encerra quando digitado o número zero. 2 - Construa um algoritmo que leia vários números e mostre quantos números foram lidos. O algoritmo encerra quando digitado o número O. 3 - Faça um algoritmo que receba vários números e mostre a média dos números recebidos. O final é conhecido pelo número zero. 4 - Faça um algoritmo que receba vários números, calcule e informe a média, a soma e a quantidade de números recebidos. O algoritmo encerra quando digitado o número O. 5 - Faça um algoritmo que receba a sigla da cidade de origem de um grupo de pessoas, ao final informe quantas foram digitadas das cidades do Rio de Janeiro, Belo Horizonte e Santa Catarina (separadamente). O algoritmo encerra quando digitado "fim". 6 - Elabore um algoritmo que recebe o sexo dos alunos de um determinado colégio e informe o número de alunas e alunos separados e o número de digitações inválidas. O algoritmo encerra quando digitado o sexo "fim". 7 - Construa um algoritmo que receba o estado civil (cl sI v) de um grupo de pessoas, calcular e informar a quantidade de solteiros, casados, viúvos, o número de digitações válidas e inválidas. O algoritmo encerra quando digitado o estado civil "Fim" 8 - Foi feita uma pesquisa entre os habitantes de uma região. Foi coletado o salário de cada habitante. Calcule e informe: a) a média de salário; b) o maior e o menor salário: Encerre a entrada de dados quando for digitado o salário O.

Page 39: Apostila - Algoritmos e Logica de Programacao

Curso de Sistemas de Informação Algoritmos e Lógica de Programação _______________________________________________________________________________________________________________________

~ 38 ~

9 - Foi realizada uma pesquisa de algumas características físicas da população de uma certa região, a qual coletou os seguintes dados referente a cada habitante para serem analisados: - sexo (masculino e feminino) - olhos (claros e pretos) - cabelos ( louros, castanhos ou pretos) Faça um algoritmo que calcule e informe a quantidade de pessoas do sexo feminino, com olhos claros e cabelos louros. O final do conjunto de habitantes é reconhecido pelo sexo em branco" " 10 - Faça um algoritmo que receba a idade e a altura de um conjunto de pessoas. Calcule e informe média de altura e da idade das pessoas. Para encerrar a entrada de dados, digite a idade igual a O. 11 - Construa um algoritmo que receba o peso dos bois de uma determinada Fazenda. Calcular e informar a quantidade de bois, o maior peso e o menor peso. Encerra quando digitado o peso o. 12 - Faça um algoritmo que receba a altura de um grupo de pessoas. Calcule e informe a maior altura e a menor altura. 13 - Foi feita uma pesquisa de audiência de canal de televisão em várias casas de uma determinada cidade. Será fornecido o número da casa e o do canal de televisão que estiver ligado no momento, caso a televisão estiver desligada é fornecido o número zero, bem como para a residência fechada. Calcular e informar: A quantidade de residências fechadas, televisões desligadas e a quantidade de residências com a televisão sintonizada no canal dois. Encerra a pesquisa quando fornecido para o número da residência um valor negativo.

Page 40: Apostila - Algoritmos e Logica de Programacao

Curso de Sistemas de Informação Algoritmos e Lógica de Programação _______________________________________________________________________________________________________________________

~ 39 ~

6- ANINHAMENTOS Vamos falar sobre aninhamentos, ou seja, ter um conjunto de comandos de outra construção dentro de qualquer um dos tipos de construções apresentadas até este momento, para isso, terá que ter a construção interna embutida dentro da construção externa. O conjunto de comandos é um conjunto de comandos simples, podem ser inclusive de instruções primitivas. Por exemplo, temos uma determinada situação: Vamos testar a região na qual um determinado cliente tem o seu domicílio e, dentro do estado na qual este cliente reside naquela região, teremos uma tarifa de postagem diferenciada. Na verdade, teremos testes dentro de testes e cada um com um determinado procedimento. Vamos passar então para os exercícios propostos. • Exercício 001 : Escreva um pseudocódigo que irá receber a entrada de dois números e irá retornar como saída a entrada (número) de maior valor. • Exercício 002 : Escreva um pseudocódigo na qual o usuário irá ter a oportunidade de entrar com 5 números e o sistema irá gerar como resultado a soma dos 5 números entrados pelo usuário. • Exercício 003 : Uma empresa irá oferecer um reajuste salarial, cujo percentual será decidido através das seguintes situações: • Funcionários do sexo masculino com tempo de casa superior ou igual a 10 anos terão direito a um reajuste de 5%; • Funcionários do sexo masculino com tempo de casa inferior a 10 anos terão direito a um reajuste de 3%; • Funcionários do sexo feminino com tempo de casa superior ou igual a 8 anos terão direito a um reajuste de 5%; • Funcionários do sexo feminino com tempo de casa inferior a 8 anos terão direito a um reajuste de 3%; • Funcionários em qualquer uma das situações acima, porém com mais de um dependente terá ainda um reajuste de 2% sobre o salário reajustado anteriormente.

Page 41: Apostila - Algoritmos e Logica de Programacao

Curso de Sistemas de Informação Algoritmos e Lógica de Programação _______________________________________________________________________________________________________________________

~ 40 ~

• Exercício 004 : Escreva um fluxograma na qual o usuário dará a entrada de 10 números e ao final o sistema irá exibir o maior número informado pelo usuário.

Page 42: Apostila - Algoritmos e Logica de Programacao

Curso de Sistemas de Informação Algoritmos e Lógica de Programação _______________________________________________________________________________________________________________________

~ 41 ~

7- ESTRUTURAS DE DADOS COMPOSTAS O tema deste módulo será o das variáveis indexadas. Com uso frequente na programação convencional, variável indexada é um conjunto de variáveis do mesmo tipo, referenciadas pelo mesmo nome e que armazenam valores distintos. A sua distinção se dá pela divisão da variável, possuindo esta uma posição de armazenamento dentro de seu conjunto, sendo que a alteração ou a leitura do seu valor é realizada por meio de índices, daí o nome indexada. Existem dois tipos de variáveis indexadas: • Vetor: quando a variável indexada possui um único índice (uma dimensão); • Matriz: quando a variável indexada possui dois índices (duas dimensões – X,Y/Coluna,Linha) O número de índices dentro de uma variável é denominado dimensão. Para se definir uma variável indexada, utilizamos a seguinte sintaxe: Tipos tipo Nome_tipo = Vetor[numero de elementos] : tipo de dado Variáveis Nome_variável_Vetor : Nome_tipo ... ... Veja a seguir alguns exemplos de definição de variáveis indexadas: Tipos tipo V = vetor[5] : CARACTER[30] Variáveis Nome : V No exemplo acima, criamos na verdade cinco variáveis nomes, porém elas estão divididas da seguinte forma: Nome[1], Nome[2], Nome[3], Nome[4], Nome[5] Sendo que cada uma das dimensões, poderá armazenar um valor diferenciado para uma cadeia de caracteres de 30 posições. Tipos tipo V = vetor[5] : REAL Variáveis Salario : V A variável Salario é um vetor de 5 posições do tipo Real, assim como a variável Nome.

Page 43: Apostila - Algoritmos e Logica de Programacao

Curso de Sistemas de Informação Algoritmos e Lógica de Programação _______________________________________________________________________________________________________________________

~ 42 ~

Os exemplos acima são do tipo Vetor, abaixo veremos uma variável indexada do tipo matriz: Tipos tipo M = vetor[3,10] : Inteiro Variáveis CodigoProduto : M No exemplo anterior, teremos a variável CodigoProduto, dividida nas seguintes dimensões: CodigoProduto[1,1] CodigoProduto[2,1] CodigoProduto[3,1] CodigoProduto[1,2] CodigoProduto[2,2] CodigoProduto[3,2] CodigoProduto[1,3] CodigoProduto[2,3] CodigoProduto[3,3] CodigoProduto[1,4] CodigoProduto[2,4] CodigoProduto[3,4] CodigoProduto[1,5] CodigoProduto[2,5] CodigoProduto[3,5] CodigoProduto[1,6] CodigoProduto[2,6] CodigoProduto[3,6] CodigoProduto[1,7] CodigoProduto[2,7] CodigoProduto[3,7] CodigoProduto[1,8] CodigoProduto[2,8] CodigoProduto[3,8] CodigoProduto[1,9] CodigoProduto[2,9] CodigoProduto[3,9] CodigoProduto[1,10] CodigoProduto[2,10] CodigoProduto[3,10]

Quando estamos trabalhando com variáveis indexadas, temos que obrigatoriamente especificar o índice da variável na qual queremos trabalhar. Nos exemplos acima, não poderíamos nos referir apenas à variável NOME, mas sim a NOME[n], onde o “n” seria uma dimensão válida, neste caso de 1 à 5. Vamos fazer um pequeno exercício: Seja a seguinte variável indexada bidimensional A: A

1 175 225 10 9000 3,7 4,75 2 9,8 100 363 432 156 18 3 40 301 30,2 6381 1 0 4 402 4211 7213 992 442 7321 5 21 3 2 1 9000 2000 1 2 3 4 5 6

a) Quantos elementos fazem parte do conjunto? b) Qual o conteúdo do elemento identificado por A [4,5] ? c) Qual o conteúdo de X após a execução do comando X := A [3,2] + A [5,1] ? d) O que aconteceria caso fosse referenciado o elemento A [6,2] no programa? e) Somar os elementos da quarta coluna: A [1,4] + A [2,4] + A [3,4] + A [4,4] + A [5,4]; f) Somar os elementos da terceira linha: (A [3, 1] + A [3,2] + A [3,3] + A [3,4]).

Page 44: Apostila - Algoritmos e Logica de Programacao

Curso de Sistemas de Informação Algoritmos e Lógica de Programação _______________________________________________________________________________________________________________________

~ 43 ~

Agora vamos exibir um exemplo de algoritmo onde iremos preencher os valores para a variável Nome em suas diversas dimensões e em seguida listar os mesmos: Algoritmo Nomes Tipos tipo V = vetor[5] : caracter[30] Variáveis Nome : V Conta , Lista: INTEIRO Inicio Para conta = 1 até 5 passo 1faca Ler Nome[conta] Fim para Para lista = 1 até 5 passo 1 faca Escrever Nome[lista] Fim para Fim. Exercício 001: Escreva um pseudocódigo que irá ler e armazenar em variável indexada 10 números e após o final da leitura, irá exibir a soma dos 10 números armazenados nas dez posições da variável indexada. Exercício 002: Escreva um pseudocódigo que irá ler e armazenar em variável indexada 50 números e após o final de leitura, irá apresentar o número da posição e o valor armazenado na posição de variável indexada que conterá o maior valor lido. Quando trabalhamos com variáveis indexadas, poderemos entre outros criar “índices”, ou seja, ordenar os vetores para que eles sejam apresentados em uma determinada ordem. Este procedimento, também é conhecido, em sua forma mais simples como “Bolha de Classificação”. Sua lógica consiste na leitura de todos os elementos de um vetor, comparando-se os valores de seus elementos vizinhos, e neste momento é empregada a seguinte seqüência: 1. Serão realizadas varreduras a menos do total de elementos do vetor; 2. Na primeira varredura, verificamos que o elemento do vetor já se encontra em seu devido lugar; 3. Na segunda varredura, o procedimento é análogo à primeira varredura e vai até o último elemento; 4. Ao final do procedimento, o vetor estará classificado segundo o critério escolhido. Vamos à prática, no exemplo a seguir, iremos realizar a leitura de 5 números e em seguida classificá-los em ordem crescente: Algoritmo classificação

Page 45: Apostila - Algoritmos e Logica de Programacao

Curso de Sistemas de Informação Algoritmos e Lógica de Programação _______________________________________________________________________________________________________________________

~ 44 ~

Tipos tipo V = vetor[50] : inteiro Variáveis numero : V A,B: INTEIRO Aux: REAL Inicio Para A = 1 até 50 faça Ler numero[A] Fim para B=50 Enquanto B > 1 faça Para A = 1 até ( B-1 ) faça Se numero[A] > numero[A+1} Então Aux=numero[A] numero[A]=numero[A+1] numero[A+1]=Aux Fim se Fim para B=B-1 Fim enquanto Escrever “Abaixo, a listagem ordenada dos números entrados” Para A de 1 até 50 faça Escrever numero[A] Fim para Fim. Outro processo que poderá ser utilizado em programação é a pesquisa seqüencial, ou seja, serão verificados todos os componentes de um vetor, para verificar se nestes estão armazenados um determinado valor. Exemplo: Iremos efetuar a leitura de 100 nomes, em seguida, será solicitado um nome qualquer e, iremos verificar se, dentre os 100 nomes entrados, existe o nome na qual foi solicitada a pesquisa. Veja este algoritmo a seguir: Algoritmo pesquisa Tipos tipo V1 = vetor[100] : caracter[30] Variáveis nome : V1 pesquisado : CARACTER[30] contador : INTEIRO encontrado : LOGICO Inicio Para contador = 1 até 100 faça Ler nome[contador] Fim para Ler pesquisado

Page 46: Apostila - Algoritmos e Logica de Programacao

Curso de Sistemas de Informação Algoritmos e Lógica de Programação _______________________________________________________________________________________________________________________

~ 45 ~

Escrever “Aguarde ... pesquisando no banco de dados” contador=1 encontrado=.F. Enquanto (contador<101) .E. (Encontrado = .F.) faça Se nome[contador]=pesquisado Então Encontrado= .T. Senão Contador=contador+1 Fim se Fim enquanto Se encontrado = .T. Então Escreva “O valor está contido no banco de dados” Senão Escreva “O valor não existe no banco de dados” Fim se Fim.

EXERCÍCIOS: Vetores e Matrizes 1 – Faça o fluxograma e o algoritmo que carregue um vetor com 150 números reais, determine e mostre o seu elemento máximo (maior valor) e a posição na qual ele se encontra. 2 – Faça o fluxograma e o algoritmo que carregue um vetor com 150 números inteiros, determine e mostre o seu elemento mínimo (menor valor) e a posição na qual ele se encontra. 3 - Escreva um algoritmo que armazene em um vetor os 100 primeiros números ímpares. Após isso, o algoritmo deve imprimir todos os valores armazenados. 4 - Escreva um algoritmo que armazene em um vetor o quadrado dos números ímpares no intervalo fechado de 1 a 20. Após isso, o algoritmo deve imprimir todos os valores armazenados. 5 - Escreva um algoritmo que receba dez números inteiros e armazene em um vetor a metade de cada número. Após isso, o algoritmo deve mostrar todos os valores armazenados. 6 - Escreva um algoritmo que receba dez números do usuário e armazene em um vetor o quadrado de cada número. Após isso., o. algoritmo. deve imprimir todos os valores armazenados.

Page 47: Apostila - Algoritmos e Logica de Programacao

Curso de Sistemas de Informação Algoritmos e Lógica de Programação _______________________________________________________________________________________________________________________

~ 46 ~

7 - Escreva um algoritmo que receba e armazene em um vetor, quinze números. Ao final mostre todos os números pares do vetor e sua respectiva posição. 8 - Fazer um algoritmo em que sejam carregados dois vetores de 25 números inteiros: a) intercale os elementos destes dois vetores formando um novo vetor de 50 elementos; b) exiba os números do novo vetor. 9 - Fazer um algoritmo que: a) leia um vetor A com 30 valores numéricos: b) leia um outro vetor B com 30 valores numéricos; c) leia o valor de uma variável X; d) verifique qual o elemento de A que é igual a X; e) exiba o elemento de B de posição correspondente à do elemento de A igual a X, se

existir. 10 - Dada uma matriz quadrada P, de ordem 10: � Some os quadrados dos elementos da 1a coluna; � Some os elementos da 2a linha; � Some os elementos da diagonal principal; � Some todos os elementos; � Some os elementos de índice ímpar da 2a linha. 11 - Dadas as variáveis indexadas A e B abaixo;

A B

7 8 4 9 6 9 11 15 2 1 7 3 32 19 3 4

Calcular o conjunto C = A + B. 12 – Construa um fluxograma e o algoritmo que carregue 100 números inteiros positivos (deve ser feito o teste para garantir a não inclusão de números inválidos – utilize o laço “repita até” neste teste). O programa deve calcular a média dos números do vetor, e ao final mostrar todos os números que são maiores que a média. 13 – Faça o fluxograma e o algoritmo que carregue um vetor com 50 nomes, ordene e mostre o vetor ordenado. 14 – Faça o fluxograma e o algoritmo que carregue um vetor com 50 nomes, depois solicite ao usuário um nome e verifique se o mesmo existe no vetor ou não (mostrar o nome e a posição no vetor caso exista e uma mensagem indicativa, caso não exista). A solicitação deve ser repetida ate que o usuário digite a palavra “fim”. 15 – Faça o fluxograma e o algoritmo que carregue um vetor com 100 números inteiros, verifique cada número, se este for par, multiplique por 3 e atualize o seu valor no vetor. Ao final, mostre todos os elementos do vetor.

Page 48: Apostila - Algoritmos e Logica de Programacao

Curso de Sistemas de Informação Algoritmos e Lógica de Programação _______________________________________________________________________________________________________________________

~ 47 ~

16 – Faça o fluxograma e o algoritmo que carregue um vetor com 150 números inteiros, gere um segundo vetor com todos os números do primeiro vetor multiplicados por 2. mostre ambos os vetores. 17 – Faça o fluxograma e o algoritmo que carregue uma matriz de dimensão 5x5, calcule e mostre a soma de todos os elementos e uma listagem com cada um dos elementos da matriz. 18 – Faça o fluxograma e o algoritmo que carregue duas matrizes de dimensão 6x6. Gere uma terceira matriz com a soma das duas anteriores e mostre seus valores. 19 – Faça o fluxograma e o algoritmo que carregue um vetor com 60 posições, calcule e mostre a soma de todos os elementos das posições pares e impares do vetor. 20 – Faça o fluxograma e o algoritmo que carregue uma matriz de dimensão 10x10, calcule e mostre a soma de cada uma das linhas e de cada uma das colunas da matriz. 21 - Faça um fluxograma e o algoritmo que: O usuário preencha com quaisquer valores inteiros um vetor de trinta posições. Calcule a média deles. Os valores menores que a média devem ser copiados em outro vetor, o qual deve ficar em ordem crescente. Liste os dados do primeiro vetor e tantos quantos houverem no segundo vetor. Use mensagens claras para o usuário tomar conhecimento dos passos sendo executados. 22 - Faça um fluxograma e o algoritmo que: O usuário preencha com quaisquer valores inteiros um vetor de trinta posições. Calcule a média deles. Os valores maiores que a média devem ser copiados em outro vetor, o qual deve ficar em ordem crescente. Liste os dados do primeiro vetor e tantos quantos houverem no segundo vetor. Use mensagens claras para o usuário tomar conhecimento dos passos sendo executados. O fluxograma e o portugol devem ser entregues passados a limpo. Consulte apenas o seu material. 23 - Faça um Fluxograma e o algoritmo que: O usuário insere em um vetor “N” 40 números negativos, seguido da digitação de outros 40 números maiores que zero em um “P” (faça o teste para permitir somente a entrada de valores válidos). Faça um vetor “V”, de tal forma que cada elemento seu seja a soma dos elementos de “P” e “N”, de mesma i-ésima posição, e caso a soma seja negativa transforme-a em positivo. Liste “V”, mostre a média, o maior e o menor valor do mesmo. Apresente ao usuário a opção de pesquisar um valor qualquer em “V”, informando a localização do mesmo ou declarando que não existe tal valor no vetor. Repetir o procedimento de consulta, até que o usuário decida encerrar a execução do algoritmo. 24 - Faça um fluxograma e o algoritmo que leia um vetor de 20 valores numéricos e ordene esse vetor em ordem crescente. O programa também deve ler um número K e imprimir, antes e depois da ordenação, o K-ésimo termo da variável composta.

Page 49: Apostila - Algoritmos e Logica de Programacao

Curso de Sistemas de Informação Algoritmos e Lógica de Programação _______________________________________________________________________________________________________________________

~ 48 ~

25 - Faça um fluxograma e o algoritmo que leia e armazene 30 valores reais positivos, determine a sua média e gere um segundo vetor, no qual cada elemento é calculado a partir do elemento correspondente do primeiro vetor mais 30% caso seja menor que a média, senão mais 20% do mesmo. Mostre os dois vetores. O calculo de 30% corresponde a multiplicar por 1.3 e 20% por 1.2. 26 - Faça um fluxograma e o algoritmo que leia e armazene 70 valores reais positivos, determine a sua média e mostre-a. Gere um segundo vetor, no qual cada elemento é calculado a partir do elemento correspondente do primeiro vetor subtraído da média determinada para o primeiro vetor. Calcule o somatório dos valores negativos do segundo vetor e mostre . Mostre os dois vetores.

Page 50: Apostila - Algoritmos e Logica de Programacao

Curso de Sistemas de Informação Algoritmos e Lógica de Programação _______________________________________________________________________________________________________________________

~ 49 ~

8- MODULARIZANDO ALGORITMOS – PROCEDIMENTOS E FUNÇÕES Em determinadas situações, devido à complexidade de alguns algoritmos, é necessária a divisão do mesmo em diversas partes, para que assim, o sistema tenha uma operação precisa. Essa divisão de tarefas é denominada de “Subalgoritmos”. Os subalgoritmos nada mais são do que rotinas que possuem uma função específica.

A modularização consiste num método para facilitar a construção de grandes programas, através de sua divisão em pequenas etapas, que são: módulos, rotinas, sub-rotinas ou sub-programas. Permitindo o reaproveitamento de código, já que podemos utilizar um módulo quantas vezes forem necessárias, eliminando assim a necessidade de escrever o mesmo código em situações repetitivas. Vamos imaginar a seguinte situação: Em um sistema comercial, em várias etapas temos que verificar se o número do CPF do cliente foi digitado de forma correta. Imaginando que tal situação se repete por 38 vezes no sistema. Teríamos que escrever 38 vezes o mesmo trecho de código? Não, para isso teríamos uma rotina “subalgoritmo” que teria esta função. Este subalgoritmo teria um nome e, sempre que fosse necessária a verificação do CPF, bastaria invocar “chamar” este subalgoritmo. De um modo geral, os subalgoritmos são importantes devido aos seguintes aspectos:

� Estruturação de algoritmos, facilitando assim a detecção de erros. Imagine se a rotina de verificação do CPF do cliente tiver um erro lógico. Em uma primeira hipótese, teríamos que corrigir a mesma em 38 pontos diferentes do sistema, porém utilizando subalgoritmo, teríamos apenas que realizar uma correção em um ponto do sistema;

� Modularização de sistemas, que justamente é utilizada para a reutilização de rotinas “subalgoritmos” em vários pontos do algoritmo principal;

� Subdivisão de algoritmos extensos, facilitando assim a sua compreensão. O esquema de um algoritmo e seus subalgoritmos pode ser observado a seguir: Algoritmo (nome do algoritmo) Variáveis Definição das variáveis globais <definição dos subalgoritmos> Inicio <estrutura do algoritmo principal> Fim. Quando o sistema está executando o algoritmo principal e é invocado algum subalgoritmo (através do nome dado ao mesmo), a execução deste é interrompida e o sistema passa a executar os comandos constantes do subalgoritmo. Ao final desta execução, o sistema retorna automaticamente para o algoritmo principal a partir do ponto onde foi realizada a chamada do subalgoritmo.

Page 51: Apostila - Algoritmos e Logica de Programacao

Curso de Sistemas de Informação Algoritmos e Lógica de Programação _______________________________________________________________________________________________________________________

~ 50 ~

Um subalgoritmo é composto por:

� Cabeçalho: onde é definido o nome do subalgoritmo e as variáveis que serão utilizadas pelo mesmo;

� Corpo: onde são especificadas as instruções do subalgoritmo. Os subalgoritmos podem ser de dois tipos:

� Funções; � Procedimentos.

O subalgoritmo tipo função é aquele na qual um valor é calculado com base em outros valores, normalmente passado pelo algoritmo principal. O subalgoritmo tipo procedimento é aquele que retorna zero ou mais valores ao algoritmo que o invocou, sendo que, ao contrário das funções, esses valores não são explícitos, ou seja, a chamada de procedimentos nunca é realizada ao meio de expressões é só é realizada em comandos isolados dentro do algoritmo, como instruções de entrada e saída de dados. Veja a seguir um algoritmo e seu subalgoritmo para se calcular a raiz quadrada de um determinado número: (Por causa da didática de variáveis globais e locais, vamos manter uma estrutura um pouco diferente do que temos mostrado até agora, vamos nos aproximar uma pouco da estrutura do PASCAL) Algoritmo Raiz_quadrada Variáveis num1, num2 : real Função Raiz(numero:real) : real Var calc : real Inicio Calc = SQR(numero) Retorne Calc Fim Inicio Escreva “Numero para Raiz Quadrada” Leia num1 Num2 = Raiz(num1) Escreva “Raiz quadrada é igual a:”, num2 Fim Com certeza, teria sido mais fácil executar o cálculo de raiz quadrada diretamente no algoritmo principal, porém o fizemos assim para que você tenha uma idéia de como funciona um subalgoritmo, ou seja, a passagem de valores de uma rotina principal, para uma rotina secundária e o retorno do valor resultante deste processamento.

Page 52: Apostila - Algoritmos e Logica de Programacao

Curso de Sistemas de Informação Algoritmos e Lógica de Programação _______________________________________________________________________________________________________________________

~ 51 ~

No módulo passado nos referíamos aos subalgoritmos. Aqui vamos falar um pouco sobre variáveis globais e locais. Como o próprio nome diz, uma variável global pode ser utilizada em qualquer parte do algoritmo ou em seus subalgoritmos, ou seja, elas são visíveis em todo o procedimento que engloba o processamento. Ao contrário, as variáveis locais são definidas exclusivamente dentro de um subalgoritmo e sua vida se restringe ao uso dentro do próprio subalgoritmo onde foi declarada. Imagine a seguinte situação: - Um “avião” foi fabricado pela Embraer, porém este poderá voar em qualquer parte do mundo. Este avião poderia ser comparado a uma variável global.

- O “elevador” do edifício “ABC”, foi implantado naquele edifício e sua vida, ou seja, sua utilidade está apenas naquele edifício. Este elevador poderia ser comparado a uma variável local.

Veja o algoritmo utilizado no módulo anterior: Algoritmo Raiz_quadrada Var num1, num2 : real Função Raiz(numero:real) : real Var calc : real Inicio calc = SQR(numero) Retorne Calc Fim Inicio Escreva “Numero para Raiz Quadrada” Leia num1 Num2 = Raiz(num1) Escreva “Raiz quadrada é igual a:”, num2 Fim Observe que as variáveis NUM1 e NUM2 utilizadas no processo foram declaradas no inicio do algoritmo principal, ou seja, estas são variáveis globais. Já a variável CALC, definida dentro da função RAIZ é uma variável local, ou seja, operável apenas dentro daquela função. Pelo que observamos até este ponto, um subalgoritmo é um nome dado a um determinado trecho do algoritmo principal, que na maioria das vezes é responsável pela execução de uma única tarefa dentro do contexto do sistema. Estudamos que existem dois tipos de subalgoritmos:

1. Funções: que retornam um único valor para o algoritmo que a invocou; 2. Procedimentos: que retornam mais de um valor ou nenhum valor ao algoritmo que

o invocou. Nas funções e procedimentos, temos as variáveis globais, definidas no início de um algoritmo e que podem ser utilizadas por todos os subalgoritmos assim como pelo

Page 53: Apostila - Algoritmos e Logica de Programacao

Curso de Sistemas de Informação Algoritmos e Lógica de Programação _______________________________________________________________________________________________________________________

~ 52 ~

algoritmo principal e as variáveis locais, que são definidas dentro de um subalgoritmo e só podem ser utilizadas dentro deste. Para completar o nosso quebra-cabeça, temos também o que chamados de parâmetros, ou seja, as portas pelas quais se realiza a comunicação bidirecional entre o algoritmo principal e seus subalgoritmos e vice e versa. Possuímos dois tipos de parâmetros:

1. Parâmetros formais: são aqueles que, de forma automática substituem parâmetros determinados por “nomes simbólicos” por valores passados durante a execução do processo. Veja o exemplo a seguir:

Função Raiz(numero:real) : real Variáveis calc : real Inicio Calc = SQR(numero) Retorne Calc Fim Na verdade, o parâmetro formal “número” será substituído por um parâmetro real, ou seja, um valor numérico para o calculo da raiz quadrada de um determinado número.

2. Parâmetros reais: quando não temos parâmetros formais e sim valores pré estabelecidos que não serão alterados durante o processamento.

Através desta lógica, devemos saber que, durante o processamento dos dados, quando são substituídos parâmetros formais por valores reais, os parâmetros reais são calculados e os parâmetros formais recebem uma cópia dos valores resultantes do processamento. Seguindo esta lógica, iremos entender que os parâmetros formais não afetam os parâmetros reais.

Page 54: Apostila - Algoritmos e Logica de Programacao

Curso de Sistemas de Informação Algoritmos e Lógica de Programação _______________________________________________________________________________________________________________________

~ 53 ~

9- ALGORÍTMOS DE PESQUISA

A capacidade de armazenar informações foi um passo decisivo na evolução da ciência da computação e para o nível generalizado de utilização do computador. Com isso, a capacidade de recuperar informações, para posterior processamento, assume papel de suma importância na utilização cotidiana do computador, existindo para isto inúmeros exemplos, como: recuperação de dados de dados de transações bancárias de um cliente através de um número de conta, no cadastro de cliente/operações de um banco. Portanto, algoritmos de pesquisa devem ser projetados de forma a garantir a confiabilidade e eficiência exigidas pela importância das aplicações existentes.

A pesquisa de dados pode ser efetuada tanto em unidades de memória secundárias (disco rígido, disquetes, fita), quanto na memória principal do computador.

PESQUISA SEQUENCIAL

O método mais simples de determinar a presença, ou não, de um elemento numa seqüência, é percorrê-la a partir do seu início, efetuando comparações, até que o elemento seja encontrado ou o fim da seqüência seja alcançado. Este método é chamado de pesquisa seqüencial.

Dados : vetor de n elementos (n conhecido) elemento a ser pesquisado no vetor Resultado: Se o elemento existe, mostra-se a sua posição ou o total de ocorrências deste no vetor. Se o elemento não existe, mostra-se uma mensagem de falha.

As considerações que podem ser feitas sobre os dados de entrada (vetor), são do

tipo: o vetor esta ou não ordenado; o elemento ocorre uma única vez (pesquisa única) ou repetidas vezes no vetor (pesquisa múltipla). Isso acarreta os seguintes tipos de pesquisa:

a. Desordenada Única b. Desordenada Múltipla c. Ordenada Única d. Ordenada Múltipla Pesquisa Binária O método de pesquisa seqüencial é fácil de escrever e é razoavelmente eficiente para seqüências com poucos elementos. Entretanto, para seqüências de tamanho considerável, que ocorrem na maioria das aplicações existentes, a utilização do método torna-se inviável. Uma estratégia interessante e eficiente é utilizada no método de pesquisa binária.

Descrição Geral do Método:

� Definir intervalo inicial (i, f) de busca

Page 55: Apostila - Algoritmos e Logica de Programacao

Curso de Sistemas de Informação Algoritmos e Lógica de Programação _______________________________________________________________________________________________________________________

~ 54 ~

� Determinar a posição média do intervalo(m = (i+f) div 2) � Comparar o elemento da posição média (v[m]) com o elemento E: � Caso sejam iguais então terminou as pesquisa � Caso contrário definir o novo intervalo de busca

• Aplicar sucessivamente o passo anterior até encontrar E ou não existir mais o intervalo de busca

São aspectos fundamentais do método: • vetor de entrada tem que estar ordenado • intervalo de busca inicial é (i,f) = (1,n) • intervalo de busca, considerado a cada iteração, é definido do seguinte modo: (i,m-1), se (E < v[m]) (m+1,f), se (E > v[m]) tendo a metade do tamanho do intervalo original • O teste de repetição é (i <= f) e Não Achou Dados : vetor de n elementos (n conhecido) elemento a ser pesquisado no vetor Resultado Se o elemento existe, mostra-se a sua posição ou o total de ocorrências deste no vetor. Se o elemento não existe, mostra-se uma mensagem de falha 10- ALGORÍTMOS DE ORDENAÇÃO

Os problemas de ordenação são comuns tanto em aplicações comerciais quanto científicas. Entretanto, raro são os problemas que se resumem à pura ordenação de seqüências de elementos. Normalmente, os problemas de ordenação são inseridos em problemas de pesquisa, intercalação e atualização. Isto torna ainda mais importante o projeto e a construção de algoritmos eficientes e confiáveis para tratar o problema.

O nosso objetivo é analisar os seguintes tipos de ordenação:

a. Selection Sort b. Bubble Sort c. Insertion Sort a. Selection Sort

Este método é um dos mais simples e intuitivos dentre os métodos existentes. Sua estratégia básica é selecionar o menor elemento da seqüência considerada e colocá-lo no início da seqüência. Assim, dada uma seqüência de tamanho n, várias iterações são

Page 56: Apostila - Algoritmos e Logica de Programacao

Curso de Sistemas de Informação Algoritmos e Lógica de Programação _______________________________________________________________________________________________________________________

~ 55 ~

efetuadas, sendo que a cada vez que esta estratégia é aplicada, uma nova seqüência é gerada pela eliminação do menor elemento da seqüência original.

Algoritmo SelectionSort (vet : vetor; n : inteiro); {ordenado crescente} var i, j, pmin : inteiro; begin para I de 1 até (n-1) faça pmin <- i; para j de (i+1) até n faça se vet[j] < vet[pmin] entao pmin <- j; trocar (vet[i], vet[pmin] ) ; fim-se fim-para fim-para fimalgoritmo b. Bubble Sort

A estratégia utilizada pelo BubbleSort consiste de comparações e trocas entre elementos consecutivos da seqüência, a fim de "empurrar" o maior elemento para a última posição. Assim, várias iterações são efetuadas e, para cada seqüência considerada, a aplicação da estratégia gera uma nova seqüência pela eliminação do maior elemento da seqüência original.

Além disto, uma variável de controle (lógica) é utilizada para registrar a ocorrência ou não de troca entre elementos da seqüência. Quando nenhuma troca é efetuada, tem-se que a seqüência considerada já estava ordenada. Esta particularidade determina, em alguns casos, um número menor de comparações que o método SelectionSort.

Algoritmo BubbleSort (vet : vetor ; n inteiro) ; {ordem crescente} var i, limite : inteiro; trocou : booleano; begin limite = n; repita trocou = .f. para I de 1 até (limite - 1) faça se vet[i] > vet [i+1] entao trocar(vet[i], vet[i+1]) trocou = .t. fim-se fim-para limite = limite - 1 até not(trocou) fimalgoritmo

Page 57: Apostila - Algoritmos e Logica de Programacao

Curso de Sistemas de Informação Algoritmos e Lógica de Programação _______________________________________________________________________________________________________________________

~ 56 ~

c. Insertion Sort

Este método baseia-se no seguinte processo de inserção controlada:

� Com o primeiro elemento da seqüência forma-se uma seqüência de tamanho 1, ordenada.

� Cada elemento restante da seqüência original é inserido na seqüência, de modo que esta permaneça ordenada. Isto é feito através de uma pesquisa na seqüência ordenada que determina a posição que o novo elemento deverá ser inserido.

� Quando um elemento é inserido a frente de outro, estes deverão ser deslocados de uma posição.

11- RECURSIVIDADE

Recursão é um método geral para resolver problemas reduzindo-os a problemas mais simples do mesmo tipo. A estrutura geral de uma solução recursiva de um problema é assim: Resolva de forma recursiva um problema.

• Se o problema é trivial, faça o obvio (resolva-o) • Simplifique o problema • Resolva de forma recursiva (um problema mais simples) • Combine (na medida do possível) a solução do(s) problemas mais simples em uma

solução do problema original

Um subprograma recursivo chama a si próprio constantemente, cada vez em uma situação mais simples, até chegar ao caso trivial, quando pára. Devemos lembrar que recursividade deve ser utilizada na solução de problemas que tenham a natureza recursiva.

Exemplos :

a. Somatório de inteiros - Se n =1; Somatório = 1. Caso contrário Somatório = n + Somatório(n-1) b. Fatorial - Se n=0 ou n=1 ; Fatorial = 1. Caso contrário Fatorial = n*Fatorial(n-1) c. MDC - Se b divide a, então o MDC é b. Caso contrário, MDC(a,b) = MDC(b,a div b) d. N-ésimo termo da série de Finonacci . 1� e 2� = 1 e n-ésimo = (n-1)+(n-2) e. Torre de hanoi

Bibliografia INTRODUÇÃO AO DESENVOLVIMENTO DE ALGORITMOS WILSON SILVA PINTO ALGORITMOS JOSE AUGUSTO MANZANO - JAYR FIGUEIREDO OLIVEIRA

Page 58: Apostila - Algoritmos e Logica de Programacao

Curso de Sistemas de Informação Algoritmos e Lógica de Programação _______________________________________________________________________________________________________________________

~ 57 ~

ALGORITMOS E ESTRUTURAS DE DADOS NIKLAUS WIRTH ALGORITMOS E ESTRUTURAS DE DADOS ANGELO DE MOURA GUIMARAES - NEWTON A C LAGES ALGORITMOS ESTRUTURADOS H FARREL - C G BECKER - E C FARIA e MATOS, H F PROJETO DE ALGORITMOS NIVIO ZIVIANI

Page 59: Apostila - Algoritmos e Logica de Programacao

Curso de Sistemas de Informação Algoritmos e Lógica de Programação _______________________________________________________________________________________________________________________

~ 58 ~

ALGORITMO x LINGUAGEM C TIPO DE DADOS

ALGORITMO LINGUAGEM C-ANSI Inteiro int Real float

double Caractere char Lógico (Não existe o tipo lógico em C, e sim

expressões lógicas)

Tipo Tamanho Intervalo Uso char 1 byte -128 a 127 número muito pequeno e caracter ASCII int 2 bytes -32768 a 32767 contador, controle de laço float 4 bytes 3.4e-38 a 3.4e38 real (precisão de 7 dígitos) double 8 bytes 1.7e-308 a 1.7e308 científico (precisão de 15 dígitos)

DECLARAÇÃO DE VARIÁVEIS

ALGORITMO LINGUAGEM C-ANSI Variáveis identificadores : nome do tipo EX: Variáveis código : inteiro Variáveis nota, CPF : real Variáveis nome : caractere[30] Variáveis altura[30] : inteiro Variáveis peso[30,5] : real

tipo lista de identificadores

EX: int codigo; float nota; double CPF; char nome[30]; //string ou vetor de caracteres int altura[30]; float peso[30][5];

DEFINIÇÃO DE CONSTANTES ALGORITMO LINGUAGEM C-ANSI defina variáveis valor

EX: defina PI 3,14159

#define PI 3.14159 #define ON 1 #define OFF 0 #define ENDERECO 0x378

COMENTÁRIOS ALGORITMO LINGUAGEM C-ANSI delimitado por chaves { } ou // ou /* */ EX: Variáveis nota inteiro {nota do aluno} Variáveis nota inteiro //nota do aluno

delimitado por // ou /* */ EX: float nota; /* nota do aluno */ float nota; // nota do aluno

Page 60: Apostila - Algoritmos e Logica de Programacao

Curso de Sistemas de Informação Algoritmos e Lógica de Programação _______________________________________________________________________________________________________________________

~ 59 ~

EXPRESSÕES ARITMÉTICAS ALGORITMO LINGUAGEM C-ANSI adição: + subtração: - multiplicação: * divisão: / radiciação: √n Raiz(n) potenciação: ny Exp(n,y) quoc. da divisão: A Div B resto da divisão: A Resto B ATRIBUIÇÃO: EX: nota ← 10

+ - * / sqrt(valor) pow(n,y) A / B A % B ATRIBUIÇÃO: EX: nota = 10;

EXPRESSÕES LÓGICAS ALGORITMO LINGUAGEM C-ANSI igual a: = diferente de: <> maior que: > menor que: < maior ou igual a: >= menor ou igual a: <= conjunção: .E. disjunção: .OU. negação: .NÃO.

== != > < >= <= && || !

EXPRESSÕES LITERAIS

ALGORITMO LINGUAGEM C-ANSI concatenação: | comparação: = atribuição: ←

EX: A contém “bola” B contém “preta” A | B = “bolapreta” A = B a resposta será falsa B ← A a resposta será B = “bola”

strcat(A,B); strcmp(A,B); strcpy(A,B); EX: A contém “bola” B contém “preta” strcat(A,B); retorna A = “bolapreta” strcmp(A,B); a resposta será valor <> 0 strcpy(B,A); a resposta será B = “bola

COMANDOS DE ENTRADA DE DADOS

ALGORITMO LINGUAGEM C-ANSI Leia (variável) EX:

scanf(“código de formatação”,&variável) EX:

Page 61: Apostila - Algoritmos e Logica de Programacao

Curso de Sistemas de Informação Algoritmos e Lógica de Programação _______________________________________________________________________________________________________________________

~ 60 ~

Leia (nota) scanf(“%d”, &nota); COMANDOS DE SAÍDA DE DADOS ALGORITMO LINGUAGEM C-ANSI Escreva ( textos + variáveis ) EX: Escreva (“A nota do aluno foi:”, nota)

printf(“textos + código de formatação”,variáveis) EX: printf(“A nota do aluno foi %d”, nota);

CÓDIGO DE FORMATAÇÃO (Usado no scanf e printf)

FORMATOS

%c caractere (apenas um - char) %d ou %i inteiro (int) %f real (float) %e real (double) %s String (cadeia de caracteres) %p ponteiro

CONTROLE / CARACTER (Usado no printf) SEQUENCIA DE ESCAPE nulo (null) \0 campainha (bell) \a retrocesso (backspace) \b tabulacao horizontal \t nova linha (new line) \n tabulacao vertical \v alimentacao de folha (form feed) \f retorno de carro (carriage return) \r aspas (") \" Apostrofo (') \' interrogacao (?) \? barra invertida (\) \\

Page 62: Apostila - Algoritmos e Logica de Programacao

Curso de Sistemas de Informação Algoritmos e Lógica de Programação _______________________________________________________________________________________________________________________

~ 61 ~

ESTRUTURA BÁSICA DE PROGRAMAS EM C

1- Declarações das Bibliotecas As bibliotecas em C, são arquivos que normalmente se localizam no diretório

include. Essas bibliotecas contém funções e comandos pré-definidos na linguagem. Ex:

#include <stdio.h> #include <conio.h>

2- Declarações de Variáveis Globais As variavéis aqui declaradas são reconhecidas em todas as funções.

3- Funções Auxiliares São módulos criados com funções definidas pelo programador. É “chamada” Por

outras funções para ser executada. Tem a finalidade de retornar um valor ou apenas executar blocos de comandos.

4- Função Principal Função obrigatório em TODOS os programas criados na linguagem C. É apartir

dessa função que o programa começa a ser executado. Ex: main() { //início da função declaração de variáveis locais;

… comandos;

… } //fim da função

Page 63: Apostila - Algoritmos e Logica de Programacao

Curso de Sistemas de Informação Algoritmos e Lógica de Programação _______________________________________________________________________________________________________________________

~ 62 ~

ESTRUTURA SEQUENCIAL ALGORITMO LINGUAGEM C-ANSI Algoritmo cálculo Variáveis a, b, c : inteiro Início Escreva (“Digite dois numeros: “) Leia (a, b) c ← (a + b) * b Escreva (a, b, c) Fim

#include <stdio.h> #include <conio.h> main () { //início do algoritmo (main)

int a, b, c; printf(“Digite o primeiro numero: ”); scanf(“%d”,&a); printf(“Digite o segundo numero: ”); scanf(“%d”,&b); c = (a+b)*b; printf(“A=%d, B = %d, C = %d”,a,b,c); getch(); } //fim do algoritmo (main)

ESTRUTURA CONDICIONAL ALGORITMO LINGUAGEM C-ANSI Algoritmo menor Variáveis a, b c, menor : inteiro Início Escreva (“Digite tres numeros: “) Leia (a, b, c) Se ( (a > b) .E. (a < c) ) Então menor ← a Senão Se (b < c) Então menor ← b Senão menor ← c Fim se Fim se Escreva (“o menor valor é:”,menor) Fim

#include <stdio.h> #include <conio.h> main () { int a, b, c, menor; printf(“Digite o primeiro numero:”); scanf(“%d”,&a); printf(“Digite o segundo numero:”); scanf(“%d”,&b); printf(“Digite o terceiro numero:”); scanf(“%d”,&c); if ((a < b) && (a < c)) { //início do então

menor = a; } //fim do então

else { //início do senão

if (b < c) { //início do então

menor = b; } //fim do então

else { //início do senão

menor = c; } //fim do senão

} //fim do senão

printf(“O menor valor e: %d”,menor); system(“pause”);

Page 64: Apostila - Algoritmos e Logica de Programacao

Curso de Sistemas de Informação Algoritmos e Lógica de Programação _______________________________________________________________________________________________________________________

~ 63 ~

} ESTRUTURA DE REPETIÇÃO – 1ª FORMA: Número definido de repetições ALGORITMO LINGUAGEM C-ANSI Estrutura: PARA Ex: Algoritmo soma Variáveis i : inteiro Início Para i de 1 até 100 passo 1 faça Escreva (“O número é:”,i) Fim para Fim

Estrutura: FOR for(inicialização;condição;incremento ou decremento) { ... //comandos a serem repetidos } Ex: #include <conio.h> #include <stdio.h> main() { int i; for (i = 1; i <= 100; i++) { //início do para(for)

printf(“O numero e: %d”,i);

// o \n no printf, escreve um “pula linha”

}//fim do para(for)

getch(); }

Obs: Enquanto a condição for verdadeira repete os comandos da estrutura de repetição (for).

Page 65: Apostila - Algoritmos e Logica de Programacao

Curso de Sistemas de Informação Algoritmos e Lógica de Programação _______________________________________________________________________________________________________________________

~ 64 ~

ESTRUTURA DE REPETIÇÃO – 2ª FORMA: Número indefinido de repetições e teste no início

ALGORITMO LINGUAGEM C-ANSI Estrutura: ENQUANTO

Ex(1): Algoritmo soma Variáveis i : inteiro Início Enquanto (i <= 100) faça Escreva (“O número é:”,i) i ← i + 1 Fim enquanto Fim Ex(2): Algoritmo nomes Variáveis nome, sobrenome, nomec :

caractere[20] Início Escreva (“Digite o nome: “) Leia (nome) Enquanto (nome <> “fim”) faça Leia (sobrenome) nomec ← nomec | nome nomec ← nomec | “ ” nomec ← nomec | sobrenome Escreva (“O nome completo da pessoa é:”, nomec) Leia (nome) Fim enquanto Fim

Estrutura: WHILE while(condição) { ... //comandos a serem repetidos }

Ex(1): #include <conio.h> #include <stdio.h> main() { int i = 1; while (i <= 100) { //início do enquanto(while)

printf(“O número e: %d”,i); i = i + 1; // ou i++; } //fim do enquanto(while)

getch(); } Ex(2): #include <conio.h> #include <stdio.h> #include <string.h> main() { char nome[11], sobrenome[11], nomec[22] system(“cls”); printf(“Digite o nome: “); scanf(“%s”,&nome); while (strcmp(nome,”fim”) != 0) { printf(“Sobrenome: ”); scanf(“%s”,&sobrenome); strcpy(nomec,” “); strcat(nomec,nome); strcat(nomec,” “); strcat(nomec,sobrenome); printf(“O nome completo da pessoa e: %s”,nomec); printf(“Digite o nome: “); scanf(“%s”,&nome);

Page 66: Apostila - Algoritmos e Logica de Programacao

Curso de Sistemas de Informação Algoritmos e Lógica de Programação _______________________________________________________________________________________________________________________

~ 65 ~

} system(“pause”); }

Obs: Enquanto a condição for verdadeira repete os comandos da estrutura de repetição (while). ESTRUTURA DE REPETIÇÃO – 3ª FORMA: Número indefinido de repetições e teste no final

ALGORITMO LINGUAGEM C-ANSI Estrutura: REPITA Ex: Algoritmo soma Variáveis i : numérico Início i ← 1 Repita Escreva (“O número é:”,i) i ← i + 1 Até (i > 100) Fim

Estrutura: DO WHILE do{ ... //comandos a serem repetidos }while(condição); Ex: #include <conio.h> #include <stdio.h> main() { int i = 0; do{ //início do repita(do while)

printf(“O numero e: %d”,i); i++; // i=i+1 } while (i <= 100); //fim do repita(do

while)

getch(); }

Obs: Enquanto a condição for verdadeira repete os comandos da estrutura de repetição (do while). Atenção: Em relação a estrutura REPITA (DO WHILE), a lógica em C difere do lógica do algoritmo !