Departamento de Engenharia Rural Centro de Ciências Agrárias. Programação I

Tamanho: px
Começar a partir da página:

Download "Departamento de Engenharia Rural Centro de Ciências Agrárias. Programação I"

Transcrição

1 Departamento de Engenharia Rural Centro de Ciências Agrárias Programação I

2 Modularização Recursividade

3 Modularização Seus programas continuam evoluindo e o código está cada vez maior e mais complexo: o número de funções cresce rapidamente. Código complexo pode ser difícil de ler, e ainda mais difícil de manter. Partes do seu código se repetem ao longo do programa, gerando um emaranhado de instruções. Uma forma de gerenciar essa complexidade e eliminar certas redundâncias através da modularização. Museu do código fonte não modular.

4 Modularização A experiência mostrou que a melhor maneira de desenvolver e manter um grande programa é construí-lo a partir de pedaços pequenos e simples de código, ou módulos.

5 Modularização Dentre as técnicas de programação estruturada, encontra-se a modularização: Decompor um programa em uma série de subprogramas individuais. A modularização é um método utilizado para facilitar a construção de grandes programas, através de sua divisão em pequenas etapas (dividir para conquistar) Entre as principais estratégias da modularização estão a criação de sub-rotinas e de funções. (ou módulos, subprogramas, etc...)

6 Modularização Sub-rotinas e funções são trechos de código que você usa quando necessário dentro de seu programa. Estes recursos permitem separar ações comuns e, dessa forma, tornam seu código mais fácil de ler e de manter. Aprender um pouco sobre isto pode tornar sua vida de codificação bem mais fácil!

7 Programa principal e Subprogramas Seu código terá uma organização um pouco diferenciada do que foi visto até agora, sendo dividido em duas partes: a primeira, por onde começa a execução do trabalho, recebe o nome de programa principal; as outras são as sub-rotinas e as funções Eles são executados sempre que chamados.

8 Modularização e Reuso A modularização permite o reuso de partes do programa num mesmo programa ou mesmo em novos programas As ferramentas ficam em um local separado. No código do programa principal você só faz referência aos nomes dessas ferramentas.

9 Modularização e Reuso Exemplo de oportunidade de reuso: imagine um trecho de programa que verifica se uma data é valida ou não: A rotina de verificação de data pode ser usada várias vezes num mesmo programa (ou em diferentes programas).

10 Modularização Outros benefícios Outras consequências positivas do uso de modularização é o aumento de clareza e concisão do programa, pois o comprimento do programa diminui com o uso de módulos.

11 Modularização Vantagens Economia de código: Escreve-se menos; Desenvolvimento modularizado: Pensa-se no algoritmo por partes; Facilidade de depuração (correção/acompanhamento): É mais fácil corrigir/detectar um erro apenas uma vez do que dez vezes; Facilidade de alteração do código: Se é preciso alterar, altera-se apenas uma vez; Generalidade de código com o uso de parâmetros: Escreve-se algoritmos para situações genéricas. Aumento de produtividade: Não se empenha recursos para desenvolver soluções já disponíveis;

12 Modularização program NOTAS; {sem sub-rotinas ou funções} var nota1,nota2: Real; readln(nota1); readln(nota2); writeln((nota1 + nota2) / 2); end.

13 Modularização Como elaborar programas de forma modular? Cada um de vocês tem um papel nesta empresa

14 Modularização Antes de codificar, você deve pensar no sistema como um conjunto de componentes que realizam serviços específicos, da forma mais independente possível em relação aos outros componentes.

15 Modularização Pascal Depois de pensar nos serviços (ou funções) que devem ser executados para a resolução do seu problema, você poderá se preocupar em conhecer os recursos da linguagem de programação que irá usar para implementar os módulos. O Turbo Pascal oferece duas maneiras de se criar módulos: Procedimentos (para a criação de sub-rotinas) Funções

16 Modularização Procedimentos Um subprograma do tipo PROCEDIMENTO é, na realidade, um programa com vida própria, mas que, para ser processado, tem que ser solicitado pelo programa principal que o contém, ou por outro subprograma, ou por ele mesmo. Ao encerrar, o programa segue o fluxo normal partindo do ponto imediatamente após a chamada da sub-rotina.

17 Modularização Procedimentos Sintaxe para a criação de procedimentos: Procedure <nome>; end; {declaração dos objetos locais ao procedimento (variáveis, constantes, subprogramas, etc} {comandos do procedimento} Onde: nome é o identificador associado ao procedimento

18 Modularização Procedimentos program NOTAS; {sem sub-rotinas ou funções} var nota1,nota2: Real; readln(nota1); readln(nota2); writeln((nota1 + nota2) / 2); end.

19 Modularização Procedimentos program NOTAS; {procedimentos} var nota1,nota2: Real; procedure le_notas; readln(nota1); readln(nota2); end; procedure get_media; writeln((nota1 + nota2) / 2); end; le_notas; get_media; end. Utilizando um módulo do tipo procedimento. Modularize a entrada de dados e o processamento!

20 Modularização Procedimentos program NOTAS; {procedimentos} var nota1,nota2: Real; procedure le_notas; readln(nota1); readln(nota2); end; procedure get_media; writeln((nota1 + nota2) / 2); end; le_notas; get_media; end.

21 Modularização Procedimentos Seu código imprime a média. Grande coisa. É lamentável, já que você realmente precisa OBTER a média do aluno e USÁ-LA. Seu código não tem muita utilidade desse jeito, apenas exibindo a média, não é? A versão atual da função get_media exibe a média do aluno toda vez que ela é usada (ou chamada). Mas se você precisar obter a média para fazer algo com ela, isto não será possível.

22 Modularização Procedimentos Caso a média do aluno seja 7.0 o programa deve exibir a mensagem: Aprovado, caso contrário, exibir a mensagem Prova Final.

23 Modularização Funções

24 Modularização Funções

25 Modularização Funções As funções, embora muito semelhantes aos procedimentos, têm a característica especial de retornar ao programa que as chamou um valor associado ao nome da função. Esta característica permite uma analogia com o conceito de Função da Matemática.

26 Modularização Funções Sintaxe para a criação de funções: function <nome>: tipo; end; {declaração dos objetos locais à função (variáveis, constantes, subprogramas, etc} {comandos da função} Onde: nome é o identificador associado à função; e tipo é o tipo da função, ou seja, o tipo do valor de retorno

27 Modularização Procedimentos program NOTAS; {usando um procedimento e uma função} var nota1,nota2: Real; procedure le_notas; readln(nota1); readln(nota2); end; function get_media: Real; var soma: Real; soma := (nota1 + nota2); get_media := soma / 2; end; le_notas; if get_media >= 7.0 then writeln('aprovado') else writeln('prova Final'); end. Utilizando um módulo do tipo função. A função get_media retorna um valor: a média do aluno.

28 Modularização Funções program NOTAS; {usando um procedimento e uma função} var nota1,nota2: Real; procedure le_notas; readln(nota1); A entrada dos dados e o cálculo readln(nota2); da média estão presos às end; variáveis: nota1 e nota2. function get_media: Real; var soma: Real; soma := (nota1 + nota2); get_media := soma / 2; end; le_notas; if get_media >= 7.0 then writeln('aprovado') else writeln('prova Final'); end.

29 Modularização Funções Além das duas notas, o programa deverá solicitar o nome do aluno. Após calcular a média, o nome deve ser exibido junto com a situação do aluno (Aprovado/Prova Final).

30 Modularização Procedimentos program NOTAS; {usando um procedimento e uma função} var nota1,nota2: Real; procedure le_dados; Var nome: String; readln(nome); readln(nota1); readln(nota2); end; function get_media: Real; var soma: Real; soma := (nota1 + nota2); get_media := soma / 2; end; le_dados; writeln('o aluno ', nome, ' esta: '); if get_media >= 7.0 then writeln('aprovado') else writeln('prova Final'); end. Você deve obter e exibir o nome do aluno! Modifique o procedimento le_notas, chamando-o de le_dados e inclua uma variável para o nome do aluno.

31 Modularização Funções Erro de compilação: identificador desconhecido O compilador diz que não conhece a variável nome. Como ele pôde se esquecer dela tão rápido?

32 Modularização Funções A média final será calculada como: media_final (media + nota_provafinal)/2; Sua função get_media não parece resolver este problema, já que usa sempre as variáveis nota1 e nota2. get_media := (nota1 + nota2)/2;

33 Modularização Escopos Investigue primeiro o erro de compilação. Depois resolva a questão do cálculo da média final. Escopo de variáveis As variáveis são acessadas por seus identificadores. O programa principal e os subprogramas podem ter suas próprias declarações de variáveis. Como, e onde, será feito o acesso a essas variáveis? Museu do código fonte monolítico.

34 Escopo de identificadores e parâmetros

35 Modularização Escopo de variáveis As linguagens de programação registram as variáveis em uma seção da memória chamada de pilha (stack). Esta seção funciona como um bloco de notas. Por exemplo, quando o usuário do seu sistema de notas na primeira versão modularizada informa a nota1 do aluno, o valor digitado é gravado na variável nota1:

36 Modularização Escopo de variáveis Quando você cria uma função, o computador cria uma nova lista de variáveis. Mas quando você chama um módulo (função ou procedimento), o computador começa a gravar cada nova variável criada no código do módulo em uma nova folha de papel na pilha: Esta nova folha de papel na pilha é uma nova página na pilha. Páginas de pilha gravam todas as novas variáveis que são criadas dentro de um módulo. Tais variáveis são conhecidas como variáveis locais. As variáveis que são criadas antes da definição do módulo continuam na pilha e podem ser usadas pelo módulo caso seja necessário: elas estão na página de pilha anterior. Mas por que o computador grava variáveis desse jeito? Seu programa cria uma nova página cada vez que ele chama um módulo, permitindo ao módulo ter seu próprio conjunto separado de variáveis. Se o módulo cria uma nova variável para algum cálculo interno, isto é feito em sua página de pilha sem afetar as variáveis já existentes no resto do programa. procedure le_dados; var nome: string; readln (nome); Quando uma variável pode ser vista por algum código, diz-se que ela está no escopo.

37 Modularização Escopo de variáveis Este mecanismo ajuda a manter as coisas organizadas, mas tem um efeito colateral que está causando problemas

38 Modularização Escopo de variáveis Quando você sai de um módulo, as variáveis desse módulo são descartadas. Cada vez que você chama um módulo, o programa cria uma nova página de pilha para gravar novas variáveis. Mas o que acontece quando o módulo termina sua execução? O computador joga fora a página de pilha do módulo! Lembre-se: a pilha de páginas existe para gravar variáveis locais que pertencem ao módulo. Essas variáveis não foram projetadas para ser usadas em outros locais do programa porque são locais ao módulo. Toda a razão para a utilização de uma pilha de variáveis é permitir a um módulo criar variáveis locais que são invisíveis ao resto do programa. Quando uma variável não pode ser vista por algum código, é dito que ela está fora do escopo.

39 Modularização Escopo de variáveis E foi isto que aconteceu com a variável nome. A primeira vez que o Pascal a viu foi quando ela foi criada no procedimento le_dados. Isto significa que a variável nome foi criada na página de pilha do procedimento le_dados. Quando o procedimento le_dados terminou, sua página de pilha foi jogada fora e o Pascal esqueceu-se completamente da variável nome. Posteriormente, quando seu código tenta usá-la para alguma coisa, você não teve sorte, pois ela não pôde mais ser encontrada.

40 Modularização Escopo de variáveis Uma possível solução para o problema da variável nome seria declará-la fora do procedimento le_dados, junto com as variáveis nota1 e nota2. (Retirando sua declaração de dentro do procedimento le_dados) program NOTAS; {usando um procedimento e uma função} var nota1,nota2: Real; nome: String; procedure le_dados; readln(nome); readln(nota1); readln(nota2); end;... Agora, a variável nome é visível em qualquer parte do código. Ela possui um escopo diferente do escopo local.

41 Modularização Escopo de variáveis Além do escopo local, existe o global. É o que acontece com as variáveis nota1, nota2 (e nome após a mudança no local de sua declaração) No escopo global, como o próprio nome diz, a variável pode ser acessada de qualquer lugar do programa, seja de fora de tudo, dentro de módulos, dentro de laços, tudo.

42 Modularização Escopo de variáveis O escopo local é um tanto relativo. Uma variável local pode ser acessada de um mesmo nível ou níveis inferiores, mas nunca em níveis superiores

43 Modularização Escopo de variáveis Na versão atual de seu programa, as variáveis nota1, nota2 e nome foram declaradas fora de todos os módulos. A variável soma foi declarada no dentro da função get_media. program NOTAS; {usando um procedimento e uma função} var nota1,nota2: Real; nome: String; procedure le_dados; readln(nome); readln(nota1); readln(nota2); end; function get_media: Real; var soma: Real; soma := (nota1 + nota2); get_media := soma / 2; end; le_dados; writeln('o aluno ', nome, ' esta: '); if get_media >= 7.0 then writeln('aprovado') else writeln('prova Final'); end. Entendendo bem o conceito de escopo, você verá que é possível declarar diferentes variáveis com o mesmo nome em um mesmo código fonte, desde que em diferentes escopos.

44 Modularização Escopo de variáveis As variáveis NOTA1, NOTA2 e NOME, declaradas no programa principal são globais. A variável soma é local à função get_media.

45 Modularização Escopo de variáveis Referenciar variáveis globais no código de procedimentos e funções serve para implementar um mecanismo de transmissão de informações de um nível mais externo para um mais interno. As variáveis locais dos procedimentos e funções são criadas e alocadas quando da sua ativação e automaticamente liberadas quando do seu término.

46 Modularização Escopo de variáveis O uso de variáveis globais não constitui, no entanto, uma boa prática de programação. No Pascal, um programa não possuirá variáveis globais quando todas as variáveis forem declaradas após todas as definições de módulos. program meu_programa; {importação de units} {definição de constantes} {definição de funções e procedimentos} {A partir daqui você poderá declarar suas variáveis} {programa principal} {instruções do programa principal} end.

47 Modularização Escopo de variáveis Assim, todos os subprogramas devem apenas utilizar as variáveis locais, conhecidas dentro dos mesmos, e a transmissão de informações para dentro e para fora dos subprogramas deve ser feita de outra maneira....r$ 18.00

48 Modularização Escopo de variáveis A transmissão de informações para o processamento em subprogramas pode ser feita por meio de parâmetros de transmissão.

49 Modularização Parâmetros Além de evitar problemas com variáveis globais, a passagem de parâmetros pode tornar os subprogramas mais genéricos, (portanto com mais chances de serem reaproveitados): Formaliza a comunicação entre os módulos; Permite que um módulo seja utilizado com operandos diferentes (mesmo processamento para diferentes entradas reuso flexível do módulo). Informa_Sabor Calc_Valor_Pizza Imprime_Cupom Programa principal

50 Modularização Parâmetros Na linguagem Pascal, para criar procedimentos e funções com parâmetros, basta criar uma lista de parâmetros entre parênteses após o nome do módulo na etapa de declaração do módulo: procedure <nome> (lista de parâmetros formais); function <nome> (lista de parâmetros formais): tipo da função ;

51 Modularização Parâmetros A lista de parâmetros tem a seguinte forma: Parâmetro_1: tipo; parâmetro_2: tipo;...; parâmetro_n: tipo Com este recurso você pode redefinir os módulos do seu programa para que em vez de manipularem variáveis globais, utilizem parâmetros para obter os dados a ser processados: procedure le_dados (nome_aluno: String; n1, n2: Real); function get_media(v1, V2: Real): Real;

52 Modularização Parâmetros Os identificadores dos parâmetros listados no momento em que você declara os procedimentos e as funções, podem ser qualquer nome de identificador válido, e não precisam ser exatamente o nome das variáveis que você utilizará no programa principal. Observe que em vez de declarar le_dados com parâmetros: nota1, nota2 e nome, foram inventados os parâmetros: n1, n2 e nome_aluno. procedure le_dados (nome_aluno: String; n1, n2: Real); function get_media(v1, V2: Real): Real;

53 Modularização Parâmetros A nova definição dos módulos do seu programa fica assim: program NOTAS; {usando um procedimento e uma função} var nota1,nota2: Real; nome: String; procedure le_dados (nome_aluno: String; n1,n2: Real); readln(nome_aluno); readln(n1); readln(n2); end; function get_media (v1,v2: Real): Real; var soma: Real; soma := (v1 + v2); get_media := soma / 2; end;

54 Modularização Escopo de variáveis Com o uso de parâmetros, você elimina a necessidade de utilizar variáveis globais. Declare suas variáveis após todas as definições de módulos em seu código fonte. Isto as torna locais ao escopo do programa principal. program NOTAS; {usando um procedimento e uma função} procedure le_dados (nome_aluno: String; n1,n2: Real); readln(nome_aluno); readln(n1); readln(n2); end; function get_media(v1,v2: Real): Real; var soma: Real; soma := (v1 + v2); get_media := soma / 2; end; var nota1,nota2: Real; nome: String;

55 Modularização Parâmetros No momento em que você for chamar um procedimento ou a função que exige parâmetros, será necessário passar o nome de variáveis ou valores como parâmetros para o módulo: program NOTAS; {usando um procedimento e uma função} procedure le_dados (nome_aluno: String; n1,n2: Real); readln(nome_aluno); readln(n1); readln(n2); end; function get_media(v1,v2: Real): Real; var soma: Real; soma := (v1 + v2); get_media := soma / 2; end; var nota1,nota2: Real; nome: String; le_dados(nome,nota1,nota2); writeln('o aluno ', nome, ' esta: '); if get_media(nota1,nota2) >= 7.0 then writeln('aprovado') else writeln('prova Final'); end.

56 Modularização Parâmetros Em relação ao local que os parâmetros aparecem em seu código, eles são classificados em Formais ou Reais: Formais: inseridos na declaração do subprograma; servem para dar forma ao método e permitir que a concretização dos valores a utilizar seja feita apenas no momento da chamada. Reais: listados na chamada para execução do subprograma; são eles que realmente vão ser utilizados durante a execução do programa.

57 Modularização Parâmetros program NOTAS; {usando um procedimento e uma função} procedure le_dados (nome_aluno: String; n1,n2: Real); readln(nome_aluno); readln(n1); readln(n2); end; function get_media(v1,v2: Real): Real; var soma: Real; soma := (v1 + v2); get_media := soma / 2; end; var nota1,nota2: Real; nome: String; le_dados(nome,nota1,nota2); writeln('o aluno ', nome, ' esta: '); if get_media(nota1,nota2) >= 7.0 then writeln('aprovado') else writeln('prova Final'); end. A mesma coisa pode ser dita em relação aos parâmetros da função get_media

58 Modularização Parâmetros A ordem e o tipo dos parâmetros é importante na lista de parâmetros reais.... le_dados(nome,nota1,nota2);... end le_dados(nota1,nome,nota2);... end....

59 Modularização Funções Por algum motivo, a variável nome está vazia e a média do aluno foi calculada como 0 (zero). writeln('media do aluno: ',get_media(nota1,nota2):5:2); Inserimos esta linha de código ao fim do seu programa para imprimir o valor da média do aluno Fulano.

60 Modularização Funções Consultando um especialista em modularização, ele informou que há um problema na declaração dos parâmetros no procedimento le_dados. Os parâmetros reais não receberam os valores dos parâmetros formais durante a execução do procedimento le_dados. Parece que nome e nome_aluno, n1 e nota1, n2 e nota2 não se comunicaram da forma pretendida.

61 Modularização Parâmetros A passagem de parâmetros pode ser por Valor ou por Referência, em relação à maneira que os dados serão enviados ao interior dos módulos: Por valor: as alterações feitas nos parâmetros formais, dentro do subprograma, não se refletem nos parâmetros reais. O valor do parâmetro real é copiado no parâmetro formal, na chamada do subprograma. Assim, quando a passagem é por valor, isto significa que o parâmetro é de entrada.

62 Modularização Parâmetros Por Referência: toda alteração feita num parâmetro formal corresponde a mesma alteração feita no seu parâmetro real associado. Assim quando a passagem é por referência, isto significa que o parâmetro é de entrada-saída.

63 Modularização Parâmetros O seu programa declara uma lista de parâmetros para o procedimento le_dados. A estratégia de passagem de parâmetros que foi utilizada é por valor. Assim, o procedimento le_dados recebe uma cópia dos valores das variáveis nome, nota1 e nota2 (que inicialmente são desconhecidos, já que não foram lidos antes da chamada ao módulo), não faz nada com estes valores, usa os parâmetros do procedimento para fazer a leitura de dados, mas não retorna com os valores que foram obtidos na leitura de dados nos parâmetros reais.

64 Modularização Parâmetros Um parâmetro passado por valor, funciona como uma variável ou valor local para o módulo. Sendo um elemento local, qualquer coisa feita com os parâmetros não é visível fora do escopo do módulo.

65 Modularização Parâmetros Para corrigir este problema, você deve declarar seus parâmetros e dizer que eles serão passados por referência. Assim, qualquer coisa que for alterada no escopo do módulo, será transmitida imediatamente para as variáveis que foram usadas como parâmetros reais na chamada do módulo.

66 Modularização Parâmetros Declarar um parâmetro que será passado por referência é muito simples: basta incluir a palavra reservada var antes do nome dos parâmetros que devem ser passados por referência na lista de parâmetros formais (no local onde você define o seu módulo). procedure le_dados (var nome_aluno: String; var n1,n2: Real); readln(nome_aluno); readln(n1); readln(n2); end; Tudo que for feito com estes parâmetros será refletido na variável que eu usar na chamada ao módulo.

67 Modularização Parâmetros program EXEMPLO_PASSAGEM_PARAMETROS; var N1, N2 : integer; procedure PROC(X: integer; var Y: integer); X := 1; Y := -1; end; N1:=20; N2:=20; PROC(N1,N2); writeln(n1); {será exibido o valor 20} writeln(n2); {será exibido o valor -1} end. Qualquer valor assumido por X no interior do módulo deixará de existir após o encerramento do procedimento PROC, porém, o parâmetro Y é um parâmetro formal com passagem por referência, as modificações feitas em Y no interior de PROC refletirão na variável N2, que foi utilizada como parâmetro real na chamada a PROC no programa principal.

68 Modularização Parâmetros program NOTAS; {usando um procedimento e uma função} procedure le_dados (var nome_aluno: String; var n1,n2: Real); readln(nome_aluno); readln(n1); readln(n2); end; function get_media(v1,v2: Real): Real; var soma: Real; soma := (v1 + v2); get_media := soma / 2; end; var nota1,nota2: Real; nome: String; le_dados(nome,nota1,nota2); writeln('o aluno ', nome, ' esta: '); if get_media(nota1,nota2) >= 7.0 then writeln('aprovado') else writeln('prova Final'); writeln('media do aluno: ',get_media(nota1,nota2):5:2); end. A função get_media não precisa alterar seus parâmetros, então, deixe-a como está, recebendo parâmetros passados por valor.

69 Modularização Parâmetros program NOTAS; {usando um procedimento e uma função} procedure le_dados (var nome_aluno: String; var n1,n2: Real); readln(nome_aluno); readln(n1); readln(n2); end; function get_media(v1,v2: Real): Real; var soma: Real; soma := (v1 + v2); get_media := soma / 2; end; var nota1,nota2,pfinal: Real; nome: String; Agora você pode aproveitar a função get_media para calcular a media final, caso o aluno fique de prova final, sem precisar escrever outra função só para isto. le_dados(nome,nota1,nota2); writeln('media do aluno: ',get_media(nota1,nota2):5:2); writeln('o aluno ', nome, ' esta: '); if get_media(nota1,nota2) >= 7.0 then writeln('aprovado') else writeln( de Prova Final'); writeln( Digite a nota da prova Final'); readln(pfinal); writeln('media final do aluno: ', get_media(get_media(nota1,nota2),pfinal) :5:2); writeln( Situação final: '); if get_media(get_media(nota1,nota2),pfinal) >= 5.0 then writeln('aprovado') else writeln( Reprovado'); end; end.

70 Modularização Funções

71 Modularização Parâmetros: Exemplos Escrever um procedimento chamado DOBRA que multiplique um número inteiro (recebido como parâmetro) por 2. Escrever um programa para ler um valor inteiro e, utilizando o procedimento DOBRA, calcular e exibir o dobro do mesmo.

72 Modularização Parâmetros: Exemplos program CALCULA_DOBRO; {Variável global} var X: integer; procedure DOBRA (var NUM: integer); NUM := NUM * 2 {ponto e vírgula não é obrigatório antes de end} end; {programa principal} readln(x); DOBRA(X); writeln(x); end.

73 Modularização Parâmetros: Exemplos program CALCULA_DOBRO; {Variável global} var X: integer; procedure DOBRA (var NUM: integer); NUM := NUM * 2 {ponto e vírgula não é obrigatório antes de end} end; {Variável local} var X: integer; {programa principal} readln(x); DOBRA(X); writeln(x); end. Neste exemplo, foi utilizada uma variável global (X). Para não utilizar variáveis globais, todas as declarações de variáveis deverão ocorrer imediatamente antes do comando do programa principal. Declarar a variável X neste local, faz com que ela seja uma variável local ao programa principal, isto é, visível apenas no escopo do programa principal. Assim, ela não pode ser referenciada dentro de subprogramas diretamente pelo seu nome. Para um módulo manipular o valor da variável X, ele deverá ser capaz de receber essa variável como um parâmetro em sua chamada.

74 Modularização Parâmetros: Exemplos Escrever uma função chamada MAIOR que receba dois números inteiros e retorne o maior deles. Escrever um programa para ler dois números inteiros e, utilizando a função MAIOR, calcular e exibir o maior valor entre os números lidos.

75 Modularização Parâmetros: Exemplos program CALCULA_MAIOR; {Função para cálculo do maior valor} function MAIOR(NUM1, NUM2: integer): integer; if (NUM1 > NUM2) then MAIOR := NUM1 else MAIOR := NUM2; end; {Variáveis locais ao escopo do programa principal} var X, Y, M: integer; {programa principal} readln(x,y); M := MAIOR(X,Y); writeln(m); end.

76 Modularização Parâmetros: Exemplos Escreva um procedimento que receba uma string S e a converta para letras maiúsculas. Faça também uma função que realize o mesmo serviço do procedimento solicitado no enunciado anterior.

77 Modularização Parâmetros: Exemplos procedure pmaiusc(var S: string); var i, tam: integer; tam := length(s); for i := 1 to tam do S[i] := upcase(s[i]); end; function fmaiusc(s: string): string; var i, tam: integer; tam := length(s); for i := 1 to tam do S[i] := upcase(s[i]); fmaiusc := S; end; procedure pmaiuscv2(s: string; var smaiuscula: string); var i, tam: integer; tam := length(s); smaiuscula[0] := S[0]; {iguala o comprimento das strings} for i := 1 to tam do smaiuscula[i] := upcase(s[i]); end;

78 Modularização Parâmetros: Exemplos program MANIPULA_STRINGS; procedure pmaiusc(var S: string); var i, tam: integer; tam := length(s); for i := 1 to tam do S[i] := upcase(s[i]); end; procedure pmaiuscv2(s: string; var smai: string); var i, tam: integer; tam := length(s); smai[0] := S[0]; {iguala o length das duas strings} for i := 1 to tam do smai[i] := upcase(s[i]); end; function fmaiusc(s: string):string; var i, tam: integer; tam := length(s); for i := 1 to tam do S[i] := upcase(s[i]); fmaiusc := S; end; {programa principal} var st1, st2, st3: string; mai1,mai2, mai3: string; readln(st1); readln(st2); readln(st3); pmaiusc(st1); mai1 := st1; writeln('variavel st1 apos a execucao do procedure: ',st1); writeln('variavel mai1 apos a execucao do procedure: ',mai1); writeln; pmaiuscv2(st2,mai2); writeln('variavel st2 apos a execucao do procedure: ',st2); writeln('variavel mai2 apos a execucao do procedure: ',mai2); writeln; mai3 := fmaiusc(st3); writeln('variavel st3 apos a execucao do procedure: ',st3); writeln('variavel mai3 apos a execucao do procedure: ',mai3); end.

79 Recursividade Existem casos em que um procedimento ou função chama a si próprio. Diz-se então que o procedimento ou função é recursivo. O triângulo de Sierpinski uma recursão fechada de triângulos formando uma reticulada geométrica. Brócolis Romanesco : exemplo de vegetal que é formado por estruturas auto similares: estruturas maiores formadas a partir de estruturas menores muito similares entre si. Uma forma visual de recursão conhecida como efeito Droste.

80 Recursividade Por exemplo, o fatorial de um número n pode ser definido recursivamente, ou seja: n! = 1, n = 0 n n 1!, n > 0 A sequência de Fibonacci também é definida de forma recursiva: f(x) = 1, 0 < x < 3 f x 1 + f(x 2), x 3

81 Recursividade Pode-se escrever uma função recursiva em Pascal que traduz esta definição matemática: function FAT(n: integer): integer; if n = 0 then FAT := 1 else FAT := N * FAT(N-1); end; Observe que não há iteração no código!

82 Recursividade Para executar uma função recursiva, o computador deverá resolver todas as chamadas recursivas antes de retornar um valor na primeira chamada da função. Isto gera uma série de chamadas que, se corretamente implementadas, terminará retornando o valor especificado no caso básico da definição da função (caso em que n = 0, para a função fatorial).

83 Recursividade function FAT(n: integer): integer; if n = 0 then FAT := 1 else FAT := N * FAT(N-1); end;

84 Referências FARRER, H.; BECKER, C. G.; FARIA, E. C.; MATOS, H. F.; et al. Algoritmos estruturados. 3ed, Ed. LTC, ISBN: GUIMARÃES, A. M.; LAGES, N. A. C.; Algoritmos e estruturas de dados. 1ed, Ed. LTC, ISBN: FARRER, H.; BECKER, C. G.; FARIA, E. C.; MATOS, H. F.; et al. Pascal estruturado. 3ed, Ed. LTC, ISBN: Velloso, F. C.; Informática: Conceitos Básicos. 7ed, Ed. Campus, ISBN: MAURI, G. R.; Notas de aula de Programação I

Modularização. Prof. Antonio Almeida de Barros Junior

Modularização. Prof. Antonio Almeida de Barros Junior Modularização Prof. Antonio Almeida de Barros Junior 1 Modularização A modularização consiste em decompor um programa em uma série de subprogramas individuais; Trata-se de um método utilizado para facilitar

Leia mais

p A modularização consiste num método utilizado para facilitar a construção de grandes programas;

p A modularização consiste num método utilizado para facilitar a construção de grandes programas; Modularização 1 Modularização p A modularização consiste num método utilizado para facilitar a construção de grandes programas; p A idéia é dividir grandes programas em pequenas etapas, que são os módulos

Leia mais

Curso Técnico de Mecatrônica 4º Ano 2º Bimestre Introdução à Lógica de Programação

Curso Técnico de Mecatrônica 4º Ano 2º Bimestre Introdução à Lógica de Programação 6. Procedimentos, funções, modularização. 6.1. Modularização A modularização consiste num método utilizado para facilitar a construção de grandes programas, através de sua divisão em pequenas etapas, que

Leia mais

Sub Rotinas. Estrutura de Dados. Prof. Kleber Rezende

Sub Rotinas. Estrutura de Dados. Prof. Kleber Rezende Sub Rotinas Estrutura de Dados Prof. Kleber Rezende Considerações Iniciais Uma dos métodos mais comuns e amplamente utilizados em programação de computadores é o Top-Down. Nesta abordagem um problema é

Leia mais

3. Linguagem de Programação C

3. Linguagem de Programação C Introdução à Computação I IBM1006 3. Linguagem de Programação C Prof. Renato Tinós Departamento de Computação e Matemática (FFCLRP/USP) 1 Principais Tópicos 3.7. Funções 3.7.1. Introdução 3.7.2. Uso de

Leia mais

Módulos ou Subrotinas: PARTE II. Criando seus próprios módulos

Módulos ou Subrotinas: PARTE II. Criando seus próprios módulos Módulos ou Subrotinas: PARTE II Criando seus próprios módulos Objetivos da Aula Compreender a necessidade e a importância de modularizar Aprender a criar e utilizar (chamar) seus próprios módulos Refletindo...

Leia mais

SSC INTRODUÇÃO À COMPUTAÇÃO PARA ENGENHARIA AMBIENTAL MODULARIZAÇÃO. Profa. Dra. Milena Guessi Margarido

SSC INTRODUÇÃO À COMPUTAÇÃO PARA ENGENHARIA AMBIENTAL MODULARIZAÇÃO. Profa. Dra. Milena Guessi Margarido SSC 301 - INTRODUÇÃO À COMPUTAÇÃO PARA ENGENHARIA AMBIENTAL MODULARIZAÇÃO Profa. Dra. Milena Guessi Margarido (milena@icmc.usp.br) MODULARIZAÇÃO Um problema complexo é melhor abordado se for dividido primeiramente

Leia mais

Módulos ou Subrotinas: PARTE II. Criando seus próprios módulos

Módulos ou Subrotinas: PARTE II. Criando seus próprios módulos Módulos ou Subrotinas: PARTE II Criando seus próprios módulos Objetivos da Aula Compreender a necessidade e a importância de modularizar Aprender a criar e utilizar (chamar) seus próprios módulos Refletindo...

Leia mais

PROGRAMAÇÃO de COMPUTADORES: LINGUAGEM FORTRAN 90/95

PROGRAMAÇÃO de COMPUTADORES: LINGUAGEM FORTRAN 90/95 PROGRAMAÇÃO de COMPUTADORES: LINGUAGEM FORTRAN 90/95 Exercícios de revisão Lista 01: a) Monte um mapa conceitual indicando as relações entre os seguintes conceitos, no contexto do assunto visto em aula:

Leia mais

Introdução à Programação Aula 09. Prof. Max Santana Rolemberg Farias Colegiado de Engenharia de Computação

Introdução à Programação Aula 09. Prof. Max Santana Rolemberg Farias Colegiado de Engenharia de Computação Introdução à Programação Aula 09 Prof. Max Santana Rolemberg Farias max.santana@univasf.edu.br Colegiado de Engenharia de Computação A linguagem C, como qualquer outra linguagem de programação, permite

Leia mais

UNISINOS - UNIVERSIDADE DO VALE DO RIO DOS SINOS CENTRO DE CIÊNCIAS EXATAS E TECNOLÓGICAS (C6/6) Curso: Informática

UNISINOS - UNIVERSIDADE DO VALE DO RIO DOS SINOS CENTRO DE CIÊNCIAS EXATAS E TECNOLÓGICAS (C6/6) Curso: Informática Programação 1 Prof. Osório Aula 09 Pag.: 1 UNISINOS - UNIVERSIDADE DO VALE DO RIO DOS SINOS CENTRO DE CIÊNCIAS EXATAS E TECNOLÓGICAS (C6/6) Curso: Informática PROGRAMAÇÃO I AULA 09 Disciplina: Linguagem

Leia mais

Departamento de Engenharia Rural Centro de Ciências Agrárias. Programação I

Departamento de Engenharia Rural Centro de Ciências Agrárias. Programação I Departamento de Engenharia Rural Centro de Ciências Agrárias Programação I Variáveis compostas homogêneas Multidimensionais (o uso de arrays para a representação de matrizes e outras abstrações) Matrizes

Leia mais

Linguagem Pascal. Prof. Sérgio Rodrigues. É a descrição, de forma lógica, dos passos a serem executados no cumprimento de determinada tarefa;

Linguagem Pascal. Prof. Sérgio Rodrigues. É a descrição, de forma lógica, dos passos a serem executados no cumprimento de determinada tarefa; Linguagem Pascal Prof. Sérgio Rodrigues Introdução Algoritmo É a descrição, de forma lógica, dos passos a serem executados no cumprimento de determinada tarefa; Programa é a formalização de um algoritmo

Leia mais

Universidade Federal de Uberlândia Faculdade de Computação. Linguagem C: funções

Universidade Federal de Uberlândia Faculdade de Computação. Linguagem C: funções Universidade Federal de Uberlândia Faculdade de Computação Linguagem C: funções Prof. Renato Pimentel 1 Subprogramas Subprograma: programa que auxilia o programa principal na realização de uma determinada

Leia mais

Departamento de Engenharia Rural Centro de Ciências Agrárias. Programação I

Departamento de Engenharia Rural Centro de Ciências Agrárias. Programação I Departamento de Engenharia Rural Centro de Ciências Agrárias Programação I Exercícios Variáveis compostas homogêneas Multidimensionais (matrizes e outras abstrações) Manipulação de Strings e caracteres

Leia mais

MODULARIZAÇÃO - PARTE 1

MODULARIZAÇÃO - PARTE 1 AULA 27 MODULARIZAÇÃO - PARTE 1 Os algoritmos que temos construído até então são muito simples, pois resolvem problemas simples e apresentam apenas os componentes mais elementares dos algoritmos: constantes,

Leia mais

Subprogramação. Leonardo Gresta Paulino Murta.

Subprogramação. Leonardo Gresta Paulino Murta. Subprogramação Leonardo Gresta Paulino Murta leomurta@ic.uff.br Aula de hoje Estudaremos duas estruturas de encapsulamento Procedimentos Funções Leonardo Murta Subprogramação 2 Retomando: paradigma estruturado

Leia mais

Aula 05. Modularização Função Subrotina Recursividade

Aula 05. Modularização Função Subrotina Recursividade Logo Aula 05 Modularização Função Subrotina Recursividade 2 Modularização A modularização é um processo que aborda os aspectos da decomposição de algoritmos em módulos. Módulo é um grupo de comandos, constituindo

Leia mais

Algoritmos e Programação

Algoritmos e Programação Algoritmos e Programação Aula 9 Subalgoritmos, funções e passagem de parâmetros Profa. Marina Gomes marinagomes@unipampa.edu.br 22/06/2017 Engenharia de Computação - Unipampa 1 Modularização Facilita a

Leia mais

Estruturas de Dados. Módulo 4 Funções. 9/8/2005 (c) Dept. Informática - PUC-Rio 1

Estruturas de Dados. Módulo 4 Funções. 9/8/2005 (c) Dept. Informática - PUC-Rio 1 Estruturas de Dados Módulo 4 Funções 9/8/2005 (c) Dept. Informática - PUC-Rio 1 Referências Waldemar Celes, Renato Cerqueira, José Lucas Rangel, Introdução a Estruturas de Dados, Editora Campus (2004)

Leia mais

Universidade Estadual de Maringá- UEM Centro de Tecnologia - CTC Departamento de Informática - DIN Fundamentos da Computação.

Universidade Estadual de Maringá- UEM Centro de Tecnologia - CTC Departamento de Informática - DIN Fundamentos da Computação. Universidade Estadual de Maringá- UEM Centro de Tecnologia - CTC Departamento de Informática - DIN Fundamentos da Computação Subprogramação Prof. Yandre Maldonado- 1 Prof. Yandre Maldonado e Gomes da Costa

Leia mais

Recursividade. Prof. Jesus José de Oliveira Neto

Recursividade. Prof. Jesus José de Oliveira Neto Recursividade Prof. Jesus José de Oliveira Neto Algoritmos podem ser definidos de duas formas: Forma iterativa ou não recursiva: utiliza laços de repetição (while, for, do/while) Forma recursiva: métodos

Leia mais

Linguagem de Programação

Linguagem de Programação Linguagem de Programação Aula 7 Modularização Universidade Federal de Santa Maria Colégio Agrícola de Frederico Westphalen Curso Técnico em Informática Prof. Bruno B. Boniati www.cafw.ufsm.br/~bruno Dividir

Leia mais

Subprogramação. Subprogramação. Subprogramação. A subprogramação é uma ferramenta que contribui com a tarefa de programar:

Subprogramação. Subprogramação. Subprogramação. A subprogramação é uma ferramenta que contribui com a tarefa de programar: Universidade Estadual de Maringá- UEM Centro de Tecnologia - CTC Departamento de Informática - DIN Fundamentos da Computação Prof. Yandre Maldonado- 1 Prof. Yandre Maldonado e Gomes da Costa yandre@din.uem.br

Leia mais

Aula 11: Modularização

Aula 11: Modularização Aula 11: Modularização Fernanda Passos Universidade Federal Fluminense Programação de Computadores IV Fernanda Passos (UFF) Modularização Programação de Computadores IV 1 / 37 Agenda 1 Revisão e Contexto

Leia mais

Programação WEB I Funções

Programação WEB I Funções Programação WEB I Funções Funções As funções podem ser definidas como um conjunto de instruções, agrupadas para executar uma determinada tarefa. Dentro de uma função pode existir uma chamada a outra função.

Leia mais

Módulo 3 Subprogramas

Módulo 3 Subprogramas 1 Curso Profissional de Gestão e Programação de Sistemas Informáticos Programação e Sistemas de Informação Módulo 3 Subprogramas Prof. Sandra Pais Soares Conteúdos Conceitos básicos Variáveis: globais

Leia mais

Subprogramação. Vanessa Braganholo

Subprogramação. Vanessa Braganholo Subprogramação Vanessa Braganholo vanessa@ic.uff.br O que vimos até agora } Programas usam apenas sequência, repetição e decisão } Capacidade de resolver diversos problemas, mas difícil de resolver problemas

Leia mais

LINGUAGEM C: FUNÇÕES FUNÇÃO 04/07/2017. Funções são blocos de código que podem ser nomeados e chamados de dentro de um programa.

LINGUAGEM C: FUNÇÕES FUNÇÃO 04/07/2017. Funções são blocos de código que podem ser nomeados e chamados de dentro de um programa. LINGUAGEM C: FUNÇÕES Prof. André Backes FUNÇÃO Funções são blocos de código que podem ser nomeados e chamados de dentro de um programa. printf(): função que escreve na tela scanf(): função que lê o teclado

Leia mais

Lógica de Programação e Algoritmos. Prof. André Y. Kusumoto

Lógica de Programação e Algoritmos. Prof. André Y. Kusumoto Lógica de Programação e Algoritmos Prof. André Y. Kusumoto andrekusumoto.unip@gmail.com Procedimentos e Funções Para construirmos grandes programas, necessitamos fazer uso da técnica de modularização.

Leia mais

Modularidade. Objetivos: Introduzir noções básicas de modularidade. Funções e procedimentos

Modularidade. Objetivos: Introduzir noções básicas de modularidade. Funções e procedimentos Modularidade Objetivos: Introduzir noções básicas de modularidade Funções e procedimentos Motivação É muito difícil manter um código quando ele tende a ser grande (com muitas linhas) É preciso organizar

Leia mais

ENGENHARIA DE PRODUÇÃO ICC 1 TÉCNICAS DE PROGRAMAÇÃO

ENGENHARIA DE PRODUÇÃO ICC 1 TÉCNICAS DE PROGRAMAÇÃO ENGENHARIA DE PRODUÇÃO ICC 1 TÉCNICAS DE PROGRAMAÇÃO 1. INTRODUÇÃO O que é um programa? Programa constitui uma seqüência lógica de passos para solução de um problema. Um programa pode ser codificado em

Leia mais

Departamento de Engenharia Rural Centro de Ciências Agrárias. Programação I

Departamento de Engenharia Rural Centro de Ciências Agrárias. Programação I Departamento de Engenharia Rural Centro de Ciências Agrárias Programação I Tipos definidos pelo programador Variáveis compostas heterogêneas Tipos definidos pelo usuário Os tipos integer, real, boolean,

Leia mais

Estrutura de um Algoritmo, Variáveis, Comandos de Entrada e Saída e Expressões Aritméticas

Estrutura de um Algoritmo, Variáveis, Comandos de Entrada e Saída e Expressões Aritméticas Estrutura de um Algoritmo, Variáveis, Comandos de Entrada e Saída e Expressões Aritméticas Estrutura de um Programa em Linguagem Algorítmica Nesse curso nós vamos utilizar a linguagem algorítmica para

Leia mais

Algoritmos e Estruturas de Dados I (DCC/003) Estruturas Condicionais e de Repetição

Algoritmos e Estruturas de Dados I (DCC/003) Estruturas Condicionais e de Repetição Algoritmos e Estruturas de Dados I (DCC/003) Estruturas Condicionais e de Repetição 1 Comando while Deseja-se calcular o valor de: 1 + 2 + 3 +... + N. Observação: não sabemos, a priori, quantos termos

Leia mais

Sumário. Ciência da Computação. Prof. Dr. Leandro Alves Neves. Aula 10. Algoritmos e Programação. Enquanto (Teste no início) Repeat (Teste no final)

Sumário. Ciência da Computação. Prof. Dr. Leandro Alves Neves. Aula 10. Algoritmos e Programação. Enquanto (Teste no início) Repeat (Teste no final) Algoritmos e Programação Informática II Ciência da Computação Prof. Dr. Leandro Alves Neves Aula 10 1 Sumário Estruturas de Controle de Fluxo q Repetição Enquanto (Teste no início) Repeat (Teste no final)

Leia mais

LINGUAGEM C: FUNÇÕES FUNÇÃO 08/01/2018. Funções são blocos de código que podem ser nomeados e chamados de dentro de um programa.

LINGUAGEM C: FUNÇÕES FUNÇÃO 08/01/2018. Funções são blocos de código que podem ser nomeados e chamados de dentro de um programa. LINGUAGEM C: FUNÇÕES Prof. André Backes FUNÇÃO Funções são blocos de código que podem ser nomeados e chamados de dentro de um programa. printf(): função que escreve na tela scanf(): função que lê o teclado

Leia mais

Modularidade - Funções e Procedimentos

Modularidade - Funções e Procedimentos Modularidade - Funções e Procedimentos José Gustavo de Souza Paiva Problema Em diversas situações, é preciso executar uma tarefa específica diversas vezes em um programa, variando apenas os dados de entrada

Leia mais

Introdução aos Algoritmos

Introdução aos Algoritmos Introdução aos Algoritmos Aula 05 Diogo Pinheiro Fernandes Pedrosa http://www2.ufersa.edu.br/portal/professor/diogopedrosa diogopedrosa@ufersa.edu.br Universidade Federal Rural do Semiárido Bacharelado

Leia mais

ALGORITMOS I. Procedimentos e Funções

ALGORITMOS I. Procedimentos e Funções Procedimentos e Funções Jaime Evaristo (http://professor.ic.ufal.br/jaime/) Slide 1 MÓDULOS São blocos de instruções que realizam tarefas específicas. Carregado uma vez e pode ser executado quantas vezes

Leia mais

Departamento de Engenharia Rural Centro de Ciências Agrárias. Programação I

Departamento de Engenharia Rural Centro de Ciências Agrárias. Programação I Departamento de Engenharia Rural Centro de Ciências Agrárias Programação I Variáveis compostas Os arrays também são conhecidos como variáveis compostas. Variáveis compostas Correspondem a um certo número

Leia mais

Python Funções. Introdução à Programação SI1

Python Funções. Introdução à Programação SI1 Python Funções Introdução à Programação SI1 Conteúdo Funções Conceitos Objetivos Modularização Exemplos Exercícios 2 Funções O que são? Qual a função de uma função? 3 Imagine o código 4 Imagine o código

Leia mais

Programação estruturada no Fortran 90-2

Programação estruturada no Fortran 90-2 Programação estruturada no Fortran 90-2 Departamento de Física UFPel Faça um programa em Fortran 90 que calcule o valor do cos-seno de x através da série abaixo, co-seno(x) = 1 x2 2! + x4 4! x6 6! + x8

Leia mais

Programação de Computadores III

Programação de Computadores III Programação de Computadores III Subprogramação: Sub-rotinas e Funções Professor Leandro Augusto Frata Fernandes laffernandes@ic.uff.br Material disponível em http://www.ic.uff.br/~laffernandes/teaching/2013.1/tcc-00.157

Leia mais

Prática 10 - Funções

Prática 10 - Funções Programação de Computadores I UFOP DECOM June 9, 2016 Prática 10 - Funções Abstract Nesta aula prática você vai aprender a definir e usar funções em um programa. Contents 1 Funções 1 1.1 Definição e chamada

Leia mais

Programação de Computadores III

Programação de Computadores III Programação de Computadores III Subprogramação: Sub-rotinas e Funções Professor Leandro Augusto Frata Fernandes laffernandes@ic.uff.br Material disponível em http://www.ic.uff.br/~laffernandes/teaching/2013.1/tcc-00.157

Leia mais

Introdução aos Algoritmos

Introdução aos Algoritmos Introdução aos Algoritmos Aula 05 Diogo Pinheiro Fernandes Pedrosa http://www2.ufersa.edu.br/portal/professor/diogopedrosa diogopedrosa@ufersa.edu.br Universidade Federal Rural do Semiárido Bacharelado

Leia mais

Recursão. Prof. Cristiano André da Costa. [Versão de Março de 2000] Definição

Recursão. Prof. Cristiano André da Costa. [Versão de Março de 2000] Definição Recursão [Versão de Março de 2000] Definição Um objeto é dito recursivo se ele consistir parcialmente ou for definido em termos de si próprio Recursões ocorrem na matemática, informática, no dia a dia...

Leia mais

Estruturas de Repetição

Estruturas de Repetição Algoritmos e Estruturas de Dados I (DCC/003) Estruturas de Repetição Aula Tópico 4 (while, for) 1 Problema 10 Suponha que soma (+) e subtração (-) são as únicas operações disponíveis em C. Dados dois números

Leia mais

Introdução à Programação Aula 02. Prof. Max Santana Rolemberg Farias Colegiado de Engenharia de Computação

Introdução à Programação Aula 02. Prof. Max Santana Rolemberg Farias Colegiado de Engenharia de Computação Introdução à Programação Aula 02 Prof. Max Santana Rolemberg Farias max.santana@univasf.edu.br Colegiado de Engenharia de Computação QUAIS SÃO OS COMPONENTES BÁSICOS DO HW DE UM SISTEMA COMPUTACIONAL?

Leia mais

Aula 6: Entrada e Saída

Aula 6: Entrada e Saída Aula 6: Entrada e Saída Fernanda Passos Universidade Federal Fluminense Programação de Computadores IV Fernanda Passos (UFF) Entrada e Saída Programação de Computadores IV 1 / 29 Agenda 1 Revisão e Contexto

Leia mais

Lógica de Programação e Algoritmos com exemplos na linguagem JAVA

Lógica de Programação e Algoritmos com exemplos na linguagem JAVA Lógica de Programação e Algoritmos com exemplos na linguagem JAVA Cap. 5 Programação Estruturada: Funções Conteúdo: 5.1 Programação estruturada ou modular... 66 5.2 Funções... 67 5.3 Passagem de parâmetros...

Leia mais

Linguagem Computacional. Estruturas de Controle: Estruturas de Repetição. Prof. Dr. Adriano Cansian Prof. Dr. Leandro Alves Neves

Linguagem Computacional. Estruturas de Controle: Estruturas de Repetição. Prof. Dr. Adriano Cansian Prof. Dr. Leandro Alves Neves Informática II Linguagem Computacional Estruturas de Controle: Estruturas de Repetição Prof. Dr. Adriano Cansian Prof. Dr. Leandro Alves Neves 1 Sumário q Estruturas de Controle de Fluxo Repetição Enquanto

Leia mais

MC102 Aula 26. Instituto de Computação Unicamp. 17 de Novembro de 2016

MC102 Aula 26. Instituto de Computação Unicamp. 17 de Novembro de 2016 MC102 Aula 26 Recursão Instituto de Computação Unicamp 17 de Novembro de 2016 Roteiro 1 Recursão Indução 2 Recursão 3 Fatorial 4 O que acontece na memória 5 Recursão Iteração 6 Soma em um Vetor 7 Números

Leia mais

Sub-rotinas em C. Disciplina de Programação de Computadores I Universidade Federal de Ouro Preto

Sub-rotinas em C. Disciplina de Programação de Computadores I Universidade Federal de Ouro Preto Sub-rotinas em C Disciplina de Programação de Computadores I Universidade Federal de Ouro Preto Agenda Sub-rotinas: Função e Procedimentos A função main Variáveis globais e locais Escopo de variáveis Passagem

Leia mais

Algoritmos Estrutura Condicional

Algoritmos Estrutura Condicional Algoritmos Estrutura Condicional Aula 06 Diogo Pinheiro Fernandes Pedrosa http://www2.ufersa.edu.br/portal/professor/diogopedrosa diogopedrosa@ufersa.edu.br Universidade Federal Rural do Semiárido Bacharelado

Leia mais

Aula 13 Oficina de Programação Modularização. Profa. Elaine Faria UFU

Aula 13 Oficina de Programação Modularização. Profa. Elaine Faria UFU Aula 13 Oficina de Programação Modularização Profa. Elaine Faria UFU - 2017 O que é modularização? No século XIX, Henry Ford, para baratear e massificar a montagem de carros, criou uma base modular. Esta

Leia mais

Ponteiros de Variáveis

Ponteiros de Variáveis Ponteiros de Variáveis C++ permite o armazenamento e a manipulação de valores de endereços de memória. Para cada tipo existente, há um tipo ponteirocapaz de armazenar endereços de memória em que existem

Leia mais

6) ESTRUTURA DE UM PROGRAMA

6) ESTRUTURA DE UM PROGRAMA Página 1 de 16 6) ESTRUTURA DE UM PROGRAMA = = program ; = uses

Leia mais

Fig. 1: Ilustração de um exemplo de Modularização de um guindaste em suas partes Fonte: Internet

Fig. 1: Ilustração de um exemplo de Modularização de um guindaste em suas partes Fonte: Internet 7. Modularização de Algoritmos No momento do desenvolvimento de um programa de computador, o programador terá de planejar a modularização de seu programa para que este fique mais transparente em suas estrutura

Leia mais

Aula 4: Introdução à Linguagem C++

Aula 4: Introdução à Linguagem C++ CI208 - Programação de Computadores Aula 4: Introdução à Linguagem C++ Prof. MSc. Diego Roberto Antunes diegor@inf.ufpr.br www.inf.ufpr.br/diegor Universidade Federal do Paraná Setor de Ciências Exatas

Leia mais

Algoritmos e Programação

Algoritmos e Programação Algoritmos e Programação Aula 2 Elementos fundamentais de Algoritmos, Conceitos de Variáveis Profa. Marina Gomes marinagomes@unipampa.edu.br 21/03/2017 Engenharia de Computação - Unipampa 1 Aula de Hoje

Leia mais

Sintática: como é escrito cada elemento da linguagem de programação.

Sintática: como é escrito cada elemento da linguagem de programação. 4ª. AULA Sintaxe e Semântica Para que uma linguagem de programação atenda aos requisitos especificados de forma eficiente, ela deve ser escrita de forma única (não ambígua). Isso envolve a definição: Sintática:

Leia mais

Universidade Federal do ABC Programação Estruturada Fabrício Olivetti França Lista de Exercícios 02

Universidade Federal do ABC Programação Estruturada Fabrício Olivetti França Lista de Exercícios 02 1 Objetivos da lista Universidade Federal do ABC Programação Estruturada Fabrício Olivetti França Lista de Exercícios 02 Esta lista de exercícios tem como objetivo introduzir funções na linguagem C. Como

Leia mais

Estrutura de Dados Básica

Estrutura de Dados Básica Estrutura de Dados Básica Professor: Osvaldo Kotaro Takai. Aula 2: Revisão dos itens básicos O objetivo desta aula é revisar os conceitos envolvidos na abordagem da Programação Estruturada. Representações

Leia mais

FACCAT Sistemas de Informação. Estruturas de Dados

FACCAT Sistemas de Informação. Estruturas de Dados FACCAT Sistemas de Informação Estruturas de Dados Aula 1 http://professores.faccat.br/azambuja (Estrutura de Dados) Definição de variáveis Podemos imaginar uma variável como o local onde se pode colocar

Leia mais

Working 03 : Conceitos Básicos I

Working 03 : Conceitos Básicos I Working 03 : Conceitos Básicos I Objetivos: Dominar os conceitos básicos da linguagem de programação C; Aprender a utilizar o compilador, identificando os erros de sintaxe do código fonte; Prazo de Envio:

Leia mais

Sumário. 1.1 Variáveis Globais e Locais Passagem de Parâmetro (por valor por referência) 1

Sumário. 1.1 Variáveis Globais e Locais Passagem de Parâmetro (por valor por referência) 1 Sumário Sobre as Autoras ix Introdução xi 1 Sub-rotinas 1 1.1 Variáveis Globais e Locais 1 1.2 Passagem de Parâmetro (por valor por referência) 1 2 Vetores e Matrizes 7 2.1 Vetores 7 2.2 Matrizes 8 2.2.1

Leia mais

Suponha um conjunto habitacional, com várias famílias... imagina se todas elas morassem em uma única casa?

Suponha um conjunto habitacional, com várias famílias... imagina se todas elas morassem em uma única casa? Funções Suponha um conjunto habitacional, com várias famílias...... imagina se todas elas morassem em uma única casa? Funções Programação de Computadores 1 de 28 Funções Na Programação, funções são conjuntos

Leia mais

UNIVERSIDADE FEDERAL RURAL DO SEMI-ÁRIDO CURSO: CIÊNCIA DA COMPUTAÇÃO. Prof.ª Danielle Casillo

UNIVERSIDADE FEDERAL RURAL DO SEMI-ÁRIDO CURSO: CIÊNCIA DA COMPUTAÇÃO. Prof.ª Danielle Casillo UNIVERSIDADE FEDERAL RURAL DO SEMI-ÁRIDO CURSO: CIÊNCIA DA COMPUTAÇÃO TEORIA DA COMPUTAÇÃO Aula 04 Programa Recursivo e Máquinas Prof.ª Danielle Casillo Funções recursivas Alguma função é recursiva quando

Leia mais

Variáveis primitivas e Controle de fluxo

Variáveis primitivas e Controle de fluxo Variáveis primitivas e Controle de fluxo Material baseado na apostila FJ-11: Java e Orientação a Objetos do curso Caelum, Ensino e Inovação, disponível para download em http://www.caelum.com.br/apostilas/

Leia mais

Aula 5 Oficina de Programação Introdução ao C. Profa. Elaine Faria UFU

Aula 5 Oficina de Programação Introdução ao C. Profa. Elaine Faria UFU Aula 5 Oficina de Programação Introdução ao C Profa. Elaine Faria UFU - 2017 Linguagem de Programação Para que o computador consiga ler um programa e entender o que fazer, este programa deve ser escrito

Leia mais

Funções são blocos de código que podem ser nomeados e chamados de dentro de um programa.

Funções são blocos de código que podem ser nomeados e chamados de dentro de um programa. Prof. André Backes Função Funções são blocos de código que podem ser nomeados e chamados de dentro de um programa. print(): função que escreve na tela input (): função que lê o teclado 1 Função Facilitam

Leia mais

Vetores. e o programa deverá ler os valores separadamente:

Vetores. e o programa deverá ler os valores separadamente: Vetores Vetor é um tipo de dado usado para representar uma certa quantidade de variáveis de valores homogêneos (do mesmo tipo). Imagine o seguinte problema: calcular a média das notas da prova de 5 alunos.

Leia mais

Análise do problema. Desenvolvimento de programas. Desenvolvimento do algoritmo. Análise do problema

Análise do problema. Desenvolvimento de programas. Desenvolvimento do algoritmo. Análise do problema Desenvolvimento de programas 1 Análise do problema 2 Análise do problema Desenvolvimento do algoritmo Codificação do programa Compilação e execução Teste e depuração Conhecer exatamente o que o problema

Leia mais

Puca Huachi Vaz Penna

Puca Huachi Vaz Penna Aula 3 C++: variáveis e expressões aritméticas 2017/1 BCC201 Introdução à Computação Turmas 61, 62, 63, 64, 65 e 66, 32 e 33 Puca Huachi Vaz Penna Departamento de Computação Universidade Federal de Ouro

Leia mais

Desenvolvimento de Aplicações Desktop

Desenvolvimento de Aplicações Desktop Desenvolvimento de Aplicações Desktop Conceitos Básicos de Programação Professor: Charles Leite O Desenvolvimento de Programas A programação consiste em indicar como o computador (hardware) deve trabalhar

Leia mais

Algoritmos e Programação. Linguagem C Procedimentos e. Eliane Pozzebon

Algoritmos e Programação. Linguagem C Procedimentos e. Eliane Pozzebon Algoritmos e Programação Linguagem C Procedimentos e Funções Eliane Pozzebon Procedimentos e Funções Procedimentos são estruturas que agrupam um conjunto de comandos, que são executados quando o procedimento

Leia mais

Algoritmos II Aula 11 Funções e Procedimentos

Algoritmos II Aula 11 Funções e Procedimentos Algoritmos II Aula 11 Funções e Procedimentos Professor: Max Pereira max.pereira@unisul.br Ciência da Computação Programação Estruturada ou Programação Modular 1960 crise do software; Programas grandes

Leia mais

FUNÇÕES EM C Material adaptado da profa Silvana Maria Affonso de Lara

FUNÇÕES EM C Material adaptado da profa Silvana Maria Affonso de Lara Universidade do Estado de Minas Gerais - UEMG Curso de Engenharia da Computação FUNÇÕES EM C 1 Material adaptado da profa Silvana Maria Affonso de Lara ROTEIRO DA AULA Definição de Função Argumentos, retornos

Leia mais

#include <stdio.h> main() { int i; // Cabeçalho for (i = 1; i <=20; i++) putchar( * ); putchar( \n ); puts( Numeros entre 1 e 5 );

#include <stdio.h> main() { int i; // Cabeçalho for (i = 1; i <=20; i++) putchar( * ); putchar( \n ); puts( Numeros entre 1 e 5 ); O todo é igual à soma das partes. Euclides. FUNÇÕES E PROCEDIMENTOS Embora sem saber, ao longo dos outros laboratórios, já foram utilizadas funções tais como printf, scanf, getchar, putchar, dentre outras

Leia mais

Introdução à Ciência da Computação. Sumário. Modularização de Algoritmos. Agradecimentos. Modularização de Algoritmos e Funções em C

Introdução à Ciência da Computação. Sumário. Modularização de Algoritmos. Agradecimentos. Modularização de Algoritmos e Funções em C Agradecimentos Introdução à Ciência da Computação e Funções em C Parte dos slides a seguir são adaptações dos originais: de A. L. V. Forbellone e H. F. Eberspächer do Prof. Rudinei Goularte Prof. Ricardo

Leia mais

Programação de Computadores I Procedimentos e Funções PROFESSORA CINTIA CAETANO

Programação de Computadores I Procedimentos e Funções PROFESSORA CINTIA CAETANO Programação de Computadores I Procedimentos e Funções PROFESSORA CINTIA CAETANO Introdução Dividir o programa em subprogramas é útil para deixar mais fácil de depurá-lo e de se reutilizar código. Temos

Leia mais

COMANDOS DE REPETIÇÃO (ENQUANTO)

COMANDOS DE REPETIÇÃO (ENQUANTO) COMANDOS DE REPETIÇÃO (ENQUANTO) Disciplina: Algoritmos Professora: Alba Lopes alba.lopes@ifrn.edu.br http://docente.ifrn.edu.br/albalopes COMANDOS DE REPETIÇÃO Usada quando se deseja que um trecho do

Leia mais

Universidade Federal de Uberlândia Faculdade de Computação. Linguagem C: estruturas de repetição While / Do While / For

Universidade Federal de Uberlândia Faculdade de Computação. Linguagem C: estruturas de repetição While / Do While / For Universidade Federal de Uberlândia Faculdade de Computação Linguagem C: estruturas de repetição While / Do While / For Prof. Renato Pimentel 1 Estruturas de repetição O real poder dos computadores está

Leia mais

Desenvolvimento de programas. Análise do problema. Análise do problema. Análise do problema. Desenvolvimento do algoritmo. Codificação do programa

Desenvolvimento de programas. Análise do problema. Análise do problema. Análise do problema. Desenvolvimento do algoritmo. Codificação do programa Desenvolvimento de programas 1 Análise do problema Desenvolvimento do algoritmo Codificação do programa Compilação e execução Teste e depuração Análise do problema 2 Conhecer exatamente o que o problema

Leia mais

Programação: Vetores

Programação: Vetores Programação de Computadores I Aula 09 Programação: Vetores José Romildo Malaquias Departamento de Computação Universidade Federal de Ouro Preto 2011-1 1/62 Motivação Problema Faça um programa que leia

Leia mais

VARIÁVEIS NUMÉRICAS : integer - Números inteiros entre e real - Números reais de 11 algarismos significativos.

VARIÁVEIS NUMÉRICAS : integer - Números inteiros entre e real - Números reais de 11 algarismos significativos. TURBO PASCAL Histórico Origem: desenvolvida nos anos entre 1968 e 1970 por Nicklaus Wirth na Universidade Técnica de Zurique, Suíça. Em 1970 é disponibilizado o primeiro compilador para a linguagem. Objetivo:

Leia mais

Construção de Algoritmos II Aula 06

Construção de Algoritmos II Aula 06 exatasfepi.com.br Construção de Algoritmos II Aula 06 André Luís Duarte Porque mil anos são aos teus olhos como o dia de ontem que passou, e como a vigília da noite. Salmos 90:4 Recursividade e complexidade

Leia mais

Departamento de Engenharia Rural Centro de Ciências Agrárias. Programação I

Departamento de Engenharia Rural Centro de Ciências Agrárias. Programação I Departamento de Engenharia Rural Centro de Ciências Agrárias Programação I Variáveis compostas heterogêneas Conjunto de registros Conjunto de registros Muitas vezes você precisará armazenar várias informações

Leia mais

Algoritmos e Estrutura de Dados I Conceitos de Algoritmos. Prof. Elyssandro Piffer

Algoritmos e Estrutura de Dados I Conceitos de Algoritmos. Prof. Elyssandro Piffer Algoritmos e Estrutura de Dados I Conceitos de Algoritmos Prof. Elyssandro Piffer CONCEITO DE ALGORITMO O computador pode auxiliar em muitas tarefas, contudo ele não possui independência, não é inteligente,

Leia mais

<identificador>[<tamanho>]: <tipo>;

<identificador>[<tamanho>]: <tipo>; Vetores e Constantes Imagine uma situação na qual fosse necessário armazenar 100 valores para processamento. Por exemplo, pode ser necessário armazenar as notas de 100 provas de uma turma de alunos. Uma

Leia mais

Algoritmos. Prof. Jonatas Bastos Site:

Algoritmos. Prof. Jonatas Bastos   Site: Algoritmos Prof. Jonatas Bastos Email: jonatasfbastos@gmail.com Site: http://jonatasfbastos.wordpress.com/ 1 Dúvidas! p p p Como os computadores entendem os algoritmo? Os computadores não entendem os passos

Leia mais

Algoritmo. Prof. Anderson Almeida Ferreira. Agradeço ao prof. Guilherme Tavares de Assis por fornecer slides que fazem parte desta apresentação

Algoritmo. Prof. Anderson Almeida Ferreira. Agradeço ao prof. Guilherme Tavares de Assis por fornecer slides que fazem parte desta apresentação 1 Algoritmo Prof. Anderson Almeida Ferreira Agradeço ao prof. Guilherme Tavares de Assis por fornecer slides que fazem parte desta apresentação Desenvolvimento de programas 2 Análise do problema Desenvolvimento

Leia mais

Algoritmos e Programação. AULA 21: Recursividade UNIVERSIDADE FEDERAL DE PELOTAS CENTRO DE DESENVOLVIMENTO TECNOLÓGICO CIÊNCIA DA COMPUTAÇÃO

Algoritmos e Programação. AULA 21: Recursividade UNIVERSIDADE FEDERAL DE PELOTAS CENTRO DE DESENVOLVIMENTO TECNOLÓGICO CIÊNCIA DA COMPUTAÇÃO 1 Algoritmos e Programação AULA 21: Recursividade UNIVERSIDADE FEDERAL DE PELOTAS CENTRO DE DESENVOLVIMENTO TECNOLÓGICO CIÊNCIA DA COMPUTAÇÃO 2 Recursividade A recursão é o processo pelo qual passa um

Leia mais

MC102 - Algoritmos e programação de computadores. Aula 14: Funções e Procedimentos

MC102 - Algoritmos e programação de computadores. Aula 14: Funções e Procedimentos MC102 - Algoritmos e programação de computadores Aula 14: Funções e Procedimentos Procedimentos Procedimentos são estruturas que agrupam um conjunto de comandos, que são executados quando o procedimento

Leia mais

INTRODUÇÃO À LINGUAGEM PASCAL PREFÁCIO

INTRODUÇÃO À LINGUAGEM PASCAL PREFÁCIO INTRODUÇÃO À LINGUAGEM PASCAL CESAR BEZERRA TEIXEIRA,MSC PREFÁCIO A linguagem Pascal foi criada pelo Prof Niklaus Wirth na universidade de Zurich, com o propósito de ensinar os conceitos de uma linguagem

Leia mais

Desenvolvimento de programas

Desenvolvimento de programas 1 Desenvolvimento de programas Análise do problema Desenvolvimento do algoritmo Codificação do programa Compilação e execução Teste e depuração 2 Análise do problema Conhecer exatamente o que o problema

Leia mais

Departamento de Engenharia Rural Centro de Ciências Agrárias. Programação I

Departamento de Engenharia Rural Centro de Ciências Agrárias. Programação I Departamento de Engenharia Rural Centro de Ciências Agrárias Programação I Algoritmos de busca Basicamente podem ser citadas duas estratégias para procurar (ou buscar) algo em uma coleção de dados: Busca

Leia mais

Notas de Aula de Algoritmos e Programação de Computadores

Notas de Aula de Algoritmos e Programação de Computadores Notas de Aula de Algoritmos e Programação de Computadores FLÁVIO KEIDI MIYAZAWA com a colaboração de TOMASZ KOWALTOWSKI Instituto de Computação - UNICAMP Versão 2000.1 Estas notas de aula não devem ser

Leia mais