introdução à ciência da computação-2 fabio nakano ([email protected])[email protected] –...
TRANSCRIPT
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!!!
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!!!
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?
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?
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!!!
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.
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
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
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
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!
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?
As próximas matérias
• Matemática Discreta• Teoria da Computação• Algoritmos e Estruturas
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
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.
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
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.
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
Mãos à obra!Abstração
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.
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.
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
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;
O que é relevante depende do objetivo e do ponto de vista
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.
Objeto, características, comportamento, interface, visão interna, visão externa, mensagem
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.
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
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
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.
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.
Fim da aula 1