1 / 166

Linguagens de Programação

Linguagens de Programação. Prof. Miguel Elias Mitre Campista http://www.gta.ufrj.br/~miguel. Parte III. Introdução à Programação em C++ (Continuação). Relembrando da Última Aula. Classes e objetos Mais exemplos de programação orientada a objetos. Funções.

jorryn
Télécharger la présentation

Linguagens de Programação

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Linguagens de Programação Prof. Miguel Elias Mitre Campista http://www.gta.ufrj.br/~miguel Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista

  2. Parte III Introdução à Programação em C++ (Continuação) Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista

  3. Relembrando da Última Aula... Classes e objetos Mais exemplos de programação orientada a objetos Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista

  4. Funções • Facilitam o projeto, a implementação, a operação e a manutenção de programas grandes • Podem empregar técnicas para redução do tempo de convergência • Técnica dividir para conquistar • Constrói um grande programa por meio de peças simples e pequenas • Funções da C++ Standard Library Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista

  5. Componentes de um Programa em C++ • C++ Standard Library • É uma coleção de funções para a execução de operações comuns como: • Cálculos matemáticos • Manipulação de strings • Manipulação de caracteres • Entrada/Saída • Verificação de erros • É fornecida como parte do ambiente de programação do C++ Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista

  6. Componentes de um Programa em C++ • Funções • Também chamadas como métodos, procedimentos ou sub-rotinas • Utilizadas para modularizar um programa • Separam as tarefas em unidades prontas • A mesma função pode: • Ser reutilizada em vários locais em um programa • Ser ocultada de outras funções • Permitem a utilização do método dividir para conquistar • São reutilizáveis em outros programas • São definidas pelo usuário ou pelo programador Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista

  7. Componentes de um Programa em C++ • Funções • Uma função é chamada por uma chamada de função • A função chamada retorna um resultado ou simplesmente retorna o controle ao chamador • As chamadas de função formam relacionamentos hierárquicos Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista

  8. função chefe função trabalhador 2 função trabalhador 1 função trabalhador 3 função trabalhador 4 função trabalhador 5 Componentes de um Programa em C++ • Funções • Uma função é chamada por uma chamada de função • A função chamada retorna um resultado ou simplesmente retorna o controle ao chamador • As chamadas de função formam relacionamentos hierárquicos Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista

  9. Componentes de um Programa em C++ • As funções devem ser limitadas à realização de uma única tarefa bem definida • Programas simples são mais fáceis de escrever, testar, depurar e manter • Dica: O nome da função deve expressar essa tarefa efetivamente • Caso isso não seja possível, é provável que a função esteja tentando realizar um número muito grande de tarefas • Nesse caso, é melhor dividir essa função em funções menores Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista

  10. Funções da Biblioteca de Matemática • Funções globais • Não pertencem a uma classe particular • Os protótipos de função são colocados nos arquivos de cabeçalho • Podem ser reutilizadas em qualquer programa que inclua o arquivo de cabeçalho e que possa se vincular ao código-objeto da função • Ex.: arquivo de cabeçalho sqrt in <cmath> • sqrt( 900.0 ) • Todas as funções em <cmath> são funções globais Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista

  11. Funções da Biblioteca de Matemática Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista

  12. Retorno das Funções • Duas maneiras de retornar o controle à sentença de chamada: • Se a função não retornar um resultado: • O fluxo do programa alcança o fim da chave direita da função ou • O programa executa a instrução return; • Se a função retornar um resultado: • O programa executa a instrução returnexpressão; • expressão é avaliada e seu valor é retornado ao chamador Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista

  13. Funções com Múltiplos Parâmetros • Especificados tanto no protótipo quanto no cabeçalho da função • Parâmetros são listados e separados por vírgulas • O compilador usa o protótipo de função para: • Verificar se as chamadas para a função contêm o número correto e os tipos de argumento na ordem correta • Garantir que o valor retornado pela função está sendo usado corretamente na expressão que chamou a função Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista

  14. Protótipo de uma Função e Coerção de Argumentos • Protótipo de função • Também chamado de declaração de função • Indica ao compilador: • O nome da função • O tipo de dados retornado à função • Os parâmetros que a função espera receber • O número de parâmetros • Os tipos de parâmetros • A ordem desses parâmetros int soma(int a , int b); Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista

  15. Protótipo de uma Função e Coerção de Argumentos • Assinatura de função (ou simplesmente assinatura) • Parte de um protótipo de função que inclui o nome da função e os respectivos tipos de argumento • Não especifica o tipo de retorno da função • As funções no mesmo escopo devem ter assinaturas exclusivas • O escopo de uma função é a região de um programa em que a função é conhecida e acessível int soma(int a , int b);  int soma(double a, double b); Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista

  16. Assinaturas diferentes Protótipo de uma Função e Coerção de Argumentos • Assinatura de função (ou simplesmente assinatura) • Parte de um protótipo de função que inclui o nome da função e os respectivos tipos de argumento • Não especifica o tipo de retorno da função • As funções no mesmo escopo devem ter assinaturas exclusivas • O escopo de uma função é a região de um programa em que a função é conhecida e acessível int soma(int a , int b);  int soma(double a, double b); Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista

  17. Assinaturas iguais Protótipo de uma Função e Coerção de Argumentos • Assinatura de função (ou simplesmente assinatura) • É um erro de compilação se duas funções do mesmo escopo tiverem a mesma assinatura, mas diferentes tipos de retorno int soma(int a , int b); = void soma(int a, int b); Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista

  18. Protótipo de uma Função e Coerção de Argumentos • Coerção de argumentos • Forçar argumentos aos tipos apropriados especificados pelos parâmetros correspondentes • Por exemplo, chamar uma função com um argumento inteiro, mesmo que o protótipo da função especifique um argumento double • A função ainda assim continuará a funcionar corretamente int a, b; double soma(double a , double b); Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista

  19. Protótipo de uma Função e Coerção de Argumentos • Regras de promoção C++ • Indicam como converter de um tipo para outro sem perder dados • Aplicam-se a expressões que contenham valores de dois ou mais tipos de dados • Expressões desse tipo são também referidas como expressões de tipo misto • Cada valor na expressão é promovido ao tipo “mais alto” na expressão • Uma versão temporária de cada valor é criada e utilizada para a expressão • Os valores originais permanecem inalterados Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista

  20. Protótipo de uma Função e Coerção de Argumentos • Regras de promoção C++ • A promoção ocorre também quando o tipo de um argumento de função não corresponde ao tipo de parâmetro especificado • A promoção é como se o valor do argumento tivesse sido atribuído diretamente ao tipo do parâmetro • A conversão de um valor em um tipo mais baixo • Pode provocar a perda de dados ou valores incorretos • Só pode ser executada explicitamente • Atribuindo o valor a uma variável ou tipo mais baixo (alguns compiladores emitirão um aviso nesse caso) Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista

  21. Protótipo de uma Função e Coerção de Argumentos Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista

  22. Protótipo de uma Função e Coerção de Argumentos Tipo funda-mental mais alto Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista

  23. Protótipo de uma Função e Coerção de Argumentos • Converter de um tipo de dados mais alto em um tipo mais baixo ou entre com sinal e sem sinal pode… • Corromper o valor dos dados, causando perda de informações • Constitui erro de compilação: • Passar argumentos em uma chamada de função que não correspondem ao número e aos tipos de parâmetros declarados no protótipo da função correspondente • Passar um número corretos de argumentos na chamada da função, mas passar argumentos que não possam ser implicitamente convertidos nos tipos esperados Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista

  24. Arquivos de Cabeçalho da Biblioteca-padrão C++ • Cada um contém uma parte da Standard Library • Protótipos de função para as funções relacionadas • Definição de vários tipos de classes e funções • Constantes necessárias a essas funções • Instruem o compilador a interfacear com a biblioteca e os componentes escritos pelo usuário • Nomes de arquivos de cabeçalho finalizados em.h • São arquivos de cabeçalho de “estilo antigo” • Foram substituídos pelos arquivos de cabeçalho da biblioteca-padrão C++ Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista

  25. Arquivos de Cabeçalho da C++ Standard Library Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista

  26. Arquivos de Cabeçalho da C++ Standard Library Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista

  27. Arquivos de Cabeçalho da C++ Standard Library Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista

  28. Arquivos de Cabeçalho da C++ Standard Library Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista

  29. Estudo de Caso: Geração de Números Aleatórios • Função rand na C++ Standard Library • Introduz o elemento de mudança nos aplicativos do computador • Ex.: i = rand(); • Gera um inteiro sem sinal entre 0 e RAND_MAX (uma constante simbólica definida no arquivo de cabeçalho <cstdlib>) • O protótipo de função para a função rand encontra-se em <cstdlib> Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista

  30. Estudo de Caso: Geração de Números Aleatórios • Para produzir inteiros em um intervalo específico • Use o operador módulo (%) com rand • Ex.: rand() % 6; • Produz números no intervalo de 0 a 5 • Isso é chamado de escalonamento e 6 é o fator de escalonamento • Um deslocamento pode mover o intervalo de 1 a 6 • 1 + rand() % 6; Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista

  31. Primeiro Exemplo utilizando Funções em C++ Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista

  32. Primeiro Exemplo utilizando Funções em C++ Cabeçalho para uso da funçãorand Função rand módulo 6 Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista

  33. Primeiro Exemplo utilizando Funções em C++ shell>$ g++ exemplo.cpp –o ex1 shell>$ ./ex1 6 6 5 5 6 5 1 1 5 3 6 6 2 4 2 6 2 3 4 1 shell>$ Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista

  34. Segundo Exemplo utilizando Funções em C++ Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista

  35. Segundo Exemplo utilizando Funções em C++ Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista

  36. Segundo Exemplo utilizando Funções em C++ Escalonando e deslocando o valor produzido pela função rand Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista

  37. Segundo Exemplo utilizando Funções em C++ Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista

  38. Segundo Exemplo utilizando Funções em C++ shell>$ g++ exemplo.cpp –o ex2 shell>$ ./ex2 Face Frequency 1 999702 2 1000823 3 999378 4 998898 5 1000777 6 1000422 shell>$ Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista

  39. Estudo de Caso: Geração de Números Aleatórios • Função rand • Gera números pseudo-aleatórios • A mesma sequência de números repete-se automaticamente toda vez que o programa executa • Randomização • Ato de condicionar um programa a produzir uma sequência diferente de números aleatórios a cada execução • Função srand da C++ Standard Library • Aceita um argumento inteiro sem sinal • Semeia a função rand para produzir uma sequência diferente de números aleatórios Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista

  40. Terceiro Exemplo utilizando Funções em C++ Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista

  41. Terceiro Exemplo utilizando Funções em C++ Tipo de dados sem sinal Passagem do seed para funçãosrand Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista

  42. Terceiro Exemplo utilizando Funções em C++ shell>$ g++ exemplo.cpp –o ex3 shell>$ ./ex3 Entre com a semente: 67 6 1 4 6 2 1 6 1 6 4 Entre com a semente: 23 6 3 5 4 5 5 4 3 4 5 Entre com a semente: 67 6 1 4 6 2 1 6 1 6 4 shell>$ Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista

  43. Estudo de Caso: Geração de Números Aleatórios • Para randomizar sem ter de toda vez inserir uma semente • srand(time(0)); • Isso faz com que o computador leia o respectivo relógio para obter o valor da semente • A função time (com o argumento 0) • Retorna a hora atual como o número de segundos desde 1º de janeiro de 1970, à meia-noite do Greenwich Mean Time (GMT) • O protótipo de função para time encontra-se em <ctime> Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista

  44. Estudo de Caso: Geração de Números Aleatórios • A chamada da função srandmais de uma vez em um programa pode… • Reiniciar a sequência de números pseudo-aleatórios • Afetar a aleatoriedade dos números produzidos pela função rand • Utilizar srand no lugar de rand para tentar gerar números aleatórios • Representa um erro de compilação • A função srand não retorna um valor! Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista

  45. Estudo de Caso: Geração de Números Aleatórios • Escalonando e deslocando números aleatórios • Para obter números aleatórios em um intervalo desejado, use uma instrução do tipo • number =shiftingValue+ rand() %scalingFactor; • shiftingValue é igual ao primeiro número no intervalo desejado de inteiros consecutivos • scalingFactor é igual à amplitude do intervalo desejado de inteiros consecutivos • Número de inteiros consecutivos no intervalo Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista

  46. Enumeração • Conjunto de constantes inteiras representadas por identificadores • Os valores das constantes de enumeração iniciam em 0, a menos que se especifique diferente, e incrementam por 1 • Os identificadores em uma enum devem ser exclusivos, mas constantes enumeradas separadas podem ter o mesmo valor inteiro • Definindo uma enumeração • Palavra-chave:enum • Um nome de tipo • Lista de nomes de identificadores separada por vírgulas entre chaves • Ex.:enum Months { JAN = 1, FEB, MAR, APR }; Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista

  47. c Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista

  48. c Uso da função time Enumeração para acompanhar o status do jogo Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista

  49. c Declaração de uma variável do tipo enumeração Função aleatória usa o tempo como seed Atribuição de uma constante enumerada a gameStatus Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista

  50. Terceiro Exemplo utilizando Funções em C++ Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista

More Related