Baixe o app para aproveitar ainda mais
Prévia do material em texto
08/07/2013 1 João Monlevade, 8 de julho de 2013 Universidade Federal de Ouro Preto Campus João Monlevade Prof. Mateus Ferreira Satler CEA 030 – Programação de Computadores I PROF. MATEUS FERREIRA SATLER Um conceito simples seria: ◦ Subrotina é um parcela de código computacional que executa uma tarefa bem definida, sendo que essa tarefa pode ser executada (chamada) diversas vezes num mesmo programa. 2 08/07/2013 2 CEA 030 – Programação de Computadores I PROF. MATEUS FERREIRA SATLER Necessidade de dividir um problema computacional em pequenas partes. Os programadores verificaram que muitas destas pequenas partes se repetiam. Ex.: Impressão de mensagens, zerar um vetor, fazer uma operação matricial, etc. 3 CEA 030 – Programação de Computadores I PROF. MATEUS FERREIRA SATLER Deve-se usar subrotinas sempre que: ◦ Utilizar uma parte do código em várias partes do programa; ◦ Vários programas irão utilizar os mesmos códigos (bibliotecas); ◦ Abstrair a complexidade e facilitar o entendimento do programa. 4 08/07/2013 3 CEA 030 – Programação de Computadores I PROF. MATEUS FERREIRA SATLER Facilita a programação estruturada: ◦ Dada as fases previstas nos refinamentos sucessivos decompõe-se o programa em módulos funcionais ◦ Tais módulos podem ser organizados/programados como subrotinas Ou seja: viabiliza a modularização 5 CEA 030 – Programação de Computadores I PROF. MATEUS FERREIRA SATLER Executam uma tarefa bem definida Não funcionam sozinhas: devem ser chamadas por um programa principal ou por outra subrotina Permite a criação de variáveis próprias e a manipulação de variáveis externas (devidamente parametrizadas) 6 08/07/2013 4 CEA 030 – Programação de Computadores I PROF. MATEUS FERREIRA SATLER Facilita a legibilidade do código através da: ◦ Estruturação (subrotinas são agrupadas fora do programa principal) ◦ Enxugamento (através de diversas chamadas da mesma subrotina) 7 CEA 030 – Programação de Computadores I PROF. MATEUS FERREIRA SATLER Existem dois tipos de subrotinas: ◦ Procedimentos: não retornam nenhum valor. São usadas para realizar alguma operação que não gera dados. ◦ Funções: retornam valor. São utilizadas para realizar uma operação e retornam alguma resposta relativa à operação realizada. 8 08/07/2013 5 CEA 030 – Programação de Computadores I PROF. MATEUS FERREIRA SATLER Forma Geral ◦ A sintaxe de declaração de um procedimento é: void <nome do procedimento> (<lista de parâmetros>) { <declaração de variáveis locais> <comandos> } 9 TIPO especial para procedimento. CEA 030 – Programação de Computadores I PROF. MATEUS FERREIRA SATLER Forma Geral ◦ A sintaxe de declaração de um procedimento é: void <nome do procedimento> (<lista de parâmetros>) { <declaração de variáveis locais> <comandos> } 10 Nome que identifique a ação a ser executada no procedimento (sem espaços em branco!) Ex.: imprimeMedia 08/07/2013 6 CEA 030 – Programação de Computadores I PROF. MATEUS FERREIRA SATLER Forma Geral ◦ A sintaxe de declaração de um procedimento é: void <nome do procedimento> (<lista de parâmetros>) { <declaração de variáveis locais> <comandos> } 11 Valores recebidos como parâmetro. Ex.: (A,B,20,30) CEA 030 – Programação de Computadores I PROF. MATEUS FERREIRA SATLER Forma Geral ◦ A sintaxe de declaração de um procedimento é: void <nome do procedimento> (<lista de parâmetros>) { <declaração de variáveis locais> <comandos> } 12 Variáveis necessárias para a codificação do procedimento, além das passados na lista de parâmetros. 08/07/2013 7 CEA 030 – Programação de Computadores I PROF. MATEUS FERREIRA SATLER Forma Geral ◦ A sintaxe de declaração de um procedimento é: void <nome do procedimento> (<lista de parâmetros>) { <declaração de variáveis locais> <comandos> } 13 Comandos que implementam o procedimento desejado. CEA 030 – Programação de Computadores I PROF. MATEUS FERREIRA SATLER Exemplo: void imprimeMaior (int X, int Y) { if (X > Y) { printf (“%d”, X); } else { printf (“%d”, Y); } } 14 08/07/2013 8 CEA 030 – Programação de Computadores I PROF. MATEUS FERREIRA SATLER Chamada void imprimeMaior (int X, int Y) { if (X > Y) { printf (“%d”, X); } else { printf (“%d”, Y); } } 15 int main() { int A, B; scanf (“%d %d”, &A, &B); imprimeMaior (A,B); return 0; } CEA 030 – Programação de Computadores I PROF. MATEUS FERREIRA SATLER Toda variável pertencente à subrotina é chamada de variável local, pois ela só pode ser utilizada dentro do escopo da subrotina. Fazem parte das variáveis locais de uma subrotina: ◦ as variáveis declaradas na subrotina; ◦ todos os parâmetros recebidos pela subrotina. 16 08/07/2013 9 CEA 030 – Programação de Computadores I PROF. MATEUS FERREIRA SATLER Passados através da lista de parâmetros Estes parâmetros podem ser cópia dos dados do programa (quando eles não serão alterados) ou pode-se permitir que a subrotina altere os dados do programa diretamente. 17 CEA 030 – Programação de Computadores I PROF. MATEUS FERREIRA SATLER Chamada por valor: é passado uma cópia da variável para a subrotina, ou seja, é feito uma cópia do argumento para o parâmetro. Qualquer alteração feita no parâmetro não reflete em alteração no argumento. Chamada por referência: todas as alterações realizadas no parâmetro, refletem em alterações no argumento, ou seja, ambas as variáveis apontam para o mesmo endereço de memória. Para isso, é necessário utilizar o modificador ref (em C representado pelo símbolo *), indicando que será uma referência a uma variável. 18 08/07/2013 10 CEA 030 – Programação de Computadores I PROF. MATEUS FERREIRA SATLER Exemplo #include <stdio.h> void ParImpar(int a) { int resto; resto=a%2; if (resto==0) printf(“par”); else printf( “ímpar”); } int main() { int x; scanf(“%d”,&x); ParImpar(x); return 0; } 19 CEA 030 – Programação de Computadores I PROF. MATEUS FERREIRA SATLER Exemplo #include <stdio.h> void ParImpar(int a) { int resto; resto=a%2; if (resto==0) printf(“par”); else printf( “ímpar”); } int main() { int x; scanf(“%d”,&x); ParImpar(x); return 0; } 20 Variáveis do main: x 08/07/2013 11 CEA 030 – Programação de Computadores I PROF. MATEUS FERREIRA SATLER Exemplo #include <stdio.h> void ParImpar(int a) { int resto; resto=a%2; if (resto==0) printf(“par”); else printf( “ímpar”); } int main() { int x; scanf(“%d”,&x); ParImpar(x); return 0; } 21 Variáveis do locais: a (cópia da variável x) resto CEA 030 – Programação de Computadores I PROF. MATEUS FERREIRA SATLER Chamada por valor: Qualquer alteração feita no parâmetro não reflete em alteração no argumento. Chamada por referência: Todas as alterações realizadas no parâmetro, refletem em alterações no argumento, ou seja, ambas as variáveis apontam para o mesmo endereço de memória. Para isso, é necessário que seja passado o endereço do argumento e o parâmetro receba-o na forma de ponteiro. 22 08/07/2013 12 CEA 030 – Programação de Computadores I PROF. MATEUS FERREIRA SATLER P6 void imprimeMaior (int X, int Y, int * Z) { P7 if (X > Y) { P8 printf (“%d”, X); P9 *Z = X; } else { P8’ printf (“%d”, Y); P9’ *Z = Y; } } P1 int main () { P2 int A, B, C; P3 A = 22; P4 B = 11; P5 imprimeMaior(A,B,&C); P10 printf (“%d”, C); return 0; } 23 Linha main imprimeMaior A B C X Y Z P1 P2 P3 P4 P5 P6 P7 P8 P9 P8’ P9’P10 CEA 030 – Programação de Computadores I PROF. MATEUS FERREIRA SATLER P6 void imprimeMaior (int X, int Y, int * Z) { P7 if (X > Y) { P8 printf (“%d”, X); P9 *Z = X; } else { P8’ printf (“%d”, Y); P9’ *Z = Y; } } P1 int main () { P2 int A, B, C; P3 A = 22; P4 B = 11; P5 imprimeMaior(A,B,&C); P10 printf (“%d”, C); return 0; } 24 Linha main imprimeMaior A B C X Y Z P1 - - - - - - P2 P3 P4 P5 P6 P7 P8 P9 P8’ P9’ P10 08/07/2013 13 CEA 030 – Programação de Computadores I PROF. MATEUS FERREIRA SATLER P6 void imprimeMaior (int X, int Y, int * Z) { P7 if (X > Y) { P8 printf (“%d”, X); P9 *Z = X; } else { P8’ printf (“%d”, Y); P9’ *Z = Y; } } P1 int main () { P2 int A, B, C; P3 A = 22; P4 B = 11; P5 imprimeMaior(A,B,&C); P10 printf (“%d”, C); return 0; } 25 Linha main imprimeMaior A B C X Y Z P1 - - - - - - P2 “lixo” “lixo” “lixo” - - - P3 P4 P5 P6 P7 P8 P9 P8’ P9’ P10 CEA 030 – Programação de Computadores I PROF. MATEUS FERREIRA SATLER P6 void imprimeMaior (int X, int Y, int * Z) { P7 if (X > Y) { P8 printf (“%d”, X); P9 *Z = X; } else { P8’ printf (“%d”, Y); P9’ *Z = Y; } } P1 int main () { P2 int A, B, C; P3 A = 22; P4 B = 11; P5 imprimeMaior(A,B,&C); P10 printf (“%d”, C); return 0; } 26 Linha main imprimeMaior A B C X Y Z P1 - - - - - - P2 “lixo” “lixo” “lixo” - - - P3 22 “lixo” “lixo” - - - P4 P5 P6 P7 P8 P9 P8’ P9’ P10 08/07/2013 14 CEA 030 – Programação de Computadores I PROF. MATEUS FERREIRA SATLER P6 void imprimeMaior (int X, int Y, int * Z) { P7 if (X > Y) { P8 printf (“%d”, X); P9 *Z = X; } else { P8’ printf (“%d”, Y); P9’ *Z = Y; } } P1 int main () { P2 int A, B, C; P3 A = 22; P4 B = 11; P5 imprimeMaior(A,B,&C); P10 printf (“%d”, C); return 0; } 27 Linha main imprimeMaior A B C X Y Z P1 - - - - - - P2 “lixo” “lixo” “lixo” - - - P3 22 “lixo” “lixo” - - - P4 22 11 “lixo” - - - P5 P6 P7 P8 P9 P8’ P9’ P10 CEA 030 – Programação de Computadores I PROF. MATEUS FERREIRA SATLER P6 void imprimeMaior (int X, int Y, int * Z) { P7 if (X > Y) { P8 printf (“%d”, X); P9 *Z = X; } else { P8’ printf (“%d”, Y); P9’ *Z = Y; } } P1 int main () { P2 int A, B, C; P3 A = 22; P4 B = 11; P5 imprimeMaior(A,B,&C); P10 printf (“%d”, C); return 0; } 28 Linha main imprimeMaior A B C X Y Z P1 - - - - - - P2 “lixo” “lixo” “lixo” - - - P3 22 “lixo” “lixo” - - - P4 22 11 “lixo” - - - P5 22 11 “lixo” - - - P6 P7 P8 P9 P8’ P9’ P10 08/07/2013 15 CEA 030 – Programação de Computadores I PROF. MATEUS FERREIRA SATLER P6 void imprimeMaior (int X, int Y, int * Z) { P7 if (X > Y) { P8 printf (“%d”, X); P9 *Z = X; } else { P8’ printf (“%d”, Y); P9’ *Z = Y; } } P1 int main () { P2 int A, B, C; P3 A = 22; P4 B = 11; P5 imprimeMaior(A,B,&C); P10 printf (“%d”, C); return 0; } 29 Linha main imprimeMaior A B C X Y Z P1 - - - - - - P2 “lixo” “lixo” “lixo” - - - P3 22 “lixo” “lixo” - - - P4 22 11 “lixo” - - - P5 22 11 “lixo” - - - P6 22 11 “lixo” 22 11 “lixo” P7 P8 P9 P8’ P9’ P10 CEA 030 – Programação de Computadores I PROF. MATEUS FERREIRA SATLER P6 void imprimeMaior (int X, int Y, int * Z) { P7 if (X > Y) // (22 > 11) { P8 printf (“%d”, X); P9 *Z = X; } else { P8’ printf (“%d”, Y); P9’ *Z = Y; } } P1 int main () { P2 int A, B, C; P3 A = 22; P4 B = 11; P5 imprimeMaior(A,B,&C); P10 printf (“%d”, C); return 0; } 30 Linha main imprimeMaior A B C X Y Z P1 - - - - - - P2 “lixo” “lixo” “lixo” - - - P3 22 “lixo” “lixo” - - - P4 22 11 “lixo” - - - P5 22 11 “lixo” - - - P6 22 11 “lixo” 22 11 “lixo” P7 22 11 “lixo” 22 11 “lixo” P8 P9 P8’ P9’ P10 08/07/2013 16 CEA 030 – Programação de Computadores I PROF. MATEUS FERREIRA SATLER P6 void imprimeMaior (int X, int Y, int * Z) { P7 if (X > Y) { P8 printf (“%d”, X); P9 *Z = X; } else { P8’ printf (“%d”, Y); P9’ *Z = Y; } } P1 int main () { P2 int A, B, C; P3 A = 22; P4 B = 11; P5 imprimeMaior(A,B,&C); P10 printf (“%d”, C); return 0; } 31 Linha main imprimeMaior A B C X Y Z P1 - - - - - - P2 “lixo” “lixo” “lixo” - - - P3 22 “lixo” “lixo” - - - P4 22 11 “lixo” - - - P5 22 11 “lixo” - - - P6 22 11 “lixo” 22 11 “lixo” P7 22 11 “lixo” 22 11 “lixo” P8 22 11 “lixo” 22 11 “lixo” P9 P8’ P9’ P10 CEA 030 – Programação de Computadores I PROF. MATEUS FERREIRA SATLER P6 void imprimeMaior (int X, int Y, int * Z) { P7 if (X > Y) { P8 printf (“%d”, X); P9 *Z = X; // Z = 22; } else { P8’ printf (“%d”, Y); P9’ *Z = Y; } } P1 int main () { P2 int A, B, C; P3 A = 22; P4 B = 11; P5 imprimeMaior(A,B,&C); P10 printf (“%d”, C); return 0; } 32 Linha main imprimeMaior A B C X Y Z P1 - - - - - - P2 “lixo” “lixo” “lixo” - - - P3 22 “lixo” “lixo” - - - P4 22 11 “lixo” - - - P5 22 11 “lixo” - - - P6 22 11 “lixo” 22 11 “lixo” P7 22 11 “lixo” 22 11 “lixo” P8 22 11 “lixo” 22 11 “lixo” P9 22 11 “lixo” 22 11 22 P8’ P9’ P10 08/07/2013 17 CEA 030 – Programação de Computadores I PROF. MATEUS FERREIRA SATLER P6 void imprimeMaior (int X, int Y, int * Z) { P7 if (X > Y) { P8 printf (“%d”, X); P9 *Z = X; // Z = 22; } else { P8’ printf (“%d”, Y); P9’ *Z = Y; } } P1 int main () { P2 int A, B, C; P3 A = 22; P4 B = 11; P5 imprimeMaior(A,B,&C); P10 printf (“%d”, C); return 0; } 33 Linha main imprimeMaior A B C X Y Z P1 - - - - - - P2 “lixo” “lixo” “lixo” - - - P3 22 “lixo” “lixo” - - - P4 22 11 “lixo” - - - P5 22 11 “lixo” - - - P6 22 11 “lixo” 22 11 “lixo” P7 22 11 “lixo” 22 11 “lixo” P8 22 11 “lixo” 22 11 “lixo” P9 22 11 22 22 11 22 P8’ P9’ P10 CEA 030 – Programação de Computadores I PROF. MATEUS FERREIRA SATLER P6 void imprimeMaior (int X, int Y, int * Z) { P7 if (X > Y) { P8 printf (“%d”, X); P9 *Z = X; } else { P8’ printf (“%d”, Y); P9’ *Z = Y; } } P1 int main () { P2 int A, B, C; P3 A = 22; P4 B = 11; P5 imprimeMaior(A,B,&C); P10 printf (“%d”, C); return 0; } 34 Linha main imprimeMaior A B C X Y Z P1 - - - - - - P2 “lixo” “lixo” “lixo” - - - P3 22 “lixo” “lixo” - - - P4 22 11 “lixo” - - - P5 22 11 “lixo” - - - P6 22 11 “lixo” 22 11 “lixo” P7 22 11 “lixo” 22 11 “lixo” P8 22 11 “lixo” 22 11 “lixo” P9 22 11 22 22 11 22 P8’ P9’ P10 08/07/2013 18 CEA 030 – Programação de Computadores I PROF. MATEUS FERREIRA SATLER P6 void imprimeMaior (int X, int Y, int * Z) { P7 if (X > Y) { P8 printf (“%d”, X); P9 *Z = X; } else { P8’ printf (“%d”, Y); P9’ *Z = Y; } } P1 int main () { P2 int A, B, C; P3 A = 22; P4 B = 11; P5 imprimeMaior(A,B,&C); P10 printf (“%d”, C); return 0; } 35 Linha main imprimeMaior A B C X Y Z P1 - - - - - - P2 “lixo” “lixo” “lixo” - - - P3 22 “lixo” “lixo” - - - P4 22 11 “lixo” - - - P5 22 11 “lixo” - - - P6 22 11 “lixo” 22 11 “lixo” P7 22 11 “lixo” 22 11 “lixo” P8 22 11 “lixo” 22 11 “lixo” P9 22 11 22 22 11 22 P8’ P9’ P10 22 11 22 - - - CEA 030 – Programação de Computadores I PROF. MATEUS FERREIRA SATLER P6 void imprimeMaior (int X, int Y, int * Z) { P7 if (X > Y) { P8 printf (“%d”, X); P9 *Z = X; } else { P8’ printf (“%d”, Y); P9’ *Z = Y; } } P1 int main () { P2 int A, B, C; P3 A = 22; P4 B = 11; P5 imprimeMaior(A,B,&C); P10 printf (“%d”, C); return 0; } 36 Linha main imprimeMaior A B C X Y Z P1 - - - - - - P2 “lixo” “lixo” “lixo” - - - P3 22 “lixo” “lixo” - - - P4 22 11 “lixo” - - - P5 22 11 “lixo” - - - P6 22 11 “lixo” 22 11 “lixo” P7 22 11 “lixo” 22 11 “lixo” P8 22 11 “lixo” 22 11 “lixo” P9 22 11 22 22 11 22 P8’ P9’ P1022 11 22 - - - 08/07/2013 19 CEA 030 – Programação de Computadores I PROF. MATEUS FERREIRA SATLER 1. Faça um procedimento que receba três valores reais e imprima a média aritmética desses valores. 2. Faça um procedimento que receba dois valores inteiros n1 e n2 e imprima o intervalo fechado entre esses dois valores, do menor para o maior. Por exemplo: se n1 = 2 e n2 = 5, o procedimento irá imprimir 2, 3, 4, 5. 3. Faça um procedimento que receba por parâmetro o tempo de duração de um experimento expresso em segundos e imprima na tela esse mesmo tempo em horas, minutos e segundos. 37 CEA 030 – Programação de Computadores I PROF. MATEUS FERREIRA SATLER 4. O que será impresso no programa abaixo? #include <stdio.h> void calculo (int *p, int *q) { *p = *p * 10; *q = *q + 10; } int main() { int x = 2, y = 5; calculo(&x,&y); printf("%d - %d",x,y); return 0; } 38 08/07/2013 20 CEA 030 – Programação de Computadores I PROF. MATEUS FERREIRA SATLER É um tipo especial de procedimento Retorna como resultado o valor calculado pela função, que deve ser do tipo básico definido. 39 CEA 030 – Programação de Computadores I PROF. MATEUS FERREIRA SATLER Forma Geral ◦ A sintaxe de declaração de uma função é: <tipo básico> <nome da função> (<lista de parâmetros>) { <declaração de variáveis locais> <comandos> return <valor de retorno> } 40 TIPO do dado a ser retornado como resultado da execução da função. 08/07/2013 21 CEA 030 – Programação de Computadores I PROF. MATEUS FERREIRA SATLER Forma Geral ◦ A sintaxe de declaração de uma função é: <tipo básico> <nome da função> (<lista de parâmetros>) { <declaração de variáveis locais> <comandos> return <valor de retorno> } 41 Nome que identifique a ação a ser executada na função (sem espaços em branco!) Ex.: calculaMedia CEA 030 – Programação de Computadores I PROF. MATEUS FERREIRA SATLER Forma Geral ◦ A sintaxe de declaração de uma função é: <tipo básico> <nome da função> (<lista de parâmetros>) { <declaração de variáveis locais> <comandos> return <valor de retorno> } 42 Valores recebidos como parâmetro. Ex.: (A,B,20,30) 08/07/2013 22 CEA 030 – Programação de Computadores I PROF. MATEUS FERREIRA SATLER Forma Geral ◦ A sintaxe de declaração de uma função é: <tipo básico> <nome da função> (<lista de parâmetros>) { <declaração de variáveis locais> <comandos> return <valor de retorno> } 43 Declaração das variáveis locais e sequencia de comandos para a realização da função. CEA 030 – Programação de Computadores I PROF. MATEUS FERREIRA SATLER Forma Geral ◦ A sintaxe de declaração de uma função é: <tipo básico> <nome da função> (<lista de parâmetros>) { <declaração de variáveis locais> <comandos> return <valor de retorno> } 44 A função permite retornar um valor, resultado das ações nela programadas. Este valor deve ser do <tipo básico> declarado antes do nome da função. 08/07/2013 23 CEA 030 – Programação de Computadores I PROF. MATEUS FERREIRA SATLER Funções retornam valor. São utilizadas para realizar uma operação e retornam alguma resposta relativa à operação realizada. Exemplo: int soma (int a, int b) { return (a+b); } 45 CEA 030 – Programação de Computadores I PROF. MATEUS FERREIRA SATLER P5 float valorAbsoluto (float X) { P6 float Y; P7 if (X >= 0) { P8 Y = X; } else { P8’ Y = -X; } P9 return Y; } P1 int main () { P2 float A, D; P3 A = -40.0; P4 D = valorAbsoluto (A); P10 printf (“%f”, D); return 0; } 46 Linha main valorAbsoluto A D X Y P1 P2 P3 P4 P5 P6 P7 P8 P8’ P9’ P10 08/07/2013 24 CEA 030 – Programação de Computadores I PROF. MATEUS FERREIRA SATLER P5 float valorAbsoluto (float X) { P6 float Y; P7 if (X >= 0) { P8 Y = X; } else { P8’ Y = -X; } P9 return Y; } P1 int main () { P2 float A, D; P3 A = -40.0; P4 D = valorAbsoluto (A); P10 printf (“%f”, D); return 0; } 47 Linha main valorAbsoluto A D X Y P1 - - - - P2 P3 P4 P5 P6 P7 P8 P8’ P9’ P10 CEA 030 – Programação de Computadores I PROF. MATEUS FERREIRA SATLER P5 float valorAbsoluto (float X) { P6 float Y; P7 if (X >= 0) { P8 Y = X; } else { P8’ Y = -X; } P9 return Y; } P1 int main () { P2 float A, D; P3 A = -40.0; P4 D = valorAbsoluto (A); P10 printf (“%f”, D); return 0; } 48 Linha main valorAbsoluto A D X Y P1 - - - - P2 “lixo” “lixo” - - P3 P4 P5 P6 P7 P8 P8’ P9’ P10 08/07/2013 25 CEA 030 – Programação de Computadores I PROF. MATEUS FERREIRA SATLER P5 float valorAbsoluto (float X) { P6 float Y; P7 if (X >= 0) { P8 Y = X; } else { P8’ Y = -X; } P9 return Y; } P1 int main () { P2 float A, D; P3 A = -40.0; P4 D = valorAbsoluto (A); P10 printf (“%f”, D); return 0; } 49 Linha main valorAbsoluto A D X Y P1 - - - - P2 “lixo” “lixo” - - P3 -40 “lixo” - - P4 P5 P6 P7 P8 P8’ P9’ P10 CEA 030 – Programação de Computadores I PROF. MATEUS FERREIRA SATLER P5 float valorAbsoluto (float X) { P6 float Y; P7 if (X >= 0) { P8 Y = X; } else { P8’ Y = -X; } P9 return Y; } P1 int main () { P2 float A, D; P3 A = -40.0; P4 D = valorAbsoluto (A); P10 printf (“%f”, D); return 0; } 50 Linha main valorAbsoluto A D X Y P1 - - - - P2 “lixo” “lixo” - - P3 -40 “lixo” - - P4 -40 ??? - - P5 P6 P7 P8 P8’ P9’ P10 08/07/2013 26 CEA 030 – Programação de Computadores I PROF. MATEUS FERREIRA SATLER P5 float valorAbsoluto (float X) { P6 float Y; P7 if (X >= 0) { P8 Y = X; } else { P8’ Y = -X; } P9 return Y; } P1 int main () { P2 float A, D; P3 A = -40.0; P4 D = valorAbsoluto (A); P10 printf (“%f”, D); return 0; } 51 Linha main valorAbsoluto A D X Y P1 - - - - P2 “lixo” “lixo” - - P3 -40 “lixo” - - P4 -40 ??? - - P5 -40 ??? -40 - P6 P7 P8 P8’ P9’ P10 CEA 030 – Programação de Computadores I PROF. MATEUS FERREIRA SATLER P5 float valorAbsoluto (float X) { P6 float Y; P7 if (X >= 0) { P8 Y = X; } else { P8’ Y = -X; } P9 return Y; } P1 int main () { P2 float A, D; P3 A = -40.0; P4 D = valorAbsoluto (A); P10 printf (“%f”, D); return 0; } 52 Linha main valorAbsoluto A D X Y P1 - - - - P2 “lixo” “lixo” - - P3 -40 “lixo” - - P4 -40 ??? - - P5 -40 ??? -40 - P6 -40 ??? -40 “lixo” P7 P8 P8’ P9’ P10 08/07/2013 27 CEA 030 – Programação de Computadores I PROF. MATEUS FERREIRA SATLER P5 float valorAbsoluto (float X) { P6 float Y; P7 if (X >= 0) // (-40 >= 0) { P8 Y = X; } else { P8’ Y = -X; } P9 return Y; } P1 int main () { P2 float A, D; P3 A = -40.0; P4 D = valorAbsoluto (A); P10 printf (“%f”, D); return 0; } 53 Linha main valorAbsoluto A D X Y P1 - - - - P2 “lixo” “lixo” - - P3 -40 “lixo” - - P4 -40 ??? - - P5 -40 ??? -40 - P6 -40 ??? -40 “lixo” P7 -40 ??? -40 “lixo” P8 P8’ P9’ P10 CEA 030 – Programação de Computadores I PROF. MATEUS FERREIRA SATLER P5 float valorAbsoluto (float X) { P6 float Y; P7 if (X >= 0) // (-40 >= 0) { P8 Y = X; } else { P8’ Y = -X; } P9 return Y; } P1 int main () { P2 float A, D; P3 A = -40.0; P4 D = valorAbsoluto (A); P10 printf (“%f”, D); return 0; } 54 Linha main valorAbsoluto A D X Y P1 - - - - P2 “lixo” “lixo” - - P3 -40 “lixo” - - P4 -40 ??? - - P5 -40 ??? -40 - P6 -40 ??? -40 “lixo” P7 -40 ??? -40 “lixo” P8 P8’ P9’ P10 08/07/2013 28 CEA 030 – Programação de Computadores I PROF. MATEUS FERREIRA SATLER P5 float valorAbsoluto (float X) { P6 float Y; P7 if (X >= 0) {P8 Y = X; } else { P8’ Y = -X; } P9 return Y; } P1 int main () { P2 float A, D; P3 A = -40.0; P4 D = valorAbsoluto (A); P10 printf (“%f”, D); return 0; } 55 Linha main valorAbsoluto A D X Y P1 - - - - P2 “lixo” “lixo” - - P3 -40 “lixo” - - P4 -40 ??? - - P5 -40 ??? -40 - P6 -40 ??? -40 “lixo” P7 -40 ??? -40 “lixo” P8 P8’ -40 ??? -40 40 P9’ P10 CEA 030 – Programação de Computadores I PROF. MATEUS FERREIRA SATLER P5 float valorAbsoluto (float X) { P6 float Y; P7 if (X >= 0) { P8 Y = X; } else { P8’ Y = -X; } P9 return Y; } P1 int main () { P2 float A, D; P3 A = -40.0; P4 D = valorAbsoluto (A); P10 printf (“%f”, D); return 0; } 56 Linha main valorAbsoluto A D X Y P1 - - - - P2 “lixo” “lixo” - - P3 -40 “lixo” - - P4 -40 ??? - - P5 -40 ??? -40 - P6 -40 ??? -40 “lixo” P7 -40 ??? -40 “lixo” P8 P8’ -40 ??? -40 40 P9’ -40 40 -40 40 P10 08/07/2013 29 CEA 030 – Programação de Computadores I PROF. MATEUS FERREIRA SATLER P5 float valorAbsoluto (float X) { P6 float Y; P7 if (X >= 0) { P8 Y = X; } else { P8’ Y = -X; } P9 return Y; } P1 int main () { P2 float A, D; P3 A = -40.0; P4 D = valorAbsoluto (A); P10 printf (“%f”, D); return 0; } 57 Linha main valorAbsoluto A D X Y P1 - - - - P2 “lixo” “lixo” - - P3 -40 “lixo” - - P4 -40 40 - - P5 -40 ??? -40 - P6 -40 ??? -40 “lixo” P7 -40 ??? -40 “lixo” P8 P8’ -40 ??? -40 40 P9’ -40 40 -40 40 P10 CEA 030 – Programação de Computadores I PROF. MATEUS FERREIRA SATLER P5 float valorAbsoluto (float X) { P6 float Y; P7 if (X >= 0) { P8 Y = X; } else { P8’ Y = -X; } P9 return Y; } P1 int main () { P2 float A, D; P3 A = -40.0; P4 D = valorAbsoluto (A); P10 printf (“%f”, D); return 0; } 58 Linha main valorAbsoluto A D X Y P1 - - - - P2 “lixo” “lixo” - - P3 -40 “lixo” - - P4 -40 40 - - P5 -40 ??? -40 - P6 -40 ??? -40 “lixo” P7 -40 ??? -40 “lixo” P8 P8’ -40 ??? -40 40 P9’ -40 40 -40 40 P10 -40 40 08/07/2013 30 CEA 030 – Programação de Computadores I PROF. MATEUS FERREIRA SATLER P5 float valorAbsoluto (float X) { P6 float Y; P7 if (X >= 0) { P8 Y = X; } else { P8’ Y = -X; } P9 return Y; } P1 int main () { P2 float A, D; P3 A = -40.0; P4 D = valorAbsoluto (A); P10 printf (“%f”, D); return 0; } 59 Linha main valorAbsoluto A D X Y P1 - - - - P2 “lixo” “lixo” - - P3 -40 “lixo” - - P4 -40 40 - - P5 -40 ??? -40 - P6 -40 ??? -40 “lixo” P7 -40 ??? -40 “lixo” P8 P8’ -40 ??? -40 40 P9’ -40 40 -40 40 P10 -40 40 CEA 030 – Programação de Computadores I PROF. MATEUS FERREIRA SATLER 1. Faça uma função que receba um valor N inteiro e positivo e que calcula o fatorial deste valor. Retorne o resultado. 2. Faça uma função que receba dois valores inteiros n1 e n2 e retorne a quantidade de valores que existem entre eles que sejam divisíveis por 3 e 7. 3. Faça uma função que receba por parâmetro o raio de uma esfera e calcula o seu volume: v = (4 * PI * R3) / 3. 4. Faça uma função que receba a idade de uma pessoa em anos, meses e dias e retorna essa idade expressa em dias. 60 08/07/2013 31 CEA 030 – Programação de Computadores I PROF. MATEUS FERREIRA SATLER 5. Qual a saída do programa abaixo? #include <stdio.h> int calculo (int p, int q) { p = p * 10; q = q + 10; return(p + q); } int main() { int x = 2, y = 5; printf(“%d %d %d”,x,y,calculo(x,y)); return 0; } 61 CEA 030 – Programação de Computadores I PROF. MATEUS FERREIRA SATLER 6. Qual a saída do programa abaixo? #include <stdio.h> int calculo (int p, int *q) { p = p * 10; *q = *q + 10; return(p); } int main() { int x = 2, y = 5, z; z = calculo(x,&y); printf(“%d %d %d”,x,y,z); return 0; } 62 08/07/2013 32 CEA 030 – Programação de Computadores I PROF. MATEUS FERREIRA SATLER 7. Qual a saída do programa abaixo? #include <stdio.h> int cal(int p, int *q, int *r) { p = p * 10; *q = *q + 10; *r = *r - 10; return(p); } int main() { int x = 2, y = 5, z = 3, r; r = cal(x,&y,&z); printf(“%d %d %d %d”,x,y,z,r); return 0; } 63
Compartilhar