Descansando a Cabeça

Monday, September 12, 2011

Noções de Programação

1. Noções de programação

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.

Recursividade:
  • 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