Baixe o app para aproveitar ainda mais
Prévia do material em texto
Agorítmos e Programação Algoritmos O que é um Algoritmo ? Um algoritmo pode se definido como uma sequência de passos que visam a atingir um objetivo bem definido. (FORBELLONE, 2005) Algoritmo é descrição de uma sequência de passos que deve ser seguida para a realização de uma tarefa. (ASCENCIO, 1999) Algoritmo é uma sequência finita de instruções ou operações cuja execução, em tempo finito, resolve um problema computacional, qualquer que seja sua instância. (SALVETTI, 1999) Algoritmos são regras formais para a obtenção de um resultado ou da solução de um problema, englobando fórmulas de expressões aritméticas. (MANZANO 1997) Ação e um acontecimento que, a partir de um estado inicial, após um período de tempo finito, produz um estado final previsível e bem definido. Portanto um algoritmo é a descrição de um conjunto de comandos que, obedecidos, resultam numa sucessão finitas de ações. (FARRER 1999) Na medida em que precisamos especificar uma sequência de passos, é necessário utilizar ordem, ou seja, pensar com ordem, portanto precisamos utilizar lógica. (FORBELLONE, 2005) Descrição Narrativa: A descrição narrativa consiste em analisar o enunciado do problema e escrever, utilizando uma linguagem natural ( por exemplo, a língua portuguesa), os passos a serem seguidos para a sua solução. Vantagem: não é necessário aprender nenhum conceito novo, pois a língua natural é bem conhecida. Desvantagem: A língua natural abre espaço para várias interpretações , o que posteriormente dificultará a transcrição desse algoritmo para programa. Fluxograma: O fluxograma consiste em analisar o enunciado do problema e escrever, utilizando símbolos gráficos prefinidos, os passos a serem seguidos para sua solução. Vantagem: o entendimento de símbolos gráficos é mais simples que o entendimento de textos. Desvantagem: é necessário aprender a simbologia dos fluxogramas e, além disso, o algoritmo resultante não apresenta muitos detalhes, dificultando a sua transcrição para um programa. Pseudocódigo ou portugal: O pseudocódigo ou portugol consiste em analisar o enunciado do problema e escrever, por meio de regras predefinidas, os passos a serem seguidos para a sua solução. Vantagem: a passagem do algoritmo para qualquer linguagem de programação é quase imediata, bastando conhecer as palavras reservadas da linguagem que será utilizada. Desvantagem: é necessário aprender as regras do pseudocódigo. Tipos mais utilizados de algoritmos Algoritmo 1 – Trocar o Pneu de um Carro Passo 1 – Desparafusar a roda Algoritmo 1 – Trocar o Pneu de um Carro Passo 2 – Suspender o carro com um macaco Algoritmo 1 – Trocar o Pneu de um Carro Passo 3 – Retirar a roda com o pneu furado Algoritmo 1 – Trocar o Pneu de um Carro Passo 4 – Colocar o Step Algoritmo 4 – Trocar o Pneu de um Carro Passo 5 – Abaixar o carro Algoritmo 1 – Trocar o Pneu de um Carro Passo 6 – Apertar os parafusos da roda Algoritmo 2 – Trocar o Pneu de um Carro ( Algoritmo Feminino) Passo 1 – Liga para o namorado. Se o namorado não puder trocar o pneu ? Passo 2 – Liga para o irmão. Se o irmão não puder trocar o pneu ? Passo 3 – Liga para o Pai. Se o pai não puder trocar o Pneu ? Passo 4 – Liga para um amigo. Se todas as alternativas anteriores falharem ? Passo 5 – Usa o charme feminino e pede para alguém que está passando pelo local troque o pneu. Algoritmo 1 – Somar três números Passo 1 – Receber os três números Passo 2 – Somar os três números Passo 3 – Mostrar o resultado obtido Descrição Narrativa Algoritmo 2 – Fazer um Sanduiche Passo 1 – Pegar o pão Passo 2 – Cortar o pão ao meio Passo 3 – Pegar a maionese Passo 4 – Passar a maionese no pão Passo 5 – Pegar e cortar alface e tomate Passo 6 – Colocar alface e tomate no pão Passo 7 – Pegar o hamburguer Passo 8 – Fritar o hamburguer Passo 9 – Colocar o hamburguer no pão Algoritmo 3 – Sacar dinheiro no banco 24 horas Passo 1 – Ir até um banco 24 horas Passo 2 – Colocar o cartão Passo 3 – Digitar a senha Passo 4 – Solicitar a quantia desejada Passo 5 – Se o saldo for maior ou igual à quantia desejada, sacar; caso contrário, mostrar mensagem de impossibilidade de saque Passo 6 – Retirar o cartão Passo 7 – Sair do banco 24 horas Conjunto de símbolos utilizados no fluxograma Faça um algoritmo para mostrar o resultado da soma de dois números, utilizando pseudocódigo e fluxograma Algoritmo em pseudocódigo Algoritmo Declare : N1, N2, M NUMÈRICO escreva (“Digite dois numeros”) Leia N1, N2 M N1 + N2 escreva (“ O resultado da soma e “, M) FIM_ALGORITMO Você pode estar pensando: “Mas eu realizo essas atividades de maneira diferente!”. Esse pensamento está correto, pois as vezes, um problema pode ser resolvido de diversas maneiras, porém, gerando a mesma resposta. Ou seja, podem existir vários algoritmos para solucionar o mesmo problema. (ASCENCIO, CAMPOS, 2012) Por que é importante construir um algoritmo ? Um algoritmo tem por objetivo representar mais fielmente o raciocínio envolvido na Lógica de Programação e, dessa forma, permite-nos abstrair de uma série de detalhes computacionais, que podem ser acrescentados mais tarde. Assim podemos focalizar nossa atenção para naquilo que é importante: a lógica da construção de algoritmos. Uma vez concebida uma solução algoritmica para um problema, esta solução pode ser traduzida para qualquer linguagem de programação e ser agregada das funcionalidades disponíveis nos diversos ambientes; costumamos denominar este processo de codificação. (FORBELLONE, 2005) Para a construção de qualquer tipo de algoritmos é necessários seguir estes passos: Compreender completamente o problema a ser resolvido, destacando os pontos mais importantes e os objetos que o compõem. Definir os dados de entrada, ou seja , quais dados serão fornecidos e quais objetos fazem parte desse cenário problema. Definir o processamento, ou seja, quais cálculos serão efetuados e quais as restrições para esses cálculos. O processamento é responsável pela transformação dos dados de entrada em dados de saída. Além disso deve-se verificar quais objetos são responsáveis pelas atividades. Definir os dados de saída, ou seja, quais dados serão gerados depois do processamento. Construir o algoritmo construindo um dos tipos descritos na próxima seção. Testar o algoritmo realizando simulações. (ASCENCIO, 2012) 9) Faça um algoritmo para mostrar o resultado da divisão de dois números. Algoritmo em pseudocódigo início real: N1, N2, D; escreva (“Digite dois numeros”); leia (N1, N2); se (N2=0) então escreva (“Impossivel Dividir”); senão D N1 / N2; escreva (“O resultado da divisao eh“, D); fimse fim SIM Um computador nada mais é do que uma ferramenta utilizada para solucionar problemas que envolvam a manipulação de informações, sendo que estas informações classificam-se em dois tipos básicos: instruções e dados. As instruções, é que comandam o funcionamento da máquina e determinam a maneira como devem ser tratados os dados. Tipos de Dados Os dados são representados pelas informações a serem tratadas (processadas) por um computador. Essas informações estão caracterizadas por três tipos de dados (ou tipos primitivos), a saber: Dados Numéricos (real e inteiro); Dados caracteres; Dados Lógicos (falso e verdadeiro) Dados numéricos tipo Inteiro São aqueles que não possuem números fracionários ou decimais. São caracterizados como tipos inteiros os dados numéricos positivos, negativos e nulos, excluindo-se destes qualquer número fracionário. Ex: 35 -45 0 Dados numéricos tipo Real São aqueles que podem possuir componentes decimais ou fracionários; São caracterizados como tipos reais osdados numéricos positivos, negativos, nulos e números fracionários. Ex. 35.00 -1.5 51.65 0.0 Dados tipo Caractere ou Literais São caracterizados como tipo Caractere as sequências contendo letras, números e símbolos especiais. Uma sequência de caracteres dever ser indicada entre aspas (“ “). Este tipo de dado é também conhecido como alfanumérico, string ou literal. Ex. “Engenharia Civil” “16.389.995” “9719-9857” “3.5” Dados tipo Lógico São caracterizados como tipo Lógico os dados com valores verdadeiro e falso, sendo que este tipo de dado poderá representar apenas um dos dois valores, é também conhecido como dado Booleano. Marque os tipos de dados que são inteiros: ( ) -1 ( ) 2.59 ( ) “Rua” ( ) “35” ( ) “V” ( ) 87 ( ) 8.5 ( ) -59698 ( ) 5.6 ( ) “nome” ( ) V ( ) -95 ( ) -15369 ( ) -25.36 ( ) F Marque os tipos de dados que são reais: ( ) -1 ( ) 2.59 ( ) “Rua” ( ) “35” ( ) “V” ( ) 87 ( ) 8.5 ( ) -59698 ( ) 5.6 ( ) “nome” ( ) V ( ) -95 ( ) -15369 ( ) -25.36 ( ) F Marque os tipos de dados que são caracteres: ( ) -1 ( ) 2.59 ( ) “Rua” ( ) “35” ( ) “V” ( ) 87 ( ) 8.5 ( ) -59698 ( ) 5.6 ( ) “nome” ( ) V ( ) -95 ( ) -15369 ( ) -25.36 ( ) F Marque os tipos de dados que são booleanos ou lógicos: ( ) -1 ( ) 2.59 ( ) “Rua” ( ) “35” ( ) “V” ( ) 87 ( ) 8.5 ( ) -59698 ( ) 5.6 ( ) “nome” ( ) V ( ) -95 ( ) -15369 ( ) -25.36 ( ) F Uma informação é classificada como variável quando tem a possibilidade de ser alterada em algum instante no decorrer do tempo de execução. Embora uma variável possa assumir diferentes valores, ela só pode armazenar um valor a cada instante. Exemplo do item a ser armazenado: peso de uma pessoa cotação dólar preço nome Variáveis Variáveis Cada variável corresponde a uma posição de memória, cujo conteúdo pode ser alterado ao longo do tempo durante a execução de um programa. Todo dado armazenado na memória do computador deve ser previamente identificado, ou seja, primeiro é necessário saber qual o tipo para depois fazer o seu armazenamento adequado. O dado armazenado poderá ser manipulado e utilizado a qualquer momento. Variáveis O nome de uma variável é utilizado para sua identificação e posteriormente para uso dentro de um programa. Sendo assim, é necessário estabelecer algumas regras de utilização: Nomes de uma variável poderão ser atribuídos com um ou mais caracteres; O primeiro caractere do nome de uma variável não poderá ser em hipótese alguma, um número; O nome de uma variável não poderá possuir espaços em branco; Não poderá ser o nome de uma variável, uma palavra reservada a uma instrução de programa; Não poderá conter caracteres especiais, exceto o “_”. *** Existem mais exceções que vão depender da linguagem de programação. Variáveis Variáveis de tipos diferentes devem ser obrigatoriamente declaradas em linhas diferentes. Numa mesma linha poderão ser definidas uma ou mais variáveis do mesmo tipo, deve-se separar os nomes das mesmas por virgulas. Um dos objetivos de se declarar variáveis no inicio do algoritmo é para que seja reservada (alocada) uma área na memória. Variáveis Representação gráfica dos diversos tipos de dados: Tipos de dados Numérico Caractere Lógico Inteiro Real Declaração de Variáveis - Portugol Exemplos inteiro: X, Y, Z; caracter: Nome[30]; real: Peso, Dolar; lógico: Resposta; Exemplo de declaração de variáveis em um algoritmo: caractere: nome[45], cargo [15]; inteiro: idade; real: salario; Marque os nomes que podemos utilizar como nomes de variáveis e justifique os que não foram marcados: ( ) nome ( ) valor_1 ( ) nun8 ( ) aluno 2 ( ) escreva ( ) x# ( ) 8x ( ) R$ ( ) valor ( ) y85x ( ) nun8$ ( ) 85val ( ) valor_2x ( ) valor 25 ( ) leia ( ) x ( ) #nome ( ) número Constantes Entendemos que uma informação é constante quando não sofre nenhuma variação no decorrer do tempo. Constantes é um determinado valor fixo que não se modifica durante a execução de um programa. Ex. PI = 3.1416 Utilizaremos os operadores para criar expressões aritméticas com as variáveis e constantes: Tipos de operadores: Operadores aritméticos; Operadores relacionais; Operadores lógicos. Operadores Operadores aritméticos Conjunto de símbolos que representam as operações básicas da matemática. Operadores e funções matemáticas Além dos operadores descritos anteriormente, temos outros operadores e as funções matemáticas. Racionalização: sqrt Ex: sqrt (36) = 6 Potencialização: pow Ex: pow (3,2) = 9 Resto da divisão: mod Ex: 9 mod 4 = 1 Quociente da divisão:div Ex: 9 div 4 = 2 sen() cos() abs() int() mod = Resto da divisão div = Quociente da divisão Operadores Prioridades dos operadores: Parênteses mais internospow sqrt * / mod div + - Operadores relacionais Os operadores relacionais são usados para comparar dois valores de mesmo tipo primitivo. Podem ser utilizados para comparar constantes, variáveis ou expressões aritméticas. O resultado de uma comparação é sempre um valor lógico. Operadores lógicos Usados normalmente com expressões booleanas, isto é, expressões que retornam verdadeiro ou falso para fins de testes em declarações condicionais. Operadores lógicos Exemplos: 2 < 5 ou 15 / 3 = 5 2 < 5 e 15 / 3 = 4 V ou V V e F V F Operadores lógicos Exemplos: 2 < 5 e 15 / 3 == 5 V e 5 == 5 V e V V Não V ou pow ( 3 , 2 ) / 3 < 15 - 35 mod 7 F ou 9 / 3 < 15 - 0 F ou 3 < 15 F ou V F ou V V F ou 20 div ( 18 / 3 ) != ( 21 / 3 ) mod 2 F ou 20 div 6 != 7 mod 2 F ou 3 != 1 F ou V V Exemplos de Algoritmos - Pseudocódigos 1) Faça um algoritmo que receba quatro números inteiros, calcule e mostre a soma desses números. Algoritmo Declare : n1, n2, n3, n4, soma NUMÈRICO escreva “Digite quatro numeros” Leia n1, n2, n3, n4 soma n1 + n2 + n3 + n4 escreva “ O resultado da soma eh “, soma FIM_ALGORITMO 2) Faça um algoritmo que receba quatro notas, calcule e mostre a média aritmética. Algoritmo Declare : n1, n2, n3, n4, media NUMÈRICO escreva “Digite as quatro notas” Leia n1, n2, n3, n4 media (n1 + n2 + n3 + n4)/4 escreva “ media eh “, media FIM_ALGORITMO Exemplos de Algoritmos - Pseudocódigos 2) Faça um algoritmo que receba quatro notas, calcule e mostre a média aritmética ( outra forma ). Algoritmo Declare : n1, n2, n3, n4, soma, media NUMÈRICO escreva “Digite a primeira nota” Leia n1 escreva “Digite a segunda nota” Leia n2 escreva “Digite a terceira nota” Leia n3 escreva “Digite a quarta nota” Leia n4 soma n1 + n2 + n3 + n4 media soma / 4 escreva “ media eh “, media FIM_ALGORITMO Cursos: Engenharias Disciplina: Algoritmos e Estruturas de Dados I Prof. Ruy Barbosa Figueiredo Júnior Estrutura Sequencial em C/C++ #include <nome_da_biblioteca> int main () { bloco_de_comandos; return 0; } Bibliotecas são arquivos contendo várias funções que podem ser incorporadas aos programas escritos em C/C++. A diretiva #include faz o texto contido na biblioteca especiíficada ser inserido noprograma. A biblioteca stdio.h permite a utilização de diversos comandos de entrada e saída. É importante salientar que a linguagem C/C++ é sensível a letras maiúsculas e minúsculas, ou seja, é considera que letras maiúsculas são diferentes de minúsculas (por exemplo: A é diferente de a). Sendo assim, todos os comandos devem, obrigatoriamente, ser escrito com letras minúsculas. Cursos: Engenharias Disciplina: Algoritmos e Estruturas de Dados I Prof. Ruy Barbosa Figueiredo Júnior Estrutura Sequencial em C/C++ #include <nome_da_biblioteca> int main () { bloco_de_comandos; return 0; } Bibliotecas são arquivos contendo várias funções que podem ser incorporadas aos programas escritos em C/C++. A diretiva #include faz o texto contido na biblioteca específicada ser inserido no programa. A biblioteca stdio.h permite a utilização de diversos comandos de entrada e saída. É importante salientar que a linguagem C/C++ é sensível a letras maiúsculas e minúsculas, ou seja, é considera que letras maiúsculas são diferentes de minúsculas (por exemplo: A é diferente de a). Sendo assim, todos os comandos devem, obrigatoriamente, ser escrito com letras minúsculas. Cursos: Engenharias Disciplina: Algoritmos e Estruturas de Dados I Prof. Ruy Barbosa Figueiredo Júnior Declaração de Variáveis em C/C++ As variáveis são declaradas após a especificação de seus tipos. Os tipos de dados . A biblioteca stdio.h permite a utilização de diversos comandos de entrada e saída. Os mais utilizados são: Int para números inteiros float para números reais char para um caracter A linguagem C/C++ não possui tipo de dados boolean (que pode assumir valores 0 ou 1), pois considera verdadeiro qualquer valor diferente de zero. A linguagem C/C++ não possui um tipo especial para armazenar cadeias de caracteres (Strings). Deve-se quando necessário, utilizar um vetor contendo vários elementos do tipo char. Cursos: Engenharias Disciplina: Algoritmos e Estruturas de Dados I Prof. Ruy Barbosa Figueiredo Júnior float x; Declaração de Variáveis em C/C++ Declara uma variável chamada x em que pode ser armazenado um número real float y, z; Declara duas variáveis chamadas y e z em que podem ser armazenado um número real char NOME; Declara uma variável chamada nome em que pode ser armazenado um caractere char NOME [40]; Declara uma variável chamada nome em que pode ser armazenados até 30 caracteres. O 40º caractere será o \0, que indica o final da cadeia. Cursos: Engenharias Disciplina: Algoritmos e Estruturas de Dados I Prof. Ruy Barbosa Figueiredo Júnior Declaração de Constantes em C/C++ As constantes são declaradas depois das bibliotecas e seus valores não podem ser alterados durante a execução do programa. #define x 7 Declara uma constante com identificador x e valor 7 #define y 4.5 Declara uma constante com identificador y e valor 4.5 #define nome “Maria” Declara uma constante com identificador nome e valor Maria Cursos: Engenharias Disciplina: Algoritmos e Estruturas de Dados I Prof. Ruy Barbosa Figueiredo Júnior Comandos de atribuição em C/C++ O comando de atribuição é utilizado para conceder valores ou operações as variáveis, sendo representado por = (sinal de igualdade). Exemplo: x = 4 x = x+2 Y = 2.5; sexo = “F” Caso seja necessário armazenar uma cadeia de caracteres dentro de uma variável, deve-se utilizar uma função para a manipulação de caracteres, conforme apresentado a seguir: strcpy (nome, “Ruy”); Para que seja possível a utilização da função strcpy, deve-se inserir no programa, por meio da diretiva include, a biblioteca string.h . Cursos: Engenharias Disciplina: Algoritmos e Estruturas de Dados I Prof. Ruy Barbosa Figueiredo Júnior Comandos de entrada em C/C++ O comando de entrada é utilizado para receber dados digitados pelo usuário. Os dados recebidos são armazenados em variáveis. Um dos comandos mais utilizados em C/C++ é o scanf. Exemplo: scanf(“%d%*c” ,&x); Um valor inteiro, digitado pelo usuário será armazenado na variável x. scanf(“%f %*c” ,&z); Um valor real, digitado pelo usuário será armazenado na variável z. scanf(“%s%*c” ,&NOME); Um ou mais caracteres, digitados pelo usuário serão armazenados na variável NOME. scanf(“%c%*c” ,&y); Um caractere, digitado pelo usuário será armazenado na variável y. No comando scanf, é necessário indicar o tipo de variável que será lida: % f para variáveis que armazenam números reais; % d para variáveis que armazenam números inteiros; %c para variáveis que armazenam um único caractere; e % s para variáveis que armazenam um conjunto de caractreres O comando scanf, armazena em um buffer o conteúdo digitado pelo usuário e armazena também a tecla enter utilizada pelo usuário para encerrar a entrada de dados. Para que o buffer seja esvaziado depois da atribuição do conteúdo á variável, utiliza-se %*c. Cursos: Engenharias Disciplina: Algoritmos e Estruturas de Dados I Prof. Ruy Barbosa Figueiredo Júnior Comandos de Saída em C/C++ O comando de saída é utilizado para mostrar dados na tela ou na impressora. Um dos comandos mais utilizados em C/C++ é o printf. Exemplo: printf(“&d”, y); Mostra o número inteiro, armazenado na variável y. printf(“Conteudo de y = %d”, y); Mostra a mensagem “Conteudo de y =“ e, em seguida o número inteiro armazenado na variável y. printf(“% f “, x); Mostra o número real, armazenado na variável x. printf(“Conteudo de x = %7.3f” , x); Mostra a mensagem “Conteudo de X” e, em seguida o número real armazenado na variável x utilizando sete caracteres na tela, e destes, três serão utilizados para a parte fracionária e um para o ponto, que é o separador da parte inteira e da parte fracionária. printf(“% 5.2f”, x); Mostra o número real, armazenado na variável x utilizando cinco caracteres na tela, e destes, dois serão utilizados para a parte fracionária e um para o ponto, que é o separador da parte inteira e da parte fracionária. Cursos: Engenharias Disciplina: Algoritmos e Estruturas de Dados I Prof. Ruy Barbosa Figueiredo Júnior Comandos de Saída em C/C++ No comando printf é necessário indicar o tipo de variável que será mostrada: %f para variáveis que armazenam números reais, %d para variáveis que armazenam números inteiros, %c para variáveis que armazenam um único caractere, e %s para varíáveis que armazenam um conjunto de caracteres. printf(“aula”); printf(“facil”); Os comandos dados anteriormente geram a saída a seguir: aula facil printf(“aula”); printf(“\tfacil”); Os comandos dados anteriormente geram a saída a seguir: Aula facil . No comando printf pode-se utilizar caracteres para posicionar a saída, por exemplo, \n, que passa o cursor para a próxima linha, ou \t, que avança o cursor uma tabulação. Exemplos: printf(“aula”); printf(“\nfacil”); Os comandos dados anteriormente geram a saída a seguir: Aula facil ‘ Cursos: Engenharias Disciplina: Algoritmos e Estruturas de Dados I Prof. Ruy Barbosa Figueiredo Júnior Comentários em em C/C++ Comentários são textos que podem ser inseridos em programas com o objetivo de documentá-los. Eles não são analisados pelo compilador. Os comentários podem ocupar uma ou várias linhas, devendo ser inseridos nos programas utilizando-se os símbolos /* ................*/ ou // , Exemplos: /* linhas de comentário linhas de comentário */ // comentário Cursos: Engenharias Disciplina: Algoritmos e Estruturas de Dados I Prof. Ruy Barbosa Figueiredo Júnior Faça um programa que receba o salário base de um funcionário, calcule e mostre o salário a receber, sabendo-se que o funcionário tem gratificação de 5% sobre o salário base e paga impostos de 7% também sobre o salário base. #include <stdio.h> int main() { float sal, salreceber,grat, imp; // Mostra mensagem antes da leitura do salário printf("\nDigite o salário do funcionário: "); // Recebe o salário scanf("%f%*c",&sal); // Calcula a gratificação grat = sal * 5/100; // Calcula o imposto imp = sal * 7/100; // Calcula o salário a receber salreceber = sal + grat - imp; // Mostra o salário a receber printf("\nSalário a receber = %4.2f",salreceber); // Pára o programa a espera de um ENTER getchar(); return 0; } Cursos: Engenharias Disciplina: Algoritmos e Estruturas de Dados I Prof. Ruy Barbosa Figueiredo Júnior Primeiro Programa #include<stdio.h> #include<stdlib.h> int main() { printf("testando o meu primeiro programa \n"); system ("pause"); return 0; } Cursos: Engenharias Disciplina: Algoritmos e Estruturas de Dados I Prof. Ruy Barbosa Figueiredo Júnior Operadores e funções predifinidas em C/C++ Cursos: Engenharias Disciplina: Algoritmos e Estruturas de Dados I Prof. Ruy Barbosa Figueiredo Júnior Operadores e funções predifinidas em C/C++ FORBELLONE, André Luiz Villar; EBERSPÄCHER, Henri Frederico. Lógica de programação: a construção de algoritmos e estrutura de dados. 3.ed. São Paulo: Makron Books do Brasil, 2010. GUIMARÃES, Ângelo de Moura; LAGES, Newton Alberto de Castilho. Algoritmos e estruturas de dados. Rio de Janeiro: Livros Técnicos e Científicos, 1994. ZIVIANI, Nivio. Projeto de Algoritmos com implementações em Java e C++, 2007. Referências
Compartilhar