PROGRAMAÇÃO MODULAR. É uma metodologia para projetar programas como um conjunto de unidades individuais inter-relacionadas (sub-programas ou módulos).

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

Download "PROGRAMAÇÃO MODULAR. É uma metodologia para projetar programas como um conjunto de unidades individuais inter-relacionadas (sub-programas ou módulos)."

Transcrição

1 É uma metodologia para projetar programas como um conjunto de unidades individuais inter-relacionadas (sub-programas ou módulos).

2 É uma metodologia para projetar programas como um conjunto de unidades individuais inter-relacionadas (sub-programas ou módulos). A decomposição em módulos será uma estratégia fundamental no desenvolvimento de programas de médio/grande porte.

3 VANTAGENS DA MODULARIZAÇÃO: Qualidade dos Programas A solução de um problema é buscada através da combinação das soluções de subproblemas (menos complexos).

4 VANTAGENS DA MODULARIZAÇÃO: Qualidade dos Programas Um módulo que realiza uma função simples e bem definida pode ser facilmente compreendido.

5 VANTAGENS DA MODULARIZAÇÃO: Qualidade dos Programas Um módulo que realiza uma função simples e bem definida pode ser facilmente compreendido. A atenção do programador se concentra nos detalhes da lógica de cada parte do programa isoladamente.

6 VANTAGENS DA MODULARIZAÇÃO: Qualidade dos Programas Um módulo que realiza uma função simples e bem definida pode ser facilmente compreendido. A atenção do programador se concentra nos detalhes da lógica de cada parte do programa isoladamente. ABSTRAÇÃO

7 VANTAGENS DA MODULARIZAÇÃO: Flexibilidade no desenvolvimento Como o programa é dividido em módulos individuais, tem-se maior flexibilidade na alocação de recursos e pessoal para o desenvolvimento.

8 VANTAGENS DA MODULARIZAÇÃO: Padronização e reuso Quando se escreve uma série de programas, é comum que certas funções sejam necessárias em mais de um

9 VANTAGENS DA MODULARIZAÇÃO: Padronização e reuso Quando se escreve uma série de programas, é comum que certas funções sejam necessárias em mais de um A existência da uma biblioteca de funções evitará grande parte da repetição e garantirá padronização.

10 VANTAGENS DA MODULARIZAÇÃO: Planejamento Quando se trabalha com pequenas unidades, pode-se estimar com certa precisão a quantidade de trabalho envolvido.

11 VANTAGENS DA MODULARIZAÇÃO: Planejamento Quando se trabalha com pequenas unidades, pode-se estimar com certa precisão a quantidade de trabalho envolvido. Isto possibilita um melhor planejamento de recursos, prazos, etc.

12 VANTAGENS DA MODULARIZAÇÃO: Manutenção Os problemas de manutenção são reduzidos. É mais fácil entender um módulo do sistema (e alterá-lo) do que tentar entender o sistema como um todo.

13 OBS: A técnica de modularização é empregada em vários ramos de desenvolvimento, como uma forma de lidar com a complexidade.

14 OBS: A técnica de modularização é empregada em vários ramos de desenvolvimento, como uma forma de lidar com a complexidade. Ex1: não há um fabricante de computador. Há fabricantes de discos rígidos, de processadores, etc.

15 OBS: A técnica de modularização é empregada em vários ramos de desenvolvimento, como uma forma de lidar com a complexidade. Ex2: não há um fabricante de carros. Há montadoras que encomendam de terceiros motor, câmbio, pneus, condicionador de ar, etc.

16 OBS: Um módulo pode ser decomposto em outros mais simples. Por exemplo, o fabricante de motor pode terceirizar a fabricação das velas de ignição, pistons, etc.

17 OBS: Um módulo pode ser decomposto em outros mais simples. Por exemplo, o fabricante de motor pode terceirizar a fabricação das velas de ignição, pistons, etc. Ou seja, para produção de objetos muito complexos, haverá um processo de decomposição sucessiva

18 RECOMENDAÇÃO BÁSICA Os módulos devem resolver uma tarefa (ou função) muito bem definida.

19 RECOMENDAÇÃO BÁSICA Os módulos devem resolver uma tarefa (ou função) muito bem definida. Dica prática: deve-se poder dizer o que um módulo faz em poucas palavras (sem uso de ou, se, etc.)

20 RECOMENDAÇÃO BÁSICA Os módulos devem resolver uma tarefa (ou função) muito bem definida. Dica prática: deve-se poder dizer o que um módulo faz em poucas palavras (sem uso de ou, se, etc.) Ex: Calcula o fatorial de um número Ordena um vetor de forma ascendente

21 TIPOS DE MÓDULOS Procedimento: realiza uma tarefa. Ao final não há retorno de valores ao módulo que o ativou.

22 TIPOS DE MÓDULOS Procedimento: realiza uma tarefa. Ao final não há retorno de valores ao módulo que o ativou. Função: realiza algum processamento e retorna uma única informação de saída.

23 TIPOS DE MÓDULOS Procedimento: realiza uma tarefa. Ao final não há retorno de valores ao módulo que o ativou. Função: realiza algum processamento e retorna uma única informação de saída. OBS: Funções possuem um tipo associado, que é o tipo da informação que será retornada.

24 TIPOS DE MÓDULOS Procedimento: realiza uma tarefa. Ao final não há retorno de valores ao módulo que o ativou. Função: realiza algum processamento e retorna uma única informação de saída. OBS: Funções possuem um tipo associado, que é o tipo da informação que será retornada. Funções e procedimentos podem receber informações de entrada (parâmetros).

25 EXEMPLOS: FUNÇÕES A := round(1.5); write(ln(num)); S := concat('abc','def'); S2 := copy(s,2,3);

26 EXEMPLOS: FUNÇÕES A := round(1.5); write(ln(num)); S := concat('abc','def'); S2 := copy(s,2,3); PROCEDIMENTOS ordenavet(v); insert(s1,s2,5); delete(s, 5,2); inc(x);

27 EXEMPLOS: FUNÇÕES A := round(1.5); write(ln(num)); S := concat('abc','def'); S2 := copy(s,2,3); PROCEDIMENTOS ordenavet(v); insert(s1,s2,5); delete(s, 5,2); inc(x); Obs: uma função é um tipo de expressão: produz um resultado, que deve ter algum destino.

28 EXEMPLOS: FUNÇÕES A := round(1.5); write(ln(num)); S := concat('abc','def'); S2 := copy(s,2,3); PROCEDIMENTOS ordenavet(v); insert(s1,s2,5); delete(s, 5,2); inc(x); já um procedimento é empregadona forma de comando.

29 PROCEDIMENTOS (sintaxe Pascal): procedure <nome> (<list_parâm>); <iáveis locais> comando 1; comando 2;.. comando n

30 FUNÇÕES (sintaxe Pascal): function <nome>(<list_parâm>):<tipo_ret>; < iáveis locais > comando 1; comando 2;..

31 FUNÇÕES (sintaxe Pascal): function <nome>(<list_parâm>):<tipo_ret>; < iáveis locais > comando 1; comando 2;.. OBS: toda função deverá ter (pelo menos) uma atribuição para o seu nome, com o que se produz o retorno de um valor.

32 FUNÇÕES (sintaxe Pascal): function <nome>(<list_parâm>):<tipo_ret>; < iáveis locais > comando 1; comando 2;.. OBS: toda função deverá ter (pelo menos) uma atribuição para o seu nome, com o que se produz o retorno de um valor. se houver mais de uma atribuição, a segunda anula a primeira e assim sucessivamente.

33 OBS: A execução de um módulo é ativada pela referência ao seu nome.

34 OBS: A execução de um módulo é ativada pela referência ao seu nome. Quando for encontrada uma chamada, o módulo em execução será suspenso, e o controle será passado ao módulo chamado.

35 OBS: A execução de um módulo é ativada pela referência ao seu nome. Quando for encontrada uma chamada, o módulo em execução será suspenso, e o controle será passado ao módulo chamado. Após a execução, ocorrerá o retorno do controle para o comando imediatamente após a chamada.

36 ESCOPO E TEMPO DE VIDA Escopo de uma iável é a área do programa onde ela pode ser legalmente referenciada.

37 Quanto ao escopo, as iáveis podem ser: Globais: São declaradas fora de qualquer módulo, e podem ser referenciadas em qualquer parte do programa

38 Quanto ao escopo, as iáveis podem ser: Globais: São declaradas fora de qualquer módulo, e podem ser referenciadas em qualquer parte do programa exceto naqueles módulos onde for declarada outra iável com o mesmo nome.

39 Quanto ao escopo, as iáveis podem ser: Globais: São declaradas fora de qualquer módulo, e podem ser referenciadas em qualquer parte do programa exceto naqueles módulos onde for declarada outra iável com o mesmo nome. Locais: Só existem dentro do módulo onde foram declaradas.

40 program local_global; x1,x2:integer; procedure P() y1, y2, x2: real; procedure Q() z,y1: integer; {principal} end.

41 program local_global; x1,x2:integer; GLOBAIS procedure P() y1, y2, x2: real; procedure Q() z,y1: integer; LOCAIS {principal} end.

42 program local_global; x1,x2:integer; procedure P() y1, y2, x2: real; procedure Q() z,y1: integer; a iável global X2 não estará acessível em P(); {principal} end.

43 Tempo de vida de uma iável é o intervalo de tempo desde a sua criação (alocação de espaço) até a sua destruição.

44 Tempo de vida de uma iável é o intervalo de tempo desde a sua criação (alocação de espaço) até a sua destruição. - O tempo de vida de uma iável global é o tempo total de execução de um programa.

45 Tempo de vida de uma iável é o intervalo de tempo desde a sua criação (alocação de espaço) até a sua destruição. - O tempo de vida de uma iável global é o tempo total de execução de um programa. - Já o de uma iável local é o período durante o qual está ativo o módulo a que ela pertence.

46 Tempo de vida de uma iável é o intervalo de tempo desde a sua criação (alocação de espaço) até a sua destruição. - O tempo de vida de uma iável global é o tempo total de execução de um programa. - Já o de uma iável local é o período durante o qual está ativo o módulo a que ela pertence. O conteúdo de uma iável local se perde após o encerramento do módulo onde ela está declarada.

47 program local_global; g: integer; x1,x2: real; procedure Q(); z: integer; procedure P(); y1: real; y2: integer; Q(); {principal} P(); Q(); end.

48 program local_global; g: integer; x1,x2: real; procedure Q(); z: integer; procedure P(); y1: real; y2: integer; Q(); {principal} P(); Q(); end. VARIÁVEIS ALOCADAS

49 program local_global; g: integer; x1,x2: real; procedure Q(); z: integer; procedure P(); y1: real; y2: integer; Q(); {principal} P(); Q(); end. g, x1, x2 VARIÁVEIS ALOCADAS

50 program local_global; g: integer; x1,x2: real; procedure Q(); z: integer; procedure P(); y1: real; y2: integer; Q(); {principal} P(); Q(); end. o módulo principal chama P() g, x1, x2 VARIÁVEIS ALOCADAS

51 program local_global; g: integer; x1,x2: real; procedure Q(); z: integer; procedure P(); y1: real; y2: integer; Q(); {principal} P(); Q(); end. y1, y2 g, x1, x2 VARIÁVEIS ALOCADAS

52 program local_global; g: integer; x1,x2: real; procedure Q(); z: integer; procedure P(); y1: real; y2: integer; Q(); {principal} P(); Q(); end. P(), por sua vez, chama Q() y1, y2 g, x1, x2 VARIÁVEIS ALOCADAS

53 program local_global; g: integer; x1,x2: real; procedure Q(); z: integer; procedure P(); y1: real; y2: integer; Q(); {principal} P(); Q(); end. z y1, y2 g, x1, x2 VARIÁVEIS ALOCADAS

54 program local_global; g: integer; x1,x2: real; procedure Q(); z: integer; retorno procedure P(); y1: real; y2: integer; Q(); {principal} P(); Q(); end. z y1, y2 g, x1, x2 VARIÁVEIS ALOCADAS

55 program local_global; g: integer; x1,x2: real; procedure Q(); z: integer; procedure P(); y1: real; y2: integer; Q(); {principal} P(); Q(); end. y1, y2 g, x1, x2 VARIÁVEIS ALOCADAS

56 program local_global; g: integer; x1,x2: real; procedure Q(); z: integer; procedure P(); y1: real; y2: integer; Q(); {principal} P(); Q(); end. retorno y1, y2 g, x1, x2 VARIÁVEIS ALOCADAS

57 program local_global; g: integer; x1,x2: real; procedure Q(); z: integer; procedure P(); y1: real; y2: integer; Q(); {principal} P(); Q(); end. g, x1, x2 VARIÁVEIS ALOCADAS

58 program local_global; g: integer; x1,x2: real; procedure Q(); z: integer; procedure P(); y1: real; y2: integer; Q(); {principal} P(); Q(); end. Ativação direta de Q() g, x1, x2 VARIÁVEIS ALOCADAS

59 program local_global; g: integer; x1,x2: real; procedure Q(); z: integer; procedure P(); y1: real; y2: integer; Q(); {principal} P(); Q(); end. z g, x1, x2 VARIÁVEIS ALOCADAS

60 program local_global; g: integer; x1,x2: real; procedure Q(); z: integer; retorno procedure P(); y1: real; y2: integer; Q(); {principal} P(); Q(); end. z g, x1, x2 VARIÁVEIS ALOCADAS

61 program local_global; g: integer; x1,x2: real; procedure Q(); z: integer; procedure P(); y1: real; y2: integer; Q(); {principal} P(); Q(); end. g, x1, x2 VARIÁVEIS ALOCADAS

62 program local_global; g: integer; x1,x2: real; procedure Q(); z: integer; procedure P(); y1: real; y2: integer; Q(); {principal} P(); Q(); end. encerramento. g, x1, x2 VARIÁVEIS ALOCADAS

63 program local_global; g: integer; x1,x2: real; procedure Q(); z: integer; procedure P(); y1: real; y2: integer; Q(); {principal} P(); Q(); end. VARIÁVEIS ALOCADAS

64 program local_global; g: integer; x1,x2: real; procedure Q(); z: integer; Note que a alocação funcionou em um esquema de PILHA procedure P(); y1: real; y2: integer; Q(); {principal} P(); Q(); end.

65 program local_global; g: integer; x1,x2: real; procedure Q(); z: integer; procedure P(); y1: real; y2: integer; Q(); Note que a alocação funcionou em um esquema de PILHA em uma pilha (de pratos, por exemplo) o último adicionado será o primeiro a sair. {principal} P(); Q(); end.

66 program local_global; g: integer; x1,x2: real; procedure Q(); z: integer; procedure P(); y1: real; y2: integer; Q(); {principal} P(); Q(); end. Note que a alocação funcionou em um esquema de PILHA em uma pilha (de pratos, por exemplo) o último adicionado será o primeiro a sair. Isso porque um módulo sempre encerra antes daquele que o chamou.

67 program local_global; g: integer; x1,x2: real; procedure Q(); z: integer; ALOCAÇÃO EM FUNÇÃO DO TEMPO procedure P(); y1: real; y2: integer; Q(); {principal} P(); Q(); end.

68 PARÂMETROS E ARGUMENTOS Observe o código abaixo: v: array[1..100] of integer; function Soma( ): LongInt; i: byte; s: LongInt; s := 0; for i = 1 to 100 do s := s + v[i]; Soma := S;

69 PARÂMETROS E ARGUMENTOS Observe o código abaixo: v: array[1..100] of integer; function Soma( ): LongInt; i: byte; s: LongInt; s := 0; for i = 1 to 100 do s := s + v[i]; Soma := S; A função Soma sempre calculará a soma dos elementos de um vetor em particular v (global).

70 PARÂMETROS E ARGUMENTOS Observe o código abaixo: v: array[1..100] of integer; function Soma( ): LongInt; i: byte; s: LongInt; s := 0; for i = 1 to 100 do s := s + v[i]; Soma := S; A função Soma sempre calculará a soma dos elementos de um vetor em particular v (global). a utilidade da função, portanto, é bastante limitada!

71 PARÂMETROS E ARGUMENTOS Acrescentando um parâmetro type Vetor = array[1..100] of integer; v1,v2:vetor; function Soma(v:Vetor ):LongInt; i: byte; s: LongInt; s := 0; for i = 1 to 100 do s := s + v[i]; Soma := S; tot := Soma(v1);

72 PARÂMETROS E ARGUMENTOS Acrescentando um parâmetro type Vetor = array[1..100] of integer; v1,v2:vetor; function Soma(v:Vetor ):LongInt; i: byte; s: LongInt; s := 0; for i = 1 to 100 do s := s + v[i]; Soma := S; tot := Soma(v1); Agora Soma possui um parâmetro v e o processamento interno será feito sobre ele.

73 PARÂMETROS E ARGUMENTOS Acrescentando um parâmetro type Vetor = array[1..100] of integer; v1,v2:vetor; function Soma(v:Vetor ):LongInt; i: byte; s: LongInt; s := 0; for i = 1 to 100 do s := s + v[i]; Soma := S; tot := Soma(v1); v será alocado de forma similar a uma iável local (na ativação do módulo).

74 PARÂMETROS E ARGUMENTOS Acrescentando um parâmetro type Vetor = array[1..100] of integer; v1,v2:vetor; function Soma(v:Vetor ):LongInt; i: byte; s: LongInt; s := 0; for i = 1 to 100 do s := s + v[i]; Soma := S; tot := Soma(v1); v será alocado de forma similar a uma iável local (na ativação do módulo). Em seguida, v receberá uma cópia de v1.

75 PARÂMETROS E ARGUMENTOS Acrescentando um parâmetro type Vetor = array[1..100] of integer; v1,v2:vetor; function Soma(v:Vetor ):LongInt; i: byte; s: LongInt; s := 0; for i = 1 to 100 do s := s + v[i]; Soma := S; tot := Soma(v1); v será alocado de forma similar a uma iável local (na ativação do módulo). Em seguida, v receberá uma cópia de v1. Assim, o valor retornado será a soma dos valores de v1 (v é apenas um suporte

76 PARÂMETROS E ARGUMENTOS Acrescentando um parâmetro type Vetor = array[1..100] of integer; v1,v2:vetor; function Soma(v:Vetor ):LongInt; i: byte; s: LongInt; s := 0; for i = 1 to 100 do s := s + v[i]; Soma := S; tot := Soma(v1); Na chamada foi passado v1, assim como poderia ter sido passado v2, ou outro vetor qualquer de mesmo tipo.

77 PARÂMETROS E ARGUMENTOS Acrescentando um parâmetro type Vetor = array[1..100] of integer; v1,v2:vetor; function Soma(v:Vetor ):LongInt; i: byte; s: LongInt; s := 0; for i = 1 to 100 do s := s + v[i]; Soma := S; tot := Soma(v1); Na chamada foi passado v1, assim como poderia ter sido passado v2, ou outro vetor qualquer de mesmo tipo. Isso amplia a utilidade da função. Ele se tornou mais amplamente aplicável!

78 PARÂMETROS E ARGUMENTOS Acrescentando um novo parâmetro type Vetor = array[1..100] of integer; v1,v2:vetor; tam: byte; function Soma(v:Vetor,n:byte):LongInt; i: byte; s: LongInt; s := 0; for i = 1 to n do s := s + v[i]; Soma := S; tot := Soma(v1,tam);

79 PARÂMETROS E ARGUMENTOS Acrescentando um novo parâmetro type Vetor = array[1..100] of integer; v1,v2:vetor; tam: byte; function Soma(v:Vetor,n:byte):LongInt; i: byte; s: LongInt; s := 0; for i = 1 to n do s := s + v[i]; Soma := S; tot := Soma(v1,tam); Um novo parâmetro (n) determinará até onde a soma deverá ser feita

80 PARÂMETROS E ARGUMENTOS Acrescentando um novo parâmetro type Vetor = array[1..100] of integer; v1,v2:vetor; tam: byte; function Soma(v:Vetor,n:byte):LongInt; i: byte; s: LongInt; s := 0; for i = 1 to n do s := s + v[i]; Soma := S; tot := Soma(v1,tam); Um novo parâmetro (n) determinará até onde a soma deverá ser feita Isso confere maior flexibilidade ainda à função!

81 PARÂMETROS E ARGUMENTOS Acrescentando um novo parâmetro type Vetor = array[1..100] of integer; v1,v2:vetor; tam: byte; function Soma(v:Vetor,n:byte):LongInt; i: byte; s: LongInt; s := 0; for i = 1 to n do s := s + v[i]; Soma := S; tot := Soma(v1,tam); assim, parâmetros são fundamentais para a comunicação entre módulos, com aumento significativo de sua aplicabilidade!!

82 PARÂMETROS FORMAIS, REAIS E ARGUMENTOS Argumento é o valor que será passado para o módulo Parâmetro real é uma expressão que produzirá o argumento. Parâmetro formal é um identificador pelo qual o módulo terá acesso ao argumento.

83 PARÂMETROS FORMAIS, REAIS E ARGUMENTOS Considere o exemplo n1,n2,dbr: byte; function Dobro(n:byte):byte; Dobro := 2 * n; n1:= 2; n2:= 3; dbr := Dobro(n1+n2);

84 PARÂMETROS FORMAIS, REAIS E ARGUMENTOS Considere o exemplo n1,n2,dbr: byte; function Dobro(n:byte):byte; Dobro := 2 * n; n1:= 2; n2:= 3; dbr := Dobro(n1+n2); A expressão n1+n2 constitui o parâmetro real

85 PARÂMETROS FORMAIS, REAIS E ARGUMENTOS Considere o exemplo n1,n2,dbr: byte; function Dobro(n:byte):byte; Dobro := 2 * n; n1:= 2; n2:= 3; dbr := Dobro(n1+n2); A expressão n1+n2 constitui o parâmetro real O valor produzido e que será efetivamente passado (5) é o argumento.

86 PARÂMETROS FORMAIS, REAIS E ARGUMENTOS Considere o exemplo n1,n2,dbr: byte; function Dobro(n:byte):byte; Dobro := 2 * n; n1:= 2; n2:= 3; dbr := Dobro(n1+n2); A expressão n1+n2 constitui o parâmetro real O valor produzido e que será efetivamente passado (5) é o argumento. n é o parâmetro formal: um suporte para o acesso ao argumento.

87 PARÂMETROS FORMAIS, REAIS E ARGUMENTOS Considere o exemplo n1,n2,dbr: byte; function Dobro(n:byte):byte; Dobro := 2 * n; n1:= 2; n2:= 3; dbr := Dobro(n1+n2); OBS: deve haver correspondência entre os parâmetros formais e reais quanto a: número tipo de dados posição entre eles

88 PARÂMETROS FORMAIS, REAIS E ARGUMENTOS Considere o exemplo n1,n2,dbr: byte; function Dobro(n:byte):byte; Dobro := 2 * n; n1:= 2; n2:= 3; dbr := Dobro(n1+n2); OBS: deve haver correspondência entre os parâmetros formais e reais quanto a: número tipo de dados posição entre eles Observe que n1+n2 é apenas um parâmetro (uma única expressão), embora possua duas iáveis.

89 TIPOS DE PASSAGEM DE PARÂMETRO Por valor: é a forma de passagem presente nos exemplos já apresentados:

90 TIPOS DE PASSAGEM DE PARÂMETRO Por valor: é a forma de passagem presente nos exemplos já apresentados: - o argumento é copiado no parâmetro formal.

91 TIPOS DE PASSAGEM DE PARÂMETRO Por valor: é a forma de passagem presente nos exemplos já apresentados: - o argumento é copiado no parâmetro formal. - eventuais alterações internas no conteúdo do parâmetro formal (apenas uma cópia) não acarretarão qualquer mudança de valor no parâmetro real.

92 TIPOS DE PASSAGEM DE PARÂMETRO Por referência: o parâmetro formal é uma referência para o argumento. assim, todas as alterações de conteúdo via parâmetro formal, na realidade surtirão efeito diretamente no argumento.

93 TIPOS DE PASSAGEM DE PARÂMETRO Exemplo: x: byte; Procedure Dobrar( n:byte):byte; n := 2 * n; x := 2; Dobrar(x);

94 TIPOS DE PASSAGEM DE PARÂMETRO Exemplo: x: byte; Procedure Dobrar( n:byte):byte; n := 2 * n; x := 2; Dobrar(x); O termo na declaração do parâmetro, designa passagem por referência

95 TIPOS DE PASSAGEM DE PARÂMETRO Exemplo: x: byte; Procedure Dobrar( n:byte):byte; n := 2 * n; x := 2; Dobrar(x); SIMULANDO x

96 TIPOS DE PASSAGEM DE PARÂMETRO Exemplo: x: byte; Procedure Dobrar( n:byte):byte; n := 2 * n; x := 2; Dobrar(x); SIMULANDO x

97 TIPOS DE PASSAGEM DE PARÂMETRO Exemplo: x: byte; Procedure Dobrar( n:byte):byte; n := 2 * n; x := 2; Dobrar(x); SIMULANDO x 2

98 TIPOS DE PASSAGEM DE PARÂMETRO Exemplo: x: byte; Procedure Dobrar( n:byte):byte; n := 2 * n; x := 2; Dobrar(x); SIMULANDO n x 2

99 TIPOS DE PASSAGEM DE PARÂMETRO Exemplo: x: byte; Procedure Dobrar( n:byte):byte; n := 2 * n; x := 2; Dobrar(x); n não guarda uma cópia de x, mas é uma (nova) forma de referenciar o objeto identificado por x SIMULANDO n x 2

100 TIPOS DE PASSAGEM DE PARÂMETRO Exemplo: x: byte; Procedure Dobrar( n:byte):byte; n := 2 * n; x := 2; Dobrar(x); SIMULANDO n x 2

101 TIPOS DE PASSAGEM DE PARÂMETRO Exemplo: x: byte; Procedure Dobrar( n:byte):byte; n := 2 * n; x := 2; Dobrar(x); SIMULANDO n x 4

102 TIPOS DE PASSAGEM DE PARÂMETRO Exemplo: x: byte; Procedure Dobrar( n:byte):byte; n := 2 * n; x := 2; Dobrar(x); SIMULANDO n x 4

103 OBS: A passagem de parâmetro por referência será necessária sempre que se quiser que ações internas ao módulo (feitas sobre o parâmetro formal) produzam efeitos diretos no argumento (e não em uma cópia).

104 OBS: A passagem de parâmetro por referência será necessária sempre que se quiser que ações internas ao módulo (feitas sobre o parâmetro formal) produzam efeitos diretos no argumento (e não em uma cópia). Ex:... vet: Vetor; procedure OrdenaVetor( v: Vetor); OrdenaVetor(vet);...

105 OBS: A passagem de parâmetro por referência será necessária sempre que se quiser que ações internas ao módulo (feitas sobre o parâmetro formal) produzam efeitos diretos no argumento (e não em uma cópia). Ex:... vet: Vetor; procedure OrdenaVetor( v: Vetor); OrdenaVetor(vet);... o que se pretende é ordenar o vetor vet e não uma cópia (que iria desaparecer com o fim da execução do módulo!)

106 Já neste caso Ex:... vet: Vetor; r: LongInt; function SomaElem(v: Vetor); r := SomaElem(vet);...

107 Já neste caso Ex:... vet: Vetor; r: LongInt; function SomaElem(v: Vetor); r := SomaElem(vet);... Nenhuma alteração precisa ser produzida no conteúdo de vet portanto, a passagem deve ser por valor.

108 Já neste caso Ex:... vet: Vetor; r: LongInt; function SomaElem(v: Vetor); r := SomaElem(vet);... O termo não é empregado Nenhuma alteração precisa ser produzida no conteúdo de vet portanto, a passagem deve ser por valor.

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

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

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

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

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

Pascal. -Cabeçalho do programa. - label - const - type - var - procedure - function. - integer - real - byte - boolean - char - string

Pascal. -Cabeçalho do programa. - label - const - type - var - procedure - function. - integer - real - byte - boolean - char - string Pascal -Cabeçalho do programa Áreas do programa -Área de declarações -Corpo do programa - label - const - type - var - procedure - function - integer - real - byte - boolean - char - string Program

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

exatasfepi.com.br CAII Modularização André Luís Duarte "E quem não toma a sua cruz, e não segue após mim, não é digno de mim.

exatasfepi.com.br CAII Modularização André Luís Duarte E quem não toma a sua cruz, e não segue após mim, não é digno de mim. exatasfepi.com.br CAII Modularização André Luís Duarte "E quem não toma a sua cruz, e não segue após mim, não é digno de mim." Mateus 10:38 Modularizando Algoritmos Decomposição de problemas Módulos ou

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

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

Programação II. Aula 1

Programação II. Aula 1 Programação II Aula 1 Ponteiros Variáveis Variáveis estáticas Variáveis dinâmicas Podem ser criadas e destruídas durante a execução de um programa. Declaração -> Indireta Vinculação -> Por meio de ponteiros

Leia mais

Paradigmas de Linguagens de Programação. Subprogramas

Paradigmas de Linguagens de Programação. Subprogramas Cristiano Lehrer Características Gerais dos Cada subprograma tem um único ponto de entrada Toda unidade de programa chamadora é suspensa durante a execução do programa chamado, o que implica na existência

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

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

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 3. Conceitos de Abstração de Dados

AULA 3. Conceitos de Abstração de Dados AULA 3 Conceitos de Abstração de Dados Introdução Conceito de abstração Tipo Abstrato de Dados DEFINIÇÃO DE ABSTRAÇÃO Ato ou processo de separar qualidades ou propriedades inatas do objeto físico as quais

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

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

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

Permite modularidade (dividir programa em partes): Facilita a depuração (debug) e portabilidade.

Permite modularidade (dividir programa em partes): Facilita a depuração (debug) e portabilidade. 222222222222222222222222222 8 - FUNÇÕES 81 - Características básicas É um trecho independente de código, com objetivos bem definidos Programas em C, geralmente consistem em várias pequenas funções, ao

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

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

Compiladores. Gerência de Memória

Compiladores. Gerência de Memória Compiladores Gerência de Memória Cristiano Lehrer, M.Sc. Atividades do Compilador Arquivo de origem Arquivo de destino Análise Otimização Geração de Código Intermediário Geração de Código Final Síntese

Leia mais

Linguagem Pascal. Prof. Antonio Almeida de Barros Junior

Linguagem Pascal. Prof. Antonio Almeida de Barros Junior Linguagem Pascal Prof. Antonio Almeida de Barros Junior 1 Linguagem Pascal Criada para ser uma ferramenta educacional (Década de 70); Prof. Niklaus Wirth (Universidade de Zurique); Blaise Pascal (Matemático

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

FERRAMENTAS BÁSICAS DA PROGRAMAÇÃO

FERRAMENTAS BÁSICAS DA PROGRAMAÇÃO FERRAMENTAS BÁSICAS DA PROGRAMAÇÃO VARIÁVEIS E O COMANDO DE ATRIBUIÇÃO O computador possui uma área específica de armazenamento denominada de memória. O computador possui uma área específica de armazenamento

Leia mais

Análise Semântica e Tratamento de Erros Dependentes de Contexto

Análise Semântica e Tratamento de Erros Dependentes de Contexto Análise Semântica e Tratamento de Erros Dependentes de Contexto O componente Semântico de uma LP Tarefas da Análise Semântica Implementação da Tabelas de Símbolos Ações Semânticas em Compiladores Dirigidos

Leia mais

Ponteiros em Pascal. Variáveis ponteiros são aquelas que. Declaração em Pascal: var ptint: ^integer; {ponteiro para uma variável inteira } real} 1

Ponteiros em Pascal. Variáveis ponteiros são aquelas que. Declaração em Pascal: var ptint: ^integer; {ponteiro para uma variável inteira } real} 1 Ponteiros em Pascal Variáveis ponteiros são aquelas que guardam o endereço de outra, possibilitando o acesso a seu conteúdo. Declaração em Pascal: var ptint: ^integer; {ponteiro para uma variável inteira

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

Universidade Federal de Uberlândia Faculdade de Computação. Linguagem C: ponteiros e alocação dinâmica

Universidade Federal de Uberlândia Faculdade de Computação. Linguagem C: ponteiros e alocação dinâmica Universidade Federal de Uberlândia Faculdade de Computação Linguagem C: ponteiros e alocação dinâmica Prof. Renato Pimentel 1 Ponteiros 2 Prof. Renato Pimentel 1 Ponteiros: introdução Toda a informação

Leia mais

Sintaxe do Pascal Simplificado Estendido de 12 novas construções em Notação EBNF (BNF estendida)

Sintaxe do Pascal Simplificado Estendido de 12 novas construções em Notação EBNF (BNF estendida) Sintaxe do Pascal Simplificado Estendido de 12 novas construções em Notação EBNF (BNF estendida) Não-terminais são nomes mnemônicos colocados entre parênteses angulares. Vocabulário terminal formado por

Leia mais

Universidade Federal Rural de Pernambuco Departamento de Estatística e Informática Subprogramas

Universidade Federal Rural de Pernambuco Departamento de Estatística e Informática Subprogramas Universidade Federal Rural de Pernambuco Departamento de Estatística e Informática Subprogramas Prof. Gláucya Carreiro Boechat glaucyacboechat@gmail.com Paradigmas de Linguagem de Programação Características

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

Prof. Franklin Ramalho

Prof. Franklin Ramalho PLP - Armazenamento (Parte I) Prof. Franklin Ramalho Universidade Federal de Campina Grande - UFCG Agenda - Variáveis Primitivas - Variáveis Compostas - Modelo de Armazenamento - Ciclo de vida de variáveis

Leia mais

Nomes, vinculações e escopos

Nomes, vinculações e escopos Nomes, vinculações e escopos Marco A L Barbosa malbarbo.pro.br Departamento de Informática Universidade Estadual de Maringá cba Este trabalho está licenciado com uma Licença Creative Commons - Atribuição-CompartilhaIgual

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

Linguagens de Programação Subprogramas

Linguagens de Programação Subprogramas Linguagens de Programação Subprogramas Andrei Rimsa Álvares Sumário Abstrações Subprogramas Parâmetros Passagem de parâmetros Direção da passagem Mecanismos de passagem Momento da passagem ABSTRAÇÕES Linguagens

Leia mais

Introdução ao Pascal. Computação I. Níveis de Linguagens de Programação. Níveis de Linguagens de Programação. Como um Programa é Executado?

Introdução ao Pascal. Computação I. Níveis de Linguagens de Programação. Níveis de Linguagens de Programação. Como um Programa é Executado? Computação I Introdução ao Pascal Prof. Miguel Elias Mitre Campista http://www.gta.ufrj.br/~miguel Linguagens de Programação DEL-Poli/UFRJ Níveis de Linguagens de Programação Linguagens declarativas Linguagens

Leia mais

CAP. VI ANÁLISE SEMÂNTICA

CAP. VI ANÁLISE SEMÂNTICA CAP. VI ANÁLISE SEMÂNTICA VI.1 Introdução Semântica SIGNIFICADO, SENTIDO LÓGICO, COERÊNCIA,... Diferença entre SINTAXE e SEMÂNTICA Sintaxe : descreve as estruturas de uma linguagem; Semântica : descreve

Leia mais

Estruturas de Controle: Nível de Unidades de Programação

Estruturas de Controle: Nível de Unidades de Programação Paradigmas de Linguagens I 1 1.5... Estruturas de Controle: Nível de Unidades de Programação As estruturas de controle no nível de unidades de programação são mecanismos de linguagens utilizados para especificar

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 Modularização Recursividade Modularização Seus programas continuam evoluindo e o código está cada vez maior e mais complexo: o

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

Conceitos de Linguagens de Programação

Conceitos de Linguagens de Programação Faculdade de Ciências e Tecnologia Departamento de Matemática e Computação Bacharelado em Ciência da Computação Conceitos de Linguagens de Programação Aula 03 (rogerio@fct.unesp.br) Aula 3 Variáveis: Nomes

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

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

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

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

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

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

DISPOSITIVOS LÓGICOS PROGRAMÁVEIS - DLP. 10/03/2017 Prof. Alexandre - ELP1DLP1 / DEE

DISPOSITIVOS LÓGICOS PROGRAMÁVEIS - DLP. 10/03/2017 Prof. Alexandre - ELP1DLP1 / DEE DISPOSITIVOS LÓGICOS PROGRAMÁVEIS - DLP 1 Objetivos da Aula: Linguagem VHDL Bibliotecas e Tipos de Dados STD STD_LOGIC_1164 Constantes, Variáveis, Sinais, Arrays, Range Expressões (Operadores) Exemplos

Leia mais

DRIVER DA CAD12/32 PARA WINDOWS 95

DRIVER DA CAD12/32 PARA WINDOWS 95 Código do Documento: S135U01 Revisão: 0 DRIVER DA CAD12/32 PARA WINDOWS 95 1. INTRODUÇÃO VAD32D.VXD é um driver VxD que gerencia o acesso à placa A/D CAD12/32 no sistema operacional Windows 95. 1.1. Escopo

Leia mais

Ferramenta para Desenvolvimentode Sistemas EmbarcadosUtilizando Linguagem de Alto Nível p.1/25

Ferramenta para Desenvolvimentode Sistemas EmbarcadosUtilizando Linguagem de Alto Nível p.1/25 Universidade Federal do Rio Grande do Sul Escola de Engenharia - Instituto de Informática Graduação em Engenharia de Computação Ferramenta para Desenvolvimento de Sistemas Embarcados Utilizando Linguagem

Leia mais

Verificação de Tipo. Unions. Verificação de tipo estática. Verificação de tipo dinâmica

Verificação de Tipo. Unions. Verificação de tipo estática. Verificação de tipo dinâmica Verificação de Tipo Atividade que certifica que os operandos de um operador são de tipos compatíveis. São considerados operadores e operandos: operadores usuais (aritméticos, relacionais, etc) subprogramas

Leia mais

Instituto Federal de Educação, Ciência e Tecnologia do RN Câmpus Currais Novos. LINGUAGEM C++ VARIÁVEIS COMPOSTAS Arrays Aula I

Instituto Federal de Educação, Ciência e Tecnologia do RN Câmpus Currais Novos. LINGUAGEM C++ VARIÁVEIS COMPOSTAS Arrays Aula I LINGUAGEM C++ VARIÁVEIS COMPOSTAS Arrays Aula I Prof. Bruno E. G. Gomes Uma variável em um algoritmo pode ser vista como uma gaveta. A declaração de uma variável reserva uma gaveta (posição) de um certo

Leia mais

Capítulo 5. Nomes, Vinculações e Escopos

Capítulo 5. Nomes, Vinculações e Escopos Capítulo 5 Nomes, Vinculações e Escopos Tópicos do Capítulo 5 Introdução Nomes Variáveis O conceito de vinculação Escopo Escopo e tempo de vida Ambientes de referenciamento Constantes nomeadas Introdução

Leia mais

Nomes, vinculações e escopos

Nomes, vinculações e escopos Nomes, vinculações e escopos Marco A L Barbosa malbarbo.pro.br Departamento de Informática Universidade Estadual de Maringá cba Este trabalho está licenciado com uma Licença Creative Commons - Atribuição-CompartilhaIgual

Leia mais

Conceitos de Linguagens de Programação

Conceitos de Linguagens de Programação Faculdade de Ciências e Tecnologia Departamento de Matemática e Computação Bacharelado em Ciência da Computação Conceitos de Linguagens de Programação Aula 06 (rogerio@fct.unesp.br) Aula 6 Subprogramas

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

Leia mais

Estrutura de Dados e Lógica de Programação. Cátia Alves Marcelo Nunes 102 h/a 17/08/2015 a 12/12/2015

Estrutura de Dados e Lógica de Programação. Cátia Alves Marcelo Nunes 102 h/a 17/08/2015 a 12/12/2015 Curso / Módulo Técnico em Informática Módulo I Componente Curricular Estrutura de Dados e Lógica de Programação Professora Formadora Tutores Carga Horária Período Lucélia Oliveira Cátia Alves Marcelo Nunes

Leia mais

1. Revisão de Vetores, Ponteiros, Funções e Estruturas em C

1. Revisão de Vetores, Ponteiros, Funções e Estruturas em C Introdução à Computação II 5952011 1. Revisão de Vetores, Ponteiros, Funções e Estruturas em C Prof. Renato Tinós Local: Depto. de Computação e Matemática (FFCLRP/USP) 1 Principais Tópicos 1.1. Revisão

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

Gerenciamento de Memória

Gerenciamento de Memória Gerenciamento de Memória Prof. Clodoaldo Ap. Moraes Lima 1 Segmentação Objetivo Melhorar o aspecto de localidade de referência em sistemas de memória virtual Em sistema paginado, os itens que são transferidos

Leia mais

Subalgoritmos - motivação

Subalgoritmos - motivação Algoritmos e Técnicas - Subalgoritmos - Subalgoritmos - motivação Sempre é possível dividir problemas grandes e complicados em problemas menores e de solução mais simples. A decomposição de um problema

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

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

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

Aula 10 Modularização Cleverton Hentz

Aula 10 Modularização Cleverton Hentz Aula 10 Modularização Cleverton Hentz Sumário de Aula Introdução Funções Exemplos 2 Introdução Na resolução de problemas maiores e mais complicados a forma atual de criação dos algoritmos não é tão boa:

Leia mais

Computação I. Prof. Miguel Elias Mitre Campista.

Computação I. Prof. Miguel Elias Mitre Campista. Computação I Prof. Miguel Elias Mitre Campista http://www.gta.ufrj.br/~miguel Linguagens de Programação DEL-Poli/UFRJ Introdução ao Pascal Níveis de Linguagens de Programação Linguagens declarativas Linguagens

Leia mais

FUNDAMENTOS DE ARQUITETURAS DE COMPUTADORES MEMÓRIA CACHE CAPÍTULO 5. Cristina Boeres

FUNDAMENTOS DE ARQUITETURAS DE COMPUTADORES MEMÓRIA CACHE CAPÍTULO 5. Cristina Boeres FUNDAMENTOS DE ARQUITETURAS DE COMPUTADORES MEMÓRIA CACHE CAPÍTULO 5 Cristina Boeres Introdução! Diferença de velocidade entre Processador e MP O processador executa uma operação rapidamente e fica em

Leia mais

DRIVER LYNX-IO ACESSO A I/O NO WINDOWS NT 4.0

DRIVER LYNX-IO ACESSO A I/O NO WINDOWS NT 4.0 Código do Documento: S139U01 Revisão: 0 DRIVER LYNX-IO ACESSO A I/O NO WINDOWS NT 4.0 1. INTRODUÇÃO No Windows NT, o acesso ao I/O do microcomputador pelo programa aplicativo é bloqueado pelo sistema operacional.

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

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

Subprogramas. (ou Sub-rotinas) em C: Procedimentos e Funções. 2015/1 Programação Básica de Computadores (INF 09325)

Subprogramas. (ou Sub-rotinas) em C: Procedimentos e Funções. 2015/1 Programação Básica de Computadores (INF 09325) Subprogramas (ou Sub-rotinas) em C: Procedimentos e Funções 2015/1 Programação Básica de Computadores (INF 09325) Archimedes Detoni www.inf.ufes.br/~archimedesdetoni archimedesdetoni@inf.ufes.br Programa

Leia mais

Paradigmas de Linguagens de Programação. Nomes, Vinculações, Verificação de Tipos e Escopos

Paradigmas de Linguagens de Programação. Nomes, Vinculações, Verificação de Tipos e Escopos Nomes, Vinculações, Verificação de Tipos e Escopos Cristiano Lehrer Nomes (1/6) Um nome é uma string de caracteres usada para identificar alguma entidade de um programa. O termo identificador é utilizado

Leia mais

Texto retirado e adaptado da apostila Curso de Linguagem Pascal, disponível no site (autor: desconhecido).

Texto retirado e adaptado da apostila Curso de Linguagem Pascal, disponível no site   (autor: desconhecido). Texto retirado e adaptado da apostila Curso de Linguagem Pascal, disponível no site http://www.portaldaprogramacao.com (autor: desconhecido). Leitura indicada: Notas de Aula de Algoritmos e Programação

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

Estruturas de Dados. Revisão de Funções e Recursão. Agradecimentos

Estruturas de Dados. Revisão de Funções e Recursão. Agradecimentos Estruturas de Dados Revisão de Funções e Recursão Prof. Ricardo J. G. B. Campello Agradecimentos Parte dos slides a seguir são adaptações dos originais em Pascal gentilmente cedidos pelo Prof. Rudinei

Leia mais

O AMBIENTE DE PROGRAMAÇÃO VISUAL -PLANO DE ENSINO. Prof. Angelo Augusto Frozza, M.Sc.

O AMBIENTE DE PROGRAMAÇÃO VISUAL -PLANO DE ENSINO. Prof. Angelo Augusto Frozza, M.Sc. O AMBIENTE DE PROGRAMAÇÃO VISUAL -PLANO DE ENSINO Prof. Angelo Augusto Frozza, M.Sc. ROTEIRO 1. A linguagem de programação Object Pascal a) Palavras reservadas b) Tipos de dados, variáveis e constantes

Leia mais

Modulo 12: alocação dinâmica de memória

Modulo 12: alocação dinâmica de memória PROGRAMAÇÃO DE COMPUTADORES V - TCC- 00.323 Modulo 12: alocação dinâmica de memória Aura - Erick aconci@ic.uff.br, erickr@id.uff.br Roteiro porque e como utilizar a alocação dinâmica funções: malloc (

Leia mais

facilita o trabalho em equipe, com diferentes grupos trabalhando em cada módulo independente.

facilita o trabalho em equipe, com diferentes grupos trabalhando em cada módulo independente. Estruturação do Programa Queremos organizar um programa de forma a: dividi-lo em partes que realizem tarefas específicas, resumindo um problema complexo a vários problemas mais simples simplifica a elaboração

Leia mais

Programação I Ponteiros e alocação dinâmica de memória. Prof. Carlos Alberto

Programação I Ponteiros e alocação dinâmica de memória. Prof. Carlos Alberto Programação I Ponteiros e alocação dinâmica de memória Prof. Carlos Alberto carlos.batista@facape.br carlos36_batista@yahoo.com.br Ponteiros O ponteiro é um tipo de dado como int, char ou float; Variáveis

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.2. Estrutura de Programas e Representação

Leia mais

Alocação Dinâmica em C

Alocação Dinâmica em C Universidade de São Paulo São Carlos Instituto de Ciências Matemáticas e de Computação Alocação Dinâmica em C Profa Rosana Braga Adaptado de material preparado pela profa Silvana Maria Affonso de Lara

Leia mais

Sobre Variáveis, Ponteiros, Arrays, Parâmetros e Alocação de Memória

Sobre Variáveis, Ponteiros, Arrays, Parâmetros e Alocação de Memória Sobre Variáveis, Ponteiros, Arrays, Parâmetros e Alocação de Memória Queridos, Este texto ainda não está terminado. Ainda vou mudar alguns trechos e ajeitar a formatação, principalmente dos exemplos. Ainda

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

<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 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

DAS5102 Fundamentos da Estrutura da Informação

DAS5102 Fundamentos da Estrutura da Informação Ponteiros e Funções Funções ou sub-rotinas são parcelas de código que podem ser invocadas a partir do programa principal ou até mesmo por outras sub-rotinas. Elas têm como objetivo a execução de uma tarefa

Leia mais

Linguagem C: Subprogramação

Linguagem C: Subprogramação Prof. Paulo R. S. L. Coelho paulo@facom.ufu.br Faculdade de Computação Universidade Federal de Uberlândia GEQ007 Subprogramação Organização 1 Subprogramação 2 3 Passagem por Valor Passagem por Referência

Leia mais

Linguagem e Técnicas de Programação

Linguagem e Técnicas de Programação Linguagem C Função Prof. Edwar Saliba Júnior Fevereiro de 2011 Unidade 07 Função 1 Conceitos As técnicas de programação dizem que, sempre que possível, evite códigos extensos, separando o mesmo em funções,

Leia mais

Adriano Cruz 21 de julho de Instituto de Matemática Departamento de Ciência da Computação UFRJ

Adriano Cruz 21 de julho de Instituto de Matemática Departamento de Ciência da Computação UFRJ C Funções Adriano Cruz adriano@nce.ufrj.br 21 de julho de 2017 Instituto de Matemática Departamento de Ciência da Computação UFRJ 1 Resumo Seção Introdução Forma Geral Protótipos de Funções Escopo de Variáveis

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

Linguagem de programação: Pascal

Linguagem de programação: Pascal Aula 04 Linguagem de programação: Pascal Prof. Tecgº Flávio Murilo 26/03/2013 1 Pascal Introdução Pascal é uma linguagem de programação estruturada, criada em 1970 pelo suíço Niklaus Wirth, dando este

Leia mais

Detalhes da geração de código Usando a técnica ad hoc, amarrada aos procedimentos sintáticos, igual à análise semântica

Detalhes da geração de código Usando a técnica ad hoc, amarrada aos procedimentos sintáticos, igual à análise semântica Geração de Código para uma Máquina Hipotética a Pilha Detalhes da geração de código Usando a técnica ad hoc, amarrada aos procedimentos sintáticos, igual à análise semântica É composta de 3 Regiões MEPA

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

Explicação do programa:

Explicação do programa: Disciplina: Introdução à Programação. IPRJ/UERJ Professora: Sílvia Mara da Costa Campos Victer Índice: Aula10 Sub-rotina: Em algoritmos Em C Sub-rotinas subprograma - programação modularizada Definição:

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

GFM015 Introdução à Computação. Plano de Curso e Introdução. Ilmério Reis da Silva UFU/FACOM

GFM015 Introdução à Computação. Plano de Curso e Introdução. Ilmério Reis da Silva  UFU/FACOM GFM015 Introdução à Computação Plano de Curso e Introdução Ilmério Reis da Silva ilmerio@facom.ufu.br www.facom.ufu.br/~ilmerio/ic UFU/FACOM Plano de Curso Ementa Noções básicas sobre os componentes de

Leia mais

Modularização. Exercício 28

Modularização. Exercício 28 Exercício 28 Construa um algoritmo que seja capaz de efetuar uma multiplicação entre valores naturais quaisquer e também seja capaz de calcular o fatorial de um número natural qualquer. Tanto no cálculo

Leia mais