1 00:00:00,000 --> 00:00:00,580 2 00:00:00,580 --> 00:00:02,950 >> DAVID J. MALAN: Vamos agora implementar um função que não tem apenas um lado 3 00:00:02,950 --> 00:00:05,920 efeito, mas em vez disso retorna um valor de retorno. 4 00:00:05,920 --> 00:00:09,150 Especificamente, vamos implementar uma função chamado obter int positivo cujo 5 00:00:09,150 --> 00:00:11,490 propósito na vida é fazer exatamente isso. 6 00:00:11,490 --> 00:00:14,500 Especificamente, eu gostaria de usar esta função da seguinte forma - 7 00:00:14,500 --> 00:00:18,770 int N recebe obter int positivo. 8 00:00:18,770 --> 00:00:23,640 E, em seguida, imprimir f, graças para a percentagem de i como um 9 00:00:23,640 --> 00:00:26,490 espaço reservado, vírgula final. 10 00:00:26,490 --> 00:00:29,030 >> Agora, é claro, ficar positivo int ainda não existe. 11 00:00:29,030 --> 00:00:33,020 Então, vamos prometer para implementá-lo por acrescentando ao topo do meu arquivo de uma linha 12 00:00:33,020 --> 00:00:37,110 como int o que significa que esta função voltará em int - 13 00:00:37,110 --> 00:00:39,110 obter int positivo. 14 00:00:39,110 --> 00:00:43,000 E vamos especificar explicitamente que este função não terá qualquer entrada, e 15 00:00:43,000 --> 00:00:45,570 para que seus argumentos são nulos. 16 00:00:45,570 --> 00:00:49,500 Vamos agora na parte inferior do meu arquivo, simplesmente para que eu possa manter principal em cima, 17 00:00:49,500 --> 00:00:52,220 realmente implementar ou definir esta função. 18 00:00:52,220 --> 00:00:55,120 >> Primeiro vamos começar com a mesma assinatura, por assim dizer - 19 00:00:55,120 --> 00:00:59,140 int obter int vazio positivo. 20 00:00:59,140 --> 00:01:01,910 E agora vamos implementar obter int positivo como se segue. 21 00:01:01,910 --> 00:01:05,410 Vamos declarar um int, também chamado de N, mas poderíamos chamá-lo de quase qualquer coisa 22 00:01:05,410 --> 00:01:11,360 gostaríamos, faça o seguinte, enquanto alguns condição é verdadeira, e nós vamos voltar a 23 00:01:11,360 --> 00:01:13,030 essa condição em um momento. 24 00:01:13,030 --> 00:01:20,800 Imprimir f, por favor me dê um int positivo, e agora vamos usar Get int de 25 00:01:20,800 --> 00:01:23,290 a biblioteca CS50 realmente conseguir que int. 26 00:01:23,290 --> 00:01:28,210 >> Mas, na minha condição, vamos fazer isso laço enquanto N é inferior a 1. 27 00:01:28,210 --> 00:01:31,260 Em outras palavras, desde que o utilizador não coopera por me proporcionar 28 00:01:31,260 --> 00:01:36,260 com um int positivo, deixe-me voltar a pronta ele ou ela de novo, e de novo, e de novo 29 00:01:36,260 --> 00:01:37,720 até que ele ou ela faz. 30 00:01:37,720 --> 00:01:40,360 Mas eu não estou pronto ainda, porque no final desta função que eu preciso 31 00:01:40,360 --> 00:01:42,210 realmente fazer alguma coisa com essa entrada. 32 00:01:42,210 --> 00:01:46,710 E assim eu estou indo para ir em voltar com uma linha como final retorno 33 00:01:46,710 --> 00:01:52,850 ponto e vírgula, retornando, assim, uma real int to main que chamou esta função. 34 00:01:52,850 --> 00:01:56,810 Agora vale a pena notar que, apesar de obter retornos positivos em int int, é 35 00:01:56,810 --> 00:02:00,470 certamente bem para que ele retorne um int positivo especificamente. 36 00:02:00,470 --> 00:02:04,170 Não há um tipo de dados especial para inteiro positivo especificamente, portanto, 37 00:02:04,170 --> 00:02:06,490 simplesmente usar o construída em "int". 38 00:02:06,490 --> 00:02:11,250 >> Agora, de volta na linha nove, perceber que eu sou imprimir N. Mas o N nesta linha 39 00:02:11,250 --> 00:02:13,970 pertence ao N, que está declarado na linha oito. 40 00:02:13,970 --> 00:02:17,840 Então não é que você pode perfeitamente ter variáveis ​​com nomes idênticos assim 41 00:02:17,840 --> 00:02:20,250 desde que eles existem dentro diferentes âmbitos. 42 00:02:20,250 --> 00:02:24,950 E lembrar que o escopo é definido pela as chaves que mais de perto 43 00:02:24,950 --> 00:02:27,620 coloque a variável que você definiu. 44 00:02:27,620 --> 00:02:30,370 >> Agora vamos compilar e executar este programa. 45 00:02:30,370 --> 00:02:35,210 Fazer funções 1, ponto reduzir funções 1. 46 00:02:35,210 --> 00:02:40,040 Vamos dar-lhe um positivo int-como 50, e ele diz que graças pelo 50. 47 00:02:40,040 --> 00:02:43,180 Enquanto isso, se não cooperar, executar o programa de novo, dando-lhe 48 00:02:43,180 --> 00:02:47,550 0, estou solicitado novamente, ou dando-lhe 1 negativo, estou solicitado novamente. 49 00:02:47,550 --> 00:02:51,720 Mas se eu cooperar fornecendo-lhe, dizer, 50 anos, estou agradeceu a 50. 50 00:02:51,720 --> 00:02:54,590