Escola de TI: 2011
A VIRTUALIZAÇÃO NO FUTURO
A virtualização está chegando com o vento em popa – suas vantagens econômicas são atrativas demais para serem resistidas. A adoção de tecnologias como a computação nas nunvens só corrobora para seu inevitável progresso. Será que daqui a alguns anos poderemos acessar nossos PCs de qualquer lugar do planeta? Só o tempo dirá.
Por falar em computação nas nuvens, segue um documentário interessante sobre o novo plano ambicioso da Google.
Postado por Escola de TI às 08:08 Nenhum comentário:
Postado por Escola de TI às 08:01 Um comentário:
Postado por Escola de TI às 18:11 Nenhum comentário:
Estes dias aprendi na facul o conceito de sistema binário. Para quem não sabe, sistema binário é um sistema de numeração formado por apenas dois algarismos: 0 (zero) e 1 (um). Ou seja, só admite duas possibilidades, sempre antagônicas, como: tudo / nada; ligado / desligado; presença / ausência, direito / esquerdo, alto / baixo, verdadeiro / falso, aceso / apagado.
Os Sistemas numéricos na informatica são muito utilizados. Basicamente o Micro Computador entende apenas 0 e 1, o qual chamamos de sistema Binário. Além do sistema binário nós temos outros sistemas numericos como Decimal, Hexadecimal, Octal, Binário. Cada sistema numérico é representado por uma base, segue abaixo a tabela de representação de cada número.
Binário: Base 2 (0,1)
Decimal: Base 10 (0,1,2,3,4,5,6,7,8,9)
Octal: Base 8 (0,1,2,3,4,5,6,7)
Hexadecimal: Base 16 (0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F)
No caso do hexadecimal é só pensarmos que as letras A corresponde a 10, B corresponde a 11, C corresponde a 12, D corresponde a 13, E corresponde a 14, F corresponde a 15.
Como foi dito logo acima os números binários são de base 2, vamos agora aprender como converter um numero da base decimal (10) para a base binária. Nós temos 2 formas para fazer isso uma mais simples e a outra por divisao.
Bem a Forma mais fácil de se pensar é a seguinte pegamos o numero 26 na base 10 e vamos converter para binário. Para isso basta montar a seguinte estrutura:
16 – 8 – 4 – 2 – 1
A conversão do número 26 para binário seria: 11010, é bem simples basta montar a tabela acima e vamos fazer uma soma simples, quais números somados dão 26, no caso 16 + 8 + 2 = 26, logo em baixo desses numeros entra 1 que corresponde a soma e nos outos 0, irei pegar outro número: 15 na base 10 que ficaria: 01111, os números que correspondem a soma 15 são 8 + 4 + 2 + 1 = 15.
A outra forma de conversão é por divisão. Para isso vamos montar a estrutura abaixo e vamos converter o mesmo número acima 26 decimal para binário.
26/2 = 13 e resto da divisao 0
13/2 = 6 e resto da divisao 1
6/2 = 3 e resto da divisao 0
3/2 = 1 e resto da divisao 1
1/2 = 0 e resto da divisao 1
Bem vamos entender o que foi feito. Pegamos o número 26 e fomos dividindo ele por 2 como repararam. Agora por que por 2 ? Simples porque a base que nós queremos é a base Binária que é 2, então se queremos converter decimal para binário basta dividir o número para a base correspondente no caso 2 e juntar os número de cima para baixo: 1 1 0 1 0 = 26 decimal. Como podem observar é sempre o resto da divisao que é o importante.
Vamos agora aprender a converter de Binário para Decimal. A fórmula é a seguinte:
M x 2*
Vamos pegar como exemplo o 11010.
11010 = 1×2⁴ + 1×2³ + 0×2² + 1×2¹ + 0×2⁰= 16 + 8 + 2 = 26
Para entender essa equação é muito simples basta multiplicar o primeiro número binário no caso 1 pela base binária 2 e ver quantos números vem depois do primeiro 1 e elevar eles. Exemplo 1 é o primeiro número e restam o 1010 ou seja 4 números então elevamos ele o 2 a ⁴ e depois vemos o segundo numero que é 1 e resta 010 ou seja 3 numeros então elevamos ele a ³ sempre diminuindo até zero.
Fonte: www.kretcheu.com.br
Bom agoras mudamos completamente de base e vamos focar a base 10 que é a decimal. Bem já vimos a conversao de decimal para binário e binário para decimal, vamos ver agora a conversao de decimal para octal e octal para decimal.
26/8 = 3 e resto 2
3/8 = 0 e resto 3
Bem simples agora pegamos de cima para baixo dando 328 . Reparem que na conversão nós pegamos o resto como conversao de decimal para binario, porém dividimos o número pela base a qual queremos a conversão no caso para a base 8.
Vamos agora ver a conversão de octal para decimal, segue a mesma fóruma de binario para decimal:
Vamos pegar o exemplo 32.
32 = 3 x 8¹ + 2 x 8⁰ = 24 + 2 = 2610
Os números Octais como foi mostrando anteriormente a sua base é 8. Estaremos agora mostrando a conversao de octal para binário.
Vamos pegar como exemplo o 3210 .
3/2 = 1 e resto 1
1/2 = 0 e resto 1
Bem dividimos o 3 agora vamos fazer o mesmo com o 2.
2/2 = 1 e resto 0
Ficando então 11010
Lembrando somando sempre de cima para baixo. Agora alguns vão perguntar mais e o 0 da terceira casa por que dele? Simples pois em casos de conversão de octal ele ocupa 3 bits . É necessário fazer par de 3 contando da esquerda para a direita no caso do 2 é 10 e precisamos fazer um par de 3 então acresentaremos um zero ficando 010, já no caso do 11 não é necessário pois o primeiro par pode ficar com 2.
Agora já conhecemos como funciona a conversão de octal para binario vamos ver como converter binario para octal. Vamos usar como exemplo o mesmo valor acima 110102 .
11 0102 =
11 = 1×2¹ + 1×2⁰ = 2 + 1 = 3
010 = 0×2² + 1×2¹ + 0×2⁰ = 2
Resultando no valor: 328
A base Hexadecimal como foi mostrado na introdução é de base 16. Vamos mostra a conversao de decimal para hexadecimal, iremos usar como exemplo agora um valor alto no caso pegaremos o 47810.
478/16 = 29 e resto 14
29/16 = 1 e resto 13
1/16 = 0 e resto 1
Bem simples agora pegaremos o resto da divisao de cima para baixo ficando: 1DE16, lembrando que os numeros 10,11,12,13,14,15 correspondem as letras A,B,C,D,E,F .
Agora iremos fazer uma conversao de Hexadecimal para Binário, iremos usar como exemplo o 1DE16, no sistema hexadecimal é necessário 4 Bits para representar em binário.
Bem sabemos que o 1 em hexadecimal corresponde a 1 binario. Agora iremos fazer o D (13).
13/2 = 6 e resto 1
6/2 = 3 e resto 0
3/2 = 0 e resto 1
Fonte: www.compilandoideias.com.br
Postado por Escola de TI às 10:02 Nenhum comentário:
Constantes Caracter
Dados literais ou alfa-numérico
Existem 4 tipos de Dados:
Cada um destes tipos de dados será detalhado nas próximas seções.
1 - Dados Numéricos
O conjunto de dados mais comuns é o de números naturais, que é representado por N. Este conjunto é definido como
Este conjunto de números é usado quando queremos falar sobre o número de amigos que temos ou quantos CDs musicais temos na nossa coleção. Embora seja fácil imaginar que um pastor de ovelhas há 3000 anos pudesse usar este conjunto com facilidade, é bom lembrar que o conceito do número zero é difícil de ser entendido. O conjunto dos números naturais usado pelos primeiros seres humanos não incluía o zero. Os pastores sabiam que se 20 ovelhas tinham ido para os campos, eles tinha de esperar pelas mesma 20 ovelhas na volta à noite. Agora se não havia ovelhas para que precisassem contar, somar ou subtrair? A natureza tem horror ao vácuo e o nada é um conceito complicado para os seres humanos. O número zero é uma invenção dos matemáticos hindus e é recente, sendo introduzido em XXXX aproximadamente.
O conjunto dos números naturais é subconjunto dos conjunto dos números inteiros que é definido como
Z = {...,-3,-2,-1,0,+1,+2,+3,...}
Aqui estamos falando de conceitos mais complicados que hoje em dia já fazem parte do nosso dia a dia. Estamos no domínio dos números relativos, que incluem os números positivos, o zero e os números negativos. A mente humana teve de atingir graus de abstração maiores para imaginar operações que incluíam números negativos. Hoje em dia não é necessário ser um matemático pós-graduado para trabalhar facilmente com este tipo de números. Todos nós somos capazes de perceber que uma temperatura de -3 graus centígrados e mais fria do que +3 graus. Quem não fica preocupado quando sabe que sua conta corrente no banco está com saldo de -300 reais. Rapidamente iremos tentar transformar este número negativo em número positivo, e o que mais importante sabemos que precisamos de pelo menos 300 reais para sair do vermelho.
O próximo conjunto na nossa curta viagem pelos domínios dos números é o conjunto dos números fracionários, que é representado por Q. Este conjunto é composto por todos os números que podem ser escritos como uma fração da forma p/q onde p e q pertencem ao conjunto dos números inteiros. Este conjunto pode ser definido como:
Q = {p/q | p, q pertencem a Z}
Continuando nesta excursão vamos para o conjunto dos números reais (R) que é a união do conjunto dos números fracionários e o dos números irracionais. Números irracionais não são os números que não conseguem pensar, mas sim aqueles que não podem ser expressos por uma fração p/q. Um exemplo muito conhecido de número irracional é o PI que é igual a 3.14159...
O último conjunto é o dos números complexos. Neste conjunto os números são representados da seguinte maneira
n = a + ib
Os números a e b são números reais e i representa a raiz quadrada do número inteiro -1. Quando b é igual a 0 o número é um número pertencente ao conjunto dos reais. Como pode-se ver, a medida que fomos passando de um conjunto para outro, aumentou o nível de abstração das quantidades que os números pertencentes aos conjuntos representam.
A Figura a seguir é uma representação das relações de pertinência entre os conjuntos de números que analisamos até aqui.
Os dados numéricos que os algoritmos que iremos criar e que a maioria dos computadores manipulam são de dois tipos:
Neste ponto é importante assinalar dois fatos importantes. Primeiro computadores trabalham com uma base diferente da base que usamos todos dias que é a base 10. Computadores usam a base 2, e no processo de conversão entre bases podem ocorrer problemas de perda de dígitos significativos. Por exemplo, o número real 0.6 ao ser convertido para a base dois gera uma dízima periódica.
Outro fato importante é que a largura das palavras de memória do computador é limitada e portanto o número de dígitos binários que podem ser armazenados é função deste tamanho. Isto é similar ao que aconteceria se tivéssemos que limitar o número o dígitos decimais que usamos para representar os números de nossas contas no banco. Por exemplo, assuma que só podemos armazenar quantias com 6 dígitos inteiros e dois decimais, deste modo se ganhássemos na loteria R$ 1.000.000,00 não seria possível representar este valor no extrato do banco. Portanto no processo de conversão e desconversão entre bases pode haver perda de informação.
O conjunto dos dados inteiros pode ser definido como
Z={...,-3,-2,0,1,2,...}.
As linguagens usadas para programar computadores são muito exigentes com a maneira com que os dados são representados. Por esta razão vamos passar a definir como deveremos representar os dados nos algoritmos. Os dados inteiros tem a seguinte forma:
NúmeroInteiro = [+,-]algarismo{algarismo}
Neste texto iremos usar uma notação especial para definir como iremos representar os elementos da linguagem. A medida que formos apresentando os elementos a notação será também explicada. No caso da definição dos dados inteiros temos os seguintes elementos. O elemento básico é o algarismo que é um dos seguintes caracteres:
algarismo = 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9
Os elementos entre colchetes são opcionais. Portanto, o sinal de + e - entre colchetes significa que um número inteiro pode ou não ter sínal. Em seguida temos um algarismo que é obrigatório. Isto é dados inteiros tem de ter pelo menos um algarismo. A seguir temos a palavra algarismo entre chaves, o que significa que um número inteiro deve ter pelo menos um algarismo e pode ser seguido por uma sequência de algarismos. Deste modo elementos que aparecem entre chaves são elementos que podem ser repetidos.
Como exemplos de formas erradas de representação de números inteiros, temos:
Não é possível usar ponto decimal
Espaços em branco não são permitidos
[+,-]algarismo{algarismo}.algarismo{algarismo}.
Ou seja um número real pode ou não ter sinal, em seguida um conjunto de pelo menos um algarismo, um ponto decimal e depois um conjunto de pelo menos um algarismo. É importante notar que o separador entre a parte inteira e a fracionário é o ponto e não a vírgula.
Abaixo mostramos exemplos de formas erradas de representação de números reais, temos:
Vírgula não pode ser separador entre as partes real e inteira
Não é possível usar representação de dízimas
2 - Dados Literais
Dados literais servem para tratamento de textos. Por exemplo, um algoritmo pode necessitar de imprimir um aviso para os usuários, ou um comentário junto com um resultado numérico. Outra possibilidade é a necessidade de ler dados tais como nomes, letras, etc.
Este tipo de dados pode ser composto por um único caracter ou por um conjunto de pelo menos um destes elementos. Conjuntos são conhecidos como cadeias de caracteres, tradução da expressão em inglês, "character string".
Um ponto importante que deve ser abordado agora é o que se entende por caractere. Caracteres são basicamente as letras minúsculas, maiúsculas, algarismos, sinais de pontuação, etc. Em computação caracteres são representados por códigos binários e o mais disseminado de todos é o código ASCII. Este padrão foi definido nos Estados Unidos e é empregado pela quase totalidade dos fabricantes de computadores e programas. O apêndice mostra a tabela ASCII com estes códigos.
Os caracteres que normalmente são empregados nos algoritmos são os seguintes:
Caracteres de pontuação:
; | : | ! | ? | * | ( | ) | \ | / | + | - | = | < | >
Caracteres podem aparecer sozinhos, e neste caso são chamados de constante caracter e são representados entre o caracter '. Abaixo mostramos exemplos de constantes caracter:
Cadeias de Caracter
Cadeias de caracteres são conjuntos de um ou mais caracteres e são cercados pelo caracter ". Por exemplo:
3 - Dados Lógicos
Este tipo de dados é intensamente aplicado durante o processo de tomada de decisões que o computador freqüentemente é obrigado a fazer. Em muitos textos este tipo de dados também é chamado de dados booleanos, devido a George Boole,
matemático que deu ao nome à álgebra (álgebra booleana) que manipula este tipo de dados. Os dados deste tipo somente podem assumir dois valores: verdadeiro e falso.
Computadores tomam decisões, durante o processamento de um algoritmo, baseados nestes dois valores. Por exemplo, considere a sentença a seguir que é um caso típico de decisão que o computador é capaz de tomar sem intervenção humana.
Se está chovendo então procurar guarda-chuva.
Nesta sentença temos a questão lógica "Se está chovendo". Esta expressão somente pode ter como resultado um de dois valores: verdade ou falso. Nos nossos algoritmos estes valores serão representados por verdade e falso. Mais adiante ficará claro como este tipo de dados será empregado nos algoritmos.
4 - Ponteiros
Antes de pensarmos em ponteiros, é importante nos lembrarmos
de alguns aspectos referentes à variáveis. Dependendo do seu conhecimento de programação, você deve saber que variáveis possuem nomes que as identificam durante a execução do programa. Você deve saber também que uma variável armazena um valor (que pode ser fixo, no caso de uma constante, ou pode mudar durante a execução de seus códigos).
// variável do tipo int
// ponteiro para uma variável do tipo int
int *p = &valor;
// exibe o valor da variável "valor", apontada
// pelo ponteiro p
Ponteiros são ferramentas muito importantes na programação em C. No entanto, é preciso ter muito cuidado ao lidar com eles. A primeira coisa a ter em mente é que um ponteiro não está apontando para nenhum lugar até que atribuímos a ele o endereço de outra variável. E é aí que mora o perigo. Um programa entra em colapso absoluto se tentarmos acessar um ponteiro que aponta para um local de memória que já foi
liberado novamente ao sistema. No caso menos grave, estaremos tentando acessar locais de memória inválidos ou reservados a outros programas ou tarefas do sistema operacional. Isso nos lembra os velhos tempos da tela azul de morte.