Baixe o app para aproveitar ainda mais
Prévia do material em texto
Engenharia 2013.2 – Programação de Computadores Prof. Max Arruda Diniz Filho P á g i n a | 1 PPPrrrooogggrrraaammmaaaçççãããooo DDDeee CCCooommmpppuuutttaaadddooorrreeesss Engenharia 2013.2 – Programação de Computadores Prof. Max Arruda Diniz Filho P á g i n a | 2 Programas de computador: Os programas de computadores nada mais são do que algoritmos escritos numa linguagem de computador, normalmente em inglês, (Pascal, C, Cobol, Fortran, Visual Basic, Delphi entre outras) e que são interpretados e executados por uma máquina, no caso um computador. Notem que dada esta interpretação rigorosa, um programa é por natureza muito específico e rígido em relação aos algoritmos da vida real. No nosso exemplo do tópico anterior nos antecipamos a este conceito que deverá ser melhor entendido agora. Para programar um computador precisamos dar “ordens” escritas ao mesmo “p-a- s-s-o a p-a-s-s-o”. Um computador é apenas uma máquina e não raciocina como nós humanos. Cada ordem é composta basicamente por um verbo que indique qual ação queremos que o mesmo execute, assim se queremos que o computador escreva algo na tela podemos usar algo como: MSGBOX (“ESTOU ESCREVENDO ALGO NA TELA”) Linguagem de Programação É um conjunto de termos (vocabulário) e de regras (sintaxe) que permitem a formulação de instruções a um computador. O computador só entende uma linguagem conhecida como código binário ou código máquina, consistente em zeros e uns. As linguagens mais próximas à arquitetura hardware se denominam linguagens de baixo nível e as que se encontram mais próximas aos programadores e usuários se denominam linguagens de alto nível. Linguagem de Baixo Nivel São linguagens totalmente dependentes da máquina. Dentro deste grupo se encontram: – A linguagem de máquina: esta linguagem ordena à máquina as operações fundamentais para seu funcionamento. – A desvantagem é que são bastante difíceis de manejar e usar, além de ter códigos fonte enormes onde encontrar uma falha é quase impossível. – A linguagem Assembler é um derivado da linguagem de máquina. Linguagem de Alto Nivel São aquelas que se encontram mais próximas à linguagem natural que à linguagem de máquina. Trata-se de linguagens independentes da arquitetura do computador. Sendo assim, à princípio, um programa escrito em uma linguagem de alto nível, pode ser migrado de uma máquina a outra sem nenhum tipo de problema. Engenharia 2013.2 – Programação de Computadores Prof. Max Arruda Diniz Filho P á g i n a | 3 Gerações A evolução das linguagens de programação pode ser dividida em 5 etapas ou gerações. Primeira geração: Linguagem de máquina. Segunda geração: Criaram-se as primeiras linguagens. Exemplo: assembler. Terceira geração: Criam-se as primeiras linguagens de alto nível. Ex: C, Pascal, Cobol,etc. Quarta geração: São linguagens capazes de gerar código por si só, são os chamados RAD, com o qual pode-se realizar aplicações sem ser um expert na linguagem. Aqui também se encontram as linguagens orientadas a objetos, tornando possível a reutilização de partes do código para outros programas. Quinta geração: Aqui se encontram as linguagens orientadas à inteligência artificial. Estas linguagens ainda estão pouco desenvolvidas. Ex: LISP Visual Basic for Applications A utilização de Macros em conjunto com os recurso do VBA nos oferece um grande número de opções na busca por soluções para os problemas mais complexos. Porém existem situações em que, por mais que saibamos utilizar todos os recursos, comandos e funções do Excel, essa utilização não é capaz de solucionar o problema proposto. O VBA é uma linguagem de programação interna do Microsoft Excel (na prática é a linguagem de programação para todos os aplicativos do Office: Access, Word, Excel e Power Point). Usamos o VBA pelo mesmo motivo que utilizamos macros - para automatizar tarefas e rotinas repetitivas, envolvendo os diversos elementos do banco de dados (tabelas, consultas, formulários, relatórios, folhas de dados, macros e módulos). O Ambiente de Programação – O Editor VBA O Microsoft Excel fornece um ambiente de programação bastante poderoso, com uma série de recursos que facilitam a criação de código VBA. Para utilizarmos o Editor VBA no Excel é preciso ativar a guia desenvolvedor: Para ativar a guia no Excel 2007 siga os passos a seguir: 1. No ícone Office, selecione opções do Excel; 2. Selecione dentre as opções para o trabalho no Excel “Mostrar guia desenvolvedor na faixa de opções”; 3. Clique OK Engenharia 2013.2 – Programação de Computadores Prof. Max Arruda Diniz Filho P á g i n a | 4 Para ativar a guia no Excel 2010 siga os passos a seguir: 1- Selecione a guia Arquivo; 2- No menu Arquivo selecione Opções; Engenharia 2013.2 – Programação de Computadores Prof. Max Arruda Diniz Filho P á g i n a | 5 3- Click em Personalizar Faixa de Opções; 4- Selecione a guia Desenvolvedor e click no botão OK; Engenharia 2013.2 – Programação de Computadores Prof. Max Arruda Diniz Filho P á g i n a | 6 Para abrir a guia desenvolvedor: Abre o Visual Basic Editor Engenharia 2013.2 – Programação de Computadores Prof. Max Arruda Diniz Filho P á g i n a | 7 Project Explorer – Relaciona todas as pastas de trabalho abertas e suplementos que são carregados. Janela Propriedades – Permite editar as propriedades de vários componentes. Janela de Edição de Texto – Exibe o código do VBA. Porém, o texto envolvido em cada procedimento é dotado de uma série de cores diferentes, sendo que cada uma tem significado diferente. Cor Significado Azul Palavras-Chave da linguagem. Ex: Sub, End Sub, Function, If, Then, Else, While, Loop,… Vermelho Erro de Sintaxe. Preto Nome de variáveis, procedimentos, valores, operadores,… Verde Comentário. Para introduzir comentários bastará que o caractere ‘ anteceda o texto a introduzir. Amarelo Erro de Execução do procedimento. Project Explorer J a n e la P ro p ri e d a d e s Janela de edição de texto Engenharia 2013.2 – Programação de Computadores Prof. Max Arruda Diniz Filho P á g i n a | 8 SubRotinas As SubRotinas são aquelas cuja definição é delimitada pelas palavras-chave Sub e EndSub. Sub <nome_da_SubRotina> ( ) <corpo_da_SubRotina> End Sub Para criar uma SubRotina é necessário que exista um módulo onde se possa escrever. Uma vez posicionado nesse módulo poderá escrever a SubRotina integralmente, ou Recorrer ao Inserir Procedimento para que o Visual Basic for Applications lhe crie a estrutura. Engenharia 2013.2 – Programação de Computadores Prof. Max Arruda Diniz Filho P á g i n a | 9 Funções Uma Função é um grupode comandos que podem ser executados, simplesmente através da chamada do nome da Função. Podemos passar um ou mais argumentos para uma Função. Quando uma Função é chamada, a execução desloca-se para dentro da Função, depois de executados todos os comandos dentro da Função, a execução do código continua, com o comando seguinte ao que chamou a Função. A diferença da Função para a Sub-rotina, é que a Função sempre retorna um ou mais valores para o comando que a chamou. A sintaxe para declaração de uma Função é a seguinte: Function Nome_da_Função(argumento1, argumento2, ..., argumenton) Comando1 Comando2 ... Comandon End Function Uma Função pode, ou não, conter argumentos. Caso sejam necessários argumentos, estes serão passados quando a Função for chamada, e devem ser passados, na mesma ordem em que foram definidos. DICA: Quando você criar Função, procure utilizar nomes que descrevam os objetivos da Função. Com isso você torna o entendimento do código mais fácil para quem for utilizá- lo. Considere o seguinte exemplo de declaração de uma Função: Function Converte_para_dolar(valor_em_real, cotacao_dolar) Comando1 Comando2 ... Comandon End Function Neste caso, declaramos uma Função chamada Converte_para_dolar, a qual espera receber 2 parâmetros: um valor em real e a cotação do dólar Uma vez criada a Função, devemos chamá-la, em um comando de atribuição, isto é, o valor retornado pela função, deve ser atribuído a uma variável, ou exibido através de um comando como MsgBox. No exemplo abaixo, estamos atribuindo o valor de retorno da função, à variável valor_dolar. valor_dolar = Converte_para_dolar (1500,1.81) Também poderíamos exibir o valor retornado pela função, utilizando o comando MsgBox, conforme indicado a seguir: MsgBox (“Valor em dólar: “ & Converte_para_dolar (1500,1.81)) Observe que os parâmetros são passados dentro dos parênteses, e na mesma ordem definida quando da criação da função.. Engenharia 2013.2 – Programação de Computadores Prof. Max Arruda Diniz Filho P á g i n a | 10 Variáveis Ao declarar variáveis, você geralmente utiliza uma instrução Dim. O exemplo a seguir cria a variável strName e especifica o tipo de dados String. Dim strName As String O escopo de uma variável, define em que partes do código a variável pode ser utilizada. Em VBA, podemos ter os seguintes escopos para as variáveis: Escopo de Módulo: Uma variável declarada dentro do Módulo, mas fora de qualquer Procedimento. Com isso a variável pode ser utilizada dentro de todo o bloco de código do Módulo, inclusive dentro dos Procedimentos, caso exista algum. Uma variável declarada em nível de Módulo, existe enquanto o Módulo estiver sendo executado.São as variáveis declaradas na seção de Declarações do Módulo. Uma variável declarada em nível de Módulo, poderá ser utilizada em todos os procedimentos/funções do módulo. Escopo de procedimento: A variável somente pode ser utilizada, dentro do procedimento onde esta é declarada. Se tentarmos utilizar a variável fora do procedimento, onde a ela foi declarada, não teremos acesso a ela. Uma variável declarada em nível de procedimento, existe enquanto o procedimento estiver sendo executado. Exercício: Crie uma função chamada ValorImpostoPF. Esta função deve receber o seguinte parâmetro: Total de rendimentos - TotRed. Com base na tabela oficial do IR, a função calcula o imposto a pagar e retorna o respectivo valor. Engenharia 2013.2 – Programação de Computadores Prof. Max Arruda Diniz Filho P á g i n a | 11 Tipos de Variáveis Boolean – 2 bytes – Permite armazenar valores Booleanos – True ou False Byte – 1 Byte – permite armazenar números sem sinal entre 0 e 255 Char – 2 Bytes – permite armazenar qualquer caractere Decimal – 16 bytes - permite armazenar um número com até 29 dígitos significativos Date – 8 Bytes – permite armazenar datas Double – 8 bytes – permite armazenar um real desde -1.79769313486232E308 até -4.94065645841247E-324 para valores negativos, e desde 1.79769313486232E308 até 4.94065645841247E-324 para valores positivos. Single – 4 bytes – permite armazenar um real desde -3.402823E38 até -1.4011298E-45, para valores negativos e desde 3.402823E38 até 1.4011298E- 45, para valores positivos Integer – 4 bytes - permite armazenar números inteiros entre -2,147,483,648 até 2,147,483,647 Long – 8 bytes – permite armazenar números inteiros entre - 9,223,372,036,854,775,808 até 9,223,372,036,854,775,807 Short – 2 bytes– permite armazenar números inteiros entre -32,768 até 32,767 Object – 4 bytes – utilizado para fazer referência a um objeto do Excel String – 1 byte por caractere – permite armazenar conjuntos de caracteres Variant – 16 bytes - permite armazenar qualquer tipo de dados. Declaração de Variáveis Dim I_Numero As Integer Onde: Dim – Palavra chave que indica uma declaração de variáveis (abreviatura de dimensão) I_Numero - nome da variável a utilizar As – palavra chave utilizada para separar o nome da variável do tipo de dados Integer – tipo de dados atribuído à variável É possível na mesma declaração de variáveis declarar variáveis de diversos tipos: Dim var1 As Integer, var2 As Date, var3 As Double Para declarar diversas variáveis do mesmo tipo: Dim var_1, var_2, var_3 As Currency Constantes Constantes são valores que não alteram durante a execução de uma rotina. São declaradas da mesma forma que as variáveis, a única diferença reside no fato da atribuição ser feita na mesma instrução da declaração, e só poder ser feita uma única vez. Const <Nome_Constante> As <Tipo> = <Valor> Engenharia 2013.2 – Programação de Computadores Prof. Max Arruda Diniz Filho P á g i n a | 12 Array Um Array é uma variável que representa um conjunto de variáveis do mesmo tipo. Classificação: Unidimensional: Dim Nome_do_Array(tam) As tipo Onde: Nome_do_Array é o nome da variável array. O número entre parêntesis indica o número de elementos que o array pode armazenar. Exemplo: Dim Países(3) As String Países (0) = "Portugal" Países(1) = "Brasil" Países(2) = "Moçambique" Bidimensional: Dim Nome_do_Array(indice_linha,indice_coluna) As tipo Onde: Nome_do_Array é o nome da variável. Os número entre parêntesis indicam que a tabela irá ter 3 linhas e 3 colunas, podendo assim armazenar 9 elementos do tipo String. Exemplo: Dim Mes (3,2) As String Mes(0,0) = “Janeiro“ Mes(o,1)= “Fevereiro” Mes(1,0) = “Março" Mes(1,1) = “Abril“ Mes(2,0) = “Maio" Mes(2,1) = “Junho“ Option Base e Array Bounds A indexação de um array por default tem inicio em 0, sendo que os respectivos índices vão de 0 a dimensão-1. Para alterar a base de indexação por forma a ter inicio em 1 basta colocar no inicio do módulo Option Base 1 Contudo se pretender que um array comece noutro número que não seja 0 ou 1, é necessário especificar os limites inferior e superior do índice aquando da declaração do array. Engenharia 2013.2 – Programação de Computadores Prof. Max Arruda Diniz Filho P á g i n a | 13 Exemplo: Sub Utilizacao_Array() Dim Paises (4 To 5) As IntegerPaises(4)=“Brasil” Paises(5)=“Chile” MsgBox (“Paises: ” & Paises(4) & “, “& Paises(5)) End Sub Operadores Aritméticos - Operadores usados para efetuar cálculos matemáticos. Comparação- Operadores usados para efetuar comparações. Concatenação- Operadores usados para combinar sequencias de caracteres. Lógicos- Operadores usados para efetuar operações lógicas. Aritméticos De comparação Lógicos ExpoTinenciação (^) Igualdade (=) Not Multiplicação e divisão (*, /) Desigualdade (<>) And Divisão de inteiros (\) Menor que (<) Or Módulo aritmético (Mod) Maior que (>) Adição e subtração (+, –) Menor que ou igual a (<=) Concatenação de sequencias de caracteres (&) Maior que ou igual a (>=) Operador Exponenciação (^) Usado para elevar um número à potência de um expoente. resultado = numero^expoente 2 ^ 2 ' Retorna 4. 3 ^ 3 ^ 3 ' Retorna 19683. (-5) ^ 3 ' Retorna -125. Operador Concatenação (&) Usado para forçar a concatenação de sequencias de caracteres de duas expressões. resultado= expressao1 & expressao2 "Olá" & " Mundo“ ' Retorna "Olá Mundo". Engenharia 2013.2 – Programação de Computadores Prof. Max Arruda Diniz Filho P á g i n a | 14 “Verificação " & 123 & " Verificação“ „Retorna "Verificação 123 Verificação". Quando as expressões contêm operadores oriundos de mais de uma categoria, os operadores aritméticos são avaliados em primeiro lugar, em seguida os operadores de comparação e, finalmente, os operadores lógicos. Todos os operadores de comparação apresentam a mesma precedência, ou seja, são avaliados da esquerda para a direita na ordem em que aparecem. Funções do VBA Abs(n) Retorna o valor absoluto (sem sinal), do número n. Atn(n) Retorna o valor do arco, cuja tangente é o número n. O número n deve ser fornecido em radianos. Cos(n) Retorna o coseno do número n. O número n deve ser fornecido em radianos. Exp(n) Retorna o número e (logaritmo neperiano e=2,7183), elevado no número n. Log(n) Retorna o logaritmo natural de um número n. Rnd(n) Retorna um número aleatório entre 0 e 1. Sgn(n) Retorna um número inteiro, indicando o sinal do número n. Retorna –1 para números negativos e 1 para números positivos. Sin(n) Retorna o seno do número n. O número n deve ser fornecido em radianos Sqr(n) Retorna a Raiz quadrada do número n. Tan(n) Retorna a tangente do número n. O número n deve ser fornecido em radianos. Exemplos: Abs(-2350) = 2350 Atn(2) = 1,1071487177 Cos(0) = 1 Exp(1) = 2,71828182845905 Log(1000) = 6,90775527898214 Rnd*10 Gera um número aleatório entre 0 e 10 Sgn(-235) Retorna –1, pois o número é negativo Sin(0) Retorna 0 Sqr(400) Retorna 20 Tan(0) Retorna 0 Entrada de Dados InputBox Exibe um aviso em uma caixa de diálogo, aguarda até que o usuário insira texto ou clique em um botão. Dim a As Double a = InputBox("Digite o valor a") Engenharia 2013.2 – Programação de Computadores Prof. Max Arruda Diniz Filho P á g i n a | 15 MsgBox Exibe uma mensagem em uma caixa de diálogo, aguarda que o usuário clique em um botão. MsgBox ("Olá mundo!!!") Dim x As Double x = InputBox("Digite um valor real“) MsgBox (x) Estrutura de Decisão Testa uma condição e executa um determinado conjunto de instruções consoante o resultado dessa avaliação IF..THEN..ELSE..ENDIF If <Condição> Then <se condição verdadeira> [ Else <se condição falsa> ] End If A palavra Else é opcional num If-Then-Else Exemplo: If turma= “2NL” then MsgBox(“Aplicar Prova1”) Else MsgBox(“Aplicar Prova2”) End If Engenharia 2013.2 – Programação de Computadores Prof. Max Arruda Diniz Filho P á g i n a | 16 IF..THEN..ELSEIF..ENDIF If <Condição1> Then <se condição1 verdadeira> [ElseIf <Condição2> Then <se condição2 verdadeira> [Else [<se condição2 falsa> ]] End If Exemplo: Pretende-se criar uma SubRotina que classifique um indivíduo em função da sua idade. A classificação pretendida é a seguinte: Menos de 3 anos Bebê Dos 3 aos 12 Criança Dos 13 aos 17 Adolescente Dos 18 aos 25 Jovem Dos 26 aos 65 Adulto Mais de 65 Idoso Exercício: 1. Faça uma SubRotina para ler o salário de um funcionário e aumenta-lo em 15%. Após o aumento, desconte 8% de impostos. Exiba o salário inicial, o salário com o aumento e o salário final. Janela de edição de texto Engenharia 2013.2 – Programação de Computadores Prof. Max Arruda Diniz Filho P á g i n a | 17 2. Fazer uma SubRotina para ler as três notas de um aluno em uma disciplina, e depois imprimir a média aritmética das notas e a situação do aluno, a partir da seguinte tabela: Média >= 7 : Aprovado 4 <= Média < 7 : Prova Final Média < 4 : Reprovado Estrutura de Repetição A estrutura For...Next Utilizamos o laço For...Next, para repetir um segmento de código, um número determinado de vezes. Utilizamos esta estrutura, quando já sabemos o número de vezes que uma determinada seção de código deve ser repetida. Neste tipo de estrutura, normalmente, utilizamos uma variável como contador. Este contador varia de um valor inicial até um valor final. For contador=inicio to fim incremento Comando1 Comando2 ... Comando n Next Considere o exemplo a seguir: Dim x, Soma As Integer x=10 Soma=0 For i=1 to x Soma = Soma +i Next MsgBox (“Valor da Soma = “ & Soma) Poderíamos utilizar um valor de incremento diferente de 1, para, por exemplo, obter a soma somente dos números ímpares menores do que 10: Dim x, soma as integer x=10 Soma=0 For i=1 to x Step 2 Soma = Soma +i Next MsgBox (“Valor da Soma = “ & Soma) Exercício: 1. Crie um programa que realize a soma dos números pares menores do que 20. 2. Janela de edição de texto Engenharia 2013.2 – Programação de Computadores Prof. Max Arruda Diniz Filho P á g i n a | 18 A estrutura Do Until..Loop Nesta estrutura, enquanto a condição for Falsa, o código dentro do laço é executado. Quando a condição tornar-se Verdadeira, o primeiro comando após o final do laço, será executado. Do Until <Condição> <Instruções a realizar em cada iteração> Loop Considere o exemplo a seguir: Dim Contador, Soma As Integer Contador=0 Soma=0 Do Until Contador > 10 Soma = Soma +1 Contador = Contador+1 Loop MsgBox (“Valor da Soma = “ & Soma) Exercicio: 3. Crie um programa que calcule a soma dos números entre 1 e 10. A estrutura Do... Loop While Condição. Do Comando1 Comando2 ... Comando n Loop While condição/teste Nesta estrutura, enquanto a condição for verdadeira, o código dentro do laço é executado. Quando a condição tornar-se falsa, o primeiro comando após o final do laço, será executado. Neste caso, se a condição for falsa já na primeira vez, o laço será executado uma única vez. Considere o exemplo a seguir: Dim x,Contador,Soma As Integer x=10 Contador=1 Soma=0 Do Soma = Soma + Contador Contador = Contador + 1 Loop While Contador <= x MsgBox( “Valor da Soma = “ & Soma) Engenharia 2013.2 – Programação de ComputadoresProf. Max Arruda Diniz Filho P á g i n a | 19 A estrutura Do... Loop Until Condição. Do Comando1 Comando2 ... Comando n Loop Until condição/teste Nesta estrutura, enquanto a condição for Falsa, o código dentro do laço é executado. Quando a condição tornar-se Verdadeira, o primeiro comando após o final do laço, será executado. Neste caso, se a condição for Verdadeira, já na primeira vez, o laço será executado uma única vez. Considere o exemplo a seguir: Dim x , Contador, Soma As Integer x=10 Contador=1 Soma=0 Do Soma = Soma + Contador Contador = Contador + 1 Loop Until Contador > x MsgBox( “Valor da Soma = “ & Soma)
Compartilhar