SlideShare une entreprise Scribd logo
1  sur  18
Aula 002
Programação
PRONATEC
Programa Nacional de Acesso ao
Ensino Técnico e Emprego
PRONATEC
Programa Nacional de Acesso
ao Ensino Técnico e Emprego
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).
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
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.
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
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;
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]
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;
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
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
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;
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
Lendo e Mostrando uma Matriz
• Montando uma Matriz lendo do Teclado
• Mostrando uma Matriz NxM
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
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;
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
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

Contenu connexe

Tendances

Strings e manipulação de variáveis
Strings e manipulação de variáveisStrings e manipulação de variáveis
Strings e manipulação de variáveis111111119
 
Estrutura de Dados e Algoritmos com Java #02-12: Vetores e Arrays
Estrutura de Dados e Algoritmos com Java #02-12: Vetores e ArraysEstrutura de Dados e Algoritmos com Java #02-12: Vetores e Arrays
Estrutura de Dados e Algoritmos com Java #02-12: Vetores e ArraysLoiane Groner
 
Tutorial aed iii 009 - algoritmo de ordenação heapsort
Tutorial aed iii   009 - algoritmo de ordenação heapsortTutorial aed iii   009 - algoritmo de ordenação heapsort
Tutorial aed iii 009 - algoritmo de ordenação heapsortFlávio Freitas
 
Orientação a objetos em Python (compacto)
Orientação a objetos em Python (compacto)Orientação a objetos em Python (compacto)
Orientação a objetos em Python (compacto)Luciano Ramalho
 
Objetos Pythonicos - compacto
Objetos Pythonicos - compactoObjetos Pythonicos - compacto
Objetos Pythonicos - compactoLuciano Ramalho
 
Iteráveis e geradores (versão RuPy)
Iteráveis e geradores (versão RuPy)Iteráveis e geradores (versão RuPy)
Iteráveis e geradores (versão RuPy)Luciano Ramalho
 
Orientação a Objetos em Python
Orientação a Objetos em PythonOrientação a Objetos em Python
Orientação a Objetos em PythonLuciano Ramalho
 
Aula 06 vetores e matrizes
Aula 06   vetores e matrizesAula 06   vetores e matrizes
Aula 06 vetores e matrizesTácito Graça
 
Python para quem sabe Python (aula 2)
Python para quem sabe Python (aula 2)Python para quem sabe Python (aula 2)
Python para quem sabe Python (aula 2)Luciano Ramalho
 
Programação orientada a objetos - IV
Programação orientada a objetos - IVProgramação orientada a objetos - IV
Programação orientada a objetos - IVGabriel Faustino
 
mod5-estruturas-dadosdinamicas
mod5-estruturas-dadosdinamicasmod5-estruturas-dadosdinamicas
mod5-estruturas-dadosdinamicasdiogoa21
 
Iteraveis e geradores em Python
Iteraveis e geradores em PythonIteraveis e geradores em Python
Iteraveis e geradores em PythonLuciano Ramalho
 
Python: a primeira mordida
Python: a primeira mordidaPython: a primeira mordida
Python: a primeira mordidaLuciano Ramalho
 
Programando em python funcoes
Programando em python   funcoesProgramando em python   funcoes
Programando em python funcoessamuelthiago
 
mod4-estruturas-dadosestaticas-ordenacao
mod4-estruturas-dadosestaticas-ordenacaomod4-estruturas-dadosestaticas-ordenacao
mod4-estruturas-dadosestaticas-ordenacaodiogoa21
 

Tendances (20)

Strings e manipulação de variáveis
Strings e manipulação de variáveisStrings e manipulação de variáveis
Strings e manipulação de variáveis
 
Estrutura de Dados e Algoritmos com Java #02-12: Vetores e Arrays
Estrutura de Dados e Algoritmos com Java #02-12: Vetores e ArraysEstrutura de Dados e Algoritmos com Java #02-12: Vetores e Arrays
Estrutura de Dados e Algoritmos com Java #02-12: Vetores e Arrays
 
Tutorial aed iii 009 - algoritmo de ordenação heapsort
Tutorial aed iii   009 - algoritmo de ordenação heapsortTutorial aed iii   009 - algoritmo de ordenação heapsort
Tutorial aed iii 009 - algoritmo de ordenação heapsort
 
Orientação a objetos em Python (compacto)
Orientação a objetos em Python (compacto)Orientação a objetos em Python (compacto)
Orientação a objetos em Python (compacto)
 
Objetos Pythonicos - compacto
Objetos Pythonicos - compactoObjetos Pythonicos - compacto
Objetos Pythonicos - compacto
 
Iteráveis e geradores (versão RuPy)
Iteráveis e geradores (versão RuPy)Iteráveis e geradores (versão RuPy)
Iteráveis e geradores (versão RuPy)
 
Orientação a Objetos em Python
Orientação a Objetos em PythonOrientação a Objetos em Python
Orientação a Objetos em Python
 
Aula 06 vetores e matrizes
Aula 06   vetores e matrizesAula 06   vetores e matrizes
Aula 06 vetores e matrizes
 
Iteraveis e geradores
Iteraveis e geradoresIteraveis e geradores
Iteraveis e geradores
 
Ed1
Ed1Ed1
Ed1
 
Python para quem sabe Python (aula 2)
Python para quem sabe Python (aula 2)Python para quem sabe Python (aula 2)
Python para quem sabe Python (aula 2)
 
Programação orientada a objetos - IV
Programação orientada a objetos - IVProgramação orientada a objetos - IV
Programação orientada a objetos - IV
 
Python 02
Python 02Python 02
Python 02
 
mod5-estruturas-dadosdinamicas
mod5-estruturas-dadosdinamicasmod5-estruturas-dadosdinamicas
mod5-estruturas-dadosdinamicas
 
Iteraveis e geradores em Python
Iteraveis e geradores em PythonIteraveis e geradores em Python
Iteraveis e geradores em Python
 
Python: a primeira mordida
Python: a primeira mordidaPython: a primeira mordida
Python: a primeira mordida
 
Programando em python funcoes
Programando em python   funcoesProgramando em python   funcoes
Programando em python funcoes
 
Java para iniciantes
Java para iniciantesJava para iniciantes
Java para iniciantes
 
Grupo2
Grupo2Grupo2
Grupo2
 
mod4-estruturas-dadosestaticas-ordenacao
mod4-estruturas-dadosestaticas-ordenacaomod4-estruturas-dadosestaticas-ordenacao
mod4-estruturas-dadosestaticas-ordenacao
 

En vedette

Arquitetura de Software
Arquitetura de SoftwareArquitetura de Software
Arquitetura de Softwareelliando dias
 
Padrões Arquiteturais - MVC, MVP e MVVM
Padrões Arquiteturais - MVC, MVP e MVVMPadrões Arquiteturais - MVC, MVP e MVVM
Padrões Arquiteturais - MVC, MVP e MVVMAricelio Souza
 
Arquitetura de Software Na Pratica
Arquitetura de Software Na PraticaArquitetura de Software Na Pratica
Arquitetura de Software Na PraticaAlessandro Kieras
 
A importância da arquitetura de software
A importância da arquitetura de softwareA importância da arquitetura de software
A importância da arquitetura de softwareAdriano Tavares
 
Modelagem Arquitetural e Visão 4+1
Modelagem Arquitetural e Visão 4+1Modelagem Arquitetural e Visão 4+1
Modelagem Arquitetural e Visão 4+1Adriano Tavares
 
Arquitetura de Software Visão Geral
Arquitetura de Software Visão GeralArquitetura de Software Visão Geral
Arquitetura de Software Visão Geralsergiocrespo
 
DER - Diagrama de Entidade e Relacionamentos
DER - Diagrama de Entidade e RelacionamentosDER - Diagrama de Entidade e Relacionamentos
DER - Diagrama de Entidade e RelacionamentosCláudio Amaral
 
Condicional 02 Pascal Exercicio
Condicional 02 Pascal ExercicioCondicional 02 Pascal Exercicio
Condicional 02 Pascal ExercicioMarcus Vinicius
 
Prog web 02-php-primeiros-passos
Prog web 02-php-primeiros-passosProg web 02-php-primeiros-passos
Prog web 02-php-primeiros-passosRegis Magalhães
 
Introdução a arquitetura de sistemas com .NET
Introdução a arquitetura de sistemas com .NETIntrodução a arquitetura de sistemas com .NET
Introdução a arquitetura de sistemas com .NETMário Meyrelles
 
Sistema Operacional - Pratica003
Sistema Operacional - Pratica003Sistema Operacional - Pratica003
Sistema Operacional - Pratica003Cláudio Amaral
 
Projeto de Sistemas - Aula005
Projeto de Sistemas - Aula005Projeto de Sistemas - Aula005
Projeto de Sistemas - Aula005Cláudio Amaral
 
Sistema Operacional - Pratica002
Sistema Operacional - Pratica002Sistema Operacional - Pratica002
Sistema Operacional - Pratica002Cláudio Amaral
 
Apostila delphi rad studio 2007
Apostila delphi   rad studio 2007Apostila delphi   rad studio 2007
Apostila delphi rad studio 2007Guilherme Bruno
 
Java vetores e matrizes
Java   vetores e matrizesJava   vetores e matrizes
Java vetores e matrizesArmando Daniel
 
Banco de Dados II - Unimep/Pronatec - Aula 4
Banco de Dados II - Unimep/Pronatec - Aula 4Banco de Dados II - Unimep/Pronatec - Aula 4
Banco de Dados II - Unimep/Pronatec - Aula 4André Phillip Bertoletti
 
Sistema Operacional - Pratica001
Sistema Operacional - Pratica001Sistema Operacional - Pratica001
Sistema Operacional - Pratica001Cláudio Amaral
 

En vedette (20)

Arquitetura de Software
Arquitetura de SoftwareArquitetura de Software
Arquitetura de Software
 
Padrões Arquiteturais - MVC, MVP e MVVM
Padrões Arquiteturais - MVC, MVP e MVVMPadrões Arquiteturais - MVC, MVP e MVVM
Padrões Arquiteturais - MVC, MVP e MVVM
 
Arquitetura de Software Na Pratica
Arquitetura de Software Na PraticaArquitetura de Software Na Pratica
Arquitetura de Software Na Pratica
 
A importância da arquitetura de software
A importância da arquitetura de softwareA importância da arquitetura de software
A importância da arquitetura de software
 
Modelagem Arquitetural e Visão 4+1
Modelagem Arquitetural e Visão 4+1Modelagem Arquitetural e Visão 4+1
Modelagem Arquitetural e Visão 4+1
 
Arquitetura de Software Visão Geral
Arquitetura de Software Visão GeralArquitetura de Software Visão Geral
Arquitetura de Software Visão Geral
 
DER - Diagrama de Entidade e Relacionamentos
DER - Diagrama de Entidade e RelacionamentosDER - Diagrama de Entidade e Relacionamentos
DER - Diagrama de Entidade e Relacionamentos
 
Condicional 02 Pascal Exercicio
Condicional 02 Pascal ExercicioCondicional 02 Pascal Exercicio
Condicional 02 Pascal Exercicio
 
Prog web 02-php-primeiros-passos
Prog web 02-php-primeiros-passosProg web 02-php-primeiros-passos
Prog web 02-php-primeiros-passos
 
Introdução a arquitetura de sistemas com .NET
Introdução a arquitetura de sistemas com .NETIntrodução a arquitetura de sistemas com .NET
Introdução a arquitetura de sistemas com .NET
 
Sistema Operacional - Pratica003
Sistema Operacional - Pratica003Sistema Operacional - Pratica003
Sistema Operacional - Pratica003
 
Projeto de Sistemas - Aula005
Projeto de Sistemas - Aula005Projeto de Sistemas - Aula005
Projeto de Sistemas - Aula005
 
Sistema Operacional - Pratica002
Sistema Operacional - Pratica002Sistema Operacional - Pratica002
Sistema Operacional - Pratica002
 
Programação aula003
Programação aula003Programação aula003
Programação aula003
 
Aplicativo aula006
Aplicativo aula006Aplicativo aula006
Aplicativo aula006
 
Programação-Aula004
Programação-Aula004Programação-Aula004
Programação-Aula004
 
Apostila delphi rad studio 2007
Apostila delphi   rad studio 2007Apostila delphi   rad studio 2007
Apostila delphi rad studio 2007
 
Java vetores e matrizes
Java   vetores e matrizesJava   vetores e matrizes
Java vetores e matrizes
 
Banco de Dados II - Unimep/Pronatec - Aula 4
Banco de Dados II - Unimep/Pronatec - Aula 4Banco de Dados II - Unimep/Pronatec - Aula 4
Banco de Dados II - Unimep/Pronatec - Aula 4
 
Sistema Operacional - Pratica001
Sistema Operacional - Pratica001Sistema Operacional - Pratica001
Sistema Operacional - Pratica001
 

Similaire à Programação aula002

Similaire à Programação aula002 (20)

Java basico modulo_03
Java basico modulo_03Java basico modulo_03
Java basico modulo_03
 
Java básico - Módulo 06: Array
Java básico - Módulo 06: ArrayJava básico - Módulo 06: Array
Java básico - Módulo 06: Array
 
Linguagem R
Linguagem RLinguagem R
Linguagem R
 
Linguagem C - Vetores
Linguagem C - VetoresLinguagem C - Vetores
Linguagem C - Vetores
 
Cap09
Cap09Cap09
Cap09
 
Cap09
Cap09Cap09
Cap09
 
Cap09
Cap09Cap09
Cap09
 
Estruturas de dados e técnicas de programação
Estruturas de dados e técnicas de programaçãoEstruturas de dados e técnicas de programação
Estruturas de dados e técnicas de programação
 
Curso Básico de Java - Aula 7
Curso Básico de Java - Aula 7Curso Básico de Java - Aula 7
Curso Básico de Java - Aula 7
 
Java8
Java8Java8
Java8
 
Manual PSInf - Modulo 5
Manual PSInf - Modulo 5Manual PSInf - Modulo 5
Manual PSInf - Modulo 5
 
Java - Visão geral e Exercícios
Java - Visão geral e ExercíciosJava - Visão geral e Exercícios
Java - Visão geral e Exercícios
 
Java Básico
Java BásicoJava Básico
Java Básico
 
Talk - Meetup Elixir BH #1 - Felipe Rosa
Talk - Meetup Elixir BH #1 - Felipe RosaTalk - Meetup Elixir BH #1 - Felipe Rosa
Talk - Meetup Elixir BH #1 - Felipe Rosa
 
Apostila de ext js com php e postgresql v0.5
Apostila de ext js com php e postgresql v0.5Apostila de ext js com php e postgresql v0.5
Apostila de ext js com php e postgresql v0.5
 
Linguagem Java- Iniciação à programação Java
Linguagem Java- Iniciação à programação JavaLinguagem Java- Iniciação à programação Java
Linguagem Java- Iniciação à programação Java
 
Java Básico :: Classe Vector
Java Básico :: Classe VectorJava Básico :: Classe Vector
Java Básico :: Classe Vector
 
Javafx Introdução
Javafx IntroduçãoJavafx Introdução
Javafx Introdução
 
Java Básico :: Introdução
Java Básico :: IntroduçãoJava Básico :: Introdução
Java Básico :: Introdução
 
LINQ - Language Integrated Query
LINQ - Language Integrated QueryLINQ - Language Integrated Query
LINQ - Language Integrated Query
 

Plus de Cláudio Amaral

Plus de Cláudio Amaral (20)

Projeto de Sistemas - Aula004
Projeto de Sistemas - Aula004Projeto de Sistemas - Aula004
Projeto de Sistemas - Aula004
 
Projeto de Sistemas - Aula003
Projeto de Sistemas - Aula003Projeto de Sistemas - Aula003
Projeto de Sistemas - Aula003
 
Projeto de Sistemas - Aula002
Projeto de Sistemas - Aula002Projeto de Sistemas - Aula002
Projeto de Sistemas - Aula002
 
Banco de Dados II - Aula1
Banco de Dados II - Aula1Banco de Dados II - Aula1
Banco de Dados II - Aula1
 
Projeto de Sistemas - Parte001
Projeto de Sistemas - Parte001Projeto de Sistemas - Parte001
Projeto de Sistemas - Parte001
 
Aplicativo aula008
Aplicativo aula008Aplicativo aula008
Aplicativo aula008
 
Aplicativo aula007
Aplicativo aula007Aplicativo aula007
Aplicativo aula007
 
Sistema Operacional - Aula005
Sistema Operacional - Aula005Sistema Operacional - Aula005
Sistema Operacional - Aula005
 
Sistema Operacional - Aula003
Sistema Operacional - Aula003Sistema Operacional - Aula003
Sistema Operacional - Aula003
 
Sistema Operacional - Aula002
Sistema Operacional - Aula002Sistema Operacional - Aula002
Sistema Operacional - Aula002
 
Sistema Operacional - Aula001
Sistema Operacional - Aula001Sistema Operacional - Aula001
Sistema Operacional - Aula001
 
Sistema Operacional - Aula006
Sistema Operacional - Aula006Sistema Operacional - Aula006
Sistema Operacional - Aula006
 
Sistema Operacional - Aula004
Sistema Operacional - Aula004Sistema Operacional - Aula004
Sistema Operacional - Aula004
 
Aplicativo aula03
Aplicativo aula03Aplicativo aula03
Aplicativo aula03
 
Aplicativo aula02
Aplicativo aula02Aplicativo aula02
Aplicativo aula02
 
Aplicativo aula01
Aplicativo aula01Aplicativo aula01
Aplicativo aula01
 
Aplicativo aula05
Aplicativo aula05Aplicativo aula05
Aplicativo aula05
 
Aplicativo aula04
Aplicativo aula04Aplicativo aula04
Aplicativo aula04
 
Programação aula001
Programação aula001Programação aula001
Programação aula001
 
Banco dedados aula001
Banco dedados aula001Banco dedados aula001
Banco dedados aula001
 

Programação aula002

  • 1. Aula 002 Programação PRONATEC Programa Nacional de Acesso ao Ensino Técnico e Emprego
  • 2. PRONATEC Programa Nacional de Acesso ao Ensino Técnico e Emprego
  • 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. Lendo e Mostrando uma Matriz • Montando uma Matriz lendo do Teclado • Mostrando uma Matriz NxM
  • 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. 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. 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. 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