quinta-feira, 29 de agosto de 2013

Permutação com Elementos Repetidos

Se entre N elementos de um conjunto, existem A elementos repetidos, B elementos repetidos e C elementos repetidos e assim sucessivamente, o número total de permutações que podemos formar é dado por:

Pn (a,b,c) = __n!__
                   a! .b! .c!
Exemplo:
Determine o número de anagramas da palavra MATEMÁTICA (não considere o acento).
Pn (m2,a3,t2) = ___n!____  =  __10!__
                          m! a! t!          2! 3! 2!

10 . 9 . 8 . 7 . 6 . 5 . 4 . 3 . 2 . 1  =  3628800 = 151200
        (2.1) . (3.2.1) . (2.1)                    2.4

Quantos são os anagramas possíveis da palavra ULISSES.

Pn(s3) = _7!_ =  _7.6.5.4.3.2.1_ = _5040_ = 840
                 3!             3.2.1                   6

quarta-feira, 28 de agosto de 2013

Análise Combinatória - Exercícios Resolvidos

1 – Quantos anagramas tem a palavra LICOROSO?
R. Nesse exercício trabalharemos com permutação, em que 8 é o total de letras, e 3 é a quantidade de repetições, no caso da letra "O".

Pn(o3) = __8!__ = _8.7.6.5.4. 3!_ = 6720 anagramas
                    3!                3!

Se houvessem outras letras repetidas, dividiríamos o total de letras pelo número de repetições haveria, exemplo com a palavra PARAR:

PARAR = possui 5 letras
A = 2 repetições

R = 2 repetições

P5(2,2) = __5!__ = _5. 4. 3. 2!_ =  60  = 30 anagramas
                  2! 2!            2! 2!             2

2 – Numa sala de baile há 6 moças e 6 rapazes. De quantos modos distintos podemos formar um casal para danças?
R. Nesse caso, trabalharemos com um Arranjo (12,2), sendo 12 o total de pessoas e 2 os arranjos que desejamos fazer, visto que queremos formar casais.

A12,2 = __12!__ = 12.11.10! = 132 casais distintos.
              (12-2)! 10!

3 – Com os dígitos 1,2,3,7 e 9 quantos números com 5 algarismos distintos podemos formar?
R. 5.4.3.2.1 = 120 números distintos.


4 – Quantos anagramas podemos formar com a palavra LIVRO começando com a letra L?
R. LIVRO | L 4.3.2.1 = 24 anagramas.

segunda-feira, 26 de agosto de 2013

Você sabe o que é Análise Combinatória?

Sua origem deu-se pela necessidade de calcular o número de possibilidades existentes de algo, que levou ao desenvolvimento da Análise Combinatória, parte da Matemática que estuda os métodos de contagem.
A análise combinatória visa desenvolver métodos que permitam contar – de uma forma indireta – o número de elementos de um conjunto, estando esses elementos agrupados sob certas condições.

Fatorial

Seja um número n inteiro e não negativo, definimos o fatorial de n (indicado pelo símbolo n!) como sendo:

n! = n. (n-1).(n-2). 4,3,2,1 para n ≥ 2
Para n = 0, teremos 0! = 1
Para n = 1, teremos 1! = 1

Princípio fundamental da contagem – PFC

Se determinado acontecimento ocorre em n etapas diferentes, e se a primeira etapa pode ocorrer de k1 maneiras diferentes, a segunda de k2 maneiras diferentes, a terceira de k3 maneiras diferentes, e assim sucessivamente então o número total T de maneiras de ocorrer o acontecimento é dado por:
T = K1 . k2 . k3 . ... Kn
Exemplo: o Detran decidiu que as placas dos veículos do Brasil serão codificadas usando-se 3 letras do alfabeto e 4 algarismos. Qual é o máximo de veículos que poderá ser licenciado?
3 letras = 26 (alfabeto)
4 algarismos  = 10 (0 à 9)
       L     L     L    A   A  A  A
T = 26 . 26 . 26 . 10.10.10.10
T = 175.760.000

Permutação simples

Permutação simples de n elementos distintos são os os agrupamentos formados por todos os n elementos e que diferem uns dos outros pela ordem de seus elementos.

Exemplo: os elementos ABC são possíveis as seguintes permutações ABC, ACB, BAC, BCA, CAB e CBA.

- O número total de permutações simples n elementos distintos é dado por n!, isto é:

Pn = n! onde n! = n (n-1).(n-2)...
Ex. P6 = 6!

Calcule o número de formas distintas de 5 pessoas ocuparem os lugares de um banco retangular de 5 lugares.
Resposta:
P5 = 5!
5! = 5.4.3.2 = 120 formas.

Em nossa próxima postagem, estaremos publicando alguns exercícios sobre análise combinatória. Até mais!

sexta-feira, 23 de agosto de 2013

Nível de Portabilidade - Java / C++

A linguagem Java é considerada portável, já que após o processo de compilação de uma classe, ela pode ser invocada em qualquer plataforma que dê suporte à Java. Isto só é possível pelo fato de o código-fonte Java ser compilado para byte-code, que é um código interpretado pela Máquina Virtual Java (JVM), portanto toda vez que temos uma JVM que possa interpretar o byte-code podemos reaproveitar o código sem maiores problemas e nos mais diversos ambientes.


O C++ é compilado diretamente para código nativo de maquina. Isso torna a linguagem C++ seja dependente da plataforma. Deste modo, para que programas implementados em C++ possam ser executados em outras plataformas como outro sistema operacional, por exemplo, é preciso realizar uma nova compilação e repetir o processo a cada mudança de plataforma. Vale ressaltar que quando um programa é compilado em código nativo como são os programas de C++ seu tempo de execução é muito inferior a programas interpretados por maquinas virtuais como no caso do Java.

quarta-feira, 21 de agosto de 2013

Confiabilidade e Tratamento de exceções - Java / C++

Um ponto importante de uma linguagem de programação é a sua confiabilidade, pois uma linguagem confiável possibilita a criação de programas mais seguros, mais simples de serem desenvolvidos e com maior facilidade de aceitação por parte do usuário. A confiabilidade nas linguagens pode ser percebida por diversos fatores como, por exemplo: a legibilidade, o tratamento de exceções, a verificação de tipos e a facilidade de escrita.

O C++ possui diversas características que acabam por proporcionar possibilidade de erros de programação, como a manipulação direta de endereços de memória utilizando ponteiros, meios através do qual um endereço de memória é diretamente acessado pelo programa. Em Java, por outro lado, não se tem acesso direto ao endereço de memória. Sendo assim, a linguagem Java se torna mais confiável.

Outro ponto importante ainda sobre a confiabilidade é o tratamento de exceções, na qual as linguagens que dispõem de recursos para o programador tratar exceções, evitando que o programa seja finalizado inesperadamente e deixem o usuário “perdido”, são consideradas mais confiáveis e melhores também para o usuário. Com estas ferramentas o programador implementa um código que possa tratar estas exceções caso ocorram.

O C++, possui um mecanismo de tratamento de exceções, composto pelo try() e pelo catch() simples porem já possibilita ao programador evitar que exceções sejam lançadas diretamente ao usuário. Já em Java, toda exceção é um objeto e existem classes prontas para o tratamento das mais variadas exceções. A superclasse de todas as exceções de Java é a classe java.lang.Throwable. Todos os objetos dessa classe ou de suas subclasses podem ser gerados ou capturados por meio do tratamento de exceções e assim facilitando o processo de tratar exceções e também tornando mais fácil sua visualização.

segunda-feira, 12 de agosto de 2013

Java e C++

Comparação entre JAVA e C++
Vamos fazer uma breve comparação entre linguagens Java e C++ avaliando suas semelhanças e diferenças, visto que Java é uma linguagem baseada em C++ porem com modificações importantes vários pontos:

Semelhanças entre Java e C++:
Pelo fato de Java ter surgido baseada em C++ existem alguns pontos onde até hoje as linguagens são similares abordaremos essas semelhanças:

Sintaxe:
Talvez esse seja o ponto de maior proximidade e semelhanças entre as duas linguagens, ambas contam com basicamente os mesmos comandos básicos (For, If, ElseIf, Switch etc.), tabém contam com uma forma de escrita desses comandos bem similares, como por exemplo no for onde o comando se dá como abaixo em ambas linguagens:
For (i = 0; i <10; i++) {
};
 Como pode ser visto temos a palavra reservada para o laço “FOR”, abertura de parênteses, definição inicial da variável contador, ponto e vírgula como delimitador, comparação do contador com a definição do numero de laços a serem executados, ponto e vírgula como delimitador e incrementador da variável podendo ser escritode forma simplificada pelo ++ ou completa por:

 i = i + 1;
Esse padrão descrito acima é exatente igual em ambas linguagens.E assim como no exemplo acima as semelhanças sintaticas das duas linguagens são evidentes no que se diz respeito parte estrutural do codigo em sua grande maioria.

sexta-feira, 9 de agosto de 2013

Características da Linguagem Java

Vantagens da Linguagem Java:
A linguagem Java foi desenvolvida a partir da linguagem C++ com o intuito de corrigir algumas de suas falhas e também implementar algumas novas ideias. As vantagens a serem destacadas da linguagem Java são: 
Gratuito: O Java tem kits de desenvolvimento gratuitos e código aberto a comunidade, além de uma gama de material disponível muito grande e constantemente sendo atualizada.
Segurança: O ambiente e alguns recursos garantem que o código não “derrube o sistema” durante tempo de execução.
Orientação a objeto: É totalmente orientado a objetos, o que possibilita o uso de herança e a reutilização de códigos de forma dinâmica e estática, assim conforme o desenvolvimento de classe avança fica mais simples e rápido a criação de novas.
Desempenho: É uma questão um tanto quanto controversa atualmente, mas a linguagem Java para  internet tem um desempenho considerável rápido quando comparada a outras linguagem script na web(HTML, o JavaScript ou o VBScript). Além de alguns recursos como compilação just-in-time, multithreading e utilização de código nativo.

Portabilidade:Talvez o ponto que mais se destaca na linguagem Java, graças a essa ser uma linguagem interpretada, ela pode ser executada em qualquer plataforma ou equipamento que possua um interpretador Java e que tenha sido compilado para o sistema a ser utilizado, esse diferencial abre um leque de oportunidades muito amplo para esta linguagem podendo ser usada na internet, celulares ou até em geladeiras.

Desvantagens da Linguagem Java:
Essa busca por correções de falhas do C++, juntamente com o fato de ser uma linguagem interpretada geram alguns pontos negativos para o Java. Podendo-se destacar desse:
Pouca integração com o S.O: Devido ao fato da linguagem Java ser interpretada ela possui pouca integração com o S.O além de ser difícil a criação de um código que não seja gerenciado pela JVM.
Desempenho:Apesar de contraditório a citação de desempenho como vantagem e desvantagem do Java a desvantagem fica clara quando comparamos o código em byte-code do Java com o de um código nativo, o byte-code do Java chega a ser 20 vezes mais lento.
Difícil programação: A linguagem Java é totalmente orientada a objeto alem de ter um código com grande rigor metodológico, o que torna o desenvolvimento em Java custoso e lento se comparado a algumas outras linguagens.