segunda-feira, 4 de maio de 2009

Renascer das cinzas

Olá pessoal. Fiquei um tempo grande sem postar, mas sinto que é preciso reagir aos problemas encontrados durante a realização deste curso, então vou começar postando o endereço de um site que estou criando para disponibilizar o conteúdo de forma detalhada. Aí vai galera o link http://valentin.hd1.com.br/.


Um abraço a todos

segunda-feira, 10 de março de 2008

FAC - Aula 06: Princípios Aditivo e Multiplicativo

Módulo: 03

Índice:

1. Objetivos
2. Importância
3. Princípio Aditivo
4. Princípio Multiplicativo
5. Extensão do Princípio Aditivo
6. Extensão do Princípio Multiplicativo
7. Bibliografia

1. Objetivos
  • Apresentar as idéias e técnicas básicas para resolver problemas de contagem.
  • Dividir um problema grande a vários problemas pequenos, usando os Princípios Aditivos e Multiplicativo.
2. Importância
  • Os problemas de contagem estão inseridos naturalmente na nossa vida diária.
  • Em alguns casos estamos apenas interessados em contar os elementos de um determinado conjunto, sem enumerá-los.
  • No desenvolvimento de técnicas de contagem que serão abordadas nas aulas posteriores, tais como: permutações, combinações, etc. estaremos usando basicamente os Princípios Aditivo e Multiplicativo.
3. Princípio Aditivo
  • Princípio Aditivo (para dois conjuntos)
  • Se A e B são dois conjuntos disjuntos (A ? b = ?), então n (A ? B) = n (A) + n(B)
  • Outra notação usual

4. Princípio Multiplicativo
  • Este princípio lida com situações em que uma tarefa se divide em várias etapas. Vamos ver um exemplo.
  • Uma pessoa mora em Nova Iguaçu e trabalha em Copacabana. Ela vai trabalhar todos os dias usando apenas transporte coletivo. Esta pessoa vaia de Nova Iguaçu ao Centro do Rio tomando ônibus, van ou trem. Do Centro do Rio, pode ir a Copacabana de ônibus, van ou metrô. Levando em conta apenas estas possibilidades, de quantas maneiras ele poderá ir de cada ao trabalho?
  • inserir figura
  • Neste caso podemos contar facilmente todas as 9 possibilidades:
  • {(V,


5. Extensão do Princípio Aditivo

6. Extensão do Princípio Multiplicativo

7. Bibliografia

sábado, 1 de março de 2008

PDA - Aula 07: Desvios Condicionais

* Esta obra é uma adptação do autor desse blog da disciplina de Fundamento de Algoritmo para Computação do curso de Tecnologia em Sistemas de Computacão/Cederj UFF das aulas originais cujo os autores são: Adriano Cruz e Jonas Knopman.

Conteúdo:
  1. Objetivos
  2. Comando de desvio
  3. Comando de desvio aninhado
1. Objetivos
  • Apresentar o comando de desvio
  • Apresentar o funcionamento dos comandos de desvio aninhados
2. Comando de desvio
  • Permite que o algoritmo decida autonomamente entre dois caminhos possíveis, qual irá executar.
Traga a cesta com as batatas Se a roupa é clara então coloque avental Fim se Descasque as batatas

Bloco de comandos
  • Os comandos na nossa linguagem são escritos um por linha
  • Não há nenhum sinal de pontuação ao final da linha
  • Um bloco de comandos é uma série de comandos
  • Em um bloco ou todos os comandos são executados ou nenhum é.
leia n1, n2
media <- (n1+n2)/2 imprima 'A média vale ', media

Fluxograma do desvio
  • Somente um dos blocos de comando é executado.


se então bloco de comandos 1 senão bloco de comandos 2 fim se

Comando se simplificado
  • Caso o bloco de comandos depois do senão seja vazio, esta parte pode ser omitida
  • A forma geral simplificada é:
se então bloco de comandos fim se

Fluxograma se simplificado
  • Neste caso o bloco de comandos é executado somente se a condição for verdadeira
  • Caso contrário o algoritmo prossegue normalmente


início
acorde
se estiver fazendo sol então
vai à praia
senão
lê jornal
dorme
acorda
fim se
almoça
fim

Sequencia de ações

Se estiver fazendo sol
acorda
vai à praia
almoça

Senão
acorda
lê jornal
dorme
acorda
almoça

Exemplo algoritmo

Ler dois números e imprimir o maior
início
imprima 'Primeiro número?'
leia num1
imprima 'Segundo número?'
leia num2
se num1 > num2 então
imprima 'O maior é ', num1
senão
imprima 'O maior é ', num2
fim se
fim

Comando se aninhado
  • As duas formas do comando se podem aparecer dentro de outros comando se.
  • Diz-se que o comando se interno está aninhado no comando se externo.

se estiver sol então
se eu tiver dinheiro então
Vou à praia
fim se
fim se

  • Como o computador liga um fim se a um se?
  • A indentação não é significativa para os compiladores!
  • O fim se estará relacionado com o se mais próximo.
Usando comando se aninhado
  • Observe as seguintes construções:
se estiver sol então
se eu tiver dinheiro então
vou à praia
fim se
fim se
ou
se estiver sol e
eu tiver dinheiro
então
vou à praia
fim se
  • As duas construções são equivalentes. Então, quando usar comandos aninhados?
Quando usar comando aninhado?

  • Quando tivermos de executar blocos de comandos diferentes para a cláusula senão das duas condições.

se estiver sol então
se eu tiver dinheiro então
Vou à Fazenda Felicidade
senão
Vou à praia
fim se
senão
Vou dormir
fim se

Como construir sem aninhamento?

  • Construir o exemplo anterior sem aninhamento.
  • Construir o exemplo anterior sem aninhamento.

se estiver sol e tiver dinheiro então Vou à Fazenda Felicidade
fim se

se estiver sol e não tiver dinheiro
então Vou à praia
fim se

se não estiver sol então
Vou dormir
fim se

Um exemplo

  • Exemplo: Uma empresa vai dar um abono aos empregados que tenham mais de 1 ano de casa: 10% para os que tenham menos de 10 anos e 25% para os demais. Calcule o abono de um dado funcionário, dado o seu salário e o tempo de casa




Exemplo: Solução

início
imprima 'Entre com o salario: '
leia salario
imprima 'Entre com o tempo de servico:'
leia tempo
se tempo > 1 então
se tempo < style="font-weight: bold;">Outro exemplo

  • Sistema de controle de temperatura

PDA - Aula 06: Operadores e Expressões 2

* Esta obra é uma adptação do autor desse blog da disciplina de Fundamento de Algoritmo para Computação do curso de Tecnologia em Sistemas de Computacão/Cederj UFF das aulas originais cujo os autores são: Adriano Cruz e Jonas Knopman.

Conteúdo:
  1. Objetivos
  2. Operadores Relacionais
  3. Expressões Relacionais
  4. Operadores Lógicos
  5. Expressões Lógicas
  6. Expressões Mistas
  7. Atribuição
  8. Bibliografia
1. Objetivos
  • Apresentar os diversos tipos de operadores e expressões.
  • Mostrar como as expressões devem ser escritas em pseudo-código.
  • Mostrar as regras de avaliação de expressões.
  • Apresentar o conceito de atribuição de resultados.
2. Operadores Relacionais
  • Usados para fazer comparação entre dados compatíveis.

  • O resultado de uma expressão que envolve operadores relacionais é do tipo lógico (verdadeiro ou falso).
  • No curso do PDA Cederj/UFF são considerados que os operadores deste grupo têm a mesma prioridade entre si.
3. Expressões Relacionais
  • Considere a=3, b=7, total=200.0, média=8.1 e ano=2000
  • a > b -- resultado falso
  • total = 100.0 -- resultado falso
  • média >= 7.0 -- resultado verdadeiro
  • ano <> 2001 -- resultado verdadeiro
Exemplos:
  • Considerando a=3, b=7, t=20.0 e m=8.1 qual o resultado das expressões?
  • t <> 100.0
  • (m + b) <= 7.0
  • (t/(b+a)) = 2.0
Solução
  • Temos a=3, b=7, t=20.0 e m=8.1.
  • t <> 100.0 -- resultado verdadeiro
  • (m + b) <= 7.0 -- resultado falso
  • 1a. Operação m+b = 15.1
  • 2a. Operação 15.1 <= 7.0 resultado falso
  • Temos a=3, b=7, t=20.0 e m=8.1.
  • (t/(b+a)) = 2.0
    • 1a. Operação: b+a = 10
    • 2a. Operação: t / 10 = 20.0 /10 = 2.0
    • 3a. Operação: 2.0 = 2.0 portanto resultado verdadeiro

  • Usados em expressões cujo resultado dever ser ou o valor verdadeiro ou falso


4. Operadores Lógicos
  • Existem outros operadores lógicos, como por exemplo, os operadores ou-exclusivo, ne (não e), nou (não ou).
  • Estes outros operadores podem ser obtidos a partir dos três já definidos (e, ou e não).
  • Como os operadores aritméticos estes operadores também têm uma “tabuada”.
  • A ou B tem como resultado verdadeiro se A ou B for igual a verdadeiro.
  • A e B tem como resultado verdadeiro somente se A e B forem iguais a verdadeiro.

  • Algumas vezes estas tabelas são mostradas com o algarismo 0 representando falso e 1 verdadeiro.
  • Para ilustrar os resultados dos operadores lógicos vamos usar como exemplo interruptores que devem ser usados para acender lâmpadas.


  • Lâmpada acende (verdade) somente se interruptor a e interruptor b estiverem ligados (verdade).

  • Lâmpada apaga (falso) porque interruptor a está desligado (falso).
  • Basta um interruptor desligado para que a lâmpada apague.

  • Para a lâmpada acender (verdade) basta pelo menos um interruptor ligado (verdade).

  • Para a lâmpada apagar (falso) é necessário que os dois interruptores sejam desligados (falso).
  • Considere a=falso, b=verdadeiro e c=falso.
  • a e b ou c -- resultado falso
  • 1a. Operação: a e b = falso e verdadeiro = falso
  • 2a. Operação: falso ou c = falso ou falso = falso
  • Considere a=falso, b=verdadeiro e c=falso.
  • não a e b -- resultado verdadeiro
    1a. Operação: não a = não falso = verdadeiro
    2a. Operação: verdadeiro e b = verdadeiro e verdadeiro = verdadeiro
  • Considerando a=falso, b=verdadeiro e c=falso, qual é o resultado das expressões?
  • a e (b ou c)
  • não (a e b)
  • a ou b ou c
5. Expressões lógicas
  • Considerando a=falso, b=verdadeiro e c=falso temos:
  • a e (b ou c) -- resultado falso
    1a. Operação: b ou c = verdadeiro ou falso = verdadeiro
    2a. Operação: a e verdadeiro = falso e verdadeiro = falso
  • Considerando a=falso, b=verdadeiro e c=falso temos:
  • não (a e b) -- resultado verdadeiro
    1a. Operação: a e b = falso e verdadeiro = falso
    2a. Operação: não falso = verdadeiro
  • Considerando a=falso, b=verdadeiro e c=falso temos:
  • a ou b ou c -- resultado verdadeiro
    1a. Operação: a ou b = falso ou verdadeiro = verdadeiro
    2a. Operação: verdadeiro ou c = verdadeiro ou verdadeiro = verdadeiro
6. Expressões mistas
  • É muito comum em algoritmos juntar operadores relacionais e lógicos em expressões.
  • Estas expressões são geralmente do tipo
    (nota1 > 7.0) ou (nota2 > 7.0)‏
    (salario > valor) e (ano > 2001)‏
  • O resultado destas expressões é do tipo lógico (verdadeiro ou falso).
  • Considerando l1=5.0, l2=3.0, l3=4.0 e l4=7.1:
  • (l1 > l3) e (l2 > l4) -- resultado falso
    1a. Operação: 5.0 > 4.0 = verdadeiro
    2a. Operação: 3.0 > 7.1 = falso
    3a. Operação: verdadeiro e falso = falso
  • É possível juntar também operadores aritméticos.
  • Considere l1=5.0, l2=3.0, l3=4.0 e l4=7.1, qual o resultado da expressão?
  • ((l1+2) = l3) ou (l2 <= l4) -- resultado verdadeiro 1a. Operação: 5.0 + 2 = 7.0 2a. Operação: 7.0 = 3.0 = falso 3a. Operação: 3.0 <= 7.1 = verdadeiro 4a. Operação: falso ou verdadeiro = verdadeiro
  • Considerando presente=verdadeiro , n1=7.5 e n2=6.5, qual é o resultado da expressão?
  • (((n1+n2)/2.0) >= 7.0) e presente
  • Considerando presente=verdadeiro , n1=7.5 e n2=6.5 temos:
  • Observe o uso de parênteses para indicar a prioridade das operações
  • (((n1+n2)/2.0) >= 7.0) e presente
    1a. Operação: n1+n2 = 7.5+6.5 = 14.0
    2a. Operação: 14.0/2.0 = 7.0
    3a. Operação: 7.0 >= 7.0 = verdadeiro
    4a. Operação: verdadeiro e presente = verdadeiro e verdadeiro = verdadeiro.
  • Em expressões podemos misturar vários tipos de operadores.
  • A tabela mostra a prioridade relativa dos operadores estudados.
7. Atribuição
  • O resultado de expressões normalmente deve ser armazenado em uma variável para uso futuro.
  • Costuma-se chamar de atribuição esta operação.
  • Em nosso pseudo-código o comando de atribuição é representado pelo símbolo 
  • Por exemplo:
    a  35 * 6 + 2
  • O comando acima faz com que o resultado da expressão (=212) seja armazenado na variável a.
  • Todo comando de atribuição pode ser dividido em duas etapas:

    2. Avaliação da expressão;
    3. Armazenamento do resultado da avaliação na posição de memória representada pela variável.
  • Considere x=10, y=5 e z=8.
  • As figuras abaixo mostram a memória antes e depois do comando de atribuição
    x <- y + z
‏‏

8. Bibliografia

http://equipe.nce.ufrj.br/adriano/algoritmos/apostila/expressoes.htm


terça-feira, 26 de fevereiro de 2008

PDA - Aula 05: Operadores e Expressões 1

* Esta obra é uma adptação do autor desse blog da disciplina de Fundamento de Algoritmo para Computação do curso de Tecnologia em Sistemas de Computacão/Cederj UFF das aulas originais cujo os autores são: Adriano Cruz e Jonas Knopman.

Índice


1. Objetivos
2. O que são Expressões?
3. Constantes
4. Tipos de Operadores
5. Operadores Aritméticos
6. Expressões Aritméticas
7. Bibliografia

1. Objetivos
  • Apresentar os diversos tipos de operadores e expressões.
  • Mostrar como as expressões devem ser escritas em pseudo-código.
  • Mostrar as regras de avaliação de expressões.
  • Apresentar o conceito de atribuição de resultados.
2. O que são Expressões?
  • Expressões combinam variáveis, operadores e constantes para produzir um resultado.
  • Variáveis são nomes usados para representar posições na memória onde estão dados que serão processados.
  • Constantes são símbolos usados para representar dados.
  • Operadores são usados para combinar as variáveis e constantes fornecendo um valor como resposta.
  • Notar que as regras variam de linguagem para linguagem de programação.
  • O conjunto de regras definido para este pseudo-código permite que o programador mude facilmente para outra linguagem de programação.
Exemplos de Expressões
  • 0.5 * base * altura
  • (nota1 + nota2) / 2.0
  • (temperatura > 0) e (quantidade <>
  • 4 mod 3 + 5
  • A > B
Observações nas Expressões
  • Observar que as expressões são escritas sempre em uma mesma linha.
  • Observar os símbolos usados para multiplicação (*) e divisão (/).
  • Avaliar primeiro as operações de maior prioridade, por exemplo (multiplicação e divisão).
  • Se temos de escolher entre operadores de mesma prioridade então escolher o que está mais à esquerda.
  • Ex. 4/2*3 -- primeiro divide-se 4 por 2 e em seguida multiplica-se o resultado por 3, dando como resultado 6
  • Caso queira trocar a prioridade use parênteses.
  • Não são permitidos outros símbolos para esta função tais como { } e [ ].
3. Constantes
  • Constantes aparecem em expressões do tipo
  • (lado1 + lado2) / 2
  • Nesta expressão temos a variável lado1 somada à variável lado2 e o resultado dividido pela constante 2.
  • Cada variável representa uma posição de memória.
  • As constantes são armazenadas junto com o código do programa, não ocupando espaço da área onde estão os dados.
  • Constantes podem ser do mesmo tipo que os dados que já estudamos e devem ser representados do mesmo modo.
  • Constantes podem ser dos seguintes tipos:
.: Inteiras
.: Reais
.: Caracteres
.: Cadeias de caracteres
  • Constantes inteiras como já visto para os dados inteiros têm o seguinte formato:
.: Inteiro = [‘+’ | ‘-’]algarismo{algarismo}
  • Exemplos de constantes inteiras:
+256
128
-32768
555
-12345
  • Constantes reais, também como já visto para os dados reais têm o seguinte formato:
Real =
[‘+’ | ‘-’]algarismo{algarismo}.algarismo{algarismo}
  • Exemplos de constantes reais:
3.141516
-22.354
+0.567
128.0
  • Constantes do tipo caractere serão representadas em nossos algoritmos pelo caractere entre ‘s.
  • Exemplos de constantes caractere são:
‘a’
‘0’
‘+’
‘ ’
‘A’
‘@’

  • Constantes cadeias de caracteres são conjuntos de caracteres e também devem ser representados entre ‘s.
  • Exemplos de cadeia de caracteres são:
‘Projeto de sistemas’
‘Pedro Silva’
’125’
‘Onde ela foi?’
  • Constantes do tipo lógica serão representadas em nossos algoritmos por verdadeiro e falso
4. Tipos de Operadores
  • Operadores são símbolos que indicam a operação que deve ser realizada entre os operandos (constantes e/ou variáveis).
  • Exemplos de operadores são: + e -
  • De acordo com o número de operandos envolvidos na expressão, os operadores podem ser classificados em:
.: Binários, quando atuam sobre dois operandos. Exemplo: soma
nota1 + nota2

.: Unários, quando modificam um único operando: Exemplo: sinal de –
-352
  • Operadores também podem ser classificados de acordo com o tipo dos operandos envolvidos.
  • De acordo com esta classificação os operadores podem ser divididos em:
.: Aritméticos, quando os operandos são dados aritméticos.
.: Exemplos:

a + b

4.0 * raio

.: Lógicos, quando os operandos são dados lógicos.

.: Exemplos:

optou ou saiu

maior e aprovado

não terminou

.: Relacionais, quando comparamos dados de tipos compatíveis e o resultado é um valor lógico.

Exemplos:

a > 10

x < -1 .: Caracteres, quando os operandos são dados do tipo caractere. .: Este tipo de operador não é padronizado e varia de linguagem para linguagem. .: Em nosso estudo não utilizaremos nenhum operador de caractere.
.: Um exemplo de operação comum em várias linguagens é a concatenação de duas cadeias de caracteres.

.: Símbolo + é usado em algumas linguagens para representar esta operação.

.: Considere as cadeias ‘dia’, ‘ ’, ‘de’ e ‘semana’

.: A operação

‘dia’ + ‘ ’ + ‘de’ + ‘ ’ + ‘semana’

.: cria a cadeia

‘dia de semana’

5. Operadores aritméticos



6. Expressões Aritméticas
  • Resultado é um valor numérico.
  • Os operadores aritméticos mostrados na tabela anterior estão classificados por prioridade.
  • Números baixos indicam maior prioridade, operações que devem ser executadas primeiro.
  • Os símbolos para multiplicação e divisão mostrados na tabela são os únicos permitidos na maioria das linguagens.
Expressões Aritméticas Representação



  • Não existem operações implícitas como em 4ac, que significa 4 vezes a vezes c.
  • A solução deve ser 4*a*c
  • Cuidado com expressões do tipo
  • A maneira correta é (a+b)/(c-d)‏
  • a + b / c – d equivale a


Observações nas Expressões Aritméticas
  • Expressões aritméticas que envolvem operandos inteiros fornecem resultados inteiros.
  • Expressões aritméticas que envolvem operandos reais fornecem resultados reais.
  • Em operações com dados de tipos diferentes (inteiro e real) os operandos são convertidos para o tipo real.
  • 1 / 4 – resultado 0
  • 1.0 / 4 – resultado 0.25
  • 1 / 4 + 7.1 – resultado 7.1
  • 1a. Operação: 1 / 4 = 0
  • 2a. Operacão: 0 + 7.1 = 7.1
  • (2 + 4)/(3 – 1) – resultado 3
    • 1a. Operação: 2 + 4 = 6
    • 2a. Operação: 3 – 1 = 2
    • 3a. Operação: 6 / 2 = 3

  • 10 mod 3 – resultado 1
.: O resto da divisão de 10 por 3 é igual a 1.

7. Bibliografia

dfaf

FAC - Aula 05: Indução Forte

Conteúdo:

1. Série de Fibonacci
2. Indução Forte
3. Indução Forte Generalizada
4. Questões de AD´s e AP´s
5. Bibliografia

1. Série de Fibonacci


????

segunda-feira, 25 de fevereiro de 2008

PDA - Aula 04: Variáveis

* Esta obra é uma adptação do autor desse blog da disciplina de Fundamento de Algoritmo para Computação do curso de Tecnologia em Sistemas de Computacão/Cederj UFF das aulas originais cujo os autores são: Adriano Cruz e Jonas Knopman.

Índice

1. Objetivos
2. Introdução
3. Modelo de Memória
4. Armazenamento de Dados Numéricos
  • Dados Inteiros
  • Dados Reais
5. Armazenamento de Dados Literais
6. Armazenamento de Dados Lógicos
7. Variáveis
8. Bibliografia

1. Objetivos
  • Apresentar o modelo de do computador
  • Mostras como os diversos tipos de dados são armazenados na memória do computador.
  • Apresentar o conceito de variável e sua utilidade no desenvolvimento de algoritmos.
2. Introdução
  • Variáveis são endereços de memória destinados a armazenar informações temporariamente.
  • Todo Algoritmo ou programa deve possuir variável!
  • Podemos classificar as variáveis em dois tipos as de Entradas e as de Saídas.
  • Variáveis de Entrada armazenam informações fornecidas por um meio externo, normalmente usuários ou discos.
  • Variáveis de Saída armazenam dados processados como resultados.
Exemplo:



  • De acordo com a figura acima A e B são Variáveis de Entrada e C é uma Variável de Saída.

3. Modelo de Memória
  • A memória é um conjunto ordenado de células, cada um identificada por um endereço.
  • A unidade mínima de informação na memória é o bit que consegue armazenar ou o valor 0 ou 1.
  • Um conjunto de 8 bits forma um byte.
  • Um conjunto de bytes, usualmente 4 (32 bits) forma uma palavra de memória.
Palavras e bytes

  • Usualmente uma palavra de memória é composta de 4 bytes.




  • A maioria das memórias são endereçadas por byte, portanto o endereço permite manipular o conteúdo de um determinado byte.
Memória e endereçamento
  • Memória com 2 - 1 palavras de 4 bytes.
  • Então n + 2 é o número de bits do endereço.
  • Podemos pensar cada byte como uma casa.
  • Uma palavra seria uma vila de casas.
  • A memória uma rua de vilas.
  • Suponha uma rua (memória) com 5 vilas (palavras), cada vila com 4 casas (bytes).
  • Temos endereços de casas indo de casa 0 até casa 19.
  • Temos endereço de vilas indo de vila 0 até vila 4.
  • Posso dar meu endereço como casa 6 ou casa 2 da vila 1.
  • Observar que 6 dividido por 4 (casas por vila) é igula a 1 com resto 2.
  • Em computação os endereços de memória começam sempre em 0.
Exemplo
  • Memória de 128 Mega (2?) bytes
  • Memória com 128 x 2 ? = 2? x 2 ? = 128 x 1.048.576 bytes
  • O endereço deve ter 27 bits
.: 7 bits devido aos 128 = 2 ?
.: 20 bits devido ao 2?
  • Se cada palavra de memória tem 4 bytes temos então 32 Mega palavras.
Bits e dados
  • Cada tipo de dado requer uma quantidade de bits para armazenar o valor.
  • Esta quantidade é variável e depende da linguagem e do computador.
  • Atualmente computadores típicos possuem memória com palavras de 32 bits, ou 4 bytes.
4. Armazenamento de Dados Numéricos

Armazenamento de Inteiros

  • O conjunto dos números inteiros ( Z = {..., -2, -1, 0, +1, +2, ...}) contém uma quantidade infinita de elementos.
  • Como o número de bits disponíveis na memória para armazenar os números é finito não é possível representar todos os números deste conjunto.
  • Considere uma palavra de 32 bits.
  • Um bit é reservado para o sinal.
  • O bit mais significativo está à esquerda e menos significativo à direita;
  • Um número interio i pode variar entre
- 2 ? <= i <= 2 ? = 1
-2.147.483.648 <= i <= 2.147.483.647
  • Como não temos + 0 e - 0, há um número negativo a mais que os positivos.
fig??

  • Observar que não podemos armazenar números maiores que 2.147.483.647 e menores que -2.147.483.648.
  • Isto pode ser contornado, em alguns casos, empregando-se os números reais que veremos em seguinda.
Armazenamento de Reais
  • Os números reais também são armazenados em 32 bits.
  • Estes números são, as vezes, chamados de números em ponto flutuante devido a forma como eles são processados.
  • O método é parecido com a notação científica que algumas calculadoras empregam.
Notação Científica
  • Os números em notação científica nas calculadoras são expressos por um número real normalizado multiplicado por um número elevado a uma potência.
  • Ex. 1,5 E + 8 = 1,5 X 10?
  • Um número normalizado implica que antes da vírgula somente deve aparecer um algarismo.
  • Ex. (5,0 E+8) + (6,0 E+8) = 11,0 E+8
  • Resultado final = 1,10 E+9
Armazenamento de Reais

O conjunto dos números reais contém uma quantidade infinita de elementos.
Como o número de bits para armazenar os números é finito não é possível representar todos os números deste conjunto.

Reais em bits
  • Considere uma palavra de 32 bits.
  • Um bit é reservado para o sinal.
  • Oito bits são reservado para o expoente.
  • A base do expoente depende do computador, normalmente 2.
  • Vinte e três bits são usados para o número real, chamado de mantissa.

fig. ??/

Quais números reais?

  • Computadores tem dificulade de armazenar os números reais muito grandes e os muito pequenos.
  • Os subconjunto dos números reais disponíveis pode ser representado como

fig???

  • O zero está incluído no conjunto.
  • Para uma palavra de 32 bits temos RMAX = 3.4 E + 38 e RMIN = 3.4 E -38
5. Armazenamento de Dados Literais

Armazenamento de caracteres

  • O código de caracteres normalmente empregado é o ASCII que precisa de 8 bits ou um byte.
  • Como os computadores endereçam a memória por bytes então é possível armazenar um caractere por byte.
  • Para armazenar um conjunto de caracteres normalmente se emprega um conjunto de bytes.
6. Armazenamento de Dados Lógicos

Valores Lógicos

  • Este tipo de dado somente possui dois valores verdadeiro e falso.
  • Portanto um bit é suficiente para armazenar estes dados.
  • Normalmente se usa um byte inteiro para armazenar valores lógicos devido a dificuldade de endereçar bits.
7. Variáveis
  • Diversos tipos de dados são armazenados na memória.
  • A memória é endereçada por meio de números.
  • Para procurar um determinado dado na memória seria preciso saber o número da palavra (ou byte) onde este dado está armazenado.
  • Este método seria complicado e ilegível.
  • Mais fácil empregar nomes como fazemos com as ruas de nossa cidade.
Nome de Variáveis
  • Variáveis receberão nomes.
  • Cada variável deve receber um nome diferente para poder ser identificada sem problemas.
  • Estes nomes deverão ser utilizados sempre que quisermos modificar ou saber o conteúdo de uma posição na memória do computador.
  • As regras para criação dos nomes das variáveis são as seguintes:
.: Um nome de variável pode conter letras, algarismos e o caracter_(sublinha);
.: Um nome de variável deve necessariamente começar por uma letra;
.: Um nome de variável não deve conter nenhum símbolo diferente de letras ou algarismo, exceto o símbolo_(sublinha)
.: Não existe limitação para o número de caracteres do nome;
.: Não será feita diferenciação entre letras maiúsculas e minúsculas.

Dicas
  • Escolher nomes significativos para as variáveis
.: P. Ex. salario, total, nota, pagamento
  • Nomes significativos ajudam a tornar os algoritmos e os programas auto-explicativos
  • Nomes de variáveis com mais de uma palavra podem ajudar também
  • Sempre as palavras por sublinhados
.: P. Ex. toal_pagamentos, prova_final
  • Não é necessário alongar desnecessariamente os nomes.
.: P. Ex. total_de_recebimentos_do_ano, variavel_nota
  • Evitar nomes que não ajudem o entendimento do algoritmo.
Exemplos de nomes corretos
  • soma
  • salario_total
  • nota_final
  • prova1
  • velocidade_inicial
Exemplos de nomes incorretos
  • soma$................$ não é permitido
  • salario total.......Espaço em branco não é permitido
  • 2prova...............Não começou por uma letra
  • Salario/hora...../não é permitido
Bibliografia

ss??