CCT0416
PROGRAMAÇÃO I
Prof. Henrique Mota
Ementa
• Paradigma de programação orientado a objeto; • Estruturação de programas com orientação a
objetos; • Exceções; • Coleções.
Objetivos
Geral
Aplicar o paradigma de programação orientado a objeto aplicado à linguagem C#.
Específicos
Aplicar os conceitos de orientação a objetos na criação e análise de programas em C#;
Tratar erros através da captura de exceções; Criar listas e realizar manipulações em listas.
Conteúdo
Unidade I - Introdução à linguagem de programação
• Características da linguagem C# • Plataforma .NET (.NET Core) • Ambiente de programação
• Tipos de dados
• Constantes e variáveis • Operadores e expressões
• Comandos de controle de fluxo
• Entrada e Saída de dados via console • Conversão de tipos
Conteúdo
Unidade II - Conceitos de orientação a objetos
• Classes e objetos (atributos, métodos,
encapsulamento, sobrecarga de métodos, métodos e atributos estáticos, classes pré-definidas: Math e
String, vetor, relacionamento entre objetos) • Herança e polimorfismo
• Classe abstrata • Interface
Conteúdo
Unidade III – Tratamento de exceções
• Hierarquia de classes
• Como capturar exceções • Uso de throws e throw
Conteúdo
Unidade IV – Coleções • Introdução • ArrayList • Classes Wrapper • GenericsUnidade I - Introdução a
linguagem de
programação
Características da linguagem C#; Plataforma .NET (.NET Core); Ambiente de programação; Tipos de dados; Constantes e variáveis; Operadores e expressões; Comandos de controle de fluxo; Entrada e Saída de dados via console; Conversão de tipos.
Características da linguagem C#
• Linguagem de programação simples, moderna, orientada a objeto e fortemente tipada.
• Tem suas raízes na família de linguagens C.
• Linguagem orientada a objeto, mas inclui ainda suporte para programação orientada a componentes.
• Possui vários recursos para construção de aplicativos robustos: coletor de lixo, tratamento de exceção, design
fortemente tipado, etc.
• Possui sistema de tipos unificado: todos os tipos,
incluindo tipos primitivos (int, double, etc.) herdam de um único tipo raiz (object).
Olá mundo
using System; class Hello {
static void Main() {
Console.WriteLine("Hello, World"); }
Olá mundo
• O programa “Olá mundo" é usado comumente para introduzir uma linguagem de programação.
• Os códigos em C# ficam em aquivos texto com a extensão “.cs”.
• O programa pode ser compilado usando a linha de comando: csc hello.cs
• Vai produzir um assembly executável chamado
hello.exe
• Importante: o comando csc compila para o Framework e talvez não esteja disponível em todas as plataformas.
Plataforma .NET
• .NET é uma plataforma de desenvolvimento de uso geral.
• Possui vários recursos importantes: suporte a várias linguagens, modelos de programação assíncronos e simultâneos, interoperabilidade nativa, etc.
• Um aplicativo .NET é desenvolvido para e é executado em uma ou mais implementações do .NET.
• Implementações do .NET incluem: .NET Framework, .NET Core e o Mono.
Implementações do .NET
Cada implementação do .NET inclui os seguintes componentes:
• Um ou mais runtimes: o CLR para o .NET Framework, o CoreCLR e o CoreRT para o .NET Core.
• Uma biblioteca de classes: biblioteca de classes base do NET Framework, biblioteca de classes base do .NET Core.
• Opcionalmente, uma ou mais estruturas de aplicativo: ASP.NET, Windows Forms e WPF (Windows Presentation Foundation) estão incluídos no .NET Framework.
• Opcionalmente, ferramentas de desenvolvimento.
Há quatro implementações principais de .NET: .NET
Implementações do .NET
• .NET Core: implementação multiplataforma, projetado para lidar com cargas de trabalho de servidor e na
nuvem em escala. Executado em ambiente Windows, no Linux e no macOS.
• .NET Framework: implementação original do .NET
desde 2002. Otimizado para a compilação de aplicativos para ambiente Windows.
• Mono: implementação do .NET usada quando
necessário um CLR pequeno. Impulsiona aplicativos Xamarin no Android, Mac, iOS, tvOS e watchOS.
• UWP: implementação do .NET usada para criar
aplicativos Windows modernos e sensíveis ao toque, bem como software para a IoT.
Runtime .NET
O Runtime é o ambiente de execução de um programa gerenciado.
• CLR (Common Language Runtime) para o .NET Framework
• Core Common Language Runtime (CoreCLR) para o .NET Core
• .NET Native para a Plataforma Universal do Windows • O Runtime Mono
O método principal
• Um aplicativo de console do C# deve conter um método de entrada (Main) por onde a aplicação inicia e termina.
• Local onde cria-se objetos e executa outros métodos.
• Método estático que reside dentro de uma classe ou um struct.
Formas de declaração do ”Main”
static void Main() { //... }
static int Main() { //... return 0; }
static void Main(string[] args) { //... }
Estrutura de um programa C#
• Programas C# podem consistir em um ou mais arquivos.
• Cada arquivo pode conter zero ou mais namespaces. • Um namespace pode conter tipos como: classes,
estruturas, interfaces, enumerações e delegados, além de outros namespaces.
Exemplo estruturas C#
// A skeleton of a C# program using System; namespace YourNamespace { class YourClass { } struct YourStruct { } interface IYourInterface { }delegate int YourDelegate();
enum YourEnum { }
namespace YourNestedNamespace {
struct YourStruct { }
}
class YourMainClass {
static void Main(string[] args) {
//Your program starts here...
} } }
Tipos de dados e variáveis
• Existem dois tipos de tipos de dados em C #: tipos valor e tipos referência.
• Variáveis de tipos de valores contêm diretamente seus dados, e variáveis de tipos de referência
armazenam referências aos seus dados, sendo estes últimos conhecidos como objetos.
• Com os tipos de referência, é possível que duas variáveis façam referência ao mesmo objeto e,
portanto, possivel para operações em uma variável afetarem o objeto referenciado pela outra variável.
Tipos de dados e variáveis
• Os tipos valor são divididos em: tipos simples, enum, struct e tipos nuláveis. (stack)
• Os tipos referência são divididos em: classe, interface, matrizes e delegates. (heap)
Tipos de dados e variáveis
O compilador, de maneira geral, divide a memória em duas grandes áreas: a stack (uma área bem menor) e a heap (uma área bem maior).
Tipos de dados e variáveis
stack: forma otimizada para organizar dados na memória alocados em sequência e abandonados em sequência invertida a da entrada.
heap: organização de memória mais flexível que permite o uso de qualquer área lógica disponível.
Tipos de dados e variáveis
• Os tipos inteiros dão suporte a valores de 8 bits, 16 bits, 32 bits e 64 bits com ou sem sinal.
• Os dois tipos de pontos flutuantes, float e double, são representados usando os formatos IEC-60559 com 32 bits de precisão simples e 64 bits de
precisão dupla, respectivamente.
• O tipo decimal é um tipo de dados de 128 bits adequado para cálculos financeiros e monetários. • O tipo bool do C# é usado para representar valores
Categoria Descrição
Tipos Valor
Simple types
Signed integral: sbyte, short, int, long
Unsigned integral: byte, ushort, uint, ulong Unicode characters: char
IEEE floating point: float, double High-precision decimal: decimal Boolean: bool
Enum types User-defined types of the form enum E {...} Struct types User-defined types of the form struct S {...} Nullable types Extensions of all other value types with a
null value
Tipos
Referência
Class types
Ultimate base class of all other types: object Unicode strings: string
User-defined types of the form class C {...} Interface types User-defined types of the form interface I {...} Array types Single- and multi-dimensional, for example,
int[] and int[,]
Category Bits Type Range/Precision Signed integral 8 sbyte –128...127 16 short –32,768...32,767 32 int –2,147,483,648...2,147,483,647 64 long – 9,223,372,036,854,775,808...9,223,372, 036,854,775,807 Unsigned integral 8 byte 0...255 16 ushort 0...65,535 32 uint 0...4,294,967,295 64 ulong 0...18,446,744,073,709,551,615 Floating point 32 float 1.5 × 10−45 to 3.4 × 1038, 7-digit precision 64 double 5.0 × 10−324 to 1.7 × 10308, 15-digit precision Decimal 128 decimal 1.0 × 10−28 to 7.9 × 1028, 28-digit precision
Boxing e Unboxing
using System;
class BoxingExample {
static void Main() {
int i = 123;
object o = i; // Boxing
int j = (int)o; // Unboxing
} }
Conversão de tipos
A conversão de tipos, também conhecida como Type
Casting possui dois formatos:
• Conversão do tipo implícito: realizadas por C # de forma segura, ex: conversões de tipos inteiro
menores e maiores e conversões de classes derivadas para classes base.
• Conversão de tipo explícito: explicitamente
declaradas pelos usuários que usam as funções pré-definidas.
Conversão de tipos
static void Main(string[] args) {
double d = 5673.74;
int i;
// cast double to int.
i = (int)d;
Console.WriteLine(i); Console.ReadKey();
Conversão de tipos
ToBoolean ToByte ToChar ToDateTime ToDecimal ToDouble ToInt16 ToInt32 ToInt64 ToSbyte ToSingle ToString ToType ToUInt16 ToUInt32 ToUInt64Área do triângulo
class Rectangle
{
double length;
double width;
public void Acceptdetails() {
length = 4.5; width = 3.5; }
public double GetArea() {
return length * width; }
public void Display() {
Console.WriteLine("Length: {0}", length); Console.WriteLine("Width: {0}", width); Console.WriteLine("Area: {0}", GetArea()); }
Área do triângulo
static void Main(string[] args) {
Rectangle r = new Rectangle(); r.Acceptdetails();
r.Display();
Console.ReadKey(); }
Regras para criação de classes
• Deve começar com uma letra que pode ser seguida por uma sequência de letras, dígitos (0 - 9) ou
sublinhado.
• O primeiro caractere de um identificador não pode ser um dígito.
• Não deve conter nenhum espaço ou símbolo
incorporado, como: (? - +! @ #% ^ & * () [] {}. ; :
"'/ e \).
• Um sublinhado (_) pode ser usado. • Não pode ser uma palavra-chave C #.
abstract as base bool
break byte case catch
char checked class const
continue decimal default delegate
do double else enum
event explicit extern false
finally fixed float for
foreach goto if implicit
in in (generics) int interface
internal is lock long
namespace new null object
operator out out (generics) override
params private protected public
readonly ref return sbyte
sealed short sizeof stackalloc
static string struct switch
this throw true try
typeof uint ulong unchecked
unsafe ushort using using static
Exercício
a) Crie 3 variáveis com as idades dos seus melhores amigos e/ou familiares, em seguida pegue essas 3 idades e calcule a média delas. Exiba o resultado em uma sáida de console.