Buscar

Algoritmo - Resumo das 10 Aulas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 18 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 18 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 18 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

Algoritmos
Aula 01
Algoritmo é uma palavra derivada do nome do matemático Abu Já´far Muhammad (800-847) que introduziu a escrita dos cálculos substituindo o ábaco. Ele ficou conhecido como Al-Kharazmi.
A palavra algoritmo na Matemática designa um procedimento geral de cálculo que se desenvolve, por assim dizer, automaticamente, poupando-nos esforço mental durante o seu curso.
Podemos conceituar algoritmo como sendo uma sequência de passos finitos que devem ser escritos de forma precisa e clara, evitando qualquer tipo de dúvida na interpretação e que tem, como objetivo, solucionar um problema computacional.
Para avaliar a importancia de Algoritmos é preciso compreender: O seu significado, Como ele pode ser representado, que aspectos precisaremos considerar quando estivermos construindo um algoritmo, como testar se está correto e a diferença entre um algoritmo e um programa.
Algoritmo é uma palavra derivada do nome do matemático Abu Já´far Muhammad (800-847) que introduziu a escrita dos cálculos substituindo o ábaco. Ele ficou conhecido como Al-Kharazmi.
A palavra algoritmo na Matemática designa um procedimento geral de cálculo que se desenvolve, por assim dizer, automaticamente, poupando-nos esforço mental durante o seu curso. (FONSECA FILHO, C., 1999, p.50).
Podemos conceituar algoritmo como sendo uma sequência de passos finitos que devem ser escritos de forma precisa e clara, evitando qualquer tipo de dúvida na interpretação e que tem, como objetivo, solucionar um problema computacional.
COMO RESOLVER UM PROBLEMA
Segundo o matemático húngaro George Pólya, que nasceu em 1887 e faleceu em 1995:
 Compreenda o problema: • Identifique os dados. • Identifique a incógnita. • Identifique a condição. • Verifique se possível satisfazer a condição com os dados fornecidos. 
 Planeje: • Tente encontrar uma relação entre os dados e a incógnita. • Procure achar alguma semelhança entre esse problema e outro que já resolveu. • Releia o problema se não tiver conseguido encontrar as etapas necessárias para resolvê-lo. • Quando tiver conseguido, escreva as etapas sem ser prolixo e impreciso. 
 Execute o plano: • Acompanhe todas as etapas. • Verifique se conseguiu atingir o objetivo.
Reflita sobre a solução: • Consegue justificar todas as etapas? • Consegue visualizar outra solução? • Consegue ver uma outra aplicação para a solução encontrada?
Construindo algoritmos computacionais:
Para se construir um algoritmo, temos que fazer uso de alguma linguagem. Normalmente, a linguagem natural é a mais escolhida, mas a linguagem gráfica também é usada.
Historicamente, Herman Goldstine e John von Newmman, antes de 1940, já tinham chegado à conclusão de que os algoritmos precisavam ser representados e é atribuído a Von Newmann a primeira representação de um diagrama de fluxo.
If (se),	else (então),	 flag (indicador),	break (intervalo)
Processamento de dados: É a transformação de dados em outros que sejam mais significativos para uma determinada finalidade.
Data – Dados: São valores que representam algum atributo (exemplo: peso, idade, nome, etc.) de uma entidade (pessoa, animal, objeto, etc).
Informação: É um conjunto de dados significativos.
Lógica: É o ramo da filosofia que cuida das regras do bem pensar, ou do pensar correto, sendo, portanto, um instrumento do pensar.
Lógica de Programação: É a técnica de desenvolver algoritmos (sequências lógicas) para atingir determinados objetivos dentro de certas regras baseadas na Lógica Matemática e que, depois, são adaptados para a Linguagem de Programação utilizada pelo programador para construir seu software."
Conceito de Programa: Um programa é um algoritmo codificado em uma linguagem de programação, isto é, um conjunto de instruções/funções que representam tarefas que serão interpretadas e executadas por um computador.
Aula 02
Entrada: Representa os dispositivos que captam os dados que serão armazenados na memória principal.
Processamento: Representa as operações que são realizadas com os dados para obtermos o resultado desejado.
Saída: Representa os dispositivos que recebem os resultados.
Apresentando a linguagem
Linguagem Natural: O início do algoritmo começa com a primeira ordem e termina com a última ordem. Você poderá, ou não, numerar os passos.
Fluxograma: 
Linguagem UAL:
Os caracteres de controle \n e \t são usados com o comando imprima para que o programador tenha poder de decidir onde o dado será impresso. Eles podem ser colocados no início ou no final da cadeia.
Estrutura seqüencial: É um tipo de estrutura onde os comandos são executados numa sequência pré-estabelecida, isto é, cada comando só é executado quando o anterior é finalizado.
Operadores Aritméticos: Os operadores aritméticos são representados por símbolos, ou para palavras. Com eles, podemos construir algoritmos que executam operações.
Origem do Dado: O dado é um valor fornecido pelo usuário, gerado pelo programa, ou lido de um arquivo.
Tipos de Dados: De uma maneira geral, existem os tipos primitivos e os compostos.
Variável: O conceito de variável é o mais filosófico de todos e o autor, não importa se foi John von Newmann ou Randell ou Rosen ou Stren ou Wilkes, só poderia estar, como se diz no popular, "em alpha"  para conceber a ideia de que o programa e os dados poderiam ser armazenados no mesmo local.
Declarando uma Variável: Para que possamos declarar uma variável, primeiro precisamos definir que tipo de dado ela irá armazenar, pois, quando se define um tipo de variável, informamos ao computador o quanto de memória será necessário ”separar” e que tipos de operações poderão ser realizadas com o dado que será armazenado. Para se declarar uma variável, usamos a seguinte sintaxe: tipo  nomeDaVariável ;
Tipos de Variáveis: Se a variável armazena dados cujos tipos já foram definidos, é conclusivo que os tipos das variáveis devam coincidir com os tipos dos dados. Tipos: int, real, string e lógico.
Como os Dados são armazendos nas Variáveis: As formas básicas são:  através do comando de atribuição ou do comando de entrada via teclado.
O comando de atribuição: É um dos quatro comandos básicos da programação. Consiste em atribuir um valor a uma variável. Para se atribuir um valor a uma variável, usamos a seguinte sintaxe: nomeDaVariável <-  valor ;
Aula 03
Linguagem Natural: Na linguagem natural, como já falamos, cada um se expressa como quer, pois não existe uma padronização.
Fluxograma: Comando de entrada de dados (via teclado)
Construa um algoritmo que entre com um número inteiro que represente uma data no formato ddmmaaaa e exiba dia, mês e ano separados por /.
Ou:
Funções numéricas: As funções disponíveis na linguagem UAL são, na sua maioria, conhecidas nossas do Ensino Médio e, geralmente, estão presentes, em todas as linguagens de programação, com outros nomes, mas com o mesmo significado.
Aula 04
Tipos de comandos: A seleção é composta ou aninhada ou encadeada, mas o “tipo” tem que ser simples, composto, aninhado / encadeado.
Seleção composta: Neste tipo, após a execução do teste, tanto será executado um bloco de comandos se o resultado do teste for verdadeiro quanto será executado um outro bloco de comandos se o resultado for falso.
Seleção simples: Neste tipo, após a execução do teste, só será executado o bloco de comandos se o resultado do teste for verdadeiro.
Seleção aninhada/ encadeada: Neste tipo, após a execução do teste, será executado um bloco de comandos se o resultado do teste for verdadeiro, podendo ter um outro teste(aninhado); caso não seja, um outro teste(encadeado) será feito até que todas as possibilidades de respostas sejam contempladas. 
Teste: O teste é uma expressão relacional que compara valores dos seus operandos.
A expressão relacional é formada, obrigatoriamente, por um operador relacional e dois operandos do mesmo tipo.
Sintaxes:
LINGUAGEM NATURAL:FLUXOGRAMA:
LINGUAGEM UAL:
Aula 05
Construa um algoritmo em FLUXOGRAMA que receba três números e exiba o maior:
ESTRUTURA escolha/ caso: A estrutura de múltiplos testes  denominada escolha / caso é uma alternativa para ses encadeados. Embora o conceito seja o mesmo, ela apresenta diferenças em várias linguagens.
Aula 06
TRÊS ESTRUTURAS DE REPETIÇÃO:
ESTRUTURA DO PARA: Estrutura ideal quando o número de repetições for conhecido durante a elaboração do algoritmo ou quando o usuário puder fornecê-lo durante a execução. Na linguagem C++, essa estrutura recebe o nome de for e, diferentemente de outras linguagens, simula com facilidade as estruturas do enquanto e do faca... enquanto como veremos mais adiante.
ESTRUTURA DO ENQUANTO: Estrutura que testa no início e é usada quando o número de repetições for desconhecido. Simula, com facilidade a estrutura do  faca ... enquanto e a estrutura do para (desde que criemos uma variável que terá seu valor incrementado/decrementado dentro da estrutura de repetição).  Na linguagem C++, essa estrutura recebe o nome de while. 
Sua lógica é: repete enquanto a condição for verdadeira. Como ela testa antes de executar o bloco, pode ser que ela nem execute o bloco se a condição de início for falsa.
ESTRUTURA DO FACA ENQUANTO: Estrutura usada quando o número de repetições for desconhecido. Sua diferença em relação à estrutura do enquanto é que ela testa ao final, significando que executa o bloco de comandos pelo menos uma vez. Essa estrutura também precisa de um teste para interromper a repetição. Muito usada em algoritmos com menus. Na linguagem C++, essa estrutura recebe o nome de do...while. A estrutura da repetição é mais parecida com a estrutura do para, não precisando de leitura/atribuição antes do faca para entrar na estrutura, pois testa, como já foi dito, ao final.
SINTAXES DAS TRÊS ESTRUTURAS DE REPETIÇÃO:
• LINGUAGEM UAL:
LINGUAGEM C++
A estrutura do para(for) é muito fácil, pois funciona como uma máquina de xerox, ou como uma máquina que gera uma PA(Progressão Aritmética) ou como uma máquina que gera uma PG(Progressão Geométrica).
EXERCÍCIOS:
CONSTRUA UM ALGORITMO QUE ESCREVA 100 VEZES A FRASE: ALGORITMO SÓ SE APRENDE PRATICANDO:
FLUXOGRAMA:			 			LINGUAGEM UAL: 
								LINGUAGEM C++
SEGUE UM ESQUEMA BÁSICO PARA QUE VOCÊ POSSA COMEÇAR POR ELE, MAS, COM O TEMPO, VOCÊ IRÁ ABANDONÁ-LO.
CONSTRUA UM ALGORITMO QUE GERE A SEGUINTE PA: 4 : 8 : 12 : ... : 32: 36: 40
FLUXOGRAMA:						LINGUAGEM UAL:
 					
								LINGUAGEM C++
Na codificação em C++, experimente trocar cont=cont+4  por cont+=4.
Observe que, mesmo não colocando return 0; antes de fechar, o programa funcionou, porque é a função main.
Aula 07
ESTRUTURAS DE REPETIÇÃO QUE PODEM SER CONTROLADAS:
• Pelo valor da entrada de dados.			
• Pelo resultado de uma operação.				
• Por uma variável contadora também. 
A ESTRUTURA DO ENQUANTO SIMULANDO A ESTRUTURA DO PARA
Embora a estrutura do para seja a mais indicada quando o número de repetições for conhecido, nada impede que usemos a estrutura do enquanto combinada com um contador para simular a estrutura do para. Veja como ficaria o exemplo que fizemos na aula anterior usando a estrutura do para com a estrutura do enquanto.
A ESTRUTURA DO FACA...ENQUANTO
Aula 08
CONJUNTOS:
Conceito: Conceituamos conjunto como um agrupamento ou coleção de elementos, ou membros, do mesmo tipo e é, geralmente, indicado por uma letra maiúscula.
Representação:
Descrição: 
1- Um conjunto pode ser descrito através da enumeração dos seus elementos entre chaves. 
Observe o conjunto dos meses que começam pela letra a: { abril, agosto}
2- Um conjunto pode ser descrito, também, por uma propriedade. 
Observe um conjunto formado pelos números pares representado pela sentença:
Características: Um conjunto sempre tem um nome, um delimitador (chaves ou diagrama de Euler-Venn) e algumas operações para manipular os elementos quando eles são números inteiros.
MATRIZES:
Nomenclatura: Toda matriz tem uma letra maiúscula como nome e, de forma subscrita, sua dimensão, isto é, o número de linhas e de colunas separadas pela letra x minúscula.
Apresentação: Os elementos de uma matriz se apresentam entre um par de colchetes ou de parênteses.
Representação: Cada elemento é representado pela letra minúscula correspondente ao nome da matriz e, de forma subscrita, sua posição linha/coluna, separadas por vírgula. Sendo assim, poderíamos dizer que:
 
Outros Conceitos: Há, também, os conceitos de matriz transposta, matriz identidade, diagonal principal, secundária, as operações realizadas com matrizes, entre outros.
AS ESTRUTURAS NA LINGUAGEM C++
Estrutura é uma técnica de programação que permite que agrupemos vários elementos em uma mesma variável, podendo ser classificada em homogênea ou heterogênea.  
O estudo da estrutura heterogênea não faz parte do conteúdo dessa disciplina, pois em programação, começamos nosso estudo com as estruturas homogêneas por serem mais conhecidas. Mas vamos apresentar de forma sucinta a diferença entre essas duas estruturas.
HOMOGÊNEA: A estrutura homogênea é formada por elementos do mesmo tipo e, muitas vezes, precisaremos declarar várias estruturas homogêneas para atender às necessidades do programa.
HETEROGÊNEA: A estrutura heterogênea pode ser formada por elementos de tipos diferentes. O uso desse tipo de estrutura irá simplificar os programas e, muito em breve, você ouvirá falar em struct.
Costumamos dizer que as matrizes são tabelas criadas na memória principal (MP) que podem ter uma dimensão ou mais.
Quando uma matriz tem somente uma dimensão, chamamos de vetor, como na Matemática, ou array ou matriz unidimensional.
PARA SIMPLIFICAR:
Podemos dizer que uma matriz é um conjunto de variáveis, todas com o mesmo nome e só diferenciadas pela posição que ocupam nesse conjunto.
Na linguagem C++, assim como em outras linguagens, essa dimensão que localiza a posição de uma variável vem entre um par de colchetes.
DECLARAÇÃO DE UM VETOR
CONSTANTE STRING: Uma constante string é um conjunto de caracteres do código ASCII, colocados entre aspas duplas.
Na linguagem C++, uma string é um vetor de caracteres terminado com um caracter nulo cujo valor inteiro é igual a zero (código ASCII igual a 0). O terminador nulo também pode ser escrito usando a convenção de barra invertida do C++ como sendo '\0'.
SINTAXE: char nomeDaString[tamanho];
Observe o armazenamento da variável universidade declarada com tamanho 8:
ARMAZENAMENTO DE DADOS EM UM VETOR: O armazenamento de um valor em uma variável do vetor poderá ser feito através de um comando de leitura ou de atribuição.
Leitura: Quando tivermos que ler valores para um vetor, precisaremos de uma estrutura de repetição para que possamos “varrer” todo o vetor sem ter que escrever comandos praticamente idênticos um após o outro.
Suponhamos que o usuário digite valores para um vetor de 5 elementos que foi declarado para armazenar números inteiros. Se não usarmos estrutura de repetição, deveremos escrever o seguinte trecho de código:
Aula 09
MATRIZ DE CHAR: É uma matriz bidimensional que possibilita o armazenamento de vetores de char.
Toda matriz para armazenar vetores de char na linguagem C++ é bidimensional, pois o primeiro índice indica a quantidade de elementos e o segundo, o número de caracteres –1 que serão armazenados em cada elemento.
Além disso, a matriz de char tem um tratamento diferenciado e, embora seja declarada como bidimensional, será tratada como unidimensional exceto quando precisarmos manipular um caracter. 
A matriz bidimensional do tipo char será manipulada como se fosse unidimensional.
EXEMPLO: Armazenar a profissão de 2000 pessoas:
char profissao[2000][21];
Como são duas mil pessoas, optamos em dimensionar o número de linhas de acordo com o número de pessoas e, como acreditamosque um nome de profissão não tem mais do que 20 caracteres, determinamos 21.
O armazenamento de uma matriz bidimensional na Memória Principal é feito de forma contígua, isto é, como se fosse uma matriz linha onde os elementos são alocados um após o outro.
ARMAZENAMENTO DE DADOS EM UMA MATRIZ BIDIMENSIONAL: O armazenamento de um valor em uma variável da matriz bidimensional poderá ser feito através de um comando de leitura ou de atribuição.
Aula 10
ALGUMAS FUNÇÕES
BIBLIOTECA CSTRING:
BIBLIOTECA CCTYPE
BIBLIOTECA CSTDLIB
A função strlen: () é necessária para que possamos “varrer” todo o vetor, isolando cada caracter para que a função tolower(), ou a função toupper(), possa fazer a conversão. Lembre-se de que a função converte um caracter por vez.

Outros materiais