Sub-rotinas · DIM0108.0 - Conceitos e Técnicas de Programação Objetivos da aula •Os conceitos...

40
DIM0108.0 - Conceitos e Técnicas de Programação Sub-rotinas David Déharbe 1 1 Monday, August 22, 2011

Transcript of Sub-rotinas · DIM0108.0 - Conceitos e Técnicas de Programação Objetivos da aula •Os conceitos...

Page 1: Sub-rotinas · DIM0108.0 - Conceitos e Técnicas de Programação Objetivos da aula •Os conceitos de sub-rotina, funções e procedimentos; •Como usar sub-rotinas em C: ‣parâmetros

DIM0108.0 - Conceitos e Técnicas de Programação

Sub-rotinas

David Déharbe

1

1Monday, August 22, 2011

Page 2: Sub-rotinas · DIM0108.0 - Conceitos e Técnicas de Programação Objetivos da aula •Os conceitos de sub-rotina, funções e procedimentos; •Como usar sub-rotinas em C: ‣parâmetros

DIM0108.0 - Conceitos e Técnicas de Programação

Objetivos da aula

•Os conceitos de sub-rotina, funções e procedimentos;•Como usar sub-rotinas em C:‣parâmetros de sub-rotinas:‣parâmetros formais e parâmetros efetivos. ‣passagem de parâmetro por valor

•Como definir novas sub-rotinas em C.•Sub-rotinas e tipos.

2

2Monday, August 22, 2011

Page 3: Sub-rotinas · DIM0108.0 - Conceitos e Técnicas de Programação Objetivos da aula •Os conceitos de sub-rotina, funções e procedimentos; •Como usar sub-rotinas em C: ‣parâmetros

DIM0108.0 - Conceitos e Técnicas de Programação

Roteiro da aula

•Motivação;

•Conceitos gerais;

•Uso de sub-rotinas;

•Definição de sub-rotinas;

•Exercícios.

3

3Monday, August 22, 2011

Page 4: Sub-rotinas · DIM0108.0 - Conceitos e Técnicas de Programação Objetivos da aula •Os conceitos de sub-rotina, funções e procedimentos; •Como usar sub-rotinas em C: ‣parâmetros

DIM0108.0 - Conceitos e Técnicas de Programação

Motivação

•Até agora, vimos programas onde todo o código executado encontra-se na função main.

•As vezes usamos recursos externos‣#include <stdio.h>

✓printf, scanf‣#include <math.h>

✓cos, log, pow

•Esses recursos externos são componentes de programa, pré-definidos e empacotados na biblioteca padrão da linguagem C.

•Cada um desses componentes possui um papel preciso: imprimir um texto, calcular o cosseno de um ângulo em radianos, etc.

4

4Monday, August 22, 2011

Page 5: Sub-rotinas · DIM0108.0 - Conceitos e Técnicas de Programação Objetivos da aula •Os conceitos de sub-rotina, funções e procedimentos; •Como usar sub-rotinas em C: ‣parâmetros

DIM0108.0 - Conceitos e Técnicas de Programação

Motivação

•Quando uma aplicação real é projetada, identifica-se a necessidade de definir novos componentes.‣Exemplo 1 (processamento numérico): inversão de uma matriz.‣Exemplo 2 (sistema acadêmico): ordenar os alunos de uma turma pela ordem alfabética.‣Exemplo 3 (jogo de poker): identificar qual mão ganha.

•Sub-rotinas são unidades de código responsável por desempenhar um certo papel, de forma relativamente independente do resto do programa.

5

5Monday, August 22, 2011

Page 6: Sub-rotinas · DIM0108.0 - Conceitos e Técnicas de Programação Objetivos da aula •Os conceitos de sub-rotina, funções e procedimentos; •Como usar sub-rotinas em C: ‣parâmetros

DIM0108.0 - Conceitos e Técnicas de Programação

Vantagens

•Vantagens‣Decomposição de uma tarefa complexa (desenvolver uma aplicação) em múltiplas tarefas menores (desenvolver sub-rotinas).‣Reutilização de código dentro de um programa: cada vez que há trechos de código repetidos, há oportunidade para criar uma sub-rotina. Diminui o tamanho do código.‣Reutilização de código entre aplicações: uma mesma rotina pode ser usada em vários programas.‣Divisão do trabalho em uma equipe de programadores: cada programador é responsável por sub-rotinas específicas.

•Desvantagem‣Aumenta ligeiramente o tempo de execução.

6

6Monday, August 22, 2011

Page 7: Sub-rotinas · DIM0108.0 - Conceitos e Técnicas de Programação Objetivos da aula •Os conceitos de sub-rotina, funções e procedimentos; •Como usar sub-rotinas em C: ‣parâmetros

DIM0108.0 - Conceitos e Técnicas de Programação

Definição (Wikipedia)

•Uma sub-rotina consiste em uma porção de código que resolve um problema muito específico, parte de um problema maior (a aplicação final).‣Qual problema muito específico as seguintes sub-rotinas resolvem: printf, scanf, cos, exp, pow?

•Geralmente é feita a distinção entre função e procedimento.

•Uma função é uma sub-rotina que retorna algum valor (fun.

•Um procedimento é uma sub-rotina que não retorna valor.

7

7Monday, August 22, 2011

Page 8: Sub-rotinas · DIM0108.0 - Conceitos e Técnicas de Programação Objetivos da aula •Os conceitos de sub-rotina, funções e procedimentos; •Como usar sub-rotinas em C: ‣parâmetros

DIM0108.0 - Conceitos e Técnicas de Programação

Os elementos de uma sub-rotina

•Uma sub-rotina possui um nome, que é a identidade dela dentro do programa. ‣ Idealmente esse nome reflete o problema que a sub-rotina resolve.

•Uma sub-rotina possui um corpo, que é a porção de código que é executada, quando a sub-rotina é usada.

•Uma sub-rotina possui parâmetros, que são dados à sub-rotina quando é usada; esses parâmetros são utilizados no corpo.

•Uma sub-rotina possui um resultado, que é calculado no corpo, e depende dos parâmetros.

8

8Monday, August 22, 2011

Page 9: Sub-rotinas · DIM0108.0 - Conceitos e Técnicas de Programação Objetivos da aula •Os conceitos de sub-rotina, funções e procedimentos; •Como usar sub-rotinas em C: ‣parâmetros

DIM0108.0 - Conceitos e Técnicas de Programação

Uma definição de sub-rotina em C

9

int max (int x, int y){ int result; if (x > y) result = x; else result = y; return result;}

9Monday, August 22, 2011

Page 10: Sub-rotinas · DIM0108.0 - Conceitos e Técnicas de Programação Objetivos da aula •Os conceitos de sub-rotina, funções e procedimentos; •Como usar sub-rotinas em C: ‣parâmetros

DIM0108.0 - Conceitos e Técnicas de Programação

Uma definição de sub-rotina em C

9

int max (int x, int y){ int result; if (x > y) result = x; else result = y; return result;}

nome

9Monday, August 22, 2011

Page 11: Sub-rotinas · DIM0108.0 - Conceitos e Técnicas de Programação Objetivos da aula •Os conceitos de sub-rotina, funções e procedimentos; •Como usar sub-rotinas em C: ‣parâmetros

DIM0108.0 - Conceitos e Técnicas de Programação

Uma definição de sub-rotina em C

9

int max (int x, int y){ int result; if (x > y) result = x; else result = y; return result;}

nome

corpo

9Monday, August 22, 2011

Page 12: Sub-rotinas · DIM0108.0 - Conceitos e Técnicas de Programação Objetivos da aula •Os conceitos de sub-rotina, funções e procedimentos; •Como usar sub-rotinas em C: ‣parâmetros

DIM0108.0 - Conceitos e Técnicas de Programação

Uma definição de sub-rotina em C

9

int max (int x, int y){ int result; if (x > y) result = x; else result = y; return result;}

nome

corpo

parâmetros formais

9Monday, August 22, 2011

Page 13: Sub-rotinas · DIM0108.0 - Conceitos e Técnicas de Programação Objetivos da aula •Os conceitos de sub-rotina, funções e procedimentos; •Como usar sub-rotinas em C: ‣parâmetros

DIM0108.0 - Conceitos e Técnicas de Programação

Uma definição de sub-rotina em C

9

int max (int x, int y){ int result; if (x > y) result = x; else result = y; return result;}

nome

corpo

parâmetros formais

resultado (tipo)

resultado (expressão)

9Monday, August 22, 2011

Page 14: Sub-rotinas · DIM0108.0 - Conceitos e Técnicas de Programação Objetivos da aula •Os conceitos de sub-rotina, funções e procedimentos; •Como usar sub-rotinas em C: ‣parâmetros

DIM0108.0 - Conceitos e Técnicas de Programação

Uso de sub-rotinas

•Sub-rotina pode ser visto como uma prestação de serviço computacional.‣O usuário passa valores à sub-rotina.‣A sub-rotina efetua uma computação, e‣possivelmente retorna um resultado.

•Para usar a sub-rotina, usa-se a seguinte sintaxe: ‣nome da sub-rotina, ‣parêntese esquerda, ‣ lista de valores separados por vírgulas, ‣parêntese direita.

•Obs: fazemos isto desde a primeira aula!10

10Monday, August 22, 2011

Page 15: Sub-rotinas · DIM0108.0 - Conceitos e Técnicas de Programação Objetivos da aula •Os conceitos de sub-rotina, funções e procedimentos; •Como usar sub-rotinas em C: ‣parâmetros

DIM0108.0 - Conceitos e Técnicas de Programação

Uso de sub-rotinas

•Sub-rotina pode ser visto como uma prestação de serviço computacional.‣O usuário passa valores à sub-rotina.‣A sub-rotina efetua uma computação, e‣possivelmente retorna um resultado.

•Para usar a sub-rotina, usa-se a seguinte sintaxe: ‣nome da sub-rotina, ‣parêntese esquerda, ‣ lista de valores separados por vírgulas, ‣parêntese direita.

•Obs: fazemos isto desde a primeira aula!10

#include <stdio.h>

int main (void){ int v1, v2; int m; scanf("%i %i", &v1, &v2); m = max(v1, v2); printf("%i\n", m); return 0;}

10Monday, August 22, 2011

Page 16: Sub-rotinas · DIM0108.0 - Conceitos e Técnicas de Programação Objetivos da aula •Os conceitos de sub-rotina, funções e procedimentos; •Como usar sub-rotinas em C: ‣parâmetros

DIM0108.0 - Conceitos e Técnicas de Programação

Uso de sub-rotinas

•A interface da sub-rotina corresponde a o contrato desta prestação de serviço:‣Exemplo: int max(int, int);

•A interface tem o tipo do resultado (int), o nome da sub-rotina (max) e o tipo dos parâmetros (int e int).

•O usuário da rotina deve respeitar o contrato: aplicar a sub-rotina a valores do tipo correto, e usar o resultado usando a informação de tipo.‣ int i = 3;i = max(2, i);

11

11Monday, August 22, 2011

Page 17: Sub-rotinas · DIM0108.0 - Conceitos e Técnicas de Programação Objetivos da aula •Os conceitos de sub-rotina, funções e procedimentos; •Como usar sub-rotinas em C: ‣parâmetros

DIM0108.0 - Conceitos e Técnicas de Programação

O tipo void

•Na linguagem C, o tipo void pode ser usado para indicar a ausência de valor.

•Uma sub-rotina sem parâmetro e sem retorno:‣void print_full_line (void){ printf("******************************"); printf("\n");}

12

12Monday, August 22, 2011

Page 18: Sub-rotinas · DIM0108.0 - Conceitos e Técnicas de Programação Objetivos da aula •Os conceitos de sub-rotina, funções e procedimentos; •Como usar sub-rotinas em C: ‣parâmetros

DIM0108.0 - Conceitos e Técnicas de Programação

Definição de sub-rotina em C: sintaxe

•<definição de subrotina> ::= <tipo> <nome> (<lista de parâmetros>) <corpo>

<corpo> ::= <bloco de comandos>

<lista de parâmetros> ::= void | | <parâmetro> | <parâmetro> , <lista de parâmetros>

<parâmetro> ::= <tipo> <nome>

13

13Monday, August 22, 2011

Page 19: Sub-rotinas · DIM0108.0 - Conceitos e Técnicas de Programação Objetivos da aula •Os conceitos de sub-rotina, funções e procedimentos; •Como usar sub-rotinas em C: ‣parâmetros

DIM0108.0 - Conceitos e Técnicas de Programação

Chamada de sub-rotina.

•Os parâmetros formais de uma sub-rotina comportam-se como variáveis.

•Cada vez que uma sub-rotina é chamada, para cada parâmetro formal:‣um compartimento de memória é alocado,‣o valor inicialmente guardado é o valor da expressão que aparece como parâmetro efetivo na chamada.

•Quando a sub-rotina termina a sua execução, a memória é desalocada.

14

14Monday, August 22, 2011

Page 20: Sub-rotinas · DIM0108.0 - Conceitos e Técnicas de Programação Objetivos da aula •Os conceitos de sub-rotina, funções e procedimentos; •Como usar sub-rotinas em C: ‣parâmetros

DIM0108.0 - Conceitos e Técnicas de Programação

Chamada de sub-rotina.

•Exemplo:•int f (int c){ return c * 2;}

int main (void){ int a = 1, b = 0; b = f(a); a = f(b); printf("a = %i, b = %i\n", a, b); return 0;}

15

15Monday, August 22, 2011

Page 21: Sub-rotinas · DIM0108.0 - Conceitos e Técnicas de Programação Objetivos da aula •Os conceitos de sub-rotina, funções e procedimentos; •Como usar sub-rotinas em C: ‣parâmetros

DIM0108.0 - Conceitos e Técnicas de Programação

Chamada de sub-rotina.

•Exemplo:•int f (int c){ return c * 2;}

int main (void){ int a = 1, b = 0; b = f(a); a = f(b); printf("a = %i, b = %i\n", a, b); return 0;}

15

a b -

1 0 -

15Monday, August 22, 2011

Page 22: Sub-rotinas · DIM0108.0 - Conceitos e Técnicas de Programação Objetivos da aula •Os conceitos de sub-rotina, funções e procedimentos; •Como usar sub-rotinas em C: ‣parâmetros

DIM0108.0 - Conceitos e Técnicas de Programação

Chamada de sub-rotina.

•Exemplo:•int f (int c){ return c * 2;}

int main (void){ int a = 1, b = 0; b = f(a); a = f(b); printf("a = %i, b = %i\n", a, b); return 0;}

15

a b c

1 0 1

15Monday, August 22, 2011

Page 23: Sub-rotinas · DIM0108.0 - Conceitos e Técnicas de Programação Objetivos da aula •Os conceitos de sub-rotina, funções e procedimentos; •Como usar sub-rotinas em C: ‣parâmetros

DIM0108.0 - Conceitos e Técnicas de Programação

Chamada de sub-rotina.

•Exemplo:•int f (int c){ return c * 2;}

int main (void){ int a = 1, b = 0; b = f(a); a = f(b); printf("a = %i, b = %i\n", a, b); return 0;}

15

a b c

1 0 1

15Monday, August 22, 2011

Page 24: Sub-rotinas · DIM0108.0 - Conceitos e Técnicas de Programação Objetivos da aula •Os conceitos de sub-rotina, funções e procedimentos; •Como usar sub-rotinas em C: ‣parâmetros

DIM0108.0 - Conceitos e Técnicas de Programação

Chamada de sub-rotina.

•Exemplo:•int f (int c){ return c * 2;}

int main (void){ int a = 1, b = 0; b = f(a); a = f(b); printf("a = %i, b = %i\n", a, b); return 0;}

15

a b -

1 2 -

15Monday, August 22, 2011

Page 25: Sub-rotinas · DIM0108.0 - Conceitos e Técnicas de Programação Objetivos da aula •Os conceitos de sub-rotina, funções e procedimentos; •Como usar sub-rotinas em C: ‣parâmetros

DIM0108.0 - Conceitos e Técnicas de Programação

Chamada de sub-rotina.

•Exemplo:•int f (int c){ return c * 2;}

int main (void){ int a = 1, b = 0; b = f(a); a = f(b); printf("a = %i, b = %i\n", a, b); return 0;}

15

a b c

1 2 2

15Monday, August 22, 2011

Page 26: Sub-rotinas · DIM0108.0 - Conceitos e Técnicas de Programação Objetivos da aula •Os conceitos de sub-rotina, funções e procedimentos; •Como usar sub-rotinas em C: ‣parâmetros

DIM0108.0 - Conceitos e Técnicas de Programação

Chamada de sub-rotina.

•Exemplo:•int f (int c){ return c * 2;}

int main (void){ int a = 1, b = 0; b = f(a); a = f(b); printf("a = %i, b = %i\n", a, b); return 0;}

15

a b c

1 2 2

15Monday, August 22, 2011

Page 27: Sub-rotinas · DIM0108.0 - Conceitos e Técnicas de Programação Objetivos da aula •Os conceitos de sub-rotina, funções e procedimentos; •Como usar sub-rotinas em C: ‣parâmetros

DIM0108.0 - Conceitos e Técnicas de Programação

Chamada de sub-rotina.

•Exemplo:•int f (int c){ return c * 2;}

int main (void){ int a = 1, b = 0; b = f(a); a = f(b); printf("a = %i, b = %i\n", a, b); return 0;}

15

a b -

4 2 -

15Monday, August 22, 2011

Page 28: Sub-rotinas · DIM0108.0 - Conceitos e Técnicas de Programação Objetivos da aula •Os conceitos de sub-rotina, funções e procedimentos; •Como usar sub-rotinas em C: ‣parâmetros

DIM0108.0 - Conceitos e Técnicas de Programação

Chamada de sub-rotina: exercício

•void misterio (int c, int d){ int t; t = c; c = d; d = t;}

int main (void){ int a = 1, b = 0; misterio(a, b); printf("a = %i, b = %i\n", a, b); return 0;}

16

16Monday, August 22, 2011

Page 29: Sub-rotinas · DIM0108.0 - Conceitos e Técnicas de Programação Objetivos da aula •Os conceitos de sub-rotina, funções e procedimentos; •Como usar sub-rotinas em C: ‣parâmetros

DIM0108.0 - Conceitos e Técnicas de Programação

Chamada de sub-rotina: exercício

•void misterio (int c, int d){ int t; t = c; c = d; d = t;}

int main (void){ int a = 1, b = 0; misterio(a, b); printf("a = %i, b = %i\n", a, b); return 0;}

16

a b - - -

1 0 - - -

16Monday, August 22, 2011

Page 30: Sub-rotinas · DIM0108.0 - Conceitos e Técnicas de Programação Objetivos da aula •Os conceitos de sub-rotina, funções e procedimentos; •Como usar sub-rotinas em C: ‣parâmetros

DIM0108.0 - Conceitos e Técnicas de Programação

Chamada de sub-rotina: exercício

•void misterio (int c, int d){ int t; t = c; c = d; d = t;}

int main (void){ int a = 1, b = 0; misterio(a, b); printf("a = %i, b = %i\n", a, b); return 0;}

16

a b c d -

1 0 1 0 -

16Monday, August 22, 2011

Page 31: Sub-rotinas · DIM0108.0 - Conceitos e Técnicas de Programação Objetivos da aula •Os conceitos de sub-rotina, funções e procedimentos; •Como usar sub-rotinas em C: ‣parâmetros

DIM0108.0 - Conceitos e Técnicas de Programação

Chamada de sub-rotina: exercício

•void misterio (int c, int d){ int t; t = c; c = d; d = t;}

int main (void){ int a = 1, b = 0; misterio(a, b); printf("a = %i, b = %i\n", a, b); return 0;}

16

a b c d t

1 0 1 0 ?

16Monday, August 22, 2011

Page 32: Sub-rotinas · DIM0108.0 - Conceitos e Técnicas de Programação Objetivos da aula •Os conceitos de sub-rotina, funções e procedimentos; •Como usar sub-rotinas em C: ‣parâmetros

DIM0108.0 - Conceitos e Técnicas de Programação

Chamada de sub-rotina: exercício

•void misterio (int c, int d){ int t; t = c; c = d; d = t;}

int main (void){ int a = 1, b = 0; misterio(a, b); printf("a = %i, b = %i\n", a, b); return 0;}

16

a b c d t

1 0 1 0 1

16Monday, August 22, 2011

Page 33: Sub-rotinas · DIM0108.0 - Conceitos e Técnicas de Programação Objetivos da aula •Os conceitos de sub-rotina, funções e procedimentos; •Como usar sub-rotinas em C: ‣parâmetros

DIM0108.0 - Conceitos e Técnicas de Programação

Chamada de sub-rotina: exercício

•void misterio (int c, int d){ int t; t = c; c = d; d = t;}

int main (void){ int a = 1, b = 0; misterio(a, b); printf("a = %i, b = %i\n", a, b); return 0;}

16

a b c d t

1 0 0 0 1

16Monday, August 22, 2011

Page 34: Sub-rotinas · DIM0108.0 - Conceitos e Técnicas de Programação Objetivos da aula •Os conceitos de sub-rotina, funções e procedimentos; •Como usar sub-rotinas em C: ‣parâmetros

DIM0108.0 - Conceitos e Técnicas de Programação

Chamada de sub-rotina: exercício

•void misterio (int c, int d){ int t; t = c; c = d; d = t;}

int main (void){ int a = 1, b = 0; misterio(a, b); printf("a = %i, b = %i\n", a, b); return 0;}

16

a b c d t

1 0 0 1 1

16Monday, August 22, 2011

Page 35: Sub-rotinas · DIM0108.0 - Conceitos e Técnicas de Programação Objetivos da aula •Os conceitos de sub-rotina, funções e procedimentos; •Como usar sub-rotinas em C: ‣parâmetros

DIM0108.0 - Conceitos e Técnicas de Programação

Chamada de sub-rotina: exercício

•void misterio (int c, int d){ int t; t = c; c = d; d = t;}

int main (void){ int a = 1, b = 0; misterio(a, b); printf("a = %i, b = %i\n", a, b); return 0;}

16

a b - - -

1 0 - - -

16Monday, August 22, 2011

Page 36: Sub-rotinas · DIM0108.0 - Conceitos e Técnicas de Programação Objetivos da aula •Os conceitos de sub-rotina, funções e procedimentos; •Como usar sub-rotinas em C: ‣parâmetros

DIM0108.0 - Conceitos e Técnicas de Programação

Chamada de sub-rotina: exercício

•void misterio (int c, int d){ int t; t = c; c = d; d = t;}

int main (void){ int a = 1, b = 0; misterio(a, b); printf("a = %i, b = %i\n", a, b); return 0;}

16

a b - - -

1 0 - - -

Passagem de parâmetros por valor: não modifica o conteúdo das variáveis!

16Monday, August 22, 2011

Page 37: Sub-rotinas · DIM0108.0 - Conceitos e Técnicas de Programação Objetivos da aula •Os conceitos de sub-rotina, funções e procedimentos; •Como usar sub-rotinas em C: ‣parâmetros

DIM0108.0 - Conceitos e Técnicas de Programação

Exercícios

•Define uma função que, dados três valores do tipo int, retorna o maior dos três.

•Define uma sub-rotina que, dado um valor do tipo int, retorna o quadrado deste valor.

•Define uma sub-rotina que, dado um valor do tipo int, digamos n, retorna n4.‣Pense como utilizar a sub-rotina do exercício anterior para resolver este exercício.

•Defina um programa que lê um número inteiro e imprime este número elevado à potência 4.

17

17Monday, August 22, 2011

Page 38: Sub-rotinas · DIM0108.0 - Conceitos e Técnicas de Programação Objetivos da aula •Os conceitos de sub-rotina, funções e procedimentos; •Como usar sub-rotinas em C: ‣parâmetros

DIM0108.0 - Conceitos e Técnicas de Programação

Exercícios

•Define uma função que, dados três valores do tipo int, retorna o maior dos três.

•Para fazer o cálculo do Índice de Massa Corporal, basta dividir o peso em quilogramas pela altura ao quadrado (em metros). ‣Define uma função que faz o cálculo do IMC. Esta função tem como parâmetro o peso em kg, e a altura em cm.

•A classificação segundo o IMC é:• < 18 : magreza ; [18;25[: saudável; [25;30[: peso em excesso; • [30;35[:obesidade 1; [35; 40[: obesidade 2; ≥40: obesidade 3.‣Defina uma função que, dada o IMC imprime a classificação.

•Escreva um programa que lê os dados de uma pessoa e imprima seu IMC e sua classificação.

18

18Monday, August 22, 2011

Page 39: Sub-rotinas · DIM0108.0 - Conceitos e Técnicas de Programação Objetivos da aula •Os conceitos de sub-rotina, funções e procedimentos; •Como usar sub-rotinas em C: ‣parâmetros

DIM0108.0 - Conceitos e Técnicas de Programação

Exercício

•Defina uma sub-rotina que tem como argumento um valor do tipo unsigned char e imprima a sua codificação binária.

•Defina uma sub-rotina que tem como um argumento um número do tipo unsigned short, digamos v, e retorna um valor do tipo unsigned char que corresponde ao primeiro byte de v.

•Defina uma sub-rotina que tem como um argumento um número do tipo unsigned short, digamos v, e retorna um valor do tipo unsigned char que corresponde ao segundo byte de v.

•Defina uma sub-rotina que tem como argumento um valor do tipo unsigned short e imprima a sua codificação binária.

19

19Monday, August 22, 2011

Page 40: Sub-rotinas · DIM0108.0 - Conceitos e Técnicas de Programação Objetivos da aula •Os conceitos de sub-rotina, funções e procedimentos; •Como usar sub-rotinas em C: ‣parâmetros

DIM0108.0 - Conceitos e Técnicas de Programação

Questão em aberto

•Supondo que, dado um número n, queiramos calcular o quadrado e o cubo deste número.

•Podemos escrever uma sub-rotina para cada resultado.‣Haverá o cálculo n*n na primeira‣Haverá o cálculo n*n*n na segunda

•Ganhariamos uma multiplicação se tivessemos a possibilidade de retornar dois resultados de uma sub-rotina‣ resultado1 = n * n ‣ resultado2 = resultado1 * n‣ return resultado 1, resultado2

•Não é permitido em C.•Veremos como fazer isto com ponteiros na próxima aula.

20

20Monday, August 22, 2011