660 likes | 883 Views
LA SALLE Curso Técnico em Informática. Método de Programação Prof. Esp. Valter N. Silva e-mail: nei@portoweb.com.br Tel: (0XX) (51) 9991-5369. Algoritmo.
E N D
LA SALLECurso Técnico em Informática Método de Programação Prof. Esp. Valter N. Silva e-mail: nei@portoweb.com.br Tel: (0XX) (51) 9991-5369
Algoritmo • Produzir um programa para um computador é definir, detalhadamente, os passos lógicos que o computador precisa seguir para executar uma determinada tarefa. • Só é possível informar ao computador o que fazer se tivermos uma idéia clara de como pretendemos que ele faça o que desejamos.
Algoritmo • Está aí dificuldade de programação: mostrar que um dado problema pode ser resolvido por um conjunto seqüencial de instruções. Neste sentido, primeiro raciocinamos sobre o assunto, tentando definir com clareza os passos necessários para a solução imaginada e, por fim codificamos em uma linguagem que o computador possa entender.
Dentre as formas de representação de algoritmos mais conhecidas sobressaltam: • Descrição Narrativa; • Fluxograma Convencional; • Pseudocódigo, conhecida como Linguagem estruturada ou Portugol.
Descrição Narrativa: Receita de bolo: Misture os ingredientes Unte a forma com manteiga Despeje a mistura na forma Se houver coco ralado então despeje sobre a mistura Leve a forma ao forno Enquanto não corar Deixe a forma no forno Retire do forno Deixe esfriar
Fluxograma Convencional Início Ler N1, N2 Média (N1+N2)/2 “Reprovado” Média > 7 .S. .N. “Aprovado” Fim
Pseudocódigo ou Linguagem Estruturada Algoritmo Média Var N1, N2, Média : real Início Leia N1, N2 Média (N1 + N2) / 2 Se Média < 7 Então Escreva “Reprovado” Senão Escreva “Aprovado” Fim_se Fim.
Dados Numéricos O conjunto dos números naturais é representado por N e é dado por: N = {1,2,3,4,...) Conjunto dos números inteiros. Z = { ...,-3,-2,-1,0,1,2,3,...} Conjunto de números reais. PI = 3,14159
Dados Numéricos Inteiros Os números inteiros são aqueles que não possuem componentes decimais ou fracionários, podendo ser positivos ou negativos. Exemplo de números inteiros: 28 – número inteiro positivo 0 – número inteiro -12 – número inteiro negativo
Dados Numéricos Reais Os dados de tipo real são aqueles que podem possui componentes decimais ou fracionários, e podem também ser positivos ou negativos. Exemplo de dados do tipo real: 24.01 – número real positivo com duas casas decimais 144. - número real positivo com zero casas decimais -13.3 - numero real negativo com uma casa decimal 0.0 - número real com uma casa decimal 0. - número real com zero casas decimais
Dados Literais (caracter) O tipo de dados literal é constituído por uma seqüência de caracteres contendo letras, dígitos e/ou símbolos especiais. Este tipo de dados é também muitas vezes chamado de alfanumérico, (0..9 – A ..Z, a .. Z) carateres especiais ( #, /, %, *, ?, ~, !, @ ...) cadeia (ou cordão) de caracteres, ou ainda, do inglês , STRING. Obs.: Os dados literais são representados nos algoritmos pela coleção de caracteres , delimitada em seu início e término com o caracteres aspas ( “ ). Exemplos: “QUANDO ?” - Literal de comprimento 8 “ ” - Literal de comprimento 1 “1-2+7=“ - Literal de comprimento 6
Dados Lógicos O tipo de dados lógico é usado para representar dois únicos valores lógicos possíveis: verdadeiro e falso. É comum encontrar referências como tipos de valores lógicos como sim/não, 1,0, true/false. (dois estados) Exemplo: .V. - valor lógico verdadeiro .F. - valor lógico falso
Algoritmos Seqüenciais. • Consiste de comandos de atribuição de entrada e saída encadeados em uma seqüência. • 1 Escrever um algoritmo que leia 3 notas de um aluno e calcule a média aritmética. Ao final escreva a média.
Algoritmo de notas • Programa Notas • Variáveis • MA, N1, N2, N3: real • Início • Ler (N1, N2,N3) • MA : = (N1+N2+N3) / 3 • Escrever “Média Aritmética: “ , MA • Fim do Algoritmo.
Exemplo 2 Faça um Algoritmo que calcule as raízes de uma equação de 2º grau, a partir dos coeficientes A,B,C fornecidos pelo usuário.
Algoritmo • Programa calculo; • Variáveis • A,B, C, X1, X2 : real; • Início • Ler (A, B,C) • X1 : = (-B+SQRT(B*B-4*A*C) / 2 * A • X2 : = (-B-SQRT(B*B-4+A+C)/2*A • Escrever “As Raízes: “ ,X1,X2 • Fim
Atenção Para que um computador possa desempenhar uma tarefa é necessário que esta seja detalhada passo a passo numa forma compreensível pela máquina, utilizando aqui que se chama de programa. Neste sentido, um programa de computador nada mais é que um algoritmo escrito numa forma compreensível pelo computador.
Para se ter um algoritmo é necessário preciso: • Que se tenha um número finito de passos • Que cada passo esteja precisamente definido; • Que existam entradas ou valores iniciais; • Que existam uma ou mais saídas; • Que exista uma condição de fim.
Elementos de um algoritmo • Seqüência; • Seleção; • Repetição condicional; • Repetição contada;
Tipos Primitivos de Dados A elaboração de qualquer algoritmo seria impossível se desconsiderasse as estruturas de dados envolvidos, pois todo o trabalho do computador está baseado na manipulação das informações contidas na sua memória.
Declaração de variáveis Var <nome da variável>:<Tipo primitivo de dados> Ou <lista de variáveis>:<Tipo primitivo de dados> Sintaxe: var idade :inteiro salario, inflacao :real endereco :caracter verdade :logico
Tipos de informações As informações tratadas em um algoritmo podem ser classificadas em dois tipos: Constantes Informações que não sofrem alterações com o decorrer da execução do algoritmo. Sintaxe: const nome := “Angela” mensagem := “Bom noite !” UF : = “RS” Instrução de atribuição muito utilizado nos algoritmos como () e na programação em pascal (:=)
Variáveis: Informações que tem a possibilidade de serem alteradas em algum instante no decorrer da execução do algoritmo ( programa). Sintaxe: var nome : caracter; salario : real; idade : inteiro;
Comando de atribuição Comando de atribuição <variável> := <expressão>
Estrutura de um algoritmo Algoritmo < nome do algoritmo > Var < declaração de variáveis > Const < declaração de constante > Inicio escrever ler testar calcular Fim. Comandos
Comando de entrada e saída Entrada: ler < lista de variáveis> Saída: escrever < lista de variáveis> Exemplo: Ler A, B, C calcular Escrever “A media do aluno é: “, media
Algoritmos Condicional. 1 Faça um algoritmo que receba 3 números reais diferentes e informe qual é o maior . Algoritmo nros; Var A, B, C : inteiro; Ler A, B e C Se A é Maior que B Então Se A é Maior que C Escrever “A é o maior” Senão Escrever “C é o maior” Fim Se Senão Então Se B é maior que C Escrever “B” é o maior” Senão Escrever “C é o maior” Fim Se Fim Se Fim do Algoritmo.
2 Leia número, nome e salário atual de um funcionário. Calcule o novo salário com um reajuste de 10 %. Escreva o número, nome e salário novo ao final da leitura do registro. • Algoritmo Salário • Var • nro : inteiro • nome : Literal[30] • salário : real • inicio • ler nro, nome, salário • salário := (salário * 1.10) • escrever (número, nome, salário) • fim.
3 - Leia o ano de nascimento de uma pessoa e calcule sua idade. Caso seja maior ou igual à 21 anos exiba a seguinte mensagem: “Maior de idade” caso contrário “Menor de idade”. Algoritmo idade Var Ano_nasc: inteiro; Ano_atual: inteiro; Idade: inteiro; Inicio Ler ano_atual Ler ano_nasc Idade := (ano_atual – ano_nasc) Escrever idade Se idade >= 21 Então Escrever “Maior de idade” Senão Escrever “Menor de idade” Fim.
Fluxograma • Exemplo: Ler salário de funcionários da empresa XYZ e conceder reajuste salarial conforme os cargos. Aos Técnicos o reajuste será de 50 %, os Gerentes 30 % e aos demais 10 %.
Algoritmo • Programa reaj_salario; • Var Salario, sal_reaj : real; • Prof : literal[20]; • Início; • Leia salário, prof; • Escolha • Caso prof = “Técnico” • Sal_reaj 1.5 * salário • Caso prof = “Gerente” • Sal_reaj 1.3 * salário • Senão • Sal_reaj 1.1 * salário • Fim escolha • Escrever “ Salario Reajuste = “ ; Sal_reaj; • Fim.
Fluxograma seguido de algoritmo Algoritmo Program reaj_salario; var Salario, Sal_reaj : real; Prof : literal[20]; Início; Leia salário, prof; Escolha Caso prof = “Técnico” Sal_reaj 1.5 * salário; Caso prof = “Gerente” Sal_reaj 1.3 * salário; Senão Sal_reaj 1.1 * salário; Fim escolha Escrever “Salário Reajustado”, Sal_reaj; Fim. Início Ler Salário Prof.. Prof = “Técnico”. V Sal_Reaj. 1.5 * Salário V Prof = “Gerente”. Sal_Reaj. 1.3 * Salário F Sal_reaj. 1.1 * Salário “Salário Reajustado”, Sal_reaj Fim
Fluxograma seguido de algoritmo Algoritmo Média Var N1, N2, Média : real Início Leia N1, N2 Média (N1 + N2) / 2 Se Média < 7 Então Escreva “Reprovado” Senão Escreva “Aprovado” Fim_se Fim. Início Ler N1, N2 Média (N1+N2)/2 .N. “Reprovado” Média > 7 .S. “Aprovado” Fim
Exercícios 1)Desenvolver um algoritmo que leia a altura, largura e profundidade após calcule o perímetro. Programa área; Variavel A,L,P : integer; Início Escrever(‘Altura:’); ler(A); Escrever(‘Largura:’); ler(L); Escrever(‘Profundidade:’); ler(P); escrever(‘Resposta: ‘,A*L*P,’cm3); fim.
1) Ler 10 nº e mostre a quantidade de nº negativos e positivos. Programa ler_num; variavel X,N,POS,NEG : inteiro; início limpar tela; escrever(´Informe 10 numeros´); X:= 1; enquanto (X< 11) faça início ler(N); se (N < 0 ) então neg := neg +1 senão pos := pos + 1; fim. X:=X +1; escrever(´Numeros positivos: ´, POS); escrever(´Numeros negativos:´, NEG); fim Fim.
2) Digite um número que não seja negativo, caso ocorra de um ser negativo escreva-o na tela e envie esta mensagem Este número eh negativo, quando o número for positivo você enviará duas mensagens: Você digitou certo Este número não é negativo programa nro_correto; variável numero : real; início escrever(´Digite um numero não negativo´); ler(numero); se numero < 0 então início escrever(´Voce digitou : ´, numero); escrever(´Este numero eh negativo´); fim senão início escrever(´Voce digitou certo: ´, numero); escrever(´Este valor não eh negativo´); fim; fim.
Atenção !!! - repete o bloco de comandos até que a condição seja verdadeira; - não é necessário incluir inicioe fim para especificar o bloco de comandos pertencentes ao comando repetir; - como a condição é testada somente no final do comando, o bloco de comandos do repetir é executado pelo menos uma vez.
Algoritmo 1 – Conhecer dois valores (variáveis A e B); 2 - Efetuar a soma dos valores A e B e implicar o valor da soma em X; 3 – Verificar se X e maior ou igual 10, caso sim mostre X+5, senão mostre X-7. Programa ADICIONA_NUMEROS; Var X, A, B : integer; Inicio escrever(‘Informe um valor para a variável A: ‘); ler(A); escrever(‘Informe um valor para a variável B: ‘); ler(B); X := A + B; escrever(‘O resultado equivalente a: ‘); se (X >= 10) então então(X + 5) senão então(X – 7); fim.
Operadores Aritméticos As quatro operações básicas: + adição - subtração * multiplicação / divisão
Operadores Relacionais e Lógicos < menor que > maior que <= menor ou igual que >= maior ou igual que = igual a <> diferente de e; ou; não negação
Operadores Lógicos Existem ocasiões onde é necessário trabalhar com o relacionamento de duas ou mais condições ao mesmo tempo na mesma instrução se...então, efetuando desta forma testes múltiplos. Para estes casos é necessário trabalhar com a utilização dos operadores lógicos, também conhecidos como operadores boleanos.
Os operadores relacionais são três: e, ou e não. Em alguns casos, o uso de operadores lógicos evita a utilização de muitas instruções se...senão encadeadas.
PONTO E VÍRGULA: O ponto e vírgula no Algoritmo (Turbo Pascal) indica o fim do comando e sua presença é obrigatória. INÍCIO E FIM DE PROGRAMA: Todos os programas em Algoritmo (Turbo Pascal) devem começar e terminar desse modo: programa Exemplo; . . início . . fim. O "programa" indica o início do programa; "Exemplo" é um nome qualquer dado ao programa; “início" indica o início e ‘fim" o fim do processamento.
Operador Lógico: E O operador do tipo E é utilizado quando dois ou mais relacionamentos lógicos de uma determinada condição necessitam ser verdadeiros. Abaixo é apresentada a tabela verdade para este tipo de operador: Condição 1 Condição 2 Resultado Falsa Falsa Falso Falsa Verdadeira Falso Verdadeira Falsa Falso Verdadeira Verdadeira Verdadeiro
O operador E faz com que somente seja executada uma determinada operação se todas as condições mencionadas forem simultaneamente verdadeiras, gerando assim um resultado lógico verdadeiro. Exemplo: programa TESTA_LOGICA_E; var numero : inteiro; início escrever('Informe um número: '); ler(numero); se (numero >= 20) e (numero <= 90) então escrever('O número está na faixa de 20 a 90') senão escrever('O número está fora da faixa de 20 a 90'); fim.
Operador Lógico: OU O operador o tipo ou é utilizado quando pelo menos um dos relacionamentos lógicos (quando houver mais de um relacionamento) de uma condição necessita ser verdadeiro. Abaixo é apresentada a tabela verdade para este tipo de operador: Condição 1 Condição 2 Resultado Falsa Falsa Falso Verdadeira Falsa Verdadeiro Falsa Verdadeira Verdadeiro Verdadeira Verdadeira Verdadeiro
Exemplo: programa TESTA_LOGICA_OR; var sexo : literal; início escrever('Entre com o seu sexo: '); ler(sexo); escrever; se sexo = 'masculino' ou sexo = 'feminino' então escrever('O seu sexo ‚ válido') senão escrever('O seu sexo ‚ inválido'); fim.
Operador Lógico: NÃO O operador do tipo não é utilizado quando se necessita estabelecer que uma determinada condição deve não ser verdadeira ou deve não ser falsa. O operador não se caracteriza por inverter o estado lógico de uma condição. Abaixo é apresentada a tabela verdade para este tipo de operador: Condição 1 Resultado Verdadeira Falso Falso Verdadeiro
O operador não faz com que seja executada uma determinada operação, invertendo o resultado lógico da condição. Veja o exemplo a seguir: programa TESTA_NÃO_LOGICA; var A, B, C, X : inteiro; início; escrever('Entre um valor para a variável A: '); ler(A); escrever('Entre um valor para a variável B: '); ler(B); escrever('Entre um valor para a variável X: '); ler(X); senão (X > 5) então C := (A + B) * X senão C := (A - B) * X; escrever('O resultado da variável C corresponde a: ', C); fim.
Os Loopings Existem situações onde é necessário repetir um determinado trecho de um programa um número de vezes. Isto pode ser conseguido de duas formas: a primeira, onde será escrito o mesmo trecho tantas vezes quanto necessário, um tanto trabalhoso, e a Segunda forma onde poderá ser utilizado o conceito de looping. Os loopings são conhecidos também por: laços ou malhas. A principal vantagem em se utilizar o conceito de looping é que passa a ter um tamanho menor.