Upload
others
View
11
Download
0
Embed Size (px)
Citation preview
P R O F. M E . H É L I O E S P E R I D I Ã O
PROGRAMAÇÃO III - AULA 01
TIPIFICAÇÃO
• Uma linguagem Tipificada ou Tipada é aquela que permite a declaração de variáveis de tipos
específicos;
• As linguagens podem ser classificadas em Fortemente Tipadas, Fracamente Tipadas e Não
tipadas;
VANTAGENS - UMA LINGUAGEM TIPIFICADA
• Alocação de espaço necessário de memória para a
variável;
• Funções com tipos de dados definidos;
• Possuem maior “Aprendibilidade” por possuir códigos
mais legíveis;
• Possibilidade de criação de tipos em algumas linguagens,
Ex: Java;
DESVANTAGENS
• Códigos maiores;
• Conversões de Tipos podem gerar erros;
• Limitação no tamanho das variáveis
STRONG TYPING
• Linguagens Fortemente Tipadas:
• São aquelas que possuem declaração de tipos
obrigatórios e explícitos;
• Existem tipos específicos: int, float, boolean*, byte*, etc.
• Exemplos: Java, C, C++, C#, Fortran, Cobol.
TAMANHO DE ALOCAÇÃO DOS TIPOS:
• int : 4 bytes;
• float : 4 bytes;
• char :2 bytes;
• byte :1 byte;
• long : 8 bytes;
• Vetor: Tipo x Tamanho : int Vet[40] = 40x4 bytes;
• String : Vetor de char (basicamente)
LINGUAGENS FRACAMENTE TIPADAS
• Conhecidas como Dinamicamente
Tipadas;
• Possuem os tipos durante a execução
do programa;
• O programa pode alterar o tipo de
dado contido na variável;
• Não possui cast (conversão);
• Exemplos: PHP, JavaScript, Ruby,
Python;
• Exemplos em PHP.
LINGUAGENS NÃO TIPADAS
• Não possuem tipos de dados;
• Podem possuir tipos de dados genéricos;
• Exemplos: Assembly, BCPL, Perl;
• Exemplos em Assembly.
• MOV AL, 1h ;
• MOV CL, 2h ;
• MOV DL, 3h ;
IDE(INTEGRETED DEVELPMENTENVIRONMENT)
• É o ambiente de desenvolvimento integrado (note que é
masculino), ou seja, é o programa que integra as várias
ferramentas necessárias para o desenvolvimento de
softwares.
• Sua principal função é ajudar o programador a
editar o código que será usado para criar seu programa.
• Outra coisa muito importante que todos IDEs fazem é
chamar o compilador, ou interpretador, dentro de certos
parâmetros para gerar e/ou executar o programa criado,
se ele não contiver erros.
IDE
• depurar programas durante a execução com várias facilidades;
• gerenciar os projetos e suas configurações
• executar testes, montar o deploy ou até mesmo fazê-lo;
• fazer análise estática;
• controle de versão;
• acessar banco de dados;
• gerar códigos automaticamente para certos padrões de codificação, como telas e relatórios;
• dar acesso fácil à documentação;
• diversas ajudas durante o processo de edição do código
COMPILADOR
• O compilador é o programa que analisa e gera o executável do
que está sendo criado. Ele pega um texto compreensível por
humanos - o que o programador escreveu - e transforma em
código compreensível por máquinas, um código binário que
possui instruções do que o processador deve executar (há
casos de código intermediário).
• O compilador deve entender as regras que uma determinada
linguagem de programação foi construída. E deve garantir que
todas elas foram seguidas, transformando o código escrito
obedecendo estas regras.
MICROSOFT VISUAL STUDIO
• é um ambiente de desenvolvimento integrado (IDE) da Microsoft para desenvolvimento de
software especialmente dedicado ao .NET
MICROSOFT VISUAL STUDIO
O QUE PODE SER FEITO COM O IDE DO VISUAL STUDIO?
• Você deseja criar um aplicativo para um telefone Android? Você pode fazer isso.
• E quanto à criação de um jogo de última geração com o C++? É possível fazer isso e muito,
muito mais.
• O Visual Studio fornece modelos que ajudam você a criar sites, jogos, aplicativos de área de
trabalho, aplicativos móveis, aplicativos para o Office e muito mais.
CRIAR APLICATIVOS MÓVEIS
• É possível criar aplicativos móveis
nativos para diferentes plataformas
usando o Visual C# e o Xamarin ou o
Visual C++ ou aplicativos híbridos
usando o JavaScript com o Apache
Cordova. É possível escrever jogos
móveis para o Unity, Unreal, DirectX,
Cocos e muito mais. O Visual Studio
inclui um emulador do Android para
ajudá-lo a executar e depurar aplicativos
Android.
CRIAR APLICATIVOS NA NUVEM PARA O AZURE
• O Visual Studio oferece um pacote de ferramentas que
permite criar aplicativos habilitados para a nuvem com
facilidade da plataforma Microsoft Azure. É possível
configurar, compilar, depurar, empacotar e implantar
aplicativos e serviços no Microsoft Azure diretamente
por meio do IDE. Aproveite os serviços do Azure em
seus aplicativos usando os Serviços Conectados. Para
obter as Ferramentas do Azure para .NET, selecione a
carga de trabalho desenvolvimento do Azure ao instalar
o Visual Studio. Para obter mais informações, consulte
Ferramentas do Visual Studio para o Azure.
CRIAR APLICATIVOS PARA A WEB
• A Internet impulsiona nosso mundo moderno e o
Visual Studio pode ajudá-lo a escrever aplicativos para
ele. É possível criar aplicativos Web usando o ASP.NET,
Node.js, Python, JavaScript e TypeScript. O Visual
Studio reconhece estruturas Web como Angular,
jQuery, Express e muito mais. O ASP.NET Core e o
.NET Core são executados nos sistemas operacionais
Windows, Mac e Linux. Para obter mais informações,
consulte Ferramentas da Web modernas.
ESCREVER UM CÓDIGO EM UM AMBIENTE DE EDIÇÃO DA MAIS ALTA QUALIDADE
COMMUNITY
• Em 12 de novembro de 2016 A edição Community foi
anunciada como uma versão nova e gratuita com
funcionalidade similar ao Visual Studio Professional
• Visual Studio Community dá suporte a múltiplas
linguagem, e fornece suporte para extensões. Visual
Studio Community é orientado para desenvolvedores
individuais e pequenas equipes
FA Ç A O D O W N LO A D
H T T P S : / / W W W. V I S U A L S T U D I O. C
O M / P T- B R / D OW N L O A D S
C#
• A linguagem C# (lê-se “cêsharp”) foi criada juntamente com a arquitetura da plataforma .NET da
Microsoft. Construída do zero, sem se preocupar com compatibilidade de código legado, e a maioria
das classes do framework .NET foram escritas com essa linguagem. Vários desenvolvedores
participaram do projeto de criação da linguagem, mas o principal envolvido no projeto foi o
engenheiro Anders Hejlsberg, que além do C# foi criador do Turbo Pascal e do Delphi.
• O nome C# fez com que muitas pessoas pensassem que a cerquilha (#) seria uma sobreposição de
quatro símbolos de adição, dando assim a entender que poderia ser um C++++, mas na verdade o
símbolo # se refere ao sinal musical de sustenido (#), que indica meio tom acima de uma
determinada nota musical. Possui uma sintaxe expressiva, elegante e é totalmente orientada a
objetos
CARACTERÍSTICAS
• A linguagem C# foi influenciada por várias linguagens, como por exemplo, JAVA e C++.
• Na verdade, ela é uma junção das principais vantagens dentre essas linguagens, melhorando
suas implementações e adicionando novos recursos, fazendo a linguagem atrativa para
desenvolvedores que queiram migrar para o Microsoft .NET.
ARQUITETURA .NET
• CLR (Commom Language Runtime)
• CTS (Common Type System)
• CLS (Common Language Specification)
• BCL (Base Classe Library)
CLR (COMMOM LANGUAGE RUNTIME)
• É o ambiente de execução das aplicações .NET
• As aplicações .NET não são nativas do sistema operacional Windows.
• O Win32, ao identificar uma aplicação .NET, dispara o runtime .NET.
– O CLR cuida do gerenciamento da memória via um mecanismo de gerenciamento de memória
chamado Garbage Collector (GC)
– CLR é único para todos as linguagens que fazem uso do .net.
CTS (COMMON TYPE SYSTEM)
• Define os tipos suportados por .NET e as suas características
• Toda linguagem que suporta .NET tem de, necessariamente, suportar esses tipos.
• Todo tipo deriva da classe Object, porque em .NET tudo é um objeto e, portanto, todos os
tipos devem ter como raiz essa classe.
– E é dessa forma que os diversos tipos nas diversas linguagens são implementados, obedecendo às
regras definidas no CTS.
CLS (COMMON LANGUAGESPECIFICATION)
• Define um conjunto de regras que qualquer linguagem que implemente a .NET deve seguir a
fim de que o código gerado resultante da compilação de qualquer peça de software escrita na
referida linguagem seja perfeitamente entendido pelo runtime .NET
• Seguir essas regras é um imperativo porque, caso contrário, um dos grandes ganhos do .NET,
que é a independência da linguagem de programação e a sua interoperabilidade, fica
comprometido.
BCL (BASE CLASSE LIBRARY)
• Como era de se esperar, uma plataforma que promete facilitar o desenvolvimento de sistemas precisa ter uma biblioteca de classes básica que alavanque a simplicidade e a rapidez no desenvolvimento de sistemas. É este o objetivo da BCL (Biblioteca de Classes Base), oferecer ao desenvolvedor uma biblioteca consistente de componentes de software reutilizáveis que não apenas facilitem, mas também que acelerem o desenvolvimento de sistemas
• Na BCL encontramos classes que contemplam desde um novo sistema de janelas a bibliotecas de entrada/saída, gráficos, sockets, gerenciamento da memória etc. Esta biblioteca de classes é organizada hierarquicamente em uma estrutura conhecida como namespace. Ao desenvolver um componente de software reusável, este precisa ser estruturado em um namespace para que possa ser usado a partir de um outro programa externo. A seguir mostramos uma tabela com alguns dos principais namespaces que fazem parte da BCL:
MICROSOFT INTERMEDIATELANGUAGE
• –éa linguagem intermediária para qual é interpretado qualquer programa .NET, independente
da linguagem em que este for escrito.
• Essa tradução é feita para código intermediário (como em JAVA com os byte codes)
sintaticamente expresso na IL. Por sua vez, qualquer linguagem .NET compatível, na hora da
compilação, gerará código MIL e não código assembly específico da arquitetura do processador
onde a compilação do programa é efetuada
ARQUITETURA DA PLATAFORMA DO .NET FRAMEWORK• Programas escritos em C# são executados no .NET Framework, um
componente do Windows que inclui um sistema de execução virtual chamado Common Language Runtime (CLR) e um conjunto unificado de bibliotecas de classes.
• O CLR é a implementação comercial da Microsoft da infraestrutura de linguagem comum (CLI), um padrão internacional que é a base para a criação e execução de ambientes de desenvolvimento em que as linguagens e as bibliotecas trabalham juntos sem problemas
• O código-fonte escrito em C# é compilado em uma linguagem intermediária (IL) que está em conformidade com a especificação CLI.
• Quando o programa C# é executado, o assembly é carregado para o CLR
CARACTERÍSTICAS DO C#
• Simplicidade: os projetistas de C# costumam dizer que essa linguagem é tão poderosa quanto
o C++ e tão simples quanto o Visual Basic.
• Completamente orientada a objetos: em C#, qualquer variável tem de fazer parte de uma
classe.
• Fortemente tipada: isso ajudará a evitar erros por manipulação imprópria de tipos, atribuições
incorretas etc.
• Tudo é um objeto: System.Object é a classe base de todo o sistema de tipos de C#.
CARACTERÍSTICAS DO C#
• Flexibilidade: se o desenvolvedor precisar usar ponteiros, o C# permite, mas ao custo de
desenvolver código não-gerenciado, chamado “unsafe”
• Linguagem gerenciada: os programas desenvolvidos em C# executam num ambiente
gerenciado, o que significa que todo o gerenciamento de memória é feito pelo runtime via o
GC (Garbage Collector), e não diretamente pelo programador, reduzindo as chances de
cometer erros comuns a linguagens de programação onde o gerenciamento da memória é
feito diretamente pelo programador.
C# NO MUNDO
https://www.tiobe.com/tiobe-index/
C# NO MUNDO
https://pypl.github.io/PYPL.html
NAMESPACE
• O grande problema que surge com os sistemas grandes é a organização de todas as suas
classes.
• Para evitar que o sistema fique caótico, podemos agrupar as classes por características comuns
e dar um nome para cada um desses grupos. Isto é, agruparíamos um conjunto de classes em
um espaço em comum e lhe daríamos um nome, como por exemplo br.com.google.clientes
• Esse espaço definido por um nome é chamado de namespace.
OLÁ MUNDO
NOVO PROJETO
TIPOS
• Value types
– Contém diretamente o valor
– Não podem ser nulos
• Reference types
– Contém uma referência para um objeto
– Podem ser nulos
TIPOS
• Tipos Valor
– Primitivos int i;
– Enumerações enum Cor {Azul, Verde}
– Estruturas struct Point {int x, y;}
• Tipos Referência
– Classes class A : B, IC {...}
– Interfaces interface IA : IB {...}
– Vetores string[] v = new string[10];
– Delegações delegate void Algo();
ENUMS (ENUMERATIONSOU ENUMERAÇÕES)
• São constantes fortemente tipadas.
• Elas são estáticas, ou seja, não é possível nem
preciso acessar os seus valores instanciando um
objeto utilizando a palavra reservada new.
• O acesso é feito a partir do nome da classe em
que está contido e em seguida o nome do enum
a ser utilizado.
TIPOS PREDEFINIDOS
• Tipos predefinidos do C#:
– Referenciados object, string
– Com sinal sbyte, short, int, long
– Sem sinal byte, ushort, uint, ulong
– Caractere char
– Ponto flutuante float, double, decimal
– Lógico bool
• Tipos são apelidos para tipos do .NET
– int = System.Int32
MEMÓRIA
int i = 123;
string s = “univap”; i
s
123
“univap”
BOXING E UNBOXING
• O processo de conversão explícita de um tipo valor para um tipo referência é conhecido em
C# como Boxing (encaixotar).
• Quando essa operação é efetuada entre tipos que não são equivalentes, uma exceção é gerada
pelo runtime.
CONVERSÕES
• Conversões implícitas
– Ocorrem automaticamente
– Garantia de sucesso
– Nenhuma perda na precisão das informações
• Conversões explícitas
– Exige um elenco
– Podem não ter sucesso
– Informações (precisão) podem ser perdidas
• Ambas conversões implícitas e explícitas
podem ser definidas pelo usuário
SISTEMA UNIFICADO DE TIPOS
• Tudo é objeto:
– Em última instância, todos os tipos são herdados de objetos.
– Qualquer pedaço de dados pode ser armazenado, transportado, e manipulado sem trabalho extra.
Sistema unificado de tipos
MemoryStream FileStream
Stream Hashtable int double
object
POLIMORFISMO
OS TIPOS DE VALOR E POLIMORFISMO
– Como um int (tipo valor) pode ser convertido em um objeto
(tipo referência)?
– Como podemos unificar tipos de valor e de referência?
• Boxing copia um tipo valor para um tipo referência
• Unboxing faz a cópia inversa
int i = 123; // tipo valor
object o = i; // tipo referência
int j = (int)o;
i
o
123j
123
System.Int32
T I P O S I N T E I R O S
Tipo C# Tipo SystemTamanho
(bytes)Sinal?
sbyte System.Sbyte 1 Sim
Short System.Int16 2 Sim
Int System.Int32 4 Sim
Long System.Int64 8 Sim
Byte System.Byte 1 Não
Ushort System.UInt16 2 Não
Uint System.UInt32 4 Não
Ulong System.UInt64 8 Não
T I P O S P O N T O
F L U T U A N T E
Tipo
C#Tipo System
Tamanho
(bytes)
float System.Single 4
double System.Double 8
TIPO DECIMAL
• Todos os tipos inteiro podem
ser implicitamente convertidos
para um tipo decimal
• As conversões entre decimal e
tipos flutuantes exigem
conversão explícita devido à
possibilidade de perda de
precisão
•
Tipo
C#Tipo System
Tamanho
(bytes)
decimal System.Decimal 16
T I P O S P R I M I T I V O S
IMPORTÂNCIA DA ESCOLHA CORRETA DO TIPO DE DADOS
• Economia de memória.
• Economia de processador.
• Economia de Disco.
• Qual o resultado da economia?
CONSOLE
• A classe Console possui uma
série de métodos estáticos
que servem de controle para
o console.
MÉTODO BEEP
VERIFICA SE TECLAS ESTÃO PRESSIONADAS
LIMPA O CONCOLECLEAR()
MOVIMENTA O CURSOR
TÍTULO DA JANELA
LEITURA DE DADOS
• Todos os dados coletados por meio do método ReadLine são do tipo string
OPERADORES ARITMÉTICOS
Operador Função
+ Soma
- Subtração
/ Divisão
% Resto da divisão
\ Divisão de resultado inteiro
* Multiplicação
OPERADORES RELACIONAIS
Operador Função Exemplo
== Comparação x==y
> Maior que x>y
< Menor que x<y
>= Maior ou igual a x>=y
<= Menor ou igual a x<=y
!= Diferente de x!=y
Considere: x=1; y=3;
OPERADORES DE ATRIBUIÇÃO
Operador Função Exemplo
= Atribuição Simples X=5;
+= Atribuição aditiva X+=5;
-= Atribuição Subtrativa X-=5;
*= Atribuição Multiplicativa X*=5;
/= Atribuição de divisão X/=5;
%= Atribuição de módulo X%=5;
OPERADORES LÓGICOS
Operador Função Exemplo
&& .e. Lógico. (A>B) && (A<B)
|| .ou. Lógico. (A>B) || (A<B)
! Negação !z
Considere: z=false;
Expressões Aritméticas
Operador Descrição Hierarquia da
Operação
+
-
Soma
Subtração
3º
3º
/
*
Multiplicação
Divisão
2º
2º
( ) Parênteses 1º
1º
7+4/2 ?????