Laboratório de Programação de Computadores I 1º Semestre/2009 Prof. Mauro César Lopes. [email protected] 1 Conceitos básicos Programação de computadores é definido como o processo de criação de um software de computador usando uma linguagem de programação Linguagem de programação: é uma linguagem usada para dar instruções a um computador Um programa é um conjunto de instruções para um computador Uma linguagem de programação contém uma coleção de palavras que são organizadas em sentenças que transportam a informação ao computador 2 Linguagens de Programação C, C++, C#, Pascal, Java, VisualBasic, Fortran, Cobol, Perl, Python, Ruby, TCL, Lisp, Prolog, ADA, SmallTalk, Erlang, PHP 3 Ambientes de desenvolvimento e compilação Compilação via linha de comando IDE (Integrated Development Environment) Desenvolvimento RAD (Rapid Application Development) 4 Ambientes Windows Visual Studio Express Edition Eclipse NetBeans 5 IDE (Ambiente de Desenvolvimento Integrado) Permitem o desenvolvimento integrado de aplicações, envolvendo a edição, compilação, execução e debug da aplicação 6 Compiladores e Linkers Compiladores: é responsável pela tradução do código fonte em linguagem de máquina (código objeto) Linkers: é responsável pela ligação do código objeto com outras bibliotecas (se necessário) a fim de gerar o código executável 7 Processo de Compilação Código fonte Helllo.c Compilação Compilação ligação ligação executável Hello.exe Hello.c Hello.obj Hello.c 8 Compilação x Interpretação Um programa compilado gera um executável dependente de plataforma Um programa interpretado é executado passo a passo por um interpretador 9 Exemplos de linguagens tipicamente compiladas C C++ COBOL Fortran Pascal 10 Exemplos de linguagens tipicamente interpretadas ActionScript ASP BASIC JavaScript (ECMAScript) Perl PHP Ruby Tcl 11 Programação Estruturada Programação estruturada é uma forma de programação de computadores que preconiza que todos os programas possíveis podem ser reduzidos a apenas três estruturas: sequência, decisão e iteração. Tendo, na prática, sido transformada na Programação modular, a Programação estruturada orienta os programadores para a criação de estruturas simples em seus programas, usando as subrotinas e as funções. 12 Programação Orientada a Objetos Programação Orientada a Objetos (POO) ou Object-Oriented Programming (OOP) é um paradigma de análise, projeto e programação de sistemas de software baseado na composição e interação entre diversas unidades de software chamadas de objetos. 13 Programação em linguagem C 14 Variáveis Uma variável é definida como um lugar onde podemos armazenar dados temporariamente e usá-los posteriormente Normalmente um variável possui um nome que é usado para acessar seu conteúdo Uma variável poderá armazenar um número inteiro, de ponto flutuante, um caracter, uma cadeia de caracteres (String) , um valor booleano, etc. 15 Tipos de variáveis Inteira Ponto flutuante Float, double Caracter int, short, long char Booleana 1 = sim, verdadeiro; 0=não, falso 16 Variáveis Uma variável poderá ser signed ou unsigned, isto é, com sinal ou sem sinal. Uma variável unsigned possui apenas valores positivos Uma variável signed possui valores positivos e negativos 17 Exemplos int a, idade; char ch, caracter; float f, valor; double d; 18 Atribuição de valores a variáveis Podemos atribuir o valor a uma variável usando o símbolo ‘=‘ Exemplos int a = 1; float f = -8.76; char c=‘a’; 19 Operadores Numéricos Lógicos Binários 20 Operadores Numéricos ++, -- Incremento, decremento +, -, *, /, % adição, subtração, multiplicação, divisão, módulo (resto) 21 Operadores Lógicos ==, != Igual, diferente >, >=, <, <= Maior, maior ou igual, menor, menor ou igual && “E” lógico || “OU” lógico ! “NÃO” lógico 22 Operadores Binários & “E” binário ^ “XOR” ou-exclusivo | “OU” binário ~ “NÃO” binário 23 Sequência de comandos Um programa é uma sequencia de comandos <comando 1>; <comando 2>; ... <comando N>; 24 Comandos condicionais Permitem uma expressão seja avaliada e que uma ação seja executada no caso da expressão ser avaliada verdadeira (1) ou falsa (0). 25 Comando if int a = 5; if(a<0) { print (“a é negativo\n”); } else { print (“a é positivo\n”); } 26 Controle de Fluxo Loops com teste no início (while) Loops com testes no final (do/while) Loops de tamanho definido (for) Saindo de loops antes do término (break) Retestando a condição (ex: continue) 27 Comando while int i=0; while(i<5) { printf(“%d\n”,i); i = i + 1; } 28 Comando do/while int i=0; do { printf(“%d\n”,i); i = i + 1; } while (i<5); 29 Comando for int i = 0; for(i=0;i<5;i++) { printf(“%d\n”,i); } 30 Comando break int 0=0; while (i<10) { printf(“%d\n”,i); i++; if(i==5) { break; } } 31 Comando continue int 0=0; while (i<10) { if(i%2!=0) { continue; } i++; } 32 Funções Header file Cabeçalho da função Argumentos Tipo de retorno 33 Funções Tipo de retorno Nome da função parâmetros int soma(int x, int y) { return x+y; } 34 Matrizes 35 Conceitos Básicos de Orientação a Objetos Classe É uma fábrica de objetos. Representa um conjunto de objetos com características afins. Uma classe define o comportamento dos objetos, através de métodos, e quais estados ele é capaz de manter, através de atributos. Exemplo de classe: Os seres humanos. Objeto é uma instância de uma classe. Um objeto é capaz de armazenar estados através de seus atributos e reagir a mensagens enviadas a ele, assim como se relacionar e enviar mensagens a outros objetos. Exemplo de objetos da classe Humanos: João, José, Maria. Atributos são características de um objeto. Basicamente a estrutura de dados que vai representar a classe. Exemplos: Funcionário: nome, endereço,telefone, CPF, ....; Carro: nome, marca, ano, cor, ...; Livro: autor, editora, ano. Estado São os valores que cada atributo recebe. Exemplo: o estado do atributo cor é azul. 36 Conceitos Básicos de Orientação a Objetos Métodos definem as habilidades dos objetos. Bidu é uma instância da classe Cachorro, portanto tem habilidade para latir, implementada através do método deUmLatido(). Um método em uma classe é apenas uma definição. A ação só ocorre quando o método é invocado através do objeto, no caso Bidu. Dentro do programa, a utilização de um método deve afetar apenas um objeto em particular; Todos os cachorros podem latir, mas você quer que apenas Bidu dê o latido. Normalmente, uma classe possui diversos métodos, que no caso da classe Cachorro poderiam ser sente(), coma() e morda(). 37 Conceitos Básicos de Orientação a Objetos Mensagem é uma chamada a um objeto para invocar um de seus métodos, ativando um comportamento descrito por sua classe. Também pode ser direcionada diretamente a uma classe (através de uma invocação a um método estático). Sobrecarga é a utilização do mesmo nome para símbolos ou métodos com operações ou funcionalidades distintas. Geralmente diferencia-se os métodos pela sua assinatura. Exemplo: Um método Carro que recebe como parâmetro dois atributos (cor, placa), e outro método Carro que recebe como parâmetro (cor, placa, modelo). 38 Conceitos Básicos de Orientação a Objetos Herança (ou generalização) é o mecanismo pelo qual uma classe (sub-classe) pode estender outra classe (super-classe), aproveitando seus comportamentos (métodos) e variáveis possíveis (atributos). Há Herança múltipla quando uma sub-classe possui mais de uma super-classe. Essa relação é normalmente chamada de relação "é um". Um exemplo de herança: Mamífero é super-classe de Humano. Ou seja, um Humano é um mamífero. Associação é o mecanismo pelo qual um objeto utiliza os recursos de outro. Pode tratar-se de uma associação simples "usa um" ou de um acoplamento "parte de". Por exemplo: Um humano usa um telefone. A tecla "1" é parte de um telefone. Encapsulamento consiste na separação de aspectos internos e externos de um objeto. Este mecanismo é utilizado amplamente para impedir o acesso direto ao estado de um objeto (seus atributos), disponibilizando externamente apenas os métodos que alteram estes estados. Exemplo: você não precisa conhecer os detalhes dos circuitos de um telefone para utilizá-lo. A carcaça do telefone encapsula esses detalhes, provendo a você uma interface mais amigável (os botões, o monofone e os sinais de tom). 39 Conceitos Básicos de Orientação a Objetos Abstração é a habilidade de concentrar nos aspectos essenciais de um contexto qualquer, ignorando características menos importantes ou acidentais. Em modelagem orientada a objetos, uma classe é uma abstração de entidades existentes no domínio do sistema de software. Polimorfismo é o princípio pelo qual duas ou mais classes derivadas de uma mesma superclasse podem invocar métodos que têm a mesma assinatura (lista de parâmetros e retorno) mas comportamentos distintos, especializados para cada classe derivada, usando para tanto uma referência a um objeto do tipo da superclasse. A decisão sobre qual o método que deve ser selecionado, de acordo com o tipo da classe derivada, é tomada em tempo de execução, através do mecanismo de ligação tardia. No caso de polimorfismo, é necessário que os métodos tenham exatamente a mesma identificação, sendo utilizado o mecanismo de redefinição de métodos. Esse mecanismo de redefinição não deve ser confundido com o mecanismo de sobrecarga de métodos. 40 Conceitos Básicos de Orientação a Objetos Interface é um contrato entre a classe e o mundo externo. Quando uma classe implementa uma interface, ela está comprometida a fornecer o comportamento publicado pela interface [1]. Pacotes são referências para organização lógica de classes e interfaces 41 Estratégias básicas de desenvolvimento de programas 42