Buscar

Aula - 01

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

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

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ê viu 3, do total de 24 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

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

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ê viu 6, do total de 24 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

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

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ê viu 9, do total de 24 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

Prévia do material em texto

1 
Introdução 
• Programa Computacional busca da necessidade de solução 
de um problema particular: 
– a geração automática de documentos, 
– o controle de um equipamento eletrodoméstico, 
– a transmissão de informações em longas distâncias, 
– a agilização de cálculos científicos, e outras motivações mais. 
 
• A solução dos nossos problemas através de um sistema 
computacional só é obtida no momento em que é definido 
um conjunto coerente de instruções de um programa que 
permita estabelecer que ações deverão ser executadas e em 
que ordem. 
 
Por que desenvolver ALGORITMO? 
2 
Definição de Algoritmo 
“um procedimento consistindo de um conjunto finito de regras 
não ambíguas que especificam uma seqüência finita de 
operações necessárias à solução de um problema ou para 
especificar uma classe de problemas”. (Kronsjö) 
 
• Conceitos inter-relacionados: 
– Algoritmo: 
• Abstrato e distinto de sua representação. 
– Programa: 
• É uma das possíveis representações do algoritmo. 
– Processo: 
• A atividade de executar um algoritmo. 
3 
Representação de Algoritmos 
• Primitivas: 
– Conjunto bem definido de elementos funcionais básicos 
com os quais podem ser construidas representações de 
algoritmos. 
– Cada primitiva consiste de duas partes: 
• Sintaxe: representação simbólica da primitiva 
• Semântica: significado da primitiva 
 
• Linguagem de Programação: 
– Um conjunto de primitivas, juntamente com um de regras, 
estabelecendo de que maneira as primitivas podem ser 
combinadas 
4 
Delineamento de Algoritmos 
• O desenvolvimento de um programa consiste de 
duas atividades – delinear o algoritmo subjacente, e 
representar o algoritmo na forma de um programa. 
 
• Delinear um algoritmo é descobrir um método de 
solucionar um problema. Assim, entender como os 
algoritmos são delineados é entender o próprio 
processo de resolução de problemas. 
5 
Resolução de Problemas 
“Arte de Pensar” (1960) 
• Modelo de G. Polya (matemático): 
– Fase 1 – Entender o problema 
– Fase 2 – Construir um plano para solucionar o 
problema 
– Fase 3 – Executar o plano em funcionamento. 
– Fase 4 – Avaliar a solução quanto à precisão e 
quanto ao seu potencial como ferramenta para 
solucionar outros problemas. 
6 
Desenvolvimento de Programas para Resolução 
de Problemas 
• Traduzindo o modelo de Polya para o contexto do 
desenvolvimento de programas, estas fases se tornam: 
– Fase 1 – Compreender o problema 
– Fase 2 – Adquirir uma idéia da forma como um procedimento 
algorítmico poderia resolver o problema 
– Fase 3 – Formular o algoritmo e representá-lo na forma de um 
programa. 
– Fase 4 – Avaliar o programa quanto à precisão e quanto ao seu 
potencial como ferramenta para solucionar outros problemas. 
(ANÁLISE DE ALGORITMO) 
7 
Análise de Algoritmos 
• DEFINIÇÃO: Determinar os recursos necessários para executar 
um dado algoritmo: tempo de execução e o espaço de 
armazenamento de dados. A maior parte dos algoritmos são 
pensados para trabalhar com entradas (inputs) de tamanho 
arbitrário. 
 
• Em geral, a eficiência ou complexidade de um algoritmo é 
função: 
– do tamanho do problema, 
– do número de passos necessário (complexidade temporal) e 
– da complexidade espacial ou de memória do sistema usado para 
executar o algoritmo. 
 
O objetivo final não é apenas fazer códigos que funcionem, 
mas que sejam também eficientes. 
8 
Por que estudar Estrutura de Dados? 
• Porque os programas de computador são 
formados por: 
 
Algoritmo + Dados 
9 
Estrutura de Dados 
• Motivação: Conhecer técnicas de estruturar os 
dados para que possam ser manipulado pelos 
algoritmos dos programas! 
 
• Objetivo: Estudo das principais técnicas de 
representação e manipulação de dados na memória 
 
• Tipos de dados: 
– Básicos: inteiros, reais, caracteres, strings etc. 
– Abstratos: valores + funções aplicadas aos valores 
 
Vetores 
• Uma matriz é uma coleção de variáveis de mesmo tipo, 
acessíveis com um único nome e armazenados contiguamente 
na memória. 
• A individualização de cada variável de um vetor é feita através 
do uso de índices. 
• Os Vetores são matrizes de 1 só dimensão. 
• Matrizes Bidimensionais - São matrizes linha-coluna, onde o 
primeiro índice indica a linha e o segundo a coluna. Esse tipo 
de matriz é considerado o caso mais simples de matrizes 
multidimensionais. 
• int[,] matriz = new int[2,2]; 
• int[] vetor = new int[10]; 
Funções e Procedimentos 
• Diferenças 
– Procedimentos são estruturas que agrupam um conjunto de 
comandos, que são executados quando o procedimento é chamado; 
– Funções são procedimentos que retornam um valor ao seu término 
• Vantagens 
– Evitam que os blocos do programa fiquem grandes demais e mais 
difíceis de ler e entender; 
– Ajudam a organizar o programa; 
– Permitem reaproveitamento de códigos construídos anteriormente; 
– Evitam repetição de trechos de códigos, minimizando erros e 
facilitando alterações. 
 
Funções e Procedimentos 
• Funções 
– Sintaxe de uma função: 
static tipo_de_retorno nome_da_função (com ou sem parâmetros) 
 { 
 corpo_da_função 
 
 return (valor de retorno); 
 } 
• Procedimentos 
– Sintaxe de um procedimento: 
static void nome_da_função (com ou sem parâmetros) 
 { 
 código; 
 } 
 
Funções e Procedimentos 
 
 
•O tipo-de-retorno é o tipo de variável que a função vai retornar. 
•A declaração de parâmetros é uma lista com a seguinte forma geral: tipo 
var1, tipo var2, ... , tipo varN 
•O tipo deve ser especificado para cada uma das N variáveis de entrada. É 
na declaração de parâmetros que informamos ao compilador quais serão 
as entradas da função. 
•O corpo da função é onde as entradas são processadas, saídas são 
geradas, etc. 
•O comando return tem a seguinte forma geral: return valor_de_retorno; 
•Quando se chega a uma declaração return a função é encerrada 
imediatamente e, se o valor de retorno é informado, a função retorna este 
valor. É importante lembrar que o valor de retorno fornecido tem que ser 
compatível com o tipo de retorno declarado para a função. 
• static – Um método estático, indica que não precisa ser instaciado para 
ser utilizado (orientação a objetos). 
 
 
Estrutura de Dados 14 
Passagem de Parâmetros 
• Passagem por valor: 
– Passagem do conteúdo da variável 
– Parâmetro do mesmo tipo da variável 
– Independência entre variáveis e parâmetros 
– Valores das variáveis são copiados para os parâmetros 
– Mudanças em parâmetros não afetam as variáveis 
 
• Passagem por referência: 
– Passagem do endereço da variável 
– Parâmetro do tipo apontador 
– Dependência entre variáveis e parâmetros 
– Parâmetros apontam para o conteúdo das variáveis 
– Mudanças em parâmetros refletem nas variáveis 
Estrutura de Dados 15 
Tipos Abstratos de Dados (TDAs) 
• Agrupa a estrutura de dados juntamente com as 
operações que podem ser feitas sobre esses dados; 
• O TAD encapsula a estrutura de dados. Os usuários 
do TAD só tem acesso a algumas operações 
disponibilizadas sobre esses dados; 
• Usuário do TAD x Programador do TAD 
– Usuário só “enxerga” a interface, não a implementação 
Estrutura de Dados 16 
Tipos Abstratos de Dados (TDAs) na 
Programação 
• Tipos Abstratos de Dados (TDAs) usados na 
programação: 
– Estáticos: 
• Vetores, matrizes e registros 
 
– Dinâmicos: 
• Tabelas e índices (aplicações de banco de dados) 
• Listas, pilhas, filas, árvores e grafos 
Estrutura de Dados 17 
ED Estáticas: REGISTROS 
• Combinação de diferentes “tipo base” para formar um tipo 
heterogêneo; 
• Tamanho (estrutura) definidoem tempo de programação 
• Acesso aleatório a qualquer posição através do nome do 
campo dentro do registro. 
• Váriáveis (campos ou membros) com nomes diferentes mas 
relacionadas e referenciada por um nome comum: 
Nome (string) Estado (string) Idade (int) Sexo (char) 
Pessoa 
Registros em Java 
• Um registro é uma classe em Java e é composto de vários campos (chamados de 
variáveis de instâncias). 
 class AlunoUNIP{ 
 String nome; 
 String curso; 
 int codcurso; 
 char sexo; 
 String codRA; 
// construtor 
 AlunoUNIP (String nomealuno, String cursoaluno, 
 int codCurso,char sexoaluno, 
 String raaluno){ 
 nome = nomealuno; 
 curso = cursooaluno; 
 codcurso = codCurso; 
 sexo = sexoaluno; 
 codRA = raaluno; 
 } 
} 
Construtor, que 
inicializa as 
variáveis de 
instância 
Variáveis de instância 
Registros em Java 
Com a definição de classe AlunoUNIP nós criamos um modelo 
para o registro aluno. 
 
Quando quisermos utilizar o registro AlunoUNIP, devemos utilizar 
a sentença abaixo: 
 
 AlunoUNIP aluno = new AlunoUNIP (inicialização dos campos); 
 
A partir daí nós podemos acessar a variável aluno que neste 
ponto é uma instância da classe AlunoUNIP, nosso registro. 
 
Registros em Java 
• Para acessarmos o campo nome do registro AlunoUNIP, basta 
usarmos a expressão: 
 aluno.nome 
 
• De forma semelhante, aluno.codcurso acessa o campo 
codcurso do registro AlunoUNIP. 
 
• Para atribuirmos o valor “M” ao campo sexo, faremos: 
 aluno.sexo = ‘M’; // atribui “M” ao campo sexo. 
 
Registros em Java 
public class AlunoUNIP{ 
 String nome; 
 String curso; 
 int codcurso; 
 char sexo; 
 String codRA; 
 
// construtor 
 public AlunoUNIP (String nomealuno, String cursoaluno, int codCurso, char sexoaluno, String 
raaluno){ 
 nome = nomealuno; 
 curso = cursoaluno; 
 codcurso = codCurso; 
 sexo = sexoaluno; 
 codRA = raaluno; 
 } 
} 
Registros em Java 
 
import java.util.Scanner; 
 
public class TestaAlunoUNIP { 
 
public static void main (String args []) throws Exception { 
 
 AlunoUNIP aluno = new AlunoUNIP ("","",0,' ',"");//inicializando os campos do 
construtor 
 Scanner ler = new Scanner(System.in); 
 
 System.out.printf("Digite o nome do aluno\n"); 
 aluno.nome = ler.next(); 
 
 System.out.printf("Digite o curso\n"); 
 aluno.curso = ler.next(); 
 
 System.out.printf("Digite o codigo do curso\n"); 
 aluno.codcurso = ler.nextInt(); 
 
Registros em Java 
 
 System.out.printf("Digite o sexo do aluno ( M / F)\n"); 
 //Lendo um caractere usando o método read() do pacote de classes System.in 
 aluno.sexo = (char)System.in.read(); 
 
 System.out.printf("Digite o RA do aluno (alfanumerico\n"); 
 aluno.codRA = ler.next(); 
 
 System.out.printf("O nome do aluno eh: %s.\n",aluno.nome); 
 System.out.printf("O curso do aluno eh: %s.\n",aluno.curso); 
 System.out.printf("O codigo curso do aluno eh: %d.\n",aluno.codcurso); 
 System.out.printf("O sexo do aluno eh: %c.\n",aluno.sexo); 
 System.out.printf("O RA do aluno eh: %s.\n",aluno.codRA); 
 
 System.exit(0); 
 } 
 
} 
 
 
Registros em Java 
 
• Exercício Lab 
• Criar um programa em Java que tenha os mesmos 
campos apresentados no exemplo apresentado em 
aula, poré armazenando os dados de 10 alunos. 
Dica: Usaremos um vetor de registros.

Outros materiais

Materiais relacionados

Perguntas relacionadas

Perguntas Recentes