310 likes | 437 Views
Introdução à Ciência da Computação-2. Fabio Nakano ( fabionakano@usp.br ) 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
E N D
Introdução à Ciência da Computação-2 • Fabio Nakano (fabionakano@usp.br) • 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 conseguimos descrever o processo como um programa, esse programa retorna uma solução? Dado que retorna uma solução, o tempo gasto é aceitável?
ICC, AED Conseguimos descrever qualquer processo usando uma linguagem como as de programação? Dado que conseguimos descrever o processo como um programa, esse programa retorna uma solução? Dado que retorna uma solução, o tempo gasto é aceitável?
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!!!
Saber Programar é essencial • Um programa é um conjunto de rotinas. • Um processo dentro da empresa é um conjunto de rotinas. Entender/criar um programa é como entender/criar um processo dentro da empresa!
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 com Conseguimos descrever qualquer processo usando uma linguagem como as de programação? Dado que conseguimos descrever o processo como um programa, esse programa retorna uma solução? Dado que retorna uma solução, o tempo gasto é aceitável?
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
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;
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.