Programação aula002

1.086 visualizações

Publicada em

1 comentário
0 gostaram
Estatísticas
Notas
  • Seja a primeira pessoa a gostar disto

Sem downloads
Visualizações
Visualizações totais
1.086
No SlideShare
0
A partir de incorporações
0
Número de incorporações
7
Ações
Compartilhamentos
0
Downloads
12
Comentários
1
Gostaram
0
Incorporações 0
Nenhuma incorporação

Nenhuma nota no slide

Programação aula002

  1. 1. Aula 002 Programação PRONATEC Programa Nacional de Acesso ao Ensino Técnico e Emprego
  2. 2. PRONATEC Programa Nacional de Acesso ao Ensino Técnico e Emprego
  3. 3. 1. Estrutura de Dados • Programar em qualquer linguagem é criar algoritmos para trabalhar com dados. • O essencial são os dados, eles são o objetivo da programação, portanto programas devem ser voltados a trabalhar com dados • A melhor forma de trabalhar com os dados é utilizar “Dados Estruturados”, ou seja, que tenham em si mesmos já algum tipo de organização ou estrutura • Logo um bom programa deve utilizar técnicas estruturadas em “dados estruturados”. • Uma analogia entre diferença de dados simples e dados estruturados é como o uso de um guarda roupas: se as roupas estão jogadas dentro dele de qualquer forma (simples) ou se as mesmas tem uma ordem lógica que facilite o seu manuseio (estruturado).
  4. 4. 2. Estrutura de Dados • A organização dos dados em memória permite a construção de algoritmos mais sofisticados e eficientes do que sem ela • Dados podem apresentar-se estruturados em duas formas: homogênea e heterogênea • Homogêneas: são aquelas estruturas onde cada elemento tem o mesmo tipo. Exemplo: vetor,matriz • Heterogêneas: são aquelas estruturas onde cada elemento pode ter tipos diferentes uns dos outros. Exemplo: registro • Nesse curso vamos estudar: vetor, matriz e registro
  5. 5. 3. Vetores • São estruturas de dados homogêneas • Consiste em uma seqüência de valores de um mesmo tipo onde cada um pode ser acessado pelo nome do Vetor seguido de abre e fecha colchetes “* +” e entre eles um índice que é um número inteiro indicando qual elemento da seqüência estamos nos referindo • Em Delphi já existe o tipo de dados “Array” que é definido para conter vetores • Para declarar um vetor em Delphi faremos desta forma: “var vet:array[1..10] of integer;” aqui declaramos um vetor “vet” com dez inteiros (of integer) cujos índices de acesso vão de 1 a 10. Se quisermos acessar o quinto elemento usamos esta sintaxe: “vet*5+” e podemos tê-lo. Para atribuirmos um elemento fazemos assim: “vet*3+ := 0;” – fazemos o terceiro elemento valer zero.
  6. 6. 4. Operações com Vetores • Definir e declarar um vetor em Delphi • Preencher e ler dados de um vetor • Mostrar dados do vetor em ordem inversa • Ordenar os elementos do vetor • Buscar um elemento no vetor
  7. 7. Declarar um Vetor Preencher Vetor Var v:array[1..10] of integer; i:integer; Begin randomize; for i:=1 to 10 do v[i] := random(20000); End; Randomize: inicia gerador de números aleatórios Random(n:integer):integer; -função que retorna um aleatório inteiro de 0 a N Ler dados do Vetor Var s:string; Begin s := ‘ ‘; for i:=1 to 10 do s := s+IntToStr ( v[i] ); ShowMessage (s); End; Ler dados Invertidos Var s:string; Begin s := ‘ ‘; for i:=10 downto 1 do s := s+IntToStr ( v[i] ); ShowMessage (s); End;
  8. 8. Ordenar Vetores • Ordenar um vetor é colocar os seus elementos em uma sequência crescente ou decrescente de acordo com seus valores • Ex: V = [5,2,1,0,3,4] Ordenando = [0,1,2,3,4,5] • Existem diversos algoritmos para ordenar um vetor: bolha, seleção, inserção, quicksort • Bolha: método mais simples porém o menos eficiente. Percorrer o vetor de N elementos N-1 vezes e a cada vez trazer o menor elemento antes do maior, lembrando uma bolha subindo na água • Exemplo: v=[3,0,2,1], passo1:[0,2,1,3], passo final:[0,1,2,3]
  9. 9. Algoritmo de Ordenação de Vetor pelo método da Bolha: BubbleSort Em Pascal / Delphi: Var aux, i, j, k:integer; v:array[1..100] of integer; Begin k := 100-1; for i:=1 to 100 do begin j := 1; while j <= k do begin if v[j] > v[j+1] then begin aux := v[j]; v[j] := v[j+1]; v[j+1] := aux; end; j := j + 1; end; k := k + 1; end; End;
  10. 10. Ordenação pelo Método Inserção • Nesse método monta-se um novo vetor destino e a partir do original vamos transferindo os elementos já ordenando-os de acordo • Vantagem: simplicidade do algoritmo • Desvantagem: gasto elevado de memória e baixa eficiência com relação a performance
  11. 11. Ordenação pelo Método Seleção • O princípio é a cada passo obter o menor valor do vetor e troca- lo com o primeiro dos ainda não ordenados • Vantagem: simplicidade de execução • Desvantagem: lento e consome muito recurso de hardware QuickSort • Divide o vetor em dois e aplica-se a ordenação QuickSort novamente sobre cada um dos dois, no final a união de todos os vetores formará o vetor final ordenado • Vantagem: é o mais rápido de todos • Desvantagem: por ser recursivo exige muito recurso de memória do equipamento
  12. 12. Matrizes • Matriz é uma estrutura de Dados Estática e Homogênea que define um grupo de dados organizado em duas dimensões: linhas X colunas • Exemplo: • Em pascal definimos uma Matriz pelo tipo Array de vetores, ou seja, um array de array • Ex: var Matriz: array[1..5] of array[1..4] of integer; • Esse comando declara a matriz desenhada logo acima com 5 linhas X 4 colunas de nome Matriz • Outra forma é criar um tipo “Vetor” e então definir “Matriz” como dependente desse tipo • Ex: type Vetor = array[1..4] of integer; • Ex: type Matriz = array[1..5] of Vetor;
  13. 13. Acessando Elementos das Matrizes • Uma forma simplificada de declaração em Pascal ainda pode ser assim: • Ex: var Matriz: array[1..5,1..4] of integer; • Todas as declarações criam a mesma estrutura de dados Matriz • Para acessar um elemento devemos usar o nome da matriz seguido de “* +” com os índices dentro separados por “,”. Exemplo: Matriz*3,2+ é o inteiro “7” no exemplo da matriz já mostrada antes, ou seja elemento da Linha “3” e Coluna “2”. • Para varrer todos os elementos de uma matriz precisamos de dois comandos “FOR”, um para varrer as linhas e outro para varrer as células de cada linha
  14. 14. Lendo e Mostrando uma Matriz • Montando uma Matriz lendo do Teclado • Mostrando uma Matriz NxM
  15. 15. Busca em Matriz • Buscando o elemento “x” na Matriz “w” com dimensões “n” x “m” • Retorna “True” se ele está na matriz ou “False” caso contrário
  16. 16. Registros (record) • Estrutura de dados Estática e Heterogênea, ou seja contem vários dados e cada um pode ser de tipo diferente do outro • Em Pascal / Delphi usamos o comando de tipo “record” para criar uma estrutura de registro. • Ex: cria um registro “Registro” com as informações de: nome, fone (texto) e sexo (caracter), data_nascimento (data), e CPF (número inteiro longo) var Registro : record nome : string; fone : string; sexo : char; data_nascimento : TDateTime; CPF : longint; end;
  17. 17. Usando Registro em Pascal • Depois de definir uma variável do tipo registro podemos acessar seus elementos usando o nome da estrutura seguido de “.” (ponto) e depois o nome do atributo (dado). Usando o exemplo do registro anterior teriamos: • Exemplos: • Registro.nome - devolve o nome do registro • Registro.fone := ‘(34)9192-1234’; - atribui “fone” ao registro “Registro” • Registro.CPF := 00100200304; - atribui um número de CPF à variável Registro • Registro.Data_Nascimento; - devolve a data de nascimento em Registro
  18. 18. Combinando Vetores e Registros • Uma das formas mais usadas em Informática para acesso a um arquivo de dados é criar vários registros com a mesma estrutura, por exemplo um cadastro de cliente podemos ter para cada cliente cadastrado: nome, fone, endereço, cpf • O tipo desse registro em Pascal seria definido assim: Type regCliente = record nome : string; fone : string; endereco : string; cpf : longint; end; • Agora se desejarmos uma variável que represente um arquivo com espaço para 100 clientes devemos definir um vetor de elementos do tipo “regCliente”, assim: • Var arqCliente : array[1..100] of regCliente; • “arqCliente” é um vetor que irá conter até 100 registros de cliente do tipo “regCliente”, assim para acessar o nome do primeiro cliente do cadastro podemos fazer: arqCliente[1].nome; ou seu cpf: arqCliente[1].cpf; e assim por diante

×