documentc#

31
Auto – Calibração e Linearização de Sensores utilizando Técnicas de Inteligência Computacional 1 linguagem de Programação 1 Teoria da Computação e Linguagens Formais – Belo Horizonte – Minas Gerais – Brasil Um estudo sobre a linguagem C# Profa. Pollyanna Miranda de Abreu

Upload: eduardo-junio

Post on 01-Jul-2015

587 views

Category:

Documents


4 download

DESCRIPTION

Introdução a Máquina Virtual do .Net. (Framework)

TRANSCRIPT

Page 1: DocumentC#

Auto – Calibração e Linearização de Sensores utilizando Técnicas de Inteligência Computacional 1 linguagem de Programação 1Teoria da Computação e Linguagens Formais – Belo Horizonte – Minas Gerais – Brasil

Um estudo sobre a linguagemC#

Profa. Pollyanna Miranda de Abreu

Page 2: DocumentC#

Auto – Calibração e Linearização de Sensores utilizando Técnicas de Inteligência Computacional 2 linguagem de Programação 2

História

Anders HejlsbergAnders Hejlsberg

Scott WiltamuthScott Wiltamuth

Desenvolvida pela Microsoft no ano de 2000 por Ander

Heilsberg (Criador do Delphi) e Scott Wiltamuth;

Tem raízes no C, C++ e Java, adaptando os melhores

recursos de cada linguagem;

C# nasceu com o .NET;

Orientada a Objetos e fortemente tipada;

Portabilidade de código;

Gerenciador de memória automático;

Permite internacionalização;

Page 3: DocumentC#

Auto – Calibração e Linearização de Sensores utilizando Técnicas de Inteligência Computacional 3 linguagem de Programação 3

Framework

O .NET Framework é uma plataforma, não uma linguagem, que

visa o desenvolvimento e execução de sistemas e aplicações. Todo

e qualquer código gerado em .Net, pode ser executado em

qualquer dispositivo ou plataforma que possua o mesmo;

Conjunto rico de bibliotecas;

Controle de versão: fim do “DLL Hell”;

Orientada a objeto;

Alta esclabilidade para ambiente de missão crítica.

Page 4: DocumentC#

Auto – Calibração e Linearização de Sensores utilizando Técnicas de Inteligência Computacional 4 linguagem de Programação 4

Principais elementos do Framework .Net.

C# VBC++

CLS CTS

FCL

CLR

SISTEMA OPERACIONAL

HARDWARE

Framework

Page 5: DocumentC#

Auto – Calibração e Linearização de Sensores utilizando Técnicas de Inteligência Computacional 5 linguagem de Programação 5

CLR (Common Language Runtime)

CLR (Common Language Runtime) é um ambiente de execução.

Coração do .Net;

CLR executa a compilação Just-In-Time (JIT) para converter o

código IL em instruções nativas da máquina

CLR é carregado quando um software .Net é executado;

ASP.NET VB.NETC#

COMPILA

MSIL

CLR

Page 6: DocumentC#

Auto – Calibração e Linearização de Sensores utilizando Técnicas de Inteligência Computacional 6 linguagem de Programação 6

CLR (Common Language Runtime)

De código fonte para MSIL ( Microsoft Intermediate Langiuage)

De MSIL pra código nativo

Page 7: DocumentC#

Auto – Calibração e Linearização de Sensores utilizando Técnicas de Inteligência Computacional 7 linguagem de Programação 7

Critérios de Avaliação da LP C#

Uma linguagem de programação é considerada de qualidade quando oferece as seguintes características:

1.Legibilidade

2.Capacidade de Escrita

3.Custo

4.Limitações

5.Portabilidade

Page 8: DocumentC#

Auto – Calibração e Linearização de Sensores utilizando Técnicas de Inteligência Computacional 8 linguagem de Programação 8

1- Legibilidade

Devido ao fato de ser hidrido, o resultado é um código limpo e sintático.

using System;class MainApp{

public static void Main(){

Console.WriteLine(“visite www.csharp.com !!”);}

}

Page 9: DocumentC#

Auto – Calibração e Linearização de Sensores utilizando Técnicas de Inteligência Computacional 9 linguagem de Programação 9

1- Legibilidade

Uma característica que tem impacto na simplicidade, e que influencia diretamente a legibilidade é a definição de métodos get e Set. Em C# esses métodos não somente contribui para legibilidade, como também para na capacidade de escrita.

Page 10: DocumentC#

Auto – Calibração e Linearização de Sensores utilizando Técnicas de Inteligência Computacional 10 linguagem de Programação 10

1- Legibilidade

O C# também permite criação de tags no fonte programa com a

finalidade de criar documentação, estas vão bem mais além da criação de

páginas HTML;

O Visual Studio nos possibilita a criação automaticamente das tags,

bastando digitar “///” antes do elemento a ser documentado. Essa

documentação fica imediatamente disponível dentro do próprio Visual

Studio como “dica”, sem que seja necessário rodar qualquer ferramenta

terceiros.

Page 11: DocumentC#

Auto – Calibração e Linearização de Sensores utilizando Técnicas de Inteligência Computacional 11 linguagem de Programação 11

2 – Capacidade de escrita (Writability)

Influencia na confiabilidade, quanto mais fácil é escrever um programa, há mais probabilidade deste ser um programa correto. Programas de difícil leitura complicam também sua escrita e sua manutenção.

Tópicos importantes:

2.1 Simplicidade e Ortogonalidade

2.2 Suporte para abstração

2.3 Expressividade

2.4 Confiabilidade

2.5 Verificação de Tipos

Page 12: DocumentC#

Auto – Calibração e Linearização de Sensores utilizando Técnicas de Inteligência Computacional 12 linguagem de Programação 12

2 – Capacidade de escrita (Writability)

Plataforma de desenvolvimento

Visual Studio :

• Intellisence ajuda no desenvolvimento;

• Palavras-chave de fácil identificação;

• Identação padrão.

Page 13: DocumentC#

Auto – Calibração e Linearização de Sensores utilizando Técnicas de Inteligência Computacional 13 linguagem de Programação 13

2 – Capacidade de escrita (Writability)

Instruções de controle

Com sintaxe similar ao C++, possui as mesmas instruções de

controle:

if, switch, while, do-while, for, foreach, e goto .

Page 14: DocumentC#

Auto – Calibração e Linearização de Sensores utilizando Técnicas de Inteligência Computacional 14 linguagem de Programação 14

Tipos de Dados

2 – Capacidade de escrita (Writability)

Page 15: DocumentC#

Auto – Calibração e Linearização de Sensores utilizando Técnicas de Inteligência Computacional 15 linguagem de Programação 15

2 – Capacidade de escrita (Writability)

Operadores

Page 16: DocumentC#

Auto – Calibração e Linearização de Sensores utilizando Técnicas de Inteligência Computacional 16 linguagem de Programação 16

2 – Capacidade de escrita (Writability)

Operadores

Page 17: DocumentC#

Auto – Calibração e Linearização de Sensores utilizando Técnicas de Inteligência Computacional 17 linguagem de Programação 17

2 – Capacidade de escrita (Writability)

Curto Circuito

Dispónivel para operadores && e ||;

Se operador && for falso no lado esquerdo, operador do lado

direito não sera avaliado;

Se operador || for falso no lado esquerdo, operador do lado

direito não sera avaliado;

( valor < 0 ) && ( valor <= 100 )

( valor < 0 ) ||( valor <= 100 )

Page 18: DocumentC#

Auto – Calibração e Linearização de Sensores utilizando Técnicas de Inteligência Computacional 18 linguagem de Programação 18

2 .1 - Simplicidade e Ortogonalidade

Os aspectos do paradigma orientado a objetos implementado em c#, como

herança, encapsulamento e polimorfismo, permitem que o programador

abstraia detalhes de implementação não relevantes, aumentando a

capacidade de escrita. Por outro lado, construção encontradas na

linguagem, como delegates (referência a métodos que podem ser passados

como parâmentros para outros métodos), aumentam a capacidade de

escrita por sua flexibilidade, porém diminuem, de forma significativa, a

legibilidade.

Page 19: DocumentC#

Auto – Calibração e Linearização de Sensores utilizando Técnicas de Inteligência Computacional 19 linguagem de Programação 19

2 .1 - Simplicidade e Ortogonalidade

É uma linguagem com poucas exceções às regras de construção

sintática;

Variáveis do tipo ponteiro podem apontar para todos os tipos,

exceto void;ermitido, mas não é recomendado

Arrays pode ser criados para qualquer tipo,exceto void ou um

estrutura do mesmo tipo;

Para ponteiros de métodos no c# é utilizado o tipo Delegate;

Page 20: DocumentC#

Auto – Calibração e Linearização de Sensores utilizando Técnicas de Inteligência Computacional 20 linguagem de Programação 20

2.2 – Suporte para abstração

Por se tratar de uma linguagem orientada a objetos, esta linguagem

também fornece esse elemento chave.

Permite uso de:

• Herança;

• Encapsulamento;

• Polimorfismo.

Ou seja, com essas caracterisitcas a replicação de código é bem

improvável.

Page 21: DocumentC#

Auto – Calibração e Linearização de Sensores utilizando Técnicas de Inteligência Computacional 21 linguagem de Programação 21

2.3 – Expressividade

C# possui diversas instruções que tornam mais expressivas a

escrita dos comandos. São operadores muito poderosos que

permitem uma grande quantidade de computação.

Ex:

Cont = Cont + 1 //Mais comum

Cont++ // Facilitado

Page 22: DocumentC#

Auto – Calibração e Linearização de Sensores utilizando Técnicas de Inteligência Computacional 22 linguagem de Programação 22

Verificação de tipos

Tipagem forte

Todas as classes .NET derivam de uma mesma classe mãe,

Object;

Permite operações de estreitamento e/ou alargamento.

Verificação de atribuições em tempo de compilação.

2.4 – Confiabilidade

Page 23: DocumentC#

Auto – Calibração e Linearização de Sensores utilizando Técnicas de Inteligência Computacional 23 linguagem de Programação 23

Manipulação de exceções

O C# possui um eficiente método de capturar exceções dentro

de um programa, os blocos try, catch e finnaly, onde um programa

escrito dentro do bloco try, ao levantar qualquer exceção, cai no

bloco catch, cabendo ao programador, ou à especificação do

sistema, como o mesmo deverá se comportar diante de tal

adversidade. O bloco finnaly é executado sempre (podendo haver

ou não um exceção), não sendo obrigatório.

2.4 – Confiabilidade

Page 24: DocumentC#

Auto – Calibração e Linearização de Sensores utilizando Técnicas de Inteligência Computacional 24 linguagem de Programação 24

Manipulação de exceções

Try{

// Instrução}catch (NullReferenceException ex) {

// trata de exceções}finally {

// executa sempre

}

2.4 – Confiabilidade

Page 25: DocumentC#

Auto – Calibração e Linearização de Sensores utilizando Técnicas de Inteligência Computacional 25 linguagem de Programação 25

3 – CustoC# é uma linguagem, a princípio, interpretada, pois, apesar de criar um arquivo como extensão executavél, necessita da Máquina Virtual .Net para executar. O ganho com a portabilidade, visto que o programador cria apenas um código que pode ser executado em qualquer plataforma que possua a V.M. .Net instalada, acarretando em perda de performande do sistema executado.

C# apresenta um alto nível de abstração, o que aumenta a capacidade de escrita e consequentemente diminui o custo de desenvolvimento e de execução, pois os problemas são solucionados abstraindo detalhes não pertinentes a este problema.

Page 26: DocumentC#

Auto – Calibração e Linearização de Sensores utilizando Técnicas de Inteligência Computacional 26 linguagem de Programação 26

3 – CustoAssim como Java, c# tem uma sintaxe similar ao c++. Este fato reduz, em geral, o custo de treinamento e cientifico, permitindo que programadores com alguma experiência em c, c++ ou java migrem para c#.

Page 27: DocumentC#

Auto – Calibração e Linearização de Sensores utilizando Técnicas de Inteligência Computacional 27 linguagem de Programação 27

Suportada apenas pela plataforma .Net;

4 – Limitações

Page 28: DocumentC#

Auto – Calibração e Linearização de Sensores utilizando Técnicas de Inteligência Computacional 28 linguagem de Programação 28

Projeto Mono

Garantia de portabilidade para aplicações .Net;

Disponível para Linux, BSD, Unix, Mac OS, Solaris e Windows;

Iniciado por Miguel de Icaza. Primeira versão 2004;

Empresa responsável Novell.

5 - Portabilidade

Miguel de IcazaMiguel de Icaza

Page 29: DocumentC#

Auto – Calibração e Linearização de Sensores utilizando Técnicas de Inteligência Computacional 29 linguagem de Programação 29

MonoDevelop:IDE Free de desenvolvimento para .Net.

5 – Portabilidade - Mono

Page 30: DocumentC#

Auto – Calibração e Linearização de Sensores utilizando Técnicas de Inteligência Computacional 30 linguagem de Programação 30

http://http://www.mono-project.com/Main_Page

5 – Portabilidade - Mono

Page 31: DocumentC#

Auto – Calibração e Linearização de Sensores utilizando Técnicas de Inteligência Computacional 31 linguagem de Programação 31

ConclusãoO fato de c# apresentar uma grande quantidade de recursos permite que ela possa ser usada em diversos domínios de aplicações diferentes, uma vez que os programadores tendem, naturalmente, a utilizar apenas um subdomínio da linguagem para resolver todos os tipos de problemas. Assim, ocasionalmente, um programador utilizará estruturas inadeguadas, gerando código com baixa legibilidade e de difícil manutenção