Introdução ao Xamarin Forms

Então pessoal, sejam bem vindos a um pequeno curso que estou iniciando em meu canal do youtube com o intuito de ensinar Xamarin forms para iniciantes, vale ressaltar que também sou iniciante mas como já possuo uma bagagem nas costas consigo aprender mais rapidamente uma nova tecnologia sendo assim fique a vontade para compartilhar conhecimentos na seção de comentários no final desse post. Continuar lendo

U4S1 – Atividade Diagnóstica


1)Qual será a saída (resultado) para os valores de p = 1 e q = 0 dentro da tabela-verdade AND?

Escolha uma:

  • a. Retorna uma negação – !q.
  • b. Retorna falso (0).
  • c. Retorna verdadeiro (1).
  • d. Não pode retornar valor nenhum.
  • e. Retorna uma negação – !p.

Correto: b. Retorna falso (0).Fa

2)A tabela-verdade, referente ao operador lógico OR, caracteriza-se por:

Escolha uma:

  • a. As duas proposições obrigatoriamente são verdadeiras.
  • b. As proposições geram resultado 1 se forem todas 1.
  • c. Nenhuma das proposições podem ser negadas.
  • d. As proposições devem ser uma negação e outra falsa.
  • e. Uma das proposições tem de ser verdadeira.

Correto: e. Uma das proposições tem de ser verdadeira.

3) (Dificil) A anotação (P^q) corresponde a qual porta lógica?

Escolha uma:

  • a. XNOR.
  • b. OR.
  • c. XOR.
  • d. NAND.
  • e. AND.

Introdução ao C# – Parte 2

The Framework Class Library (FCL)

O .NET Framework fornece um enorme Framework (ou base) com a Class Library (FCL) para efetuar tarefas comuns e usuais. FCL contém milhares de classes para fornecer o acesso a funções do Windows API e common, como Manipulação de Strings, estruturas de dados common, I.O, Streams, Threads, segurança, programação de rede, Programação Windows, Programação Web, Acesso a dados, etc. É simplesmente o maior padrão de biblioteca já criado para qualquer outro ambiente de desenvolvimento ou linguagem de programação. A melhor parte desta biblioteca é que eles seguem projeto O.O(Orientação a objetos) de forma extremamente eficiente (padrões de projeto), tornando seu acesso e uso muito simples e previsível. Você pode usar as classes no FCL em seu programa, assim como você usaria qualquer outra classe. Você pode até mesmo aplicar a herança e polimorfismo a essas classes.

The Common Language Specification (CLS)

Anteriormente, foi utilizado o termo “linguagem .NET Compliant” e afirmei que todas as línguas compatíveis .Net podem fazer uso do CLR e FCL. Mas o que torna uma linguagem “.Net compliant”?

A resposta é a Common Language Specification (CLS). A Microsoft lançou um pequeno conjunto de especificações que cada língua deve cumprir para se qualificar como uma .Net Compliant Language.

Como IL é uma linguagem muito rica, não é necessário para uma linguagem implementar toda a funcionalidade IL; em vez disso, apenas precisa possuir um pequeno subconjunto de CLS para se qualificar como uma linguagem compatível com o .NET. Esta é a razão pela qual tantas línguas (processuais e O.O) estão agora rodando sob o guarda-chuva .Net. CLS basicamente aborda questões de design de linguagem e estabelece certas normas. Por exemplo, não deve haver quaisquer declarações globais de função, sem ponteiros, sem herança múltipla e coisas assim. O ponto importante a notar aqui é que se você manter seu código dentro do limite do CLS, seu código é garantido para ser utilizável em qualquer outra linguagem .NET.

The Common Type System (CTS)

.Net também define um Common Type System (CTS). Como CLS, CTS é também um conjunto de normas. CTS define os tipos de dados básicos que IL entende. Cada linguagem compatível com .NET deve mapear seus tipos de dados para estes tipos de dados serem padrão. Isto faz com que seja possível que duas línguas 2 possam comunicar entre si umas com as outras através da passagem / recebimento de parâmetros de um para a outra. Por exemplo, CTS define um tipo, Int32, um tipo de 32 bits (4 bytes) que é mapeado pelo C# através de int e pelo VB.Net por meio de seu tipo de dados inteiro que é o Integer.

Garbage Collection (GC)

CLR também contém o coletor de lixo (GC), que é executado em um segmento de baixa prioridade e verifica se há, espaço de memória alocada dinamicamente un-referenced(Sem referência). Se ele encontrar alguns dados que não são mais referenciados por qualquer variável / referência, ele avisa ao S.O que deve ser limpado aquela região. A vantagem do GC é que o programador não precisa se preocupar com a codifcação do mesmo para limpar a memória do S.O que o seu software estiver usando. Pergunte a qualquer programador C++ como isso é um grande alívio!

The .Net Framework

O .NET Framework é a combinação de camadas de CLR, FCL, Dados e classes XML e o Windows, aplicações Web e Web Services. Um diagrama do .Net Framework é apresentado a seguir para melhor compreensão:

Imagem que demonstra o diagrama do .Net

C# em comparação com C++

Em termos de desempenho e eficiência no uso de memória e outros recursos, C++ faz outclass no C#. Mas o desempenho e a única medida quando se trata de escolher um ambiente de desenvolvimento? Não!

C++ é sem dúvida uma linguagem muito complexa, abstrata e de baixo nível para se programar. Carrega o programador com muitas responsabilidades e muito menos apoio. Outro problema com o C++ é que ele é muito vasto comparado com outras linguagens em sua essência; por exemplo, para lidar com os dados na memória você pode usar variável, ponteiro ou referência.

C# em seu núcleo é uma linguagem moderna e poderosa muito simples, mantendo em mente a experiência de desenvolvedores ao longo dos anos e suas necessidades atuais. Uma das maiores preocupações no mercado de corporações é fazer com que programas sejam reutilizáveis, de fácil manutenção, escalável, portátil e fácil de depurar. C# trata direito com estas questões. Cada desenvolvedor C++ sabe o quão difícil é gerir um programa de C++ e depurá-lo. Ele pode ser um pesadelo para encontrar a razão pela qual um programa trava aleatoriamente. A única razão para isso, para mim, é a maldição de compatibilidade com versões anteriores. Eles fizeram C++ na estrutura C, uma linguagem de programação estruturada, por isso nunca se tornou uma verdadeira linguagem de programação orientada a objetos, e se o compilador me permite ir na forma estruturada, quem é você para me fazer ter uma abordagem orientada? Também Bjarne Stroustrup, o fundador do C++ disse, “C++ é uma linguagem multi-paradigma não é só O.O”. As principais vantagens do uso de C # incluir suporte para o Common Language Runtime, biblioteca de classe Framework, e uma limpeza orientada a objetos de design novo, livre da maldição-compatibilidade com versões anteriores.

Imagem que demonstra a CLR do .NET

Continua…

Então, o que achou do post? fiquem ligados no próximo post e deixe o seu comentário abaixo :).

Introdução ao C#

Introdução a linguagem C

A linguagem C# e o framework .NET, são as tecnologias mais importantes para o mundo microsoft, e não ache que isso seja um exagero pois todo o ambiente Windows gira em torno dessas tecnologias. O Donet(.NET) foi criado para fornecer um grande ambiente de desenvolvimento lhe fornecendo opções para desenvolver praticamente qualquer coisa e executar o mesmo dentro do universo windows, embora o .NET seja especifico para a a linguagem C#, a própria linguagem consegue se extender juntamente a ele para fornecer WebPages dinâmicas, criar componentes para aplicações distribuidas e etc…

O Porque da plataforma .NET e do C

Para que possamos entender um e o outro, é necessário um entendimento prévio de que muitas tecnologias da plataforma Windows não mundo com frequência, são sempre reaproveitadas, tanto que desde o Windows 3.1 em diante, o Windows matém a mesma application programming interface ( API ), com isso entendido, basicamente a plataforma .NET é o aglomerado dessas funções, melhoras passadas por “gerações” e também contendo em seu núcleo, novas funcionalidades, e o mesmo acontece com todas as outras tecnologias presentes no Windows, como o COM ( Component object model ), OLE(Object linking and Embedding) e derivados.

NOTA: Ao aprender a linguagem C#, caso já seja programador em alguma outra linguagem, inclusive linguagens mais antigas como VB e C++, perceberá logo de cara que programar em C# é mais agradável e intuitivo.

.NET?

Disse, disse, disse, mas no fundo…o que é esse tal de .NET?

Para responder essa pergunta, devemos levar em consideração que o Windows é uma biblioteca rica em recursos, e todos esses recursos devem ser catalogados e enfileirados para seu uso (Funções), e basicamente é isso que o .NET lhe fornece, um conjunto de funções para trabalhar com o Windows.

Vejamos as vantagens da plataforma .NET:

  • Grande suporte para páginas WEB – Mesmo que o C# possa trabalhar com a tecnologia ASP, o .NET é extremamente flexível ao ponto de fornecer um suporte integrado bastente dinâmico para a sua aplicação.

Ferramentas para os posts

O exemplos foram escritos dentro da IDE própria para o C# (Visual Studio.Net). É recomendável que você instale esta ferramenta Microsoft oferece o Visual Studio Express Edition gratuitamente, está disponível emhttp://msdn.microsoft.com/vstudio/express/.

Você precisará baixar e instalar o .NET Framework SDK, que pode ser obtido livremente clicando aqui. Isto é necessário para executar os aplicativos .NET e, mais importante para nós, contém o compilador C# que você vai precisar para compilar os programas que você escreve.

Finalmente, para usuários não-Windows, o Projeto Mono fornece um compilador open source C#, .NET Runtime e implementação da biblioteca. Para mais informações.

A linguagem C

C# (pronuncia-se C-Sharp) é, sem dúvida, a linguagem de escolha para trabalhar no ambiente .Net. É uma nova linguagem livre da maldição de compatibilidade com versões anteriores e com um monte de recursos novos, excitantes e promissores. É uma linguagem de programação orientada a objetos e tem em seu núcleo, muitas semelhanças com Java, C++ e VB. Na verdade, C# combina a potência e eficiência do C ++, o design OO simples e limpa do Java e a simplificação da linguagem do Visual Basic.

Como Java, C# também não permite herança múltipla ou o uso de ponteiros (em um código seguro), mas fornece uma “recolha de lixo”(garbage memory collection) de memória em tempo de execução, o tipo e a verificação de acesso à memória. No entanto, ao contrário do Java, C# mantém operações práticas únicas do C++ como sobrecarga de um operador, enumerações, diretivas de pré-processador, ponteiros (em código não gerenciado / un-safe), ponteiros de função (na forma de delegates) e promete sempre possuir um template de apoio nas próximas versões. Como VB, ele também suporta os conceitos de propriedades (context sensitive fields). Além disso, C# vem com algumas características novas e emocionantes, como reflections, attributes, marshalling, remoting, threads, streams, data access com ADO.Net e muito mais.

A arquitetura do .NET e o Framework .NET

Na arquitetura .Net e o .Net Framework existem algumas diferentes e termos e conceitos importantes, que iremos discutir um por um:

Common Language Runtime (CLR)

O conceito mais importante do .NET Framework é a existência e a funcionalidade do .NET Common Language Runtime (CLR), também chamado de Net Runtime. É uma camada que reside acima do OS e lida com a execução de todos os aplicativos .Net. Nossos programas não se comunicam diretamente com o sistema operacional, mas passam pelo CLR:

Imagem que demonstra a CLR do .NET

MSIL (Microsoft Intermediate Language) Code

Quando compilarmos nosso Programa .Net usando a linguagem .Net, qualquer uma compatível (como C#, VB.Net ou C ++, .Net) nosso código fonte não é convertido em código binário executável, mas sim para um código intermediário conhecido como MSIL que é interpretado pela Common Language Runtime. MSIL é o sistema, é um código independente de hardware para funcionar. Após a execução do programa, neste MSIL (código intermediário) é convertido em código executável binário (código nativo).

Imagem que demonstra a CLR do .NET

Just In Time Compilers (JITers)

Quando o nosso código compilado IL precisa ser executado, o CLR chama o compilador JIT, que compila o código IL para um código executável nativo (.exe ou .dll) que é projetado para a máquina específica e o seu OS. JITers são diferentes dos compiladores tradicionais, eles compilam o IL para código nativo apenas quando desejado; por exemplo, quando a função é chamada, o IL converte em tempo de execução o chamado. Assim, a parte do código que não é usada por que não é necessária naquele momento nunca é convertida em código nativo. Se algum código IL é convertido em código nativo, então da próxima vez que for necessário usar, o CLR reutilizará o mesmo (já compilado) sem que haja uma re-compilação. Assim, se um programa é executado por algum tempo (assumindo que todas ou a maioria das funções são chamadas o tempo inteiro), então não irá ter nenhuma perda de desempenho, just-in-time.

Como JITers estão sempre cientes do processador e sistema operacional específico que estão sendo executados em tempo real, eles podem otimizar o código de forma extremamente eficiente, resultando em aplicações muito robustas. Além disso, como um compilador JIT sabe o estado atual exato do código executável, eles também podem otimizar o código em pequenas chamadas de função (como a substituição do corpo de uma pequena função que possua um loop, economizando tempo em sua chamada de função). Embora a Microsoft afirmou que o C# e .Net não estão competindo com linguagens como C++ na eficiência e rapidez de execução, JITers podem tornar seu código mais rápido do que o código escrito em C++ em alguns casos.

Continua…

Então, o que achou do post? fiquem ligados no próximo post e deixe o seu comentário abaixo :).