Arquivo de agosto 2008
Aritmética computacional – parte II – Adição e Subtração
25/08/08
Numa soma os bits são somados um a um da direita para a esquerda, com os carries sendo passados para o próximo bit à esquerda. A operação de subtração usa a adição. O subtraendo é simplesmente negado antes de ser somado ao minuendo. Lembre-se que a máquina trata com números representados em complemento a 2. O exemplo a seguir mostra as operações de soma (6+7) e subtração (7-6) bit a bit entre dois números representados com 4 dígitos binários.
Como citado anteriormente, tanto a soma como a subtração podem gerar overflow ou underflow, se o resultado obtido não puder ser representado pela quantidade de bits que formam uma palavra. Se somarmos ou subtrairmos dois números com sinais contrários, nunca ocorrerá overflow ou underflow. Isto porque operandos com sinais contrários nunca
podem ser maior do que qualquer dos operandos.
O overflow ocorre quando somamos dois operandos positivos e obtemos um resultado negativo, ou vice-versa. Isto significa que utilizamos o bit de sinal, gerando um carry, para armazenar um valor pertencente ao resultado da operação. Raciocínio semelhante é realizado para detectar a ocorrência do underflow numa subtração. Neste caso, o bit de sinal também é usado para armazenar um valor pertencente ao resultado da operação.
Os projetistas de um sistema devem decidir onde tratar a ocorrência de overflow ou de underflow em operações aritméticas. Elas podem ser tratadas tanto por hardware quanto por software. Pode existir a detecção por hardware que gera uma exceção, e que depois é tratada por software.
Aritmética computacional – parte I – Números com sinal e números sem sinal
18/08/08
Estaremos nos próximos dias falando sobre a aritmética computacional, onde o objetivo é mostrar como o hardware implementa a representação dos números, os algoritmos para operações aritméticas e sua implicação no conjunto de instruções da máquina.
Números com sinal e números sem sinal
Por serem implementados com maior facilidade nos circuitos elétricos a base 2 é a mais adequada para os computadores pois trabalham somente com dois valores 0 e 1.
Ex:
Faixa de numero sem sinal para 8 bits seria: (0 a 255)
0000 0000(2) = 0(10)
0000 0001(2) = 1(10)
0000 0010(2) = 2(10)
…
1111 1100(2) = 252(10)
1111 1101(2) = 253(10)
1111 1110(2) = 254(10)
1111 1111(2) = 255(10)
Como o tamanho de uma palavra manipulada por um computador tem tamanho limitado, os números que podem ser representados também têm tamanho limitado. Se o tamanho de uma palavra é igual a n bits, o maior número possível de ser representado é igual a 2n. Se ao realizarmos operações sobre os números, elas gerarem resultados que não podem ser representados na quantidade de bits reservados ocorre o que denominados de overflow (números muito grandes) ou underflow (números muito pequenos). Tanto o overflow quanto o underflow geram exceções e são tratados pelo sistema operacional.
Representação dos números:
- Números reais: infinitos.
- No computador: finitos.
- Maioria: grande quantidade de zeros à esquerda.
- Computador: pode lidar com números até um certo tamanho.
- Overflow: tratado pelo sistema operacional.
- No computador: é preciso representar números com sinal.
Solução: usar 1 bit (sinal magnitude).
- Primeira tentativa: o bit mais significativos (MSB) é usado para sinal.
Problema: duas representações para o zero
Solução mais usada: complemento a 2
Próximo post estaremos abordando a adição e subtração, aguardem.
Tipos de programação parte 4
13/08/08
Programação Modular
O que é:
Programação modular como próprio nome ja sugere é um paradgima de desenvolvimento de software no qual as rotinas são divididas em módulos e são interligados entre si através de uma interface comun.
Na programação modular, o programa principal coordena as chamadas aos módulos secundários e passa os dados necessários em forma de parâmetros.
Por sua vez cada módulo pode conter seus próprios dados e chamar a outros módulos ou funções.
Conceitos Básicos:
Existem dois tipos de SubProgramas:
Os que retornam um valor (funções)
Os que executam acções (procedimentos)
Um Módulo ou SubPrograma
· É um grupo de acções identificado por um nome.
· Pode executar as mesmas acções que um programa, receber valores, manipular esses valores, e produzir novos valores.
· Recebe informação do programa a que pertence e retorna a informação produzida a esse programa.
· Introduz uma nova estrutura de controlo: a chamada ou invocação de um subprograma.
· Quando é chamado (invocado), as acções do programa deixam
· Temporariamente de ser executadas e o computador começa executar as acções do subprograma.
· Quando termina a sua execução, o computador recomeça a execução das acções do programa, a partir da instrução que “chamou” o subprograma.
Principais Vantagens:
· Estrutura do programa fica mais clara ao agrupar funções e variáveis relacionadas num mesmo módulo.
· Possibilidade de compilar cada um dos módulos separadamente, poupando tempo.
· A reutilização das funções é facilitada
· Programas mais fáceis de escrever
· Programas mais fáceis de ler
· Programas, em geral, mais curtos
· Programas mais fáceis de modificar
· Abstração
Objetivo:
Facilitar a construção de grandes programas, através de sua divisão em pequenas etapas.(Módulos);
Fundamentos de Computação
11/08/08
Achei interessante esse Slide do Walter Cunha que fala sobre os fundamentos da computação. Vale a pena dar umas paginadas.
Para ilustrar ainda mais a diferença entre Hardware e Software existe aquela velha piadinha:
Hardware é tudo aquilo que você chuta e software é tudo aquilo que você xinga.
OBS: Lógico que não coloquem isso numa prova de concurso. hehehe…
Tipos de programação parte 3
06/08/08
Programação orientada a objetos (POO)
O que é:
Um dos paradigmas de análise, projeto e programação mais utilizados ultimamente. Pois é a que mais se aproxima de como expressamos as coisas na vida real.
Na POO, Implementa-se classes que definem os objetos do sistema. Essas classes definem como o objeto se comportará através de métodos e estados possíveis (atributos), assim como um possível relacionamento com outros objetos.
Principais Vantagens da POO:
- Maior facilidade para reutilização de código e por conseqüência do projeto
- Possibilidade do desenvolvedor trabalhar em um nível mais elevado de abstração
- Utilização de um único padrão conceitual durante todo o processo de criação de software
- Maior adequação à arquitetura cliente/servidor
- Maior facilidade de comunicação com os usuários e com outros profissionais de informática.
- Ciclo de vida mais longo para os sistemas
- Desenvolvimento acelerado de sistemas
- Possibilidade de se construir sistema muito mais complexo, pela incorporação de funções prontas
- Menor custo para desenvolvimento e manutenção de sistemas.
Conceitos Básicos:
- classe – é o molde do objeto, um programador define uma classe por onde todos os objetos serão moldados. Um exemplo de classe seria a classe humano.
- Objeto – é a instancia de uma classe, um objeto contém características (atributos), é capaz de interagir com outros objetos e de executar ações (métodos). Exemplo de um objeto da classe humano seria Pedro, Rafael, Carol.
- Atributo – São características de um objeto. Exemplo de atributos da classe humano seria nome, e-mail, idade, sexo, CPF.
- Método – Define ações do objeto. Exemplo de métodos da classe humano seria andar, falar, correr.
- Herança – É o mecanismo pelo qual uma classe (sub-classe) pode estender outra classe (super-classe), aproveitando suas ações (métodos) e características(atributos). Um exemplo de herança: Mamífero é super-classe de Humano. Ou seja, um Humano é um mamífero.
Algumas linguagens orientadas a objetos:
Smalltalk, Python, Ruby, C++, Object Pascal, Java e C#
Algumas linguagens com suporte a orientação a objetos:
Perl (a partir do 5), PHP (a partir do 4.0), ColdFusion, Javascript, ActionScript e VB.NET
Tipos de Programação Parte 2.
05/08/08
Programação Estruturada:
O que é:
Não existe uma definição universalmente aceita para a programação estruturada; ao contrário, existem várias escolas de pensamento que a conceituam.
No sentido mais restrito, o conceito de programação estruturada diz respeito à forma do programa e do processo de codificação. É um conjunto de convenções que o programador pode seguir para produzir o código estruturado.
Onde podemos preconizar que todos os programas possíveis podem ser reduzidos a apenas três estruturas: sequência, Seleção e iteração.
Estruturas Básicas de Controle
As três estruturas básicas de controle para a construção de programas estruturados :
Seqüência: É usada para controlar a execução do programa, os comandos são executados na mesma ordem em que aparecem no código fonte. As estruturas de seleção, iteração e desvio são usadas para alterar o fluxo de execução do programa de sua ordem seqüencial normal.
Seleção: É usada para testar uma condição e, então, dependendo de ser o teste verdadeiro ou falso, um dos dois conjuntos alternativos de instruções é executado.
Iteração: É usada para executar um conjunto de instruções em um número inteiro de vezes – isto é, para construir um laço (loop). Deve-se observar que existem duas formas básicas para a estrutura de iteração: DO UNTIL e WHILE.
Objetivos:
O principal objetivo da programação estruturada é produzir um programa de alta qualidade a baixo custo, proporcionando uma disciplina de programação para conseguir:
• Melhorar a confiabilidade do programa
• Aumentar a legibilidade do programa
• Minimizar a complexidade do programa
• Simplificar a manutenção do programa
• Aumentar a produtividade do programador
• Estabelecer uma metodologia disciplinada de programação
Quando Usar:
Aplicações de pequeno porte.
Vantagens
As principais vantagens da programação estruturada são:
· Os programas são mais fáceis de entender
· Reduz a complexidade das provas
· Aumenta a produtividade do programador
· Os programas ficam melhor documentado internamente.
Desvantagens:
· A capacidade de reúso de código é limitada pela interdependência entre procedimentos.
· A seqüência das chamadas pode se tornar demasiadamente emaranhada, o que dificulta muito a manutenção e a depuração de código.
· Não há possibilidade de se criar procedimentos mais específicos a partir de outros mais genéricos.
· Uma mudança na representação dos dados implica na alteração em cada local onde estes são acessados.
Observações:
Um programa está estruturado se possui um único ponto de entrada e só um de saída, existem de “1 a n” caminhos desde o princípio até o fim do programa e por último, que todas as instruções são executáveis sem que apareçam loops infinitos
Tipos de Programação.
04/08/08
Sabemos que existem vários tipos de programação que diferem umas das outras pelas técnicas aplicadas e métodos. O objetivo deste post é trazer uma visão imparcial de cada tipo de programação, onde iremos mostar a particularidades de cada um do tipos de programação desde a programação estruturada, a programação Orientada a aspectos e até mesmo, por que não a programação orientada a GAMBIARRA(POG).
Acho por bem começarmos logo com ela que é usada por quase todos os programadores: Programação Orientada a Gambiarra, bem suas particularidades:
- Esse tipo de programação é a que está de fato no dia a dia de todo programador;
- Com a POG temos sistemas Sistemas mal projetados;
- Falta de vontade;
- Falta de tempo;
- Gente que pensa que é DBA; - Em pouco tempo de convivio com a programação propriamente dita pude perceber uma coisa, se esta funcionando Deixa!.
Esses são os fundamentos da POG.
Por definição temos como Gambiarra: é o nome dado informalmente ao procedimento necessário para a configuração de um artefato improvisado.
No próximo post, irei Trazer sobre a programação Estruturada e Modular.
Até a próxima.





