Prévia do material em texto
ALGORITMOS Democlydes de Carvalho Prof Esp - Projetos e Aplicações de Rede de Comunicação - UnB Taguatinga – DF, 21 de agosto de 2012 democlydes@hotmail.com algoritmos Conteúdo Programático da Disciplina: • Introdução – desenvolvimento de software, algoritmos e lógica de programação. • Conceitos básicos de algoritmos. • Estrutura Sequencial. • Estrutura Condicional. • Estrutura de Repetição. • Tipos de dados compostos homogêneos: Vetores e matrizes. • Tipos de dados compostos heterogêneos: Registros. • Sub-rotinas. • Funções definidas recursivamente • Arquivos. • Relatórios. • Estrutura de Dados Elementares. • Técnicas de verificação de algoritmos. Variáveis • Outro atributo característico de uma variável é o tipo de dado (a ser visto mais à frente) que ela pode armazenar. • Este atributo define a natureza das informações contidas na variável. Por último há o atributo informação, que nada mais é do que a informação útil contida na variável. • Uma vez definidos, os atributos nome e tipo de dado de uma variável não podem ser alterados e assim permanecem durante toda a sua existência, desde que o programa que a utiliza não seja modificado. Por outro lado, o atributo informação está constantemente sujeito a mudanças de acordo com o fluxo de execução do programa. • Em resumo, o conceito de variável foi criado para facilitar a vida dos programadores, permitindo acessar informações na memória dos computadores por meio de um nome, em vez do endereço de uma célula de memória. Constantes, Variáveis e Tipos de Dados algoritmos Variáveis • Todas as variáveis utilizadas em algoritmos devem ser definidas antes de serem utilizadas. Isto se faz necessário para permitir que o compilador reserve um espaço na memória para as mesmas. • Mesmo que algumas linguagens de programação (como BASIC e FORTRAN) dispensem esta definição, uma vez que o espaço na memória é reservado à medida que novas variáveis são encontradas no decorrer do programa. • Nos algoritmos usaremos a definição de variáveis por assemelhar- se com as principais linguagens de programação como Pascal e C. Constantes, Variáveis e Tipos de Dados algoritmos Variáveis Nos algoritmos, todas as variáveis utilizadas também são definidas no início do mesmo, por meio de um comando de uma das seguintes formas: VAR <nome_da_variável> : <tipo_da_variável> ou VAR <lista_de_variáveis> : <tipo_das_variáveis> A palavra-chave VAR será utilizada um única vez na definição de um conjunto de uma ou mais variáveis; Numa mesma linha poderão ser definidas uma ou mais variáveis do mesmo tipo; Para tal, deve-se separar os nomes das mesmas por vírgulas; Variáveis de tipos diferentes devem ser declaradas em linhas diferentes. algoritmos Variáveis Exemplo: No exemplo acima foram declaradas quatro variáveis: • a variável nome, capaz de armazenar dados caractere de comprimento 35 (35 caracteres); • a variável idade, capaz de armazenar um número inteiro; • a variável salário, capaz de armazenar um número real; • a variável tem_filhos, capaz de armazenar uma informação lógica. algoritmos var peso : real altura : real imc : inteiro nome : caracter Formato de declaração de variáveis para o VisualG Constantes, Variáveis e Tipos de Dados algoritmos Formato de declaração de variáveis para o VisualG Constantes, Variáveis e Tipos de Dados onde <identificador i> é o nome (identificador) de uma variável e <tipo das variáveis> determina que tipo de valor as variáveis poderão receber. Os identificadores das variáveis são usados para referenciá-las dentro do algoritmo. Tais identificadores devem ser claros e precisos, dando uma idéia do “papel” da variável no algoritmo. algoritmos Não esqueça disso: Nos algoritmos destinados a resolver um problema no computador, a cada variável corresponde uma posição de memória, cujo conteúdo pode variar ao longo do tempo durante a execução de um algoritmo. Embora a variável possa assumir diferentes valores, ela só pode armazenar um valor a cada instante. Assim, por exemplo, num algoritmo para calcular a área de um triângulo retângulo pelo teorema de pitágoras (a2 = b2 + c2), os identificadores A, B e C podem representar as posições de memória que armazenam o valor da hipotenusa e dos catetos. É importante que nunca usemos uma palavra reservada, isto é, que faça parte da linguagem algorítmica, como um identificador, pois poderá causar ambiguidade no entendimento do algoritmo. Constantes, Variáveis e Tipos de Dados algoritmos TIPOS DE DADOS Todo o trabalho realizado por um computador é baseado na manipulação das informações contidas em sua memória. Estas informações podem ser classificadas em dois tipos: – As instruções, que comandam o funcionamento da máquina e determinam a maneira como devem ser tratados os dados. – Os dados propriamente ditos, que correspondem à porção das informações a serem processadas pelo computador. A classificação apresentada a seguir não se aplica a nenhuma linguagem de programação específica; pelo contrário, ela sintetiza os padrões utilizados na maioria das linguagens. Constantes, Variáveis e Tipos de Dados algoritmos Tipos de Dados Existem quatro tipos de dados utilizados na construção de algoritmos. Inteiro: São caracterizados como tipos inteiros, o zero, os dados numéricos positivos ou negativos. Excluindo-se destes qualquer número fracionário. Exemplo: 8, -5, 10, 0, 1, etc. Real: São caracterizados como tipos reais (racionais), os dados numéricos positivos e negativos e números normalmente representados por uma parte inteira e uma parte fracionária. Exemplo: 0.15, -5.14, 10. 2, 2E23, etc. Caracter: São caracterizados como tipos caracteres, as sequências contendo letras, números e símbolos especiais. Uma sequência de caracteres deve ser indicada entre aspas (“”). Este tipo de dado também é conhecido como alfanumérico, string, literal ou cadeia. Exemplo: “Ciência da Computação”, “A”, “US$”, “Fone 574-9988”, “04387-030”,“ ”, “7” Lógico: São caracterizados como tipos lógicos os dados com valor verdadeiro e falso, sendo que este tipo de dado poderá representar apenas um dos dois valores. Ele é chamado por alguns de tipo booleano, devido à contribuição do filósofo e matemático inglês George Boole na área da lógica matemática. Exemplo: V ou F algoritmos Declaração de Variáveis As variáveis só podem armazenar valores de um mesmo tipo, de maneira que também são classificadas como sendo numéricas, lógicas e literais. Constantes, Variáveis e Tipos de Dados algoritmos Funções de Transferência É conveniente admitir operações em que mais de um tipo é envolvido. Funções de transferência entre tipos primitivos: trunc Converte em número real em int, truncando sua parte fracionária. Exemplo: trunc (75.37) = 75 trunc (-847.5364) = -847 tier Converte um int em real, juntando parte fracionária nula. Exemplo: tier (75) = 75.0 Constantes, Variáveis e Tipos de Dados algoritmos Comando de Atribuição. É o comando usado para atribuir um valor a uma variável. A natureza deste valor deve ser compatível com o tipo da variável declarada. O sinal utilizado para indicar uma atribuição é o : = (dois pontos igual) ou uma seta (<-) É importante neste ponto esclarecer como é que funciona oprocesso de atribuição: Caso eu esteja atribuindo para uma variável o resultado de uma expressão, o algoritmo primeiro deverá resolver a expressão para depois fazer a atribuição. algoritmos Comando de Atribuição. Exemplo 1 Peso <- 78.7 // Este comando atribui à variável Peso o valor 78.7. Nome <- "João da Silva" // Este comando atribui à variável Nome o valor "João da Silva". Achei <- FALSO // Este comando atribui à variável Achei o valor FALSO. É importante lembrar que só se pode atribuir às variáveis valores do mesmo tipo da variável. Assim, o seguinte comando seria inválido: Exemplo 2 VAR salario: REAL INICIO salario <- "Insuficiente" algoritmos Comando de Atribuição. Deve estar claro, também, que sempre à esquerda do comando de atribuição deve haver um (e somente um) identificador de variável. Assim, são incorretos os seguintes comandos: “são incorretos” 2060 <- NumeroConta NumeroAgencia+digitoControle <- 2345 + 0 NomeCliente+sobrenome <- “João” + “Silva” Mais exemplos A: = 3 + (2 * 6) ESCREVA ( A ) {RESULTADO 15} O resultado deste comando será 15, porque o algoritmo primeiro resolve a expressão e depois guardou o valor conseguido na variável especificada (A). algoritmos Comando de Atribuição. Também podem ser utilizados os valores armazenados em outras variáveis, para se fazer uma atribuição: A: = 5 B : = 3 C: = (A + B) / 2 MOSTRE (C) {RESULTADO 4} No final desta sequência de comandos o valor dentro da variável c será 4, pois o algoritmo utilizou o valor das variáveis A e B para calcular o valor da expressão e depois o armazenou em C. algoritmos Comando de Atribuição. Também pode ser utilizado o valor da própria variável que receberá a atribuição: A: = 7 B: = 5 C : =9 C: = (A + B + C) / 3 MOSTRE (C) {RESULTADO 7} No final desta sequência o valor de C será 7 , pois o algoritmo primeiro utiliza o valor 9 armazenado em C para resolver a expressão, e depois de resolvida , o novo valor será armazenado em C , apagando o valor anterior. algoritmos Comando de Atribuição. Para ficar mais claro: CONTADOR : = 1 CONTADOR : = CONTADOR + 1 ESCREVA (CONTADOR) { RESULTADO 2} A variável CONTADOR foi inicializada com o valor 1 , e logo abaixo este valor foi utilizado em uma expressão, e o resultado desta expressão foi armazenado dentro da própria variável CONTADOR. Mas é importante notar que o algoritmo primeiro utilizou o valor 1 para resolver a expressão , e somente após ter a resposta é que ele alterou o valor da variável CONTADOR. Na verdade eu apenas somei 1 ao valor que já existia na variável. algoritmos Comando de Atribuição. algoritmos Exercício: Se X possui o valor 15 e foram executadas as seguintes instruções: X := X + 3 X := X - 6 X := X / 2 X := 3 * X Qual será o valor armazenado em X? algoritmos Algoritmos Taguatinga – DF, 04 de agosto de 2011 Testando o Algoritmo 1. Faça um algoritmo que receba dois números e exiba o resultado da sua soma. 2. Faça um algoritmo que receba dois números e ao final mostre a soma, subtração, multiplicação e a divisão dos números lidos. 3. Escrever um algoritmo para determinar o consumo médio de um automóvel sendo fornecida a distância total percorrida pelo automóvel e o total de combustível gasto. 4. Escrever um algoritmo que leia o nome de um vendedor, o seu salário fixo e o total de vendas efetuadas por ele no mês (em dinheiro). Sabendo que este vendedor ganha 15% de comissão sobre suas vendas efetuadas, informar o seu nome, o salário fixo e salário no final do mês. 5. Escrever um algoritmo que leia o nome de um aluno e as notas das três provas que ele obteve no semestre. No final informar o nome do aluno e a sua média (aritmética). algoritmos algoritmo "lista 01" //Faça um algoritmo que receba dois números e //exiba o resultado da sua soma. var n1,n2:real inicio escreva ("digite um número: ") leia (n1) escreva ("digite outro número: ") leia (n2) escreval(n1," + ",n2," = ",n1+n2) fimalgoritmo algoritmos algoritmo "lista 02" //Faça um algoritmo que receba dois números e ao final mostre a soma, //subtração, multiplicação e a divisão dos números lidos. var a, b: real inicio escreva("Digite um Número: ") leia (a) escreva("Digite um Número: ") leia (b) escreval("A soma do ",a," + ",b," = ",a+b) escreval("O resutado da subtração de ",a," por ",b, " = ",a-b) escreval("O produto de ",a," X ",b," = ",a*b) escreval ("O quociente de ",a, " / ",b," = ",a/b) fimalgoritmo algoritmos algoritmo "lista 03" //Escrever um algoritmo para determinar o consumo médio de um //automóvel sendo fornecida a distância total percorrida pelo //automóvel e o total de combustível gasto. var dist, combg:real inicio escreva("Digite a distância: ") leia(dist) escreva("Digite o quantidade de combustível: ") leia(combg) escreval("consumo médio = ",dist/combg," Km por litro") fimalgoritmo algoritmos algoritmo "lista 04" // Escrever um algoritmo que leia o nome de um vendedor, o seu //salário fixo e o total de vendas efetuadas por ele no mês (em //dinheiro). Sabendo que este vendedor ganha 15% de comissão sobre //suas vendas efetuadas, informar o seu nome, o salário fixo e //salário no final do mês. var nome:literal salfix, tvend:real inicio escreval("por favor, Insira os dados") escreva("Nome: ") leia(nome) escreva("Salário Fixo: ") leia(salfix) escreva("Total de Vendas: ") leia(tvend) escreval ("Vendedor: ",nome) escreval("Total vendido: ", tvend) escreval("salário fixo : ",salfix) escreval("salário total: ", salfix +(tvend*0.15)) fimalgoritmo algoritmos algoritmo "lista 05" // Escrever um algoritmo que leia o nome de um aluno e as notas das //três provas que ele obteve no semestre. No final informar o nome do //aluno e a sua média (aritmética). var nome:caracter nt1, nt2,nt3:real inicio escreval("entre com os tados do aluno") escreva ("Nome: ") leia(nome) escreva("1º nota: ") leia(nt1) escreva("2º nota: ") leia(nt2) escreva("3º nota: ") leia(nt3) escreval("O Aluno: ",nome) escreval("Obteve a média: ", (nt1+nt2+nt3)/3) fimalgoritmo algoritmos • Atividades: Resolver os próximos exercícios e postar no moodle até a próxima aula: valendo 1,0 ponto1. algoritmos • Atividades: Resolver os exercícios e postar no moodle até a próxima aula: valendo 1,0 pontos. algoritmos • Atividades: Resolver os exercícios e postar no moodle até a próxima aula: valendo 1,0 ponto. algoritmos • Atividades: Resolver os exercícios e postar no moodle até a próxima aula: valendo 1,0 ponto1. algoritmos • Atividades: Resolver os exercícios e postar no moodle até a próxima aula: valendo 1,0 pontos. algoritmos • Atividades: Resolver os exercícios e postar no moodle até a próxima aula: valendo 1,0 pontos. algoritmos • Atividades: Resolver os exercícios e postar no moodle até a próxima aula: valendo 1,0 pontos. algoritmos • Atividades: Resolver os exercícios e postar no moodle até a próxima aula: valendo 1,0 ponto. algoritmos BIBLIOGRAFIA • Tonet, Bruno; Koliver, Cristian. Introdução aos Algoritmos. Caxias do Sul. Núcleo de Apoio à Aprendizagem de Programação-Universidadede Caxias do Sul, 54 p. • FARRER, Harry et alli Algoritmos Estruturados. Rio de Janeiro. Editora Guanabara Koogan S.A, 1989. 252p. • GOTTFRIED, Byron S. Programação em Pascal. Lisboa. McGraw Hill, 1994. 567p. • MANZANO, José Augusto N. G. & OLIVEIRA, Jayr Figueiredo. Algoritmos: Lógica Para Desenvolvimento de Programação. São Paulo. Érica, 1996. 270p. • MECLER, Ian & MAIA, Luiz Paulo. Programação e Lógica com Turbo Pascal. Rio de Janeiro, Campus, 1989. 223p. • ORTH, Afonso Inácio. Algoritmos. Porto Alegre. Editora Pallotti, 1985. 130p. • SALIBA, Walter Luís Caram. Técnicas de Programação: Uma Abordagem Estrutura. São Paulo. Makron, McGraw-Hill, 1992. 141p. algoritmos ALGORITMOS Democlydes de Carvalho Prof Esp - Projetos e Aplicações de Rede de Comunicação - UnB Taguatinga – DF, 21 de agosto de 2012 democlydes@hotmail.com