Introdução à Ciência da Computação-2 Fabio Nakano ([email protected])[email protected] –...

31
Introdução à Ciência da Computação-2 • Fabio Nakano ( [email protected] ) – Por favor colocar no assunto: “ICC2 - <assunto>” – Bloco A-1, segundo andar, sala 77. USEM COM SABEDORIA!!!

Transcript of Introdução à Ciência da Computação-2 Fabio Nakano ([email protected])[email protected] –...

Page 1: Introdução à Ciência da Computação-2 Fabio Nakano (fabionakano@usp.br)fabionakano@usp.br – Por favor colocar no assunto: “ICC2 - ” – Bloco A-1, segundo.

Introdução à Ciência da Computação-2

• Fabio Nakano ([email protected])– Por favor colocar no assunto: “ICC2 - <assunto>”– Bloco A-1, segundo andar, sala 77.

USEM COM SABEDORIA!!!

Page 2: Introdução à Ciência da Computação-2 Fabio Nakano (fabionakano@usp.br)fabionakano@usp.br – Por favor colocar no assunto: “ICC2 - ” – Bloco A-1, segundo.

O profissional de SI da EACH

• Ser capaz de entender os processos dentro da empresa em que se inserir

• Ser capaz de aplicar seus conhecimentos para a melhoria desses processos

• Resolver problemas!!!• Saber programar é essencial, e tem mais!!!

Page 3: Introdução à Ciência da Computação-2 Fabio Nakano (fabionakano@usp.br)fabionakano@usp.br – Por favor colocar no assunto: “ICC2 - ” – Bloco A-1, segundo.

Dá para resolver tudo com programas? Conseguimos descrever qualquer processo usando uma linguagem como as de programação?

Dado que retorna uma solução, o tempo gasto é aceitável?

Dado que conseguimos descrever o processo como um programa, esse programa retorna uma solução?

Page 4: Introdução à Ciência da Computação-2 Fabio Nakano (fabionakano@usp.br)fabionakano@usp.br – Por favor colocar no assunto: “ICC2 - ” – Bloco A-1, segundo.

ICC, AED Conseguimos descrever qualquer processo usando uma linguagem como as de programação?

Dado que retorna uma solução, o tempo gasto é aceitável?

Dado que conseguimos descrever o processo como um programa, esse programa retorna uma solução?

Page 5: Introdução à Ciência da Computação-2 Fabio Nakano (fabionakano@usp.br)fabionakano@usp.br – Por favor colocar no assunto: “ICC2 - ” – Bloco A-1, segundo.

Fiquei P....!!!

• Fui ajudar a minha mulher a pegar as compras na AVON.

• Como eu queria ter uma lista ordenada por nome do produto!!

Lição: Saber Computação/Algoritmos não serve só para usar computadores, serve para poupar trabalho e paciência!!!

Page 6: Introdução à Ciência da Computação-2 Fabio Nakano (fabionakano@usp.br)fabionakano@usp.br – Por favor colocar no assunto: “ICC2 - ” – Bloco A-1, segundo.

Entender/criar um programa é como entender/criar um processo dentro da empresa!

Saber Programar é essencial

• Um programa é um conjunto de rotinas.• Um processo dentro da empresa é um

conjunto de rotinas.

Page 7: Introdução à Ciência da Computação-2 Fabio Nakano (fabionakano@usp.br)fabionakano@usp.br – Por favor colocar no assunto: “ICC2 - ” – Bloco A-1, segundo.

Um bom programa é...

• Correto,• Claro (organizado, limpo,...),• Amigável para o usuário• Amigável para os colegas que têm que lê-lo– Estruturado,– Comentado,– Documentado.

• Reutilizável

Page 8: Introdução à Ciência da Computação-2 Fabio Nakano (fabionakano@usp.br)fabionakano@usp.br – Por favor colocar no assunto: “ICC2 - ” – Bloco A-1, segundo.

O que você já sabe?

• Programação básica em JAVA– Chamadas de função,– Passagem por referência e por parâmetro

• Estratégia de solução de problemas– Recursão

• Estruturas básicas– vetores – Matrizes

• Tipos Abstratos de Dados

Page 9: Introdução à Ciência da Computação-2 Fabio Nakano (fabionakano@usp.br)fabionakano@usp.br – Por favor colocar no assunto: “ICC2 - ” – Bloco A-1, segundo.

O que vc vai aprender neste curso• Programação JAVA– Abstração, Objeto,– Herança– Polimorfismo– Sobrecarga de operadores

• Algoritmos– Busca– Ordenação

• Noções de análise de algoritmos• Estruturas de dados– Hashing

Page 10: Introdução à Ciência da Computação-2 Fabio Nakano (fabionakano@usp.br)fabionakano@usp.br – Por favor colocar no assunto: “ICC2 - ” – Bloco A-1, segundo.

O primeiro ponto serve para facilitar as tarefas do ciclo de vida do software:• Análise do problema• Projeto do software• Implementação do software• Teste do software• Manutenção do software• A DOCUMENTAÇÃO É FEITA EM TODAS AS

ETAPAS!

Page 11: Introdução à Ciência da Computação-2 Fabio Nakano (fabionakano@usp.br)fabionakano@usp.br – Por favor colocar no assunto: “ICC2 - ” – Bloco A-1, segundo.

Os outros pontos têm a ver comConseguimos descrever qualquer processo usando uma linguagem como as de programação?

Dado que retorna uma solução, o tempo gasto é aceitável?

Dado que conseguimos descrever o processo como um programa, esse programa retorna uma solução?

Page 12: Introdução à Ciência da Computação-2 Fabio Nakano (fabionakano@usp.br)fabionakano@usp.br – Por favor colocar no assunto: “ICC2 - ” – Bloco A-1, segundo.

As próximas matérias

• Matemática Discreta• Teoria da Computação• Algoritmos e Estruturas

Page 13: Introdução à Ciência da Computação-2 Fabio Nakano (fabionakano@usp.br)fabionakano@usp.br – Por favor colocar no assunto: “ICC2 - ” – Bloco A-1, segundo.

Protocolo• São 4 professores dando a matéria em turmas diferentes. Vamos

coordenar tópicos e EP’s.• Teremos listas de exercícios.• Frequência mínima: 70%. • Avaliação:

– Duas provas (P1 e P2)– Três trabalhos (T1, T2 e T3): exercícios-programas (EPs)

• Prova substitutiva:– somente para quem perdeu uma das provas (FECHADA)– substitui a que você perdeu– envolve todo o conteúdo ministrado na disciplina.– DIFÍCIL: USEM SÓ EM CASO DE EMERGÊNCIA!

• Qualquer tentativa de fraude implicará em zero na atividade.• Número de aulas: 31

Page 14: Introdução à Ciência da Computação-2 Fabio Nakano (fabionakano@usp.br)fabionakano@usp.br – Por favor colocar no assunto: “ICC2 - ” – Bloco A-1, segundo.

Critérios para aprovação• Média de Provas (MP):• MP = (2*P1 + 3*P2) / 5

• Média de Trabalhos (MT):• MT = (T1 + T2 + T3) / 3• Média Final (MF) : • se MP >= 5,0 e MT >= 5,0 então MF = (7*MP + 3*MT) / 10• senão MF = mínimo(MP, MT)

• Se MF >= 5,0 → aluno aprovado• Se 3,0 <= MF < 5,0 → recuperação• Se MF < 3,0 → aluno reprovado.

Page 15: Introdução à Ciência da Computação-2 Fabio Nakano (fabionakano@usp.br)fabionakano@usp.br – Por favor colocar no assunto: “ICC2 - ” – Bloco A-1, segundo.

Recuperação• MFR (Média Final após recuperação):• Se REC >= 5• MFR = máximo(5, (MF + REC)/2)• senão • MFR = (MF + REC)/2• REC : envolve todo o conteúdo ministrado na

disciplina. • É obrigatória (não fez → REC = 0)• Se MFR >= 5,0 → aluno aprovado• Se MFR < 5,0 → aluno reprovado

Page 16: Introdução à Ciência da Computação-2 Fabio Nakano (fabionakano@usp.br)fabionakano@usp.br – Por favor colocar no assunto: “ICC2 - ” – Bloco A-1, segundo.

Avisos• A programação é preliminar e pode estar sujeita

a mudanças. – A disciplina tem 6 créditos, sendo 4 teóricos e 2 de

trabalho:– Por isso: Trabalhos (EPs são obrigatórios!!!)

• Sistema CoL: – responsabilidade é do aluno!– única responsabilidade do professor: incluir as turmas

e os alunos! (ops! )• Horário de atendimento: quintas, combinar

horário.

Page 17: Introdução à Ciência da Computação-2 Fabio Nakano (fabionakano@usp.br)fabionakano@usp.br – Por favor colocar no assunto: “ICC2 - ” – Bloco A-1, segundo.

Bibliografia• KON, F.; GOLDMAN, A.; SILVA, P.J.S. “Introdução à Ciência de

Computação com Java e Orientado a Objetos”, IME - USP, 2005. Disponível em: http://ccsl.ime.usp.br/introCCJavaOO

• GOODRICH, M.; TAMASSIA, R. Estruturas de Dados e Algoritmos em Java. Ed. Bookman, 2a. Ed. 2002.

• CORMEN, T. H.; LEISERSON, C. E.; RIVEST, R. L.; STEIN, C. Algoritmos - Trad. 2.º Ed. Americana. Ed. Campus, 2002.

• ZIVIANI, N. – Projeto de Algoritmos, 2ª Ed., Editora Thomson, 2004.• TENEMBAUM, A.M., et all. Data Structures Using C, Prentice-Hall,

1990.• WIRTH,N. Algorithms + Data Structures = Programs, Prentice-Hall,

1986

Page 18: Introdução à Ciência da Computação-2 Fabio Nakano (fabionakano@usp.br)fabionakano@usp.br – Por favor colocar no assunto: “ICC2 - ” – Bloco A-1, segundo.

Mãos à obra!Abstração

Page 19: Introdução à Ciência da Computação-2 Fabio Nakano (fabionakano@usp.br)fabionakano@usp.br – Por favor colocar no assunto: “ICC2 - ” – Bloco A-1, segundo.

Abstrato

• adj. Que designa uma qualidade, ação, ou estado, considerados em si mesmos, independentemente dos seres com que se relacionam: bondade, polidez, adoração, vingança, morte, sonho. / Que opera unicamente com noções: ciências abstratas, número abstrato. / Abstraído, distraído. // Arte abstrata, arte que não se prende à representação da realidade tangível.

Page 20: Introdução à Ciência da Computação-2 Fabio Nakano (fabionakano@usp.br)fabionakano@usp.br – Por favor colocar no assunto: “ICC2 - ” – Bloco A-1, segundo.

Abstração

• s.f. Operação do espírito, que isola de uma noção um elemento, negligenciando os outros. / Resultado desta operação: a brancura considerada em geral, sem ser aplicada a um objeto, é uma abstração. // Fazer abstração de uma coisa, não levá-la em consideração.S.f.pl. Idéias quiméricas, desvinculadas da realidade: perder-se em abstrações.

Page 21: Introdução à Ciência da Computação-2 Fabio Nakano (fabionakano@usp.br)fabionakano@usp.br – Por favor colocar no assunto: “ICC2 - ” – Bloco A-1, segundo.

Em computação, abstração é:• Mecanismo utilizado na análise de um domínio• O indivíduo observa a realidade e dela abstrai:– entidades– ações – comportamentos – relacionamentos

• São considerados somente os elementos essenciais para uma aplicação

• Todos os aspectos julgados irrelevantes são excluídos

Page 22: Introdução à Ciência da Computação-2 Fabio Nakano (fabionakano@usp.br)fabionakano@usp.br – Por favor colocar no assunto: “ICC2 - ” – Bloco A-1, segundo.

Utilidade de abstrair

• Abstrair elementos irrelevantes;• Abstrair detalhes de como se faz (adiando o

detalhamento que será necessário, mas que no momento não queremos nos preocupar com isso), focando em o que é e o que faz;

Page 23: Introdução à Ciência da Computação-2 Fabio Nakano (fabionakano@usp.br)fabionakano@usp.br – Por favor colocar no assunto: “ICC2 - ” – Bloco A-1, segundo.

O que é relevante depende do objetivo e do ponto de vista

Page 24: Introdução à Ciência da Computação-2 Fabio Nakano (fabionakano@usp.br)fabionakano@usp.br – Por favor colocar no assunto: “ICC2 - ” – Bloco A-1, segundo.

Apresentando o paradigma de Orientação a Objetos

• Objeto: abstração de uma entidade real, cujas características e comportamento são conhecidos – se apresenta a outras entidades por meio de uma

interface bem definida– Visão Interna: define a estrutura e o comportamento do

objeto, ou seja, define dados e métodos (e suas implementações)

– Visão Externa: interface que define como o objeto é visto por outros objetos

– Mensagem: comunicação entre objetos

• Paradigma=s.m. Modelo, padrão, norma; exemplo.

Page 25: Introdução à Ciência da Computação-2 Fabio Nakano (fabionakano@usp.br)fabionakano@usp.br – Por favor colocar no assunto: “ICC2 - ” – Bloco A-1, segundo.

Objeto, características, comportamento, interface, visão interna, visão externa, mensagem

Page 26: Introdução à Ciência da Computação-2 Fabio Nakano (fabionakano@usp.br)fabionakano@usp.br – Por favor colocar no assunto: “ICC2 - ” – Bloco A-1, segundo.

Objetos e Tipos Abstratos de Dados

• Tipo Abstrato de Dados - TAD• Def.: é uma coleção bem definida de dados a serem

armazenados, e um grupo de operadores que podem ser aplicados para manipulação desses dados.

• Características Fundamentais:

• > Os operadores do TAD implementam regras bem definidas para manipulação dos valores armazenados;

• > Os valores armazenados devem ser manipulados EXCLUSIVAMENTE pelos operadores do TAD.

Page 27: Introdução à Ciência da Computação-2 Fabio Nakano (fabionakano@usp.br)fabionakano@usp.br – Por favor colocar no assunto: “ICC2 - ” – Bloco A-1, segundo.

Consequencias das características

• Ocultamento da informação e implementação– implementação do tipo pode ser alterada(contanto

que mantenha as mesmas operações) sem afetar as unidades de programa que fazem uso dele

– Aumenta a confiabilidade, pois nenhuma outra unidade de programa pode mudar, acidentalmente ou intencionalmente, as representações do tipo, aumentando a integridade de tais objetos

Page 28: Introdução à Ciência da Computação-2 Fabio Nakano (fabionakano@usp.br)fabionakano@usp.br – Por favor colocar no assunto: “ICC2 - ” – Bloco A-1, segundo.

Objetos

• Extensão do conceito de TAD• Classe: definição do Tipo Abstrato de Dados– Atributos– Métodos

• Objeto: cada instância derivada da classe• Representa em software entidades que

encontramos no mundo real

Page 29: Introdução à Ciência da Computação-2 Fabio Nakano (fabionakano@usp.br)fabionakano@usp.br – Por favor colocar no assunto: “ICC2 - ” – Bloco A-1, segundo.

OOP e TAD

• Em uma linguagem funcional fica a cargo do programador respeitar as características do modelo TAD.

• Em uma linguagem orientada a objetos, a linguagem é construída de forma a ajudar o programador a respeitar as características do modelo.

Page 30: Introdução à Ciência da Computação-2 Fabio Nakano (fabionakano@usp.br)fabionakano@usp.br – Por favor colocar no assunto: “ICC2 - ” – Bloco A-1, segundo.

Exercícios

• Modelar um objeto em termos de atributos e métodos.

• Tarefinha: no caminho para casa, ou no caminho para cá, escolher um objeto e modelá-lo em termos de atributos e métodos.

Page 31: Introdução à Ciência da Computação-2 Fabio Nakano (fabionakano@usp.br)fabionakano@usp.br – Por favor colocar no assunto: “ICC2 - ” – Bloco A-1, segundo.

Fim da aula 1