1.1 Construção de Algoritmos
Tipos de dados simples
Tipos de dados atômicos. Em Java temos 8 tipos:
short, int, float, double, long, char, byte e boolean.
short: 16 bits, sendo 1 bit para o sinal.
int: com 32 bits, sendo 1 bit para o sinal.
float: 32 bits, sendo 1 bit para o sinal, 8 bits do expoente e 23 bits da mantissa.
double: 64 bits, sendo 1 bit para o sinal, 11 bits do expoente e 52 bits da mantissa.
long: 64 bits, sendo 1 bit para o sinal.
char: 16 bits sem sinal, usado para representar unicode.
boolean: 8 bits, representa apenas true ou false.
byte: inteiro de 8 bits, pode assumir valores entre -128 e 127.
Tipos de dados estruturados
- Vetores
- Pilhas
- Listas
- Filas
- Registros
- Arquivos ( Sequência de registros )
Subprogramas:
São partes específicas que realizam algum procedimento no código.
Podem ser Funções ou Procedimentos.
Funções retornam valor.
Procedimentos não retornam.
Pode-se passar parâmetros por valor ou por referência.
Na declaração por valor os dados são duplicados e os dados originais não são modificados.
Na declaração por referência os dados originais podem ser modificados porque se passa a referência de memória deles.
Em Java a passagem de parâmetros se dá SEMPRE POR VALOR.
Acontece que quanto passamos uma variável de um atributo que aponta para um objeto passamos essa referência como valor.
- Toda função recursiva pode ser transformada em uma função iterativa, usando pilha.
- Toda função iterativa pode ser descrita de forma recursiva sem uso da iteração.
- Algoritmos recursivos tendem a utilizar mais o espaço de pilha (stack) que o espaço de memória ( Heap)
- Uma função recursiva em cauda é assim chamada porque a última coisa que a função faz é chamar a si mesmo, como exemplo podemos ter o percurso de pós-ordem em árvores binárias.
- Em geral, as chamadas recursivas são mais custosas que as iterativas.
- O código recursivo é mais claro, o iterativo mais eficiente. Um bom compilador pode traduzir código recursivo em iterativo.
- Na recursão em calda os valores do retorno da chamada não precisam ser armazenados na pilha.
Função A( ) {
instrução 1;
instrução 2;
A( ) ;}
- Recursões podem ser diretas ou indiretas
- Diretas: a função chama ela mesma
- Indiretas: a função A( ) chama B ( ) que chama A( ) novamente, como acontece no reconhecimento de expressões nas linguagens livre de contexto.
- As recursões são aninhadas quando uma chamada recursiva inclui como parâmetro outra chamada recursiva. (Ou ainda, é um tipo de recursão em que a chamada refere-se a si própria mais de uma vez)
Programação Estruturada:
- Estruturas de Sequência
- Estruturas de Seleção
- Estruturas de Repetição
Passagem de parâmetros:
- Por valor
- Por referência
No comments:
Post a Comment