Procedimentos e sua relação com funções matemáticas 4.
links citados durante a aula
Métodos na especificação da linguagem Java
Tutorial sobre métodos em Java
Por que métodos, procedimentos, funções e sub-rotinas? Existe alguma diferença?
Sendo rigoroso, há diferenças, embora sutis, entre cada um desses nomes. Estas tem a ver com o paradigma de linguagem de programação.
Paradigma é o tipo de linguagem, por exemplo, imperativo, em que ordenamos ao computador o que fazer; funcional, em que o código dentro da função não modifica o estado fora dela; procedural, em que o código dentro do procedimento pode modificar o estado fora dela e orientado a objetos, em que todas as variáveis são objetos.
Em linguagens de máquina e de montagem, sub-rotinas são chamadas através de dois comandos cujos mnemônicos são GO SUB ou GO TO. Isso foi herdado para versões iniciais de COBOL e BASIC - nessas linguagens também usa-se sub-rotina e elas são chamadas.
Em linguagens funcionais, quis se imitar o funcionamento das funções matemáticas, que modificam exclusivamente as variáveis definidas dentro delas. Acredito que atualmente a palavra funcional seja utilizada num outro sentido.
Em linguagens procedurais, os procedimentos são funções que podem modificar variáveis definidas fora delas. Funções e procedimentos são chamados. São linguagens procedurais PASCAL, C, FORTRAN.
Em linguagens orientadas a objetos, estes têm seu comportamento, ou ação, definido por métodos. Métodos não são chamados, são invocados (embora o funcionamento seja o mesmo). A diferença é que estes estão associados a objetos, ou seja, invocamos o método de um objeto.
Para que servem os métodos?
- Apenas métodos são executados. Se você quer que a máquina execute algo, tem que escrever um método.
- Caso um bloco de código seja usado repetidas vezes, ao invés de escrever o bloco diversas vezes, ou fazer CTRL-C CTRL-V, use um método. Inclusive se você precisar corrigir o método, só precisará fazê-lo uma vez.
- Um método pode fazer algo muito complicado, ou que requeira muito código, mas que pode ser descrito com uma palavra, usar um método deixa o código mais fácil de ler,
Posso retornar mais de um valor?
Não diretamente, usando tipos primitivos, mas isso é possível, definindo seus próprios objetos ou usando arrays.
Existe diferença entre escrever na tela e retornar um valor?
Sim!!!. É completamente diferente. Imprimir na tela é uma invocação de método e "só" faz uns pontos na tela apagar e outros acender. Retornar um valor significa usar return e ainda "dizer" o que deve ser retornado.
Como posso passar mais de um valor para fora de uma função?
Use variáveis globais.
Exercícios
- Escreva um programa em que dados cinco números, armazenados um em cada variável GLOBAL, teste e imprima na tela o valor do maior.
- Escreva um programa em que dados dois números, e um caracter que será sempre uma das 4 operações aritméticas, faça a operação entre os números e imprima na tela o resultado.
- Escreva um programa em que dados cinco números, armazenados um em cada variável, teste e imprima na tela o valor do maior.
- Escreva um programa em que dado um número, testa se este é primo e imprime uma mensagem na tela informando o resultado. O teste deve estar em um método diferente de main.
- Escreva um programa que sugere um entre três telefones celulares, dadas as características que o usuário deseja.
- Escreva um programa que escreve na tela o n-ésimo elemento da sequência x(i)=x(i-1)+5 iniciando por x(0)=2.
A partir da semana que vem falaremos sobre tipos abstratos. Para entender seu funcionamento, precisamos saber, até certo ponto, como o computador funciona, em especial, como as variáveis são armazenadas na memória. Podemos estudar isso usando o Hipo. Este é um simulador de kit de microprocessador. Ele é programado em linguagem de máquina (lembra do sanduíche de mortadela??). Com os comandos dados, além de operações lógicas, aritméticas e relacionais, é possível implementar if, switch, while, do..while, for e sub-rotinas simples, sem passagem de parâmetro (pode-se usar variáveis globais). A tarefa para a próxima aula é rodar pelo menos um exemplo da documentação do HIPO. Ele é distribuído em um arquivo tipo JAR, que é executado diretamente pela JVM usando java -jar hipo.jar. Talvez seja útil entender o que são Máquinas de Von Neumann. Nossos computadores são esse tipo de máquina.
Nenhum comentário:
Postar um comentário