Apresentação do PowerPoint -...

24
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?

Transcript of Apresentação do PowerPoint -...

Page 1: Apresentação do PowerPoint - walderson.comwalderson.com/site/wp-content/uploads/2015/02/Aula-01.pdf · permita estabelecer que ações deverão ser executadas e em ... strings etc.

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?

Page 2: Apresentação do PowerPoint - walderson.comwalderson.com/site/wp-content/uploads/2015/02/Aula-01.pdf · permita estabelecer que ações deverão ser executadas e em ... strings etc.

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.

Page 3: Apresentação do PowerPoint - walderson.comwalderson.com/site/wp-content/uploads/2015/02/Aula-01.pdf · permita estabelecer que ações deverão ser executadas e em ... strings etc.

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

Page 4: Apresentação do PowerPoint - walderson.comwalderson.com/site/wp-content/uploads/2015/02/Aula-01.pdf · permita estabelecer que ações deverão ser executadas e em ... strings etc.

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.

Page 5: Apresentação do PowerPoint - walderson.comwalderson.com/site/wp-content/uploads/2015/02/Aula-01.pdf · permita estabelecer que ações deverão ser executadas e em ... strings etc.

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.

Page 6: Apresentação do PowerPoint - walderson.comwalderson.com/site/wp-content/uploads/2015/02/Aula-01.pdf · permita estabelecer que ações deverão ser executadas e em ... strings etc.

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)

Page 7: Apresentação do PowerPoint - walderson.comwalderson.com/site/wp-content/uploads/2015/02/Aula-01.pdf · permita estabelecer que ações deverão ser executadas e em ... strings etc.

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.

Page 8: Apresentação do PowerPoint - walderson.comwalderson.com/site/wp-content/uploads/2015/02/Aula-01.pdf · permita estabelecer que ações deverão ser executadas e em ... strings etc.

8

Por que estudar Estrutura de Dados?

• Porque os programas de computador são formados por:

Algoritmo + Dados

Page 9: Apresentação do PowerPoint - walderson.comwalderson.com/site/wp-content/uploads/2015/02/Aula-01.pdf · permita estabelecer que ações deverão ser executadas e em ... strings etc.

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

Page 10: Apresentação do PowerPoint - walderson.comwalderson.com/site/wp-content/uploads/2015/02/Aula-01.pdf · permita estabelecer que ações deverão ser executadas e em ... strings etc.

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];

Page 11: Apresentação do PowerPoint - walderson.comwalderson.com/site/wp-content/uploads/2015/02/Aula-01.pdf · permita estabelecer que ações deverão ser executadas e em ... strings etc.

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.

Page 12: Apresentação do PowerPoint - walderson.comwalderson.com/site/wp-content/uploads/2015/02/Aula-01.pdf · permita estabelecer que ações deverão ser executadas e em ... strings etc.

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;

}

Page 13: Apresentação do PowerPoint - walderson.comwalderson.com/site/wp-content/uploads/2015/02/Aula-01.pdf · permita estabelecer que ações deverão ser executadas e em ... strings etc.

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).

Page 14: Apresentação do PowerPoint - walderson.comwalderson.com/site/wp-content/uploads/2015/02/Aula-01.pdf · permita estabelecer que ações deverão ser executadas e em ... strings etc.

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

Page 15: Apresentação do PowerPoint - walderson.comwalderson.com/site/wp-content/uploads/2015/02/Aula-01.pdf · permita estabelecer que ações deverão ser executadas e em ... strings etc.

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

Page 16: Apresentação do PowerPoint - walderson.comwalderson.com/site/wp-content/uploads/2015/02/Aula-01.pdf · permita estabelecer que ações deverão ser executadas e em ... strings etc.

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

Page 17: Apresentação do PowerPoint - walderson.comwalderson.com/site/wp-content/uploads/2015/02/Aula-01.pdf · permita estabelecer que ações deverão ser executadas e em ... strings etc.

Estrutura de Dados 17

ED Estáticas: REGISTROS

• Combinação de diferentes “tipo base” para formar um tipo heterogêneo;

• Tamanho (estrutura) definido em 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

Page 18: Apresentação do PowerPoint - walderson.comwalderson.com/site/wp-content/uploads/2015/02/Aula-01.pdf · permita estabelecer que ações deverão ser executadas e em ... strings etc.

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

Page 19: Apresentação do PowerPoint - walderson.comwalderson.com/site/wp-content/uploads/2015/02/Aula-01.pdf · permita estabelecer que ações deverão ser executadas e em ... strings etc.

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.

Page 20: Apresentação do PowerPoint - walderson.comwalderson.com/site/wp-content/uploads/2015/02/Aula-01.pdf · permita estabelecer que ações deverão ser executadas e em ... strings etc.

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.

Page 21: Apresentação do PowerPoint - walderson.comwalderson.com/site/wp-content/uploads/2015/02/Aula-01.pdf · permita estabelecer que ações deverão ser executadas e em ... strings etc.

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;

}

}

Page 22: Apresentação do PowerPoint - walderson.comwalderson.com/site/wp-content/uploads/2015/02/Aula-01.pdf · permita estabelecer que ações deverão ser executadas e em ... strings etc.

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();

Page 23: Apresentação do PowerPoint - walderson.comwalderson.com/site/wp-content/uploads/2015/02/Aula-01.pdf · permita estabelecer que ações deverão ser executadas e em ... strings etc.

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);

}

}

Page 24: Apresentação do PowerPoint - walderson.comwalderson.com/site/wp-content/uploads/2015/02/Aula-01.pdf · permita estabelecer que ações deverão ser executadas e em ... strings etc.

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.