Universidade do Estado de Santa Catarina – CCT/UDESC INTRODUÇÃO THOBER CORADI DETOFENO, MSC. Aula 01 JOINVILLE 2015 Apresentação Doutorando em Engenharia de Software pela PUC-PR, Mestre em Métodos Numéricos pela UFPR com formação superior em Ciência da Computação pela UDESC. Com mais de 15 anos de experiência profissional atuando como programador, analista de sistemas, consultor e professor. Calendário T-08/09 – Aula 01 - Introdução aos conceitos Q-09/09 – Aula 02 - Introdução aos conceitos T-15/09 – Aula 03 - Métodos de pesquisa Q-16/09 – Aula 04 - Métodos de ordenação T-22/09 – Métodos de ordenação – Selection sort Q-23/09 - Métodos de ordenação - Quick sort T-29/09 - Métodos de ordenação - Merge sort Q-30/09 - Métodos de ordenação - Insert sort T-06/10 - Ordenação em tempo linear Q-07/10 - Ordenação em tempo linear T-13/10 - Tabelas Hash Q-14/10 – Tabelas Hash T-20/10 - Tabelas Hash Q-21/10 - Tabelas Hash T-27/10 – 1ª Prova Q-28/10 – Correção da Prova T-03/11 - Árvores Q-04/11 - Árvores T-10/11 - Árvores Q-11/11 - Árvores T-17/11 - Árvores Q-18/11 - Árvores T-24/11 - Árvores Q-25/11 – 2ª Prova T-01/12 – Seminário Q-02/12 – Seminário T-08/12 - Defesa dos Trabalhos Q-09/12 - Defesa dos Trabalhos T-15/12 - Exame Método de Avaliação • • • • 25% - Seminário (Individual) 25% - Projeto (Individual) 25% - Prova 1 (Individual) 25% - Prova 2 (Individual) Algoritmo (Dijkstra) Um algoritmo pode ser visto como uma sequência de ações executáveis para a obtenção de uma solução para um determinado tipo de problema Corresponde a uma descrição de um padrão de comportamento, expresso em termos de um conjunto finito de ações. É, em geral, uma descrição passo a passo de como um problema é solucionável. A descrição deve ser finita, e os passos bem definidos, sem ambiguidades, e executáveis computacionalmente. Algoritmo Conceito de algoritmo: originado como um meio para representar procedimentos para resolver problemas matemáticos; Um algoritmo pode ser visto como uma seqüência de ações expressas em termos de uma linguagem de programação, constituindo parte da solução de um tipo determinado de problema. Algoritmo ALGORITMO: conjunto finito de instruções bem definidas que, se seguidas, realizam uma determinada tarefa; Critérios para “ser” um algoritmo: Dado Representação formalizada de fatos ou idéias, capaz de ser comunicada ou manipulada por algum processo; Representação em uma linguagem precisa e formalizada de alguns fatos ou conceitos, freqüentemente valores numéricos ou alfabéticos, de uma forma tal que possam ser manipulados por um método computacional [Knuth, 1997]. Tipo de Dado Especificação de como o dado representado por cadeia de bits é interpretado. Exemplos de tipos de dados: Variáveis; Constantes; Expressões; Funções. Tipos simples de dados são grupos de valores indivisíveis (como os tipos básicos integer, boolean, char e real do Pascal). Referem-se ao conjunto de valores que estes podem assumir ou gerar. Em linguagens de programação o tipo de dado de uma variável, constante ou função define o conjunto de valores que a variável, constante ou função podem assumir. ex., variável boolean pode assumir valores true ou false Programador pode definir novos tipos de dados em termos de outros ja definidos Tipos estruturados, p.ex., arrays, records Estrutura de Dados Um tipo estruturado é um exemplo de estrutura de dados Tipos estruturados são estruturas de dados já prédefinidas na linguagem de programação O programador pode definir outras estruturas de dados para armazenar as informações que seu programa precisa manipular Vetores, registros, listas encadeadas, pilhas, filas, arvores, grafos, são exemplos de estruturas de dados típicas utilizadas para armazenar informação em memoria principal Programa Programar é basicamente estruturar dados e construir algoritmos. Programas são formulações concretas de algoritmos abstratos, baseados em representações e estruturas específicas de dados. Programas representam uma classe especial de algoritmos capazes de serem seguidos por computadores. Um computador só é capaz de seguir programas em linguagem de máquina (sequência de instruções obscuras e desconfortáveis). É necessário construir linguagens mais adequadas, que facilitem a tarefa de programar um computador. Uma linguagem de programação é uma técnica de notação para programar, com a intenção de servir de veículo tanto para a expressão do raciocínio algorítmico quanto para a execução automática de um algoritmo por um computador. Tipo de Dados Abstrato (TAD) 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 Tipo de Dados Abstrato (TAD) Dessa forma, o usuário pode abstrair da implementação específica. Qualquer modificação nessa implementação fica restrita ao TAD A escolha de uma representação específica é fortemente influenciada pelas operações a serem executadas Tipo de Dados Abstrato (TAD) Exercício Implemente um TAD ContaBancaria, com os campos número e saldo onde os clientes podem fazer as seguintes operações: – Iniciar uma conta com um número e saldo inicial – Depositar um valor – Sacar um valor – Imprimir o saldo Faça um pequeno programa para testar o seu TAD ContaBancaria.h