• A palavra algoritmo vem do sobrenome do matemático persa Abu Abdullah Muhammad ibn Musa al-Khwarizmi
• Viveu no século IX
• Algoritmo é a tradução em Latim de al-Khwarizmi
DESENVOLVENDO ALGORITMOS
• Modelagem do mundo real utilizando uma linguagem de programação:
• abstração seguido de formalização
• descrição: mundo sintático
• em uma linguagem de programação
• representação: mundo computacional
• em tempo de execução
• Algoritmos fazem parte do nosso dia-a-dia
• Trocar os pneus de um carro
• Sacar dinheiro em um banco 24 horas
ALGORITMO PARA TROCAR UM
PNEU
1: desligar o carro
2: pegar ferramentas (chave e macaco) 3: pegar estepe
4: suspender o carro com o macaco
5: desenroscar os 4 parafusos do pneu furado 6: colocar o estepe
7: enroscar os 4 parafusos
24H
1: Inserir o cartão 2: Retirar o cartão 3: Digitar a senha
4: Selecionar a opção de saque 5: Solicitar a quantia desejada
6: Inserir o cartão para confirmação 7: Retirar o cartão
ALGORITMO PARA FAZER UM
BOLO
1: Coletar os ingredientes 2: Misturar em uma tigela 3: Untar a forma
4: Despejar a mistura na forma 5: Colocar a forma em um forno 6: Retirar a forma após 30 min
DEFININDO PARADIGMA
• Modelo, norma, padrão [Dicionários]
• Suposições compartilhadas! É a forma como percebemos o mundo...
PROGRAMAÇÃO
• Ao longo da evolução, algumas linguagens de programação introduziram novas formas de solucionar problemas
• O paradigma de uma linguagem de programação é a sua identidade.
• Corresponde a um conjunto de características que, juntas, definem como ela opera e resolve os problemas.
PARADIGMAS DE
PROGRAMAÇÃO
• Quando uma linguagem de programação é criada, a partir das suas características, ela é categorizada em um ou mais paradigmas.
• Alguns dos principais paradigmas utilizados hoje no mercado:
• Funcional
• Lógico
• Declarativo
• Imperativo
• Orientado a objetos
PROGRAMAÇÃO: FUNCIONAL
• É um paradigma de programação baseada em funções matemáticas
• Pode-se pensar na programação funcional como simplesmente avaliação de expressões
• Paradigma funcional tem sido mais usado academicamente que no desenvolvimento de software.
• Funcionamento
• O programador define uma função para resolver um problema e passa essa função para o computador
• Uma função pode envolver várias outras funções em sua definição
• O computador funciona como uma calculadora que avalia as expressões escritas pelo programador: lê, calcula e mostra o resultado
PARADIGMAS DE
PROGRAMAÇÃO: LÓGICO
• Paradigma Lógico
• Muito utilizado em aplicações de inteligência artificial, robótica
• Esse paradigma chega no resultado esperado a partir de avaliações lógico-matemáticas.
PROGRAMAÇÃO: LÓGICO
• Programar em lógica envolve:
• Declarar alguns fatos a respeito de objetos e seus relacionamentos,
• Definir algumas regras sobre os objetos e seus relacionamentos e
PARADIGMAS DE
PROGRAMAÇÃO: DECLARATIVO
• É baseado no lógico e funcional.
• Linguagens declarativas descrevem o que fazem e não exatamente como suas instruções funcionam.
• Algumas linguagens com esse paradigma:
PROGRAMAÇÃO: IMPERATIVO
• O paradigma estruturado (também chamado de imperativo), determina que qualquer problema pode ser solucionado utilizando três estruturas:
• sequencial
• condicional
• iterativa (repetição)
• Neste paradigma procura-se “quebrar” (dividir) um problema complexo em pequenas partes que trabalharão em conjunto para solucionar o problema abordado
• Algumas linguagens com esse paradigma:
• Pascal
PARADIGMAS DE PROGRAMAÇÃO:
ORIENTADO A OBJETOS
• Esse é, entre todos, talvez o mais difundido.
• É uma subclassificação do paradigma imperativo
• Nele, implementa-se um conjunto de classes que definem objetos. Cada classe determina o comportamento (definido nos métodos) e estados possíveis (atributos) de seus objetos, assim como o relacionamento entre eles.
• Algumas linguagens com esse paradigma:
ORIENTADO A EVENTOS
• Toda linguagem que faz uso de interface gráfica é baseada nesse paradigma.
• Nele, o fluxo de execução do software é baseado na ocorrência de eventos externos, normalmente disparados pelo usuário.
PARADIGMAS DE PROGRAMAÇÃO:
ORIENTADO A EVENTOS
• Por exemplo, imagine essa interface gráfica:
PROGRAMAÇÃO ORIENTADA A
OBJETOS
• Pressupõe que um software é organizado como uma coleção de objetos que incorporam estrutura e comportamento próprios
• Vantagens
• Objetos fornecem uma visão intuitiva do negócio
• Possibilita a reutilização de componentes
• Favorece a redução de manutenção
OBJETOS
• Paradigma de programação baseado no conceito de classes e objetos.
• As classes são elementos onde dados e procedimentos são agrupados, segundo seu objetivo, para um determinado sistema.
• Quando uma classe é usada como um tipo de dado para a criação de uma variável, esta é chamada de objeto.
• No paradigma da orientação a objetos, os procedimentos e funções são chamados de métodos.
FUNDAMENTOS POO
• O que é POO ?
• Classe;
• Objeto;
• Método;
• Encapsulamento;
• Abstração;
• Herança;
• Sobrecarga e sobrescrita de Métodos;
• Um objeto representa algo do mundo real:
• concreto ou abstrato;
• A percepção dos seres humanos é dada através dos objetos;
• Um objeto é uma entidade que exibe algum comportamento bem definido.
DEFININDO OBJETOS
• Um objeto representa algo do mundo real:
• Concreto: Música, Operação Bancária
• ou abstrato: Pessoa, avião, casa
• A percepção dos seres humanos é dada através dos objetos;
• Um objeto é uma entidade que exibe algum comportamento bem definido.
• Objetos são compostos de
• Atributos
• dados que definem o estado do objeto
• Métodos
• procedimentos que alteram o estado do objeto
• Exemplo de objeto:
O OBJETO “CARRO”
• Para construir o objeto “carro”, teremos de abstrair seus atributos e funções:
• um carro pode ter os seguintes recursos ou atributos:
• cor, velocidade, combustível, tamanho, modelo
• um carro pode:
• Como descrever os objetos no mundo computacional?
POO EM JAVA
• Objetos (computacionais) são caracterizados por atributos e métodos:
• atributos são as propriedades de um objeto.
• métodos são as ações que um objeto pode realizar
• a execução de um método muda os valores dos atributos do objeto responsável pela execução
• neste caso dizemos que o objeto mudou de estado
• Classes são especificações para objetos;
• Uma classe serve de modelo para vários objetos semelhantes que possuem os mesmos tipos de informação em seu estado e tem os mesmos
comportamentos;
• Uma Classe é uma fabrica de objetos idênticos no que diz respeito a sua interface e
CLASSES EM JAVA: EXEMPLO
• Java oferece recursos linguísticos para especificar (descrever) classes: class Nome_da_Classe {
atributos métodos }
ABSTRAÇÃO
• Focalizar o essencial ignorando propriedades e métodos fora do escopo.
• A abstração deve ser sempre com algum objetivo, porque o objetivo determina o que é e o que não é importante.
• Quando queremos diminuir a complexidade de algo, selecionamos parte do que estamos querendo;
• Exemplo:
• Um coelho para sua dona tem os atributos cor e aparência
HERANÇA
ENCAPSULAMENTO
• É a capacidade de restringir o acesso a elementos de uma classe utilizando qualificadores;
• Poli→várias;
• Morfos→formas;
• O conceito de polimorfismo está associado a Herança;
SOBRECARGA DE MÉTODOS
• Sobrecarregar um método é permitir que se utilize o mesmo nome de chamada para operar sobre uma variedade de tipos de dados.
• Pode-se ter diversos métodos declarados com o mesmo nome dentro de uma classe, entretanto, tais métodos possuem tipos e quantidades de parâmetros diferentes entre si.
public static void setTamanhoRetangulo(int lado){ this.altura = (double) lado;
this.largura = lado; }
public static void setTamanhoRetangulo (double alt, int larg){ this.altura = alt;
• Pode-se definir métodos com o mesmo nome, recebendo os mesmos
argumentos, porem a sua implementação é realizada de forma diferente. Chamamos isso de sobrescrita.
• OBS.: Isso acontece para classes diferentes.