![Page 1: CES-10 INTRODUÇÃO À COMPUTAÇÃO Capítulo VIII Subprogramação](https://reader035.vdocuments.pub/reader035/viewer/2022070508/570638641a28abb82390166c/html5/thumbnails/1.jpg)
CES-10 INTRODUÇÃO CES-10 INTRODUÇÃO À COMPUTAÇÃOÀ COMPUTAÇÃO
Capítulo VIII Capítulo VIII SubprogramaçãoSubprogramação
![Page 2: CES-10 INTRODUÇÃO À COMPUTAÇÃO Capítulo VIII Subprogramação](https://reader035.vdocuments.pub/reader035/viewer/2022070508/570638641a28abb82390166c/html5/thumbnails/2.jpg)
Capítulo VIII – Capítulo VIII – SubprogramaçãoSubprogramação
8.1 – Introdução8.1 – Introdução8.2 – Escopo de validade de declarações8.2 – Escopo de validade de declarações8.3 – Parâmetros e passagem de 8.3 – Parâmetros e passagem de
argumentosargumentos8.4 – Prototipação de subprogramas8.4 – Prototipação de subprogramas8.5 – Classes de alocação8.5 – Classes de alocação8.6 – Recursividade8.6 – Recursividade
![Page 3: CES-10 INTRODUÇÃO À COMPUTAÇÃO Capítulo VIII Subprogramação](https://reader035.vdocuments.pub/reader035/viewer/2022070508/570638641a28abb82390166c/html5/thumbnails/3.jpg)
8.1 – Introdução8.1 – Introdução8.1.1 – Conceito de subprograma8.1.1 – Conceito de subprograma Como já foi visto em capítulos anteriores, um Como já foi visto em capítulos anteriores, um
programaprograma pode ser pode ser organizadoorganizado em em um ou mais um ou mais módulosmódulos
Um deles, o Um deles, o módulo oumódulo ou programa principalprograma principal, , obrigatório em todos os programas, é aquele pelo obrigatório em todos os programas, é aquele pelo qual qual começacomeça a execução a execução
Os outros eventuais módulos são Os outros eventuais módulos são auxiliaresauxiliares do do mesmo e são chamados de mesmo e são chamados de subprogramassubprogramas. .
Durante sua execução, o Durante sua execução, o programa principalprograma principal poderá fazer poderá fazer chamadaschamadas a esses subprogramasa esses subprogramas
![Page 4: CES-10 INTRODUÇÃO À COMPUTAÇÃO Capítulo VIII Subprogramação](https://reader035.vdocuments.pub/reader035/viewer/2022070508/570638641a28abb82390166c/html5/thumbnails/4.jpg)
Fluxo de controle de um programa com Fluxo de controle de um programa com subprogramas:subprogramas:
![Page 5: CES-10 INTRODUÇÃO À COMPUTAÇÃO Capítulo VIII Subprogramação](https://reader035.vdocuments.pub/reader035/viewer/2022070508/570638641a28abb82390166c/html5/thumbnails/5.jpg)
As As funções da bibliotecafunções da biblioteca são subprogramas são subprogramas supridos pela linguagemsupridos pela linguagem
Quando o Quando o programadorprogramador deseja usar algum deseja usar algum subprograma que não pertençasubprograma que não pertença à biblioteca, à biblioteca, ele deve ele deve programá-loprogramá-lo
![Page 6: CES-10 INTRODUÇÃO À COMPUTAÇÃO Capítulo VIII Subprogramação](https://reader035.vdocuments.pub/reader035/viewer/2022070508/570638641a28abb82390166c/html5/thumbnails/6.jpg)
8.1.2 – Argumentos e parâmetros de 8.1.2 – Argumentos e parâmetros de subprogramassubprogramas
Numa Numa chamadachamada de subprograma, pode-se de subprograma, pode-se especificar os especificar os valoresvalores ou ou variáveisvariáveis sobre os quais sobre os quais essa chamada deve essa chamada deve atuaratuar
Esses valores e/ou variáveis são denominados Esses valores e/ou variáveis são denominados argumentos de chamadaargumentos de chamada
Por exemplo, na atribuição Por exemplo, na atribuição
x = b*sin(a) - a*sin(b) + (a+b)*sin(a+b) – (a-b)*sin(a-b);x = b*sin(a) - a*sin(b) + (a+b)*sin(a+b) – (a-b)*sin(a-b);
há há 4 chamadas4 chamadas do subprograma do subprograma sinsin pertencente à pertencente à biblioteca, para calcular respectivamente os senos biblioteca, para calcular respectivamente os senos dos argumentos dos argumentos
aa, , bb, , a+ba+b e e a-ba-b
![Page 7: CES-10 INTRODUÇÃO À COMPUTAÇÃO Capítulo VIII Subprogramação](https://reader035.vdocuments.pub/reader035/viewer/2022070508/570638641a28abb82390166c/html5/thumbnails/7.jpg)
Um Um argumentoargumento de chamada pode ser uma de chamada pode ser uma expressãoexpressão, mas pode ser também um , mas pode ser também um endereçoendereço
Por exemplo, quando se deseja Por exemplo, quando se deseja ler um valorler um valor para uma variável escalar para uma variável escalar aa, pode-se usar a , pode-se usar a função função scanf scanf da biblioteca de C da biblioteca de C
Fornece-lhe como argumento o endereço de Fornece-lhe como argumento o endereço de aa, , ou seja, ou seja, &a&a::
scanf (“%d”, &a)scanf (“%d”, &a)
Uma chamada de subprograma pode ter Uma chamada de subprograma pode ter zero zero ou maisou mais argumentos argumentos
![Page 8: CES-10 INTRODUÇÃO À COMPUTAÇÃO Capítulo VIII Subprogramação](https://reader035.vdocuments.pub/reader035/viewer/2022070508/570638641a28abb82390166c/html5/thumbnails/8.jpg)
O O primeiro atoprimeiro ato da execução de uma da execução de uma chamadachamada de de subprograma é a subprograma é a passagempassagem de seus eventuais de seus eventuais argumentosargumentos
Nesse ato, os Nesse ato, os valoresvalores dos argumentos são dos argumentos são calculadoscalculados e, em seguida, são e, em seguida, são armazenadosarmazenados cada cada um numa um numa variávelvariável especial local do subprograma especial local do subprograma denominada denominada parâmetroparâmetro
Em seguida, o subprograma Em seguida, o subprograma realiza sua tarefarealiza sua tarefa, , usando e eventualmente alterando os usando e eventualmente alterando os valoresvalores de de seus seus parâmetrosparâmetros
Então, se for o caso, Então, se for o caso, resultadosresultados são produzidos e são produzidos e entregues (retornados)entregues (retornados) ao módulo que o chamou ao módulo que o chamou
![Page 9: CES-10 INTRODUÇÃO À COMPUTAÇÃO Capítulo VIII Subprogramação](https://reader035.vdocuments.pub/reader035/viewer/2022070508/570638641a28abb82390166c/html5/thumbnails/9.jpg)
#include <stdio.h>#include <stdio.h>#include <stdlib.h>#include <stdlib.h>int fat (int n) {int fat (int n) {
int i; int fat;int i; int fat;if (n < 0 || n > 12) fat = -1;if (n < 0 || n > 12) fat = -1;elseelse
for (i=2, fat=1; i<=n; i++)for (i=2, fat=1; i<=n; i++)fat *= i;fat *= i;
return fat;return fat;}}int main () {int main () {
int a, b, c;int a, b, c; printf ("Digite dois inteiros: ");printf ("Digite dois inteiros: ");
scanf ("%d%d", &a, &b);scanf ("%d%d", &a, &b); c = 5 + fat (a+b);c = 5 + fat (a+b);
printf ("\n\t5 + fat (%d + %d) = %d", a, b, c);printf ("\n\t5 + fat (%d + %d) = %d", a, b, c); printf ("\n\n"); system ("pause"); return 0;printf ("\n\n"); system ("pause"); return 0;}}
Exemplo: calculo do fatorial de a+b
Subprograma fat:
Calculador de fatoriais
Chamada do subprograma fat:
Para calcular o fatorial de a+b
![Page 10: CES-10 INTRODUÇÃO À COMPUTAÇÃO Capítulo VIII Subprogramação](https://reader035.vdocuments.pub/reader035/viewer/2022070508/570638641a28abb82390166c/html5/thumbnails/10.jpg)
#include <stdio.h>#include <stdio.h>#include <stdlib.h>#include <stdlib.h>int fat (int n) {int fat (int n) {
int i; int fat;int i; int fat;if (n < 0 || n > 12) fat = -1;if (n < 0 || n > 12) fat = -1;elseelse
for (i=2, fat=1; i<=n; i++)for (i=2, fat=1; i<=n; i++)fat *= i;fat *= i;
return fat;return fat;}}int main () {int main () {
int a, b, c;int a, b, c; printf ("Digite dois inteiros: ");printf ("Digite dois inteiros: ");
scanf ("%d%d", &a, &b);scanf ("%d%d", &a, &b); c = 5 + fat (a+b);c = 5 + fat (a+b);
printf ("\n\t5 + fat (%d + %d) = %d", a, b, c);printf ("\n\t5 + fat (%d + %d) = %d", a, b, c); printf ("\n\n"); system ("pause"); return 0;printf ("\n\n"); system ("pause"); return 0;}}
a
b
c
![Page 11: CES-10 INTRODUÇÃO À COMPUTAÇÃO Capítulo VIII Subprogramação](https://reader035.vdocuments.pub/reader035/viewer/2022070508/570638641a28abb82390166c/html5/thumbnails/11.jpg)
#include <stdio.h>#include <stdio.h>#include <stdlib.h>#include <stdlib.h>int fat (int n) {int fat (int n) {
int i; int fat;int i; int fat;if (n < 0 || n > 12) fat = -1;if (n < 0 || n > 12) fat = -1;elseelse
for (i=2, fat=1; i<=n; i++)for (i=2, fat=1; i<=n; i++)fat *= i;fat *= i;
return fat;return fat;}}int main () {int main () {
int a, b, c;int a, b, c; printf ("Digite dois inteiros: ");printf ("Digite dois inteiros: ");
scanf ("%d%d", &a, &b);scanf ("%d%d", &a, &b); c = 5 + fat (a+b);c = 5 + fat (a+b);
printf ("\n\t5 + fat (%d + %d) = %d", a, b, c);printf ("\n\t5 + fat (%d + %d) = %d", a, b, c); printf ("\n\n"); system ("pause"); return 0;printf ("\n\n"); system ("pause"); return 0;}}
a
b
c
Leitura p/ a e b: 5 e 2
![Page 12: CES-10 INTRODUÇÃO À COMPUTAÇÃO Capítulo VIII Subprogramação](https://reader035.vdocuments.pub/reader035/viewer/2022070508/570638641a28abb82390166c/html5/thumbnails/12.jpg)
#include <stdio.h>#include <stdio.h>#include <stdlib.h>#include <stdlib.h>int fat (int n) {int fat (int n) {
int i; int fat;int i; int fat;if (n < 0 || n > 12) fat = -1;if (n < 0 || n > 12) fat = -1;elseelse
for (i=2, fat=1; i<=n; i++)for (i=2, fat=1; i<=n; i++)fat *= i;fat *= i;
return fat;return fat;}}int main () {int main () {
int a, b, c;int a, b, c; printf ("Digite dois inteiros: ");printf ("Digite dois inteiros: ");
scanf ("%d%d", &a, &b);scanf ("%d%d", &a, &b); c = 5 + fat (a+b);c = 5 + fat (a+b);
printf ("\n\t5 + fat (%d + %d) = %d", a, b, c);printf ("\n\t5 + fat (%d + %d) = %d", a, b, c); printf ("\n\n"); system ("pause"); return 0;printf ("\n\n"); system ("pause"); return 0;}}
5a
2b
c
Leitura p/ a e b: 5 e 2
![Page 13: CES-10 INTRODUÇÃO À COMPUTAÇÃO Capítulo VIII Subprogramação](https://reader035.vdocuments.pub/reader035/viewer/2022070508/570638641a28abb82390166c/html5/thumbnails/13.jpg)
#include <stdio.h>#include <stdio.h>#include <stdlib.h>#include <stdlib.h>int fat (int n) {int fat (int n) {
int i; int fat;int i; int fat;if (n < 0 || n > 12) fat = -1;if (n < 0 || n > 12) fat = -1;elseelse
for (i=2, fat=1; i<=n; i++)for (i=2, fat=1; i<=n; i++)fat *= i;fat *= i;
return fat;return fat;}}int main () {int main () {
int a, b, c;int a, b, c; printf ("Digite dois inteiros: ");printf ("Digite dois inteiros: ");
scanf ("%d%d", &a, &b);scanf ("%d%d", &a, &b); c = 5 + fat (a+b);c = 5 + fat (a+b);
printf ("\n\t5 + fat (%d + %d) = %d", a, b, c);printf ("\n\t5 + fat (%d + %d) = %d", a, b, c); printf ("\n\n"); system ("pause"); return 0;printf ("\n\n"); system ("pause"); return 0;}}
5a
2b
c
Chamada de fat (a+b)
![Page 14: CES-10 INTRODUÇÃO À COMPUTAÇÃO Capítulo VIII Subprogramação](https://reader035.vdocuments.pub/reader035/viewer/2022070508/570638641a28abb82390166c/html5/thumbnails/14.jpg)
#include <stdio.h>#include <stdio.h>#include <stdlib.h>#include <stdlib.h>int fat (int n) {int fat (int n) {
int i; int fat;int i; int fat;if (n < 0 || n > 12) fat = -1;if (n < 0 || n > 12) fat = -1;elseelse
for (i=2, fat=1; i<=n; i++)for (i=2, fat=1; i<=n; i++)fat *= i;fat *= i;
return fat;return fat;}}int main () {int main () {
int a, b, c;int a, b, c; printf ("Digite dois inteiros: ");printf ("Digite dois inteiros: ");
scanf ("%d%d", &a, &b);scanf ("%d%d", &a, &b); c = 5 + fat (a+b);c = 5 + fat (a+b);
printf ("\n\t5 + fat (%d + %d) = %d", a, b, c);printf ("\n\t5 + fat (%d + %d) = %d", a, b, c); printf ("\n\n"); system ("pause"); return 0;printf ("\n\n"); system ("pause"); return 0;}}
5a
2b
c
Cálculo do argumento de fat
Argumento:a+b = 5+2 =
7
![Page 15: CES-10 INTRODUÇÃO À COMPUTAÇÃO Capítulo VIII Subprogramação](https://reader035.vdocuments.pub/reader035/viewer/2022070508/570638641a28abb82390166c/html5/thumbnails/15.jpg)
#include <stdio.h>#include <stdio.h>#include <stdlib.h>#include <stdlib.h>int fat (int n) {int fat (int n) {
int i; int fat;int i; int fat;if (n < 0 || n > 12) fat = -1;if (n < 0 || n > 12) fat = -1;elseelse
for (i=2, fat=1; i<=n; i++)for (i=2, fat=1; i<=n; i++)fat *= i;fat *= i;
return fat;return fat;}}int main () {int main () {
int a, b, c;int a, b, c; printf ("Digite dois inteiros: ");printf ("Digite dois inteiros: ");
scanf ("%d%d", &a, &b);scanf ("%d%d", &a, &b); c = 5 + fat (a+b);c = 5 + fat (a+b);
printf ("\n\t5 + fat (%d + %d) = %d", a, b, c);printf ("\n\t5 + fat (%d + %d) = %d", a, b, c); printf ("\n\n"); system ("pause"); return 0;printf ("\n\n"); system ("pause"); return 0;}}
5a
2b
c
Alocação das variáveis de fat na memória
i fat
n (parâmetro)
Argumento:a+b = 5+2 =
7
![Page 16: CES-10 INTRODUÇÃO À COMPUTAÇÃO Capítulo VIII Subprogramação](https://reader035.vdocuments.pub/reader035/viewer/2022070508/570638641a28abb82390166c/html5/thumbnails/16.jpg)
#include <stdio.h>#include <stdio.h>#include <stdlib.h>#include <stdlib.h>int fat (int n) {int fat (int n) {
int i; int fat;int i; int fat;if (n < 0 || n > 12) fat = -1;if (n < 0 || n > 12) fat = -1;elseelse
for (i=2, fat=1; i<=n; i++)for (i=2, fat=1; i<=n; i++)fat *= i;fat *= i;
return fat;return fat;}}int main () {int main () {
int a, b, c;int a, b, c; printf ("Digite dois inteiros: ");printf ("Digite dois inteiros: ");
scanf ("%d%d", &a, &b);scanf ("%d%d", &a, &b); c = 5 + fat (a+b);c = 5 + fat (a+b);
printf ("\n\t5 + fat (%d + %d) = %d", a, b, c);printf ("\n\t5 + fat (%d + %d) = %d", a, b, c); printf ("\n\n"); system ("pause"); return 0;printf ("\n\n"); system ("pause"); return 0;}}
5a
2b
c
Passagem do argumento 7 para o parâmetro n
i fat
n (parâmetro)
Argumento:a+b = 5+2 =
7
![Page 17: CES-10 INTRODUÇÃO À COMPUTAÇÃO Capítulo VIII Subprogramação](https://reader035.vdocuments.pub/reader035/viewer/2022070508/570638641a28abb82390166c/html5/thumbnails/17.jpg)
#include <stdio.h>#include <stdio.h>#include <stdlib.h>#include <stdlib.h>int fat (int n) {int fat (int n) {
int i; int fat;int i; int fat;if (n < 0 || n > 12) fat = -1;if (n < 0 || n > 12) fat = -1;elseelse
for (i=2, fat=1; i<=n; i++)for (i=2, fat=1; i<=n; i++)fat *= i;fat *= i;
return fat;return fat;}}int main () {int main () {
int a, b, c;int a, b, c; printf ("Digite dois inteiros: ");printf ("Digite dois inteiros: ");
scanf ("%d%d", &a, &b);scanf ("%d%d", &a, &b); c = 5 + fat (a+b);c = 5 + fat (a+b);
printf ("\n\t5 + fat (%d + %d) = %d", a, b, c);printf ("\n\t5 + fat (%d + %d) = %d", a, b, c); printf ("\n\n"); system ("pause"); return 0;printf ("\n\n"); system ("pause"); return 0;}}
5a
2b
c
Passagem do argumento 7 para o parâmetro n
i fat
7n (parâmetro)
Argumento:a+b = 5+2 =
7
![Page 18: CES-10 INTRODUÇÃO À COMPUTAÇÃO Capítulo VIII Subprogramação](https://reader035.vdocuments.pub/reader035/viewer/2022070508/570638641a28abb82390166c/html5/thumbnails/18.jpg)
#include <stdio.h>#include <stdio.h>#include <stdlib.h>#include <stdlib.h>int fat (int n) {int fat (int n) {
int i; int fat;int i; int fat;if (n < 0 || n > 12) fat = -1;if (n < 0 || n > 12) fat = -1;elseelse
for (i=2, fat=1; i<=n; i++)for (i=2, fat=1; i<=n; i++)fat *= i;fat *= i;
return fat;return fat;}}int main () {int main () {
int a, b, c;int a, b, c; printf ("Digite dois inteiros: ");printf ("Digite dois inteiros: ");
scanf ("%d%d", &a, &b);scanf ("%d%d", &a, &b); c = 5 + fat (a+b);c = 5 + fat (a+b);
printf ("\n\t5 + fat (%d + %d) = %d", a, b, c);printf ("\n\t5 + fat (%d + %d) = %d", a, b, c); printf ("\n\n"); system ("pause"); return 0;printf ("\n\n"); system ("pause"); return 0;}}
5a
2b
c
Execução dos comandos de fat
i fat
7n (parâmetro)
![Page 19: CES-10 INTRODUÇÃO À COMPUTAÇÃO Capítulo VIII Subprogramação](https://reader035.vdocuments.pub/reader035/viewer/2022070508/570638641a28abb82390166c/html5/thumbnails/19.jpg)
#include <stdio.h>#include <stdio.h>#include <stdlib.h>#include <stdlib.h>int fat (int n) {int fat (int n) {
int i; int fat;int i; int fat;if (n < 0 || n > 12) fat = -1;if (n < 0 || n > 12) fat = -1;elseelse
for (i=2, fat=1; i<=n; i++)for (i=2, fat=1; i<=n; i++)fat *= i;fat *= i;
return fat;return fat;}}int main () {int main () {
int a, b, c;int a, b, c; printf ("Digite dois inteiros: ");printf ("Digite dois inteiros: ");
scanf ("%d%d", &a, &b);scanf ("%d%d", &a, &b); c = 5 + fat (a+b);c = 5 + fat (a+b);
printf ("\n\t5 + fat (%d + %d) = %d", a, b, c);printf ("\n\t5 + fat (%d + %d) = %d", a, b, c); printf ("\n\n"); system ("pause"); return 0;printf ("\n\n"); system ("pause"); return 0;}}
5a
2b
c
Execução dos comandos de fat
8i 5040
fat
7n (parâmetro)
![Page 20: CES-10 INTRODUÇÃO À COMPUTAÇÃO Capítulo VIII Subprogramação](https://reader035.vdocuments.pub/reader035/viewer/2022070508/570638641a28abb82390166c/html5/thumbnails/20.jpg)
#include <stdio.h>#include <stdio.h>#include <stdlib.h>#include <stdlib.h>int fat (int n) {int fat (int n) {
int i; int fat;int i; int fat;if (n < 0 || n > 12) fat = -1;if (n < 0 || n > 12) fat = -1;elseelse
for (i=2, fat=1; i<=n; i++)for (i=2, fat=1; i<=n; i++)fat *= i;fat *= i;
return fat;return fat;}}int main () {int main () {
int a, b, c;int a, b, c; printf ("Digite dois inteiros: ");printf ("Digite dois inteiros: ");
scanf ("%d%d", &a, &b);scanf ("%d%d", &a, &b); c = 5 + fat (a+b);c = 5 + fat (a+b);
printf ("\n\t5 + fat (%d + %d) = %d", a, b, c);printf ("\n\t5 + fat (%d + %d) = %d", a, b, c); printf ("\n\n"); system ("pause"); return 0;printf ("\n\n"); system ("pause"); return 0;}}
5a
2b
c
Execução do comando return
8i 5040
fat
7n (parâmetro)
![Page 21: CES-10 INTRODUÇÃO À COMPUTAÇÃO Capítulo VIII Subprogramação](https://reader035.vdocuments.pub/reader035/viewer/2022070508/570638641a28abb82390166c/html5/thumbnails/21.jpg)
#include <stdio.h>#include <stdio.h>#include <stdlib.h>#include <stdlib.h>int fat (int n) {int fat (int n) {
int i; int fat;int i; int fat;if (n < 0 || n > 12) fat = -1;if (n < 0 || n > 12) fat = -1;elseelse
for (i=2, fat=1; i<=n; i++)for (i=2, fat=1; i<=n; i++)fat *= i;fat *= i;
return fat;return fat;}}int main () {int main () {
int a, b, c;int a, b, c; printf ("Digite dois inteiros: ");printf ("Digite dois inteiros: ");
scanf ("%d%d", &a, &b);scanf ("%d%d", &a, &b); c = 5 + fat (a+b);c = 5 + fat (a+b);
printf ("\n\t5 + fat (%d + %d) = %d", a, b, c);printf ("\n\t5 + fat (%d + %d) = %d", a, b, c); printf ("\n\n"); system ("pause"); return 0;printf ("\n\n"); system ("pause"); return 0;}}
5a
2b
c
Cálculo do valor a retornar
8i 5040
fat
7n (parâmetro)
Valor a retornar:
fat = 5040
![Page 22: CES-10 INTRODUÇÃO À COMPUTAÇÃO Capítulo VIII Subprogramação](https://reader035.vdocuments.pub/reader035/viewer/2022070508/570638641a28abb82390166c/html5/thumbnails/22.jpg)
#include <stdio.h>#include <stdio.h>#include <stdlib.h>#include <stdlib.h>int fat (int n) {int fat (int n) {
int i; int fat;int i; int fat;if (n < 0 || n > 12) fat = -1;if (n < 0 || n > 12) fat = -1;elseelse
for (i=2, fat=1; i<=n; i++)for (i=2, fat=1; i<=n; i++)fat *= i;fat *= i;
return fat;return fat;}}int main () {int main () {
int a, b, c;int a, b, c; printf ("Digite dois inteiros: ");printf ("Digite dois inteiros: ");
scanf ("%d%d", &a, &b);scanf ("%d%d", &a, &b); c = 5 + fat (a+b);c = 5 + fat (a+b);
printf ("\n\t5 + fat (%d + %d) = %d", a, b, c);printf ("\n\t5 + fat (%d + %d) = %d", a, b, c); printf ("\n\n"); system ("pause"); return 0;printf ("\n\n"); system ("pause"); return 0;}}
5a
2b
c
Recepção do valor retornado
8i 5040
fat
7n (parâmetro)
Valor a retornar:
fat = 5040Valor
retornado:5040
![Page 23: CES-10 INTRODUÇÃO À COMPUTAÇÃO Capítulo VIII Subprogramação](https://reader035.vdocuments.pub/reader035/viewer/2022070508/570638641a28abb82390166c/html5/thumbnails/23.jpg)
#include <stdio.h>#include <stdio.h>#include <stdlib.h>#include <stdlib.h>int fat (int n) {int fat (int n) {
int i; int fat;int i; int fat;if (n < 0 || n > 12) fat = -1;if (n < 0 || n > 12) fat = -1;elseelse
for (i=2, fat=1; i<=n; i++)for (i=2, fat=1; i<=n; i++)fat *= i;fat *= i;
return fat;return fat;}}int main () {int main () {
int a, b, c;int a, b, c; printf ("Digite dois inteiros: ");printf ("Digite dois inteiros: ");
scanf ("%d%d", &a, &b);scanf ("%d%d", &a, &b); c = 5 + fat (a+b);c = 5 + fat (a+b);
printf ("\n\t5 + fat (%d + %d) = %d", a, b, c);printf ("\n\t5 + fat (%d + %d) = %d", a, b, c); printf ("\n\n"); system ("pause"); return 0;printf ("\n\n"); system ("pause"); return 0;}}
5a
2b
c
Desalocação das variáveis de fat
8i 5040
fat
7n (parâmetro)
Valor a retornar:
fat = 5040Valor
retornado:5040
![Page 24: CES-10 INTRODUÇÃO À COMPUTAÇÃO Capítulo VIII Subprogramação](https://reader035.vdocuments.pub/reader035/viewer/2022070508/570638641a28abb82390166c/html5/thumbnails/24.jpg)
#include <stdio.h>#include <stdio.h>#include <stdlib.h>#include <stdlib.h>int fat (int n) {int fat (int n) {
int i; int fat;int i; int fat;if (n < 0 || n > 12) fat = -1;if (n < 0 || n > 12) fat = -1;elseelse
for (i=2, fat=1; i<=n; i++)for (i=2, fat=1; i<=n; i++)fat *= i;fat *= i;
return fat;return fat;}}int main () {int main () {
int a, b, c;int a, b, c; printf ("Digite dois inteiros: ");printf ("Digite dois inteiros: ");
scanf ("%d%d", &a, &b);scanf ("%d%d", &a, &b); c = 5 + fat (a+b);c = 5 + fat (a+b);
printf ("\n\t5 + fat (%d + %d) = %d", a, b, c);printf ("\n\t5 + fat (%d + %d) = %d", a, b, c); printf ("\n\n"); system ("pause"); return 0;printf ("\n\n"); system ("pause"); return 0;}}
5a
2b
c
Cálculo de c = 5 + fat (a+b)
Valor retornado:
5040
5 + fat (a+b) = 5 + 5040 = 5045
![Page 25: CES-10 INTRODUÇÃO À COMPUTAÇÃO Capítulo VIII Subprogramação](https://reader035.vdocuments.pub/reader035/viewer/2022070508/570638641a28abb82390166c/html5/thumbnails/25.jpg)
#include <stdio.h>#include <stdio.h>#include <stdlib.h>#include <stdlib.h>int fat (int n) {int fat (int n) {
int i; int fat;int i; int fat;if (n < 0 || n > 12) fat = -1;if (n < 0 || n > 12) fat = -1;elseelse
for (i=2, fat=1; i<=n; i++)for (i=2, fat=1; i<=n; i++)fat *= i;fat *= i;
return fat;return fat;}}int main () {int main () {
int a, b, c;int a, b, c; printf ("Digite dois inteiros: ");printf ("Digite dois inteiros: ");
scanf ("%d%d", &a, &b);scanf ("%d%d", &a, &b); c = 5 + fat (a+b);c = 5 + fat (a+b);
printf ("\n\t5 + fat (%d + %d) = %d", a, b, c);printf ("\n\t5 + fat (%d + %d) = %d", a, b, c); printf ("\n\n"); system ("pause"); return 0;printf ("\n\n"); system ("pause"); return 0;}}
5a
2b
5045
c
Cálculo de c = 5 + fat (a+b)
Valor retornado:
5040
5 + fat (a+b) = 5 + 5040 = 5045
![Page 26: CES-10 INTRODUÇÃO À COMPUTAÇÃO Capítulo VIII Subprogramação](https://reader035.vdocuments.pub/reader035/viewer/2022070508/570638641a28abb82390166c/html5/thumbnails/26.jpg)
8.1.3 – Natureza dos subprogramas8.1.3 – Natureza dos subprogramas
Na literatura, subprogramas costumam Na literatura, subprogramas costumam receber os seguintes nomes:receber os seguintes nomes:
função, procedimento, sub-rotina, rotina, função, procedimento, sub-rotina, rotina, segmento, módulo, etc.segmento, módulo, etc.
Nesta disciplina, os nomes mais usados serão:Nesta disciplina, os nomes mais usados serão:
função, procedimento e módulofunção, procedimento e módulo
![Page 27: CES-10 INTRODUÇÃO À COMPUTAÇÃO Capítulo VIII Subprogramação](https://reader035.vdocuments.pub/reader035/viewer/2022070508/570638641a28abb82390166c/html5/thumbnails/27.jpg)
Na literatura, um Na literatura, um subprogramasubprograma é considerado é considerado uma uma funçãofunção, quando , quando produzir um valorproduzir um valor, , retornandoretornando-o ao módulo que o tiver chamado-o ao módulo que o tiver chamado
Essa Essa emissãoemissão é realizada através do comando é realizada através do comando returnreturn, a ser visto com mais detalhes logo , a ser visto com mais detalhes logo adianteadiante
Normalmente uma Normalmente uma chamada de funçãochamada de função aparece em aparece em expressõesexpressões
Por exemplo:Por exemplo:x = pow(c, d) / (a + fat(b));x = pow(c, d) / (a + fat(b));
![Page 28: CES-10 INTRODUÇÃO À COMPUTAÇÃO Capítulo VIII Subprogramação](https://reader035.vdocuments.pub/reader035/viewer/2022070508/570638641a28abb82390166c/html5/thumbnails/28.jpg)
x = pow(c, d) / (a + fat(b));x = pow(c, d) / (a + fat(b));
A A expressãoexpressão do lado direito tem chamadas para do lado direito tem chamadas para as funções as funções pow pow e e fatfat
A A primeiraprimeira pertence ao arquivo pertence ao arquivo math.hmath.h da da biblioteca da linguagem e a biblioteca da linguagem e a segundasegunda deve ser deve ser construída pelo programadorconstruída pelo programador
Ao serem executadas, elas Ao serem executadas, elas produzemproduzem cada qual cada qual um um valorvalor que é usado no que é usado no cálculocálculo da expressão da expressão
Neste mesmo comando, Neste mesmo comando, cc e e dd são os são os argumentosargumentos de chamada de de chamada de powpow e e b b é o é o argumentoargumento de de chamada de chamada de fatfat
![Page 29: CES-10 INTRODUÇÃO À COMPUTAÇÃO Capítulo VIII Subprogramação](https://reader035.vdocuments.pub/reader035/viewer/2022070508/570638641a28abb82390166c/html5/thumbnails/29.jpg)
Na literatura, um Na literatura, um subprogramasubprograma é considerado é considerado um um procedimentoprocedimento, quando , quando executar uma executar uma tarefatarefa relacionada com seus eventuais relacionada com seus eventuais argumentos, argumentos, não retornandonão retornando nenhum valor ao nenhum valor ao módulo que o tiver chamado módulo que o tiver chamado
Normalmente uma Normalmente uma chamada de procedimentochamada de procedimento é por si só um é por si só um comandocomando de uma linguagem de uma linguagem
Existem Existem procedimentosprocedimentos supridos pelas supridos pelas linguagenslinguagens e também aqueles a serem e também aqueles a serem programadosprogramados
Por exemplo:Por exemplo:printf (“a = %d, b = %d”, a, b); printf (“a = %d, b = %d”, a, b); Ordenar (V, n);Ordenar (V, n);
![Page 30: CES-10 INTRODUÇÃO À COMPUTAÇÃO Capítulo VIII Subprogramação](https://reader035.vdocuments.pub/reader035/viewer/2022070508/570638641a28abb82390166c/html5/thumbnails/30.jpg)
printf (“a = %d, b = %d”, a, b); printf (“a = %d, b = %d”, a, b); Ordenar (V, n);Ordenar (V, n);
A chamada do subprograma A chamada do subprograma printfprintf, , pertencente à biblioteca da linguagem, tem pertencente à biblioteca da linguagem, tem 3 3 argumentosargumentos: : “a = %d, b = %d”“a = %d, b = %d”, , aa, , bb
Sua principal finalidade é Sua principal finalidade é escrever na telaescrever na tela os os valores de valores de aa e e bb
A chamada do subprograma A chamada do subprograma OrdenarOrdenar, , construído pelo programador, tem o objetivo construído pelo programador, tem o objetivo de de ordenarordenar os elementos do vetor argumento os elementos do vetor argumento VV, cujo número de elementos é igual ao valor , cujo número de elementos é igual ao valor do argumento do argumento nn
![Page 31: CES-10 INTRODUÇÃO À COMPUTAÇÃO Capítulo VIII Subprogramação](https://reader035.vdocuments.pub/reader035/viewer/2022070508/570638641a28abb82390166c/html5/thumbnails/31.jpg)
printf (“a = %d, b = %d”, a, b); printf (“a = %d, b = %d”, a, b); Ordenar (V, n);Ordenar (V, n);
O subprograma O subprograma Ordenar Ordenar não retorna nenhum valornão retorna nenhum valor
Mas Mas printfprintf, como foi visto no Capítulo V, retorna o , como foi visto no Capítulo V, retorna o número de caracteresnúmero de caracteres escritos escritos
printfprintf, além de executar a tarefa de escrever, , além de executar a tarefa de escrever, retorna retorna um valorum valor
Sua natureza é Sua natureza é hibridahibrida, ou seja, é um , ou seja, é um procedimentoprocedimento e uma e uma função (scanf função (scanf também é híbridatambém é híbrida))
É uma função com É uma função com efeitos colateraisefeitos colaterais (escrever (escrever textos)textos)
Recomenda-seRecomenda-se fazer subprogramas fazer subprogramas híbridoshíbridos só em só em circunstâncias muito circunstâncias muito favoráveisfavoráveis
![Page 32: CES-10 INTRODUÇÃO À COMPUTAÇÃO Capítulo VIII Subprogramação](https://reader035.vdocuments.pub/reader035/viewer/2022070508/570638641a28abb82390166c/html5/thumbnails/32.jpg)
8.1.4 – Subprogramas em C8.1.4 – Subprogramas em C
Programa
Diretivas de pré-
processamentoDeclarações
globaisFunções
auxiliaresFunçãomain
Na Linguagem C, conforme já foi visto, todos os módulos de um programa são denominados funções
A função correspondente ao programa principal tem o nome de main
A função main tem presença obrigatória em qualquer programa
As declarações globais estão fora do escopo de qualquer função
![Page 33: CES-10 INTRODUÇÃO À COMPUTAÇÃO Capítulo VIII Subprogramação](https://reader035.vdocuments.pub/reader035/viewer/2022070508/570638641a28abb82390166c/html5/thumbnails/33.jpg)
Nas linguagens tradicionais de programação, um Nas linguagens tradicionais de programação, um subprogramasubprograma costuma ser dividido em 2 partes: costuma ser dividido em 2 partes: cabeçalhocabeçalho e e corpocorpo
Cabeçalho:Cabeçalho: tem informações sobre o tem informações sobre o nomenome do do subprograma, o subprograma, o tipotipo do valor por ele do valor por ele retornadoretornado e e o tipo de seus eventuais o tipo de seus eventuais parâmetrosparâmetros
Corpo:Corpo: contém as contém as declaraçõesdeclarações e os e os comandoscomandos do do subprograma subprograma
Há linguagens que permitem que no Há linguagens que permitem que no corpocorpo dos dos subprogramas sejam colocados subprogramas sejam colocados outros outros subprogramassubprogramas, considerados como que , considerados como que embutidosembutidos nos primeiros nos primeiros
Forma-se assim um Forma-se assim um aninhamentoaninhamento de de subprogramassubprogramas
![Page 34: CES-10 INTRODUÇÃO À COMPUTAÇÃO Capítulo VIII Subprogramação](https://reader035.vdocuments.pub/reader035/viewer/2022070508/570638641a28abb82390166c/html5/thumbnails/34.jpg)
Exemplo: esqueleto de um programa em Pascal
Cabeçalho do programa principal Declarações
BeginComandos do programa principal
End
Cabeçalho do subprograma S1DeclaraçõesBegin comandos de S1 End
Cabeçalho do subprograma S2Declarações
Begin comandos de S2 End
Cabeçalho do subprograma S3DeclaraçõesBegin comandos de S3 End
Cabeçalho do subprograma S4DeclaraçõesBegin comandos de S4 End
![Page 35: CES-10 INTRODUÇÃO À COMPUTAÇÃO Capítulo VIII Subprogramação](https://reader035.vdocuments.pub/reader035/viewer/2022070508/570638641a28abb82390166c/html5/thumbnails/35.jpg)
A Linguagem C A Linguagem C não admite aninhamentosnão admite aninhamentos de de subprogramas subprogramas
Forma geral de uma função em C:Forma geral de uma função em C:
Tipo Nome (Lista de Parâmetros)Tipo Nome (Lista de Parâmetros){ Declarações Comandos }{ Declarações Comandos }
O O corpocorpo fica entre as chaves fica entre as chaves “{“{ e e }”}” e o e o cabeçalhocabeçalho fora delasfora delas
TipoTipo é o tipo do valor retornado, opcional (default: é o tipo do valor retornado, opcional (default: intint))
NomeNome é o nome da função, obrigatório é o nome da função, obrigatório
Lista de ParâmetrosLista de Parâmetros é uma lista de declarações de é uma lista de declarações de seus eventuais parâmetrosseus eventuais parâmetros
![Page 36: CES-10 INTRODUÇÃO À COMPUTAÇÃO Capítulo VIII Subprogramação](https://reader035.vdocuments.pub/reader035/viewer/2022070508/570638641a28abb82390166c/html5/thumbnails/36.jpg)
Tipo Nome (Lista de Parâmetros)Tipo Nome (Lista de Parâmetros){ Declarações Comandos }{ Declarações Comandos }
Uma função pode não ter Uma função pode não ter nenhum parâmetronenhum parâmetro, mas a , mas a colocação dos parêntesis colocação dos parêntesis “(”“(” e e “)”“)” é obrigatória é obrigatória
Subprogramas com natureza de Subprogramas com natureza de procedimentoprocedimento devem devem ser declaradas como funções do tipo ser declaradas como funções do tipo voidvoid, ou seja, , ou seja, como funções que como funções que não retornamnão retornam nenhum resultado nenhum resultado
Em outras linguagens, usa-se Em outras linguagens, usa-se palavras reservadaspalavras reservadas antes dos nomes dos subprogramas, para especificar antes dos nomes dos subprogramas, para especificar sua sua naturezanatureza
Em Em PascalPascal, usam-se as palavras , usam-se as palavras functionfunction e e procedureprocedureEm Fortran, Em Fortran, functionfunction e e subroutinesubroutine
![Page 37: CES-10 INTRODUÇÃO À COMPUTAÇÃO Capítulo VIII Subprogramação](https://reader035.vdocuments.pub/reader035/viewer/2022070508/570638641a28abb82390166c/html5/thumbnails/37.jpg)
8.1.5 – Retorno de uma função em C8.1.5 – Retorno de uma função em C
O fluxo de execução O fluxo de execução retorna de uma funçãoretorna de uma função ao módulo que a chamou, por 2 maneiras ao módulo que a chamou, por 2 maneiras distintas: distintas:
retorno natural retorno natural ee retorno explícito retorno explícito
No No retorno naturalretorno natural, isso ocorre após a , isso ocorre após a execução do execução do último comandoúltimo comando do corpo da do corpo da função, desde que ele não seja um comando função, desde que ele não seja um comando gotogoto
No No retorno explícitoretorno explícito, ele acontece através da , ele acontece através da execução do comando execução do comando returnreturn
![Page 38: CES-10 INTRODUÇÃO À COMPUTAÇÃO Capítulo VIII Subprogramação](https://reader035.vdocuments.pub/reader035/viewer/2022070508/570638641a28abb82390166c/html5/thumbnails/38.jpg)
O comando O comando returnreturn pode vir ou não pode vir ou não acompanhadoacompanhado de uma de uma expressãoexpressão ou de uma ou de uma variávelvariável
Quando Quando acompanhadoacompanhado de uma de uma expressãoexpressão, , seu valor é calculado e enviado ao módulo que seu valor é calculado e enviado ao módulo que chamou a funçãochamou a função
Quando Quando acompanhadoacompanhado de uma de uma variávelvariável, seu , seu valor é enviado ao módulo que chamou a valor é enviado ao módulo que chamou a funçãofunção
Quando Quando não acompanhadonão acompanhado, há apenas , há apenas transferênciatransferência do fluxo de do fluxo de execuçãoexecução
![Page 39: CES-10 INTRODUÇÃO À COMPUTAÇÃO Capítulo VIII Subprogramação](https://reader035.vdocuments.pub/reader035/viewer/2022070508/570638641a28abb82390166c/html5/thumbnails/39.jpg)
Exemplos de instâncias do comando Exemplos de instâncias do comando returnreturn::
return; return a; return ++a; return (a+b);return; return a; return ++a; return (a+b);
Numa função em C destinada a Numa função em C destinada a retornar retornar valorvalor, os comandos , os comandos returnreturn devem ser devem ser acompanhados de acompanhados de expressõesexpressões ou de ou de variáveisvariáveis
Numa função Numa função voidvoid, não deve haver esse , não deve haver esse acompanhamentoacompanhamento
![Page 40: CES-10 INTRODUÇÃO À COMPUTAÇÃO Capítulo VIII Subprogramação](https://reader035.vdocuments.pub/reader035/viewer/2022070508/570638641a28abb82390166c/html5/thumbnails/40.jpg)
8.1.6 – Utilidades da subprogramação8.1.6 – Utilidades da subprogramação
São várias as São várias as utilidades da subprogramaçãoutilidades da subprogramação, , dentre as quais podem ser citadas:dentre as quais podem ser citadas:
EliminaçãoEliminação da necessidade de da necessidade de repetição de repetição de códigocódigo
Auxilio na Auxilio na metodologiametodologia top-downtop-down para o para o desenvolvimento de programasdesenvolvimento de programas
ModularizaçãoModularização de programas de programas
Reaproveitamento do códigoReaproveitamento do código de outros programas de outros programas
Implementação de Implementação de definições matemáticas definições matemáticas recursivasrecursivas
![Page 41: CES-10 INTRODUÇÃO À COMPUTAÇÃO Capítulo VIII Subprogramação](https://reader035.vdocuments.pub/reader035/viewer/2022070508/570638641a28abb82390166c/html5/thumbnails/41.jpg)
Eliminação da necessidade de repetição de Eliminação da necessidade de repetição de códigocódigo
Programas que executam as Programas que executam as mesmas operaçõesmesmas operações para diferentes para diferentes conjuntos de valoresconjuntos de valores podem ter podem ter um um subprogramasubprograma que as executa para um que as executa para um conjunto genéricoconjunto genérico
Exemplo: Exemplo: no programa da soma e multiplicação de no programa da soma e multiplicação de polinômiospolinômios
Há 2 trechos muito semelhantes para Há 2 trechos muito semelhantes para lerler os dados os dados dos polinômios dos polinômios P1P1 e e P2P2 e 4 para e 4 para escrever escrever os os polinômios polinômios P1P1, , P2P2, , PSPS e e PMPM
Pode-se fazer um só Pode-se fazer um só subprogramasubprograma para para lerler e e outro para outro para escreverescrever o conteúdo de um o conteúdo de um polinômio polinômio genéricogenérico
![Page 42: CES-10 INTRODUÇÃO À COMPUTAÇÃO Capítulo VIII Subprogramação](https://reader035.vdocuments.pub/reader035/viewer/2022070508/570638641a28abb82390166c/html5/thumbnails/42.jpg)
Exemplo: Exemplo: combinações de combinações de m m elementos tomados elementos tomados n n a a nn
Fórmula: Fórmula:
Exige-se o cálculo do Exige-se o cálculo do fatorialfatorial de 3 expressões: de 3 expressões: mm, , m-nm-n e e nn
Assim o programa pode ter uma função Assim o programa pode ter uma função fatfat para o para o cálculo do cálculo do fatorialfatorial de seu de seu parâmetroparâmetro
A função A função mainmain chama chama fatfat três vezes, passando três vezes, passando como como argumentoargumento, em cada chamada, cada uma , em cada chamada, cada uma das das 3 expressões 3 expressões citadascitadasA seguir, um programa
completo
![Page 43: CES-10 INTRODUÇÃO À COMPUTAÇÃO Capítulo VIII Subprogramação](https://reader035.vdocuments.pub/reader035/viewer/2022070508/570638641a28abb82390166c/html5/thumbnails/43.jpg)
#include <stdio.h>#include <stdio.h>#include <conio.h>#include <conio.h>#include <stdlib.h>#include <stdlib.h>
int fat (int n) {int fat (int n) {int i; int fat;int i; int fat;if (n < 0 || n > 12) fat = -1;if (n < 0 || n > 12) fat = -1;elseelse
for (i=2, fat=1; i<=n; i++)for (i=2, fat=1; i<=n; i++)fat *= i;fat *= i;
return fat;return fat;}}
![Page 44: CES-10 INTRODUÇÃO À COMPUTAÇÃO Capítulo VIII Subprogramação](https://reader035.vdocuments.pub/reader035/viewer/2022070508/570638641a28abb82390166c/html5/thumbnails/44.jpg)
int main () {int main () {char c; int m, n, comb;char c; int m, n, comb;do {do {printf ("Combinacao de m elementos tomados n a n? (s/n): ");printf ("Combinacao de m elementos tomados n a n? (s/n): ");do c = getche(); while (c!='s' && c!='n');do c = getche(); while (c!='s' && c!='n');if (c == 's') {if (c == 's') {printf ("\n\n\tm: "); scanf ("%d", &m);printf ("\n\n\tm: "); scanf ("%d", &m);printf ("\tn: "); scanf ("%d", &n);printf ("\tn: "); scanf ("%d", &n);if (m <= 0 || m > 12 || n <= 0 || m < n)if (m <= 0 || m > 12 || n <= 0 || m < n)printf ("\n\tDados incompativeis\n\n");printf ("\n\tDados incompativeis\n\n");else {else {
comb = fat(m) / (fat(m-n) * fat(n));comb = fat(m) / (fat(m-n) * fat(n));printf ("\n\tNum. de combinacoes: %d\n\n", comb);printf ("\n\tNum. de combinacoes: %d\n\n", comb);} } }}} while (c == 's');} while (c == 's');printf ("\n\n"); system ("pause"); printf ("\n\n"); system ("pause"); return 0;return 0; } }
Obs.: as funções main e fat têm variáveis de mesmo nome: n
Tratam-se de 2 variáveis distintas
![Page 45: CES-10 INTRODUÇÃO À COMPUTAÇÃO Capítulo VIII Subprogramação](https://reader035.vdocuments.pub/reader035/viewer/2022070508/570638641a28abb82390166c/html5/thumbnails/45.jpg)
Auxilio na metodologia top-down para o Auxilio na metodologia top-down para o desenvolvimento de programasdesenvolvimento de programas
Conforme visto anteriormente, a programação Conforme visto anteriormente, a programação de uma de uma tarefa complexatarefa complexa pode ser pode ser decompostadecomposta num conjunto de num conjunto de tarefas menorestarefas menores
Aquelas que apresentarem certo grau de Aquelas que apresentarem certo grau de complexidadecomplexidade também podem ser também podem ser decompostasdecompostas da mesma maneira, até que se da mesma maneira, até que se obtenha um conjunto de tarefas triviaisobtenha um conjunto de tarefas triviais
Essa é a idéia básica da Essa é a idéia básica da metodologiametodologia top-top-downdown para o desenvolvimento de programas para o desenvolvimento de programas
![Page 46: CES-10 INTRODUÇÃO À COMPUTAÇÃO Capítulo VIII Subprogramação](https://reader035.vdocuments.pub/reader035/viewer/2022070508/570638641a28abb82390166c/html5/thumbnails/46.jpg)
Nessa idéia, cada Nessa idéia, cada tarefatarefa suficientemente suficientemente complexacomplexa pode ser realizada por um pode ser realizada por um subprograma específicosubprograma específico
Os Os comandoscomandos desse subprograma se desse subprograma se constituem na constituem na decomposiçãodecomposição da mesma tarefa da mesma tarefa em tarefas menoresem tarefas menores
O O Capítulo XCapítulo X desta disciplina apresenta o desta disciplina apresenta o desenvolvimento top-downdesenvolvimento top-down de programas de programas auxiliado por auxiliado por subprogramassubprogramas
![Page 47: CES-10 INTRODUÇÃO À COMPUTAÇÃO Capítulo VIII Subprogramação](https://reader035.vdocuments.pub/reader035/viewer/2022070508/570638641a28abb82390166c/html5/thumbnails/47.jpg)
Modularização de programasModularização de programas
É o É o isolamentoisolamento de trabalhos bem de trabalhos bem específicosespecíficos em em módulosmódulos ou ou subprogramassubprogramas destinados destinados exclusivamente para esse fim; Exemplos:exclusivamente para esse fim; Exemplos:
Programas bem modularizados proporcionam ao Programas bem modularizados proporcionam ao projetista de software código mais fácil de ser projetista de software código mais fácil de ser compreendido e corrigidocompreendido e corrigido
Cálculo de fatorial
Cálculo de uma integral
Resolução de sistemas de equações
Ordenação de um vetor
Procura de um elemento em um vetor
Inserção de um elemento em um vetor
Multiplicação de matrizes
Inversão de matrizes
![Page 48: CES-10 INTRODUÇÃO À COMPUTAÇÃO Capítulo VIII Subprogramação](https://reader035.vdocuments.pub/reader035/viewer/2022070508/570638641a28abb82390166c/html5/thumbnails/48.jpg)
Reaproveitamento do código de outros programasReaproveitamento do código de outros programas
FunçõesFunções desenvolvidas para elaborar um desenvolvidas para elaborar um determinado determinado programaprograma podem ser podem ser utilizadas em outros utilizadas em outros programasprogramas
Por exemplo, num programa para resolver Por exemplo, num programa para resolver vários vários sistemas de equações linearessistemas de equações lineares pode-se elaborar uma pode-se elaborar uma função que resolva um função que resolva um sistema genérico de equações sistema genérico de equações lineareslineares
Essa função pode ser usada por programas para Essa função pode ser usada por programas para resolver sistemas de resolver sistemas de equações não-linearesequações não-lineares, para , para fazer fazer ajuste de curvasajuste de curvas e para auxiliar a resolução de e para auxiliar a resolução de equações diferenciais parciaisequações diferenciais parciais
Assim, pode-se organizar uma Assim, pode-se organizar uma bibliotecabiblioteca de de subprogramas, e usá-los em subprogramas, e usá-los em novos projetosnovos projetos, conforme , conforme a necessidadea necessidade
![Page 49: CES-10 INTRODUÇÃO À COMPUTAÇÃO Capítulo VIII Subprogramação](https://reader035.vdocuments.pub/reader035/viewer/2022070508/570638641a28abb82390166c/html5/thumbnails/49.jpg)
IImplementação de definições matemáticas mplementação de definições matemáticas recursivasrecursivas
RecursividadeRecursividade é um expediente muito usado é um expediente muito usado para se estabelecer certas para se estabelecer certas definições definições matemáticasmatemáticas
Por exemplo, Por exemplo, potenciaçãopotenciação, cálculo de , cálculo de fatoriaisfatoriais e de e de mdcmdc podem ser expressos podem ser expressos usando respectivamente as seguintes usando respectivamente as seguintes definições recursivasdefinições recursivas::
![Page 50: CES-10 INTRODUÇÃO À COMPUTAÇÃO Capítulo VIII Subprogramação](https://reader035.vdocuments.pub/reader035/viewer/2022070508/570638641a28abb82390166c/html5/thumbnails/50.jpg)
As atuais linguagens de programação admitem As atuais linguagens de programação admitem que um que um subprograma chame a si própriosubprograma chame a si próprio, o que , o que possibilita a implementação de possibilita a implementação de definições definições recursivasrecursivas
Exemplo: Exemplo: cálculo cálculo recursivo de fatorialrecursivo de fatorial
É claro que, É claro que, sem subprogramaçãosem subprogramação isso seria isso seria impossívelimpossível
Devido a sua grande Devido a sua grande importânciaimportância, , recursividaderecursividade é vista num dos tópicos deste capítuloé vista num dos tópicos deste capítulo
int fat (int n) {int f;if (n < 0) f = -1;else if (n <= 1) f = 1;else f = n * fat(n - 1);return f;
}
![Page 51: CES-10 INTRODUÇÃO À COMPUTAÇÃO Capítulo VIII Subprogramação](https://reader035.vdocuments.pub/reader035/viewer/2022070508/570638641a28abb82390166c/html5/thumbnails/51.jpg)
Capítulo VIII – Capítulo VIII – SubprogramaçãoSubprogramação
8.1 – Introdução8.1 – Introdução8.2 – Escopo de validade de declarações8.2 – Escopo de validade de declarações8.3 – Parâmetros e passagem de 8.3 – Parâmetros e passagem de
argumentosargumentos8.4 – Prototipação de subprogramas8.4 – Prototipação de subprogramas8.5 – Classes de alocação8.5 – Classes de alocação8.6 – Recursividade8.6 – Recursividade
![Page 52: CES-10 INTRODUÇÃO À COMPUTAÇÃO Capítulo VIII Subprogramação](https://reader035.vdocuments.pub/reader035/viewer/2022070508/570638641a28abb82390166c/html5/thumbnails/52.jpg)
8.2 – Escopo de Validade de 8.2 – Escopo de Validade de DeclaraçõesDeclarações
8.2.1 – Declarações locais e globais8.2.1 – Declarações locais e globais
Módulo XDeclaração de V
Módulo W
Módulo Y
Declaração local a um módulo ou subprograma é aquela feita no corpo desse módulo
Exemplo: a declaração de V é local ao módulo X
Uma referência à variável V só é reconhecida pelo compilador, se for feita no corpo do módulo X
O corpo de X é o escopo de validade de V
Módulo XDeclaração de V
![Page 53: CES-10 INTRODUÇÃO À COMPUTAÇÃO Capítulo VIII Subprogramação](https://reader035.vdocuments.pub/reader035/viewer/2022070508/570638641a28abb82390166c/html5/thumbnails/53.jpg)
Em Pascal, o escopo de validade de um identificador declarado localmente a um módulo abrange todos os subprogramas nele embutidos
Exemplo: o escopo de validade de V abrange os módulos W e Y
A Linguagem C não tem aninhamentos de módulos mas tem aninhamentos de blocos
Blocos serão vistos logo a seguir
Módulo XDeclaração de V
Módulo W
Módulo Y
![Page 54: CES-10 INTRODUÇÃO À COMPUTAÇÃO Capítulo VIII Subprogramação](https://reader035.vdocuments.pub/reader035/viewer/2022070508/570638641a28abb82390166c/html5/thumbnails/54.jpg)
Módulo W
Módulo Y
Declaração global é aquela feita fora do corpo de qualquer módulo ou subprograma
O escopo de validade de um identificador declarado globalmente abrange todo o trecho de programa após sua declaração
Exemplos:
1)O escopo de validade de V abrange os módulos W, X e Y
2)O escopo de validade de A abrange os módulos X e Y
Módulo X
Declaração de V
Declaração de A
![Page 55: CES-10 INTRODUÇÃO À COMPUTAÇÃO Capítulo VIII Subprogramação](https://reader035.vdocuments.pub/reader035/viewer/2022070508/570638641a28abb82390166c/html5/thumbnails/55.jpg)
Em Pascal, as declarações do programa principal são globais
Cabeçalho do programa principal Declarações
BeginComandos do programa
principalEnd
Cabeçalho do subprograma S1DeclaraçõesBegin comandos de S1 EndCabeçalho do subprograma S2Declarações
Begin comandos de S2 End
Cabeçalho do subprograma S3DeclaraçõesBegin comandos de S3 EndCabeçalho do subprograma S4DeclaraçõesBegin comandos de S4 End
![Page 56: CES-10 INTRODUÇÃO À COMPUTAÇÃO Capítulo VIII Subprogramação](https://reader035.vdocuments.pub/reader035/viewer/2022070508/570638641a28abb82390166c/html5/thumbnails/56.jpg)
Um Um identificadoridentificador pode ser pode ser declarado mais declarado mais de uma vezde uma vez, desde que seus , desde que seus escopos de escopos de validadevalidade sejam sejam diferentesdiferentes
Exemplo: Exemplo: variáveis de mesmo nome:variáveis de mesmo nome:#include <stdio.h>#include <stdlib.h>int a = 33;void sss () { int b = 88; printf ("sss : a = %d; b = %d;\n", a, b);}int main () { int a = 77, b = 55; printf ("main 1: a = %d; b = %d;\n", a, b); sss (); printf ("main 2: a = %d; b = %d;\n", a, b); printf ("\n\n"); system ("pause"); return 0;}
![Page 57: CES-10 INTRODUÇÃO À COMPUTAÇÃO Capítulo VIII Subprogramação](https://reader035.vdocuments.pub/reader035/viewer/2022070508/570638641a28abb82390166c/html5/thumbnails/57.jpg)
#include <stdio.h>#include <stdlib.h>int a = 33;void sss () { int b = 88; printf ("sss : a = %d; b = %d;\n", a, b);}int main () { int a = 77, b = 55; printf ("main 1: a = %d; b = %d;\n", a, b); sss (); printf ("main 2: a = %d; b = %d;\n", a, b); printf ("\n\n"); system ("pause"); return 0;}
main 1: a = 77; b = 55;sss : a = 33; b = 88;main 2: a = 77; b = 55;
Digite algo para encerrar:
ResultadoEm sss, b é a local de sss e a é a globalEm main, b é a local de main e a é a local de main
Em main, a variável global a não pode ser referenciada Ela fica ofuscada pela variável local a
![Page 58: CES-10 INTRODUÇÃO À COMPUTAÇÃO Capítulo VIII Subprogramação](https://reader035.vdocuments.pub/reader035/viewer/2022070508/570638641a28abb82390166c/html5/thumbnails/58.jpg)
8.2.2 – Blocos8.2.2 – Blocos
Em C, Em C, blocobloco é um é um comando compostocomando composto contendo contendo declaraçõesdeclarações em seu início em seu início
Exemplo: {int a, b = 5; a = 4*b + 2;}Exemplo: {int a, b = 5; a = 4*b + 2;}
Então o Então o corpo de uma função é um blococorpo de uma função é um bloco
BlocosBlocos podem aparecer podem aparecer embutidos embutidos no corpo de no corpo de uma funçãouma função
Blocos Blocos podem aparecer podem aparecer embutidos em outros embutidos em outros blocosblocos
A A Linguagem CLinguagem C não permite aninhamentos de não permite aninhamentos de funções mas permite funções mas permite aninhamentos de blocosaninhamentos de blocos
O escopo de validade de um identificador declarado num bloco é o próprio bloco
![Page 59: CES-10 INTRODUÇÃO À COMPUTAÇÃO Capítulo VIII Subprogramação](https://reader035.vdocuments.pub/reader035/viewer/2022070508/570638641a28abb82390166c/html5/thumbnails/59.jpg)
#include <stdio.h>#include <stdio.h>#include <stdlib.h>#include <stdlib.h>int main ()int main () { {
int a = 1; printf ("main 1 : a = %4d;\n", a);int a = 1; printf ("main 1 : a = %4d;\n", a);{{ //// bloco1bloco1int a = 10; printf ("bloco1 1: a = %4d;\n", a);int a = 10; printf ("bloco1 1: a = %4d;\n", a);{{ //// bloco2bloco2int a = 200; printf ("bloco2 : a = %4d;\n", a);int a = 200; printf ("bloco2 : a = %4d;\n", a);}}a++; printf ("bloco1 2: a = %4d;\n", a);a++; printf ("bloco1 2: a = %4d;\n", a);}}a++; printf ("main 2 : a = %4d;\n", a);a++; printf ("main 2 : a = %4d;\n", a);{{ //// bloco3bloco3int a = 30; printf ("bloco3 1: a = %4d;\n", a);int a = 30; printf ("bloco3 1: a = %4d;\n", a);{{ //// bloco4bloco4int a = 400; printf ("bloco4 : a = %4d;\n", a);int a = 400; printf ("bloco4 : a = %4d;\n", a);}}a++; printf ("bloco3 2: a = %4d;\n", a);a++; printf ("bloco3 2: a = %4d;\n", a);}}a++; printf ("main 3 : a = %4d;\n", a);a++; printf ("main 3 : a = %4d;\n", a);
printf ("\n\n"); system ("pause"); return 0;printf ("\n\n"); system ("pause"); return 0;}}
Exemplo: aninhamento de blocos
main 1 : a = 1;bloco1 1: a = 10;bloco2 : a = 200;bloco1 2: a = 11;main 2 : a = 2;bloco3 1: a = 30;bloco4 : a = 400;bloco3 2: a = 31;main 3 : a = 3;
Pressione ...
Resultado
![Page 60: CES-10 INTRODUÇÃO À COMPUTAÇÃO Capítulo VIII Subprogramação](https://reader035.vdocuments.pub/reader035/viewer/2022070508/570638641a28abb82390166c/html5/thumbnails/60.jpg)
Dois blocos são paralelos Dois blocos são paralelos quando embutidos num quando embutidos num terceiro, não sendo terceiro, não sendo nenhum deles embutido nenhum deles embutido em nenhum outro bloco em nenhum outro bloco a não ser nesse terceiro a não ser nesse terceiro e naqueles blocos onde e naqueles blocos onde esse terceiro estiver esse terceiro estiver embutidoembutido
Blocos paralelos: B1 || Blocos paralelos: B1 || B2, B3 || B4B2, B3 || B4
B1 e B3 não são B1 e B3 não são paralelos; B1 e B4 paralelos; B1 e B4 também nãotambém não
Em C, funções são Em C, funções são escritas em paralelo, escritas em paralelo, pois estão embutidas pois estão embutidas somente no corpo do somente no corpo do programa.programa.
Função main DeclaraçõesComandos
Comandos
Bloco B1DeclaraçõesComandos
Bloco B2Declarações Comandos
Comandos
Comandos
Bloco B3DeclaraçõesComandos
Bloco B4DeclaraçõesComandos
![Page 61: CES-10 INTRODUÇÃO À COMPUTAÇÃO Capítulo VIII Subprogramação](https://reader035.vdocuments.pub/reader035/viewer/2022070508/570638641a28abb82390166c/html5/thumbnails/61.jpg)
8.2.3 – Variáveis automáticas8.2.3 – Variáveis automáticas
Variável automática:Variável automática: variável local que só é variável local que só é alocadaalocada na memória quando seu na memória quando seu bloco de bloco de declaraçãodeclaração começa a ser começa a ser executadoexecutado
Ela é Ela é desalocada no finaldesalocada no final da execução desse da execução desse bloco bloco
Caso tal bloco Caso tal bloco volte a ser executadovolte a ser executado, nova , nova alocação para ela é feita, mas seu alocação para ela é feita, mas seu valorvalor no final no final da execução da execução anterioranterior é é perdidoperdido
Todas as Todas as variáveis locaisvariáveis locais dos programas dos programas apresentados até aqui são apresentados até aqui são automáticasautomáticas
![Page 62: CES-10 INTRODUÇÃO À COMPUTAÇÃO Capítulo VIII Subprogramação](https://reader035.vdocuments.pub/reader035/viewer/2022070508/570638641a28abb82390166c/html5/thumbnails/62.jpg)
Variáveis Variáveis locais não-automáticaslocais não-automáticas são estudadas são estudadas mais adiante neste capítulomais adiante neste capítulo
Uma Uma variável global não é automáticavariável global não é automática pois fica pois fica alocada durante alocada durante toda execuçãotoda execução do programa do programa
Em C, pode-se usar a palavra reservada Em C, pode-se usar a palavra reservada autoauto para tornar para tornar explícitoexplícito que uma ou várias variáveis que uma ou várias variáveis são são automáticasautomáticas
Se a seguinte declaração for localSe a seguinte declaração for localint a, b;int a, b;
então ela equivale a então ela equivale a auto int a, b;auto int a, b;
A seguir, um programa com várias variáveis automáticas
![Page 63: CES-10 INTRODUÇÃO À COMPUTAÇÃO Capítulo VIII Subprogramação](https://reader035.vdocuments.pub/reader035/viewer/2022070508/570638641a28abb82390166c/html5/thumbnails/63.jpg)
#include <stdio.h>#include <stdio.h>#include <stdlib.h>#include <stdlib.h>int a = 1;int a = 1;void ff ( ) {void ff ( ) {
int c, x;int c, x;printf ("Ponto 4: a = %5d; c = %13d; x = %13d;\n", a, c, x);printf ("Ponto 4: a = %5d; c = %13d; x = %13d;\n", a, c, x);c = 11; x = 22; a = 33;c = 11; x = 22; a = 33;printf ("Ponto 5: a = %5d; c = %13d; x = %13d;\n", a, c, x);printf ("Ponto 5: a = %5d; c = %13d; x = %13d;\n", a, c, x);
}}int main ( ) {int main ( ) {
int b, c;int b, c;printf ("Ponto 0: a = %5d; b = %13d; c = %13d;\n", a, b, c);printf ("Ponto 0: a = %5d; b = %13d; c = %13d;\n", a, b, c);b = 7; c = 9;b = 7; c = 9;printf ("Ponto 1: a = %5d; b = %13d; c = %13d;\n", a, b, c);printf ("Ponto 1: a = %5d; b = %13d; c = %13d;\n", a, b, c);{{ /* Bloco bb *//* Bloco bb */
int a;int a;printf ("Ponto 2: a = %5d; b = %13d; c = %13d;\n", a, b, c);printf ("Ponto 2: a = %5d; b = %13d; c = %13d;\n", a, b, c);a = 5;a = 5;printf ("Ponto 3: a = %5d; b = %13d; c = %13d;\n", a, b, c);printf ("Ponto 3: a = %5d; b = %13d; c = %13d;\n", a, b, c);ff ( );ff ( );
}}printf ("Ponto 6: a = %5d; b = %13d; c = %13d;\n", a, b, c);printf ("Ponto 6: a = %5d; b = %13d; c = %13d;\n", a, b, c);
printf ("\n\n"); system ("pause"); return 0;printf ("\n\n"); system ("pause"); return 0;}}
b
main
c a
bb
c
ff
xa
global
1
Iniciar a execução
![Page 64: CES-10 INTRODUÇÃO À COMPUTAÇÃO Capítulo VIII Subprogramação](https://reader035.vdocuments.pub/reader035/viewer/2022070508/570638641a28abb82390166c/html5/thumbnails/64.jpg)
#include <stdio.h>#include <stdio.h>#include <stdlib.h>#include <stdlib.h>int a = 1;int a = 1;void ff ( ) {void ff ( ) {
int c, x;int c, x;printf ("Ponto 4: a = %5d; c = %13d; x = %13d;\n", a, c, x);printf ("Ponto 4: a = %5d; c = %13d; x = %13d;\n", a, c, x);c = 11; x = 22; a = 33;c = 11; x = 22; a = 33;printf ("Ponto 5: a = %5d; c = %13d; x = %13d;\n", a, c, x);printf ("Ponto 5: a = %5d; c = %13d; x = %13d;\n", a, c, x);
}}int main ( ) {int main ( ) {
int b, c;int b, c;printf ("Ponto 0: a = %5d; b = %13d; c = %13d;\n", a, b, c);printf ("Ponto 0: a = %5d; b = %13d; c = %13d;\n", a, b, c);b = 7; c = 9;b = 7; c = 9;printf ("Ponto 1: a = %5d; b = %13d; c = %13d;\n", a, b, c);printf ("Ponto 1: a = %5d; b = %13d; c = %13d;\n", a, b, c);{{ /* Bloco bb *//* Bloco bb */
int a;int a;printf ("Ponto 2: a = %5d; b = %13d; c = %13d;\n", a, b, c);printf ("Ponto 2: a = %5d; b = %13d; c = %13d;\n", a, b, c);a = 5;a = 5;printf ("Ponto 3: a = %5d; b = %13d; c = %13d;\n", a, b, c);printf ("Ponto 3: a = %5d; b = %13d; c = %13d;\n", a, b, c);ff ( );ff ( );
}}printf ("Ponto 6: a = %5d; b = %13d; c = %13d;\n", a, b, c);printf ("Ponto 6: a = %5d; b = %13d; c = %13d;\n", a, b, c);
printf ("\n\n"); system ("pause"); return 0;printf ("\n\n"); system ("pause"); return 0;}}
b
main
c a
bb
c
ff
xa
global
1
![Page 65: CES-10 INTRODUÇÃO À COMPUTAÇÃO Capítulo VIII Subprogramação](https://reader035.vdocuments.pub/reader035/viewer/2022070508/570638641a28abb82390166c/html5/thumbnails/65.jpg)
a
bb
c
ff
x
#include <stdio.h>#include <stdio.h>#include <stdlib.h>#include <stdlib.h>int a = 1;int a = 1;void ff ( ) {void ff ( ) {
int c, x;int c, x;printf ("Ponto 4: a = %5d; c = %13d; x = %13d;\n", a, c, x);printf ("Ponto 4: a = %5d; c = %13d; x = %13d;\n", a, c, x);c = 11; x = 22; a = 33;c = 11; x = 22; a = 33;printf ("Ponto 5: a = %5d; c = %13d; x = %13d;\n", a, c, x);printf ("Ponto 5: a = %5d; c = %13d; x = %13d;\n", a, c, x);
}}int main ( ) {int main ( ) {
int b, c;int b, c;printf ("Ponto 0: a = %5d; b = %13d; c = %13d;\n", a, b, c);printf ("Ponto 0: a = %5d; b = %13d; c = %13d;\n", a, b, c);b = 7; c = 9;b = 7; c = 9;printf ("Ponto 1: a = %5d; b = %13d; c = %13d;\n", a, b, c);printf ("Ponto 1: a = %5d; b = %13d; c = %13d;\n", a, b, c);{{ /* Bloco bb *//* Bloco bb */
int a;int a;printf ("Ponto 2: a = %5d; b = %13d; c = %13d;\n", a, b, c);printf ("Ponto 2: a = %5d; b = %13d; c = %13d;\n", a, b, c);a = 5;a = 5;printf ("Ponto 3: a = %5d; b = %13d; c = %13d;\n", a, b, c);printf ("Ponto 3: a = %5d; b = %13d; c = %13d;\n", a, b, c);ff ( );ff ( );
}}printf ("Ponto 6: a = %5d; b = %13d; c = %13d;\n", a, b, c);printf ("Ponto 6: a = %5d; b = %13d; c = %13d;\n", a, b, c);
printf ("\n\n"); system ("pause"); return 0;printf ("\n\n"); system ("pause"); return 0;}}
???b
main
c
???a
global
1
![Page 66: CES-10 INTRODUÇÃO À COMPUTAÇÃO Capítulo VIII Subprogramação](https://reader035.vdocuments.pub/reader035/viewer/2022070508/570638641a28abb82390166c/html5/thumbnails/66.jpg)
a
bb
c
ff
x
#include <stdio.h>#include <stdio.h>#include <stdlib.h>#include <stdlib.h>int a = 1;int a = 1;void ff ( ) {void ff ( ) {
int c, x;int c, x;printf ("Ponto 4: a = %5d; c = %13d; x = %13d;\n", a, c, x);printf ("Ponto 4: a = %5d; c = %13d; x = %13d;\n", a, c, x);c = 11; x = 22; a = 33;c = 11; x = 22; a = 33;printf ("Ponto 5: a = %5d; c = %13d; x = %13d;\n", a, c, x);printf ("Ponto 5: a = %5d; c = %13d; x = %13d;\n", a, c, x);
}}int main ( ) {int main ( ) {
int b, c;int b, c;printf ("Ponto 0: a = %5d; b = %13d; c = %13d;\n", a, b, c);printf ("Ponto 0: a = %5d; b = %13d; c = %13d;\n", a, b, c);b = 7; c = 9;b = 7; c = 9;printf ("Ponto 1: a = %5d; b = %13d; c = %13d;\n", a, b, c);printf ("Ponto 1: a = %5d; b = %13d; c = %13d;\n", a, b, c);{{ /* Bloco bb *//* Bloco bb */
int a;int a;printf ("Ponto 2: a = %5d; b = %13d; c = %13d;\n", a, b, c);printf ("Ponto 2: a = %5d; b = %13d; c = %13d;\n", a, b, c);a = 5;a = 5;printf ("Ponto 3: a = %5d; b = %13d; c = %13d;\n", a, b, c);printf ("Ponto 3: a = %5d; b = %13d; c = %13d;\n", a, b, c);ff ( );ff ( );
}}printf ("Ponto 6: a = %5d; b = %13d; c = %13d;\n", a, b, c);printf ("Ponto 6: a = %5d; b = %13d; c = %13d;\n", a, b, c);
printf ("\n\n"); system ("pause"); return 0;printf ("\n\n"); system ("pause"); return 0;}}
???b
main
c
???a
global
1
![Page 67: CES-10 INTRODUÇÃO À COMPUTAÇÃO Capítulo VIII Subprogramação](https://reader035.vdocuments.pub/reader035/viewer/2022070508/570638641a28abb82390166c/html5/thumbnails/67.jpg)
a
bb
c
ff
x
#include <stdio.h>#include <stdio.h>#include <stdlib.h>#include <stdlib.h>int a = 1;int a = 1;void ff ( ) {void ff ( ) {
int c, x;int c, x;printf ("Ponto 4: a = %5d; c = %13d; x = %13d;\n", a, c, x);printf ("Ponto 4: a = %5d; c = %13d; x = %13d;\n", a, c, x);c = 11; x = 22; a = 33;c = 11; x = 22; a = 33;printf ("Ponto 5: a = %5d; c = %13d; x = %13d;\n", a, c, x);printf ("Ponto 5: a = %5d; c = %13d; x = %13d;\n", a, c, x);
}}int main ( ) {int main ( ) {
int b, c;int b, c;printf ("Ponto 0: a = %5d; b = %13d; c = %13d;\n", a, b, c);printf ("Ponto 0: a = %5d; b = %13d; c = %13d;\n", a, b, c);b = 7; c = 9;b = 7; c = 9;printf ("Ponto 1: a = %5d; b = %13d; c = %13d;\n", a, b, c);printf ("Ponto 1: a = %5d; b = %13d; c = %13d;\n", a, b, c);{{ /* Bloco bb *//* Bloco bb */
int a;int a;printf ("Ponto 2: a = %5d; b = %13d; c = %13d;\n", a, b, c);printf ("Ponto 2: a = %5d; b = %13d; c = %13d;\n", a, b, c);a = 5;a = 5;printf ("Ponto 3: a = %5d; b = %13d; c = %13d;\n", a, b, c);printf ("Ponto 3: a = %5d; b = %13d; c = %13d;\n", a, b, c);ff ( );ff ( );
}}printf ("Ponto 6: a = %5d; b = %13d; c = %13d;\n", a, b, c);printf ("Ponto 6: a = %5d; b = %13d; c = %13d;\n", a, b, c);
printf ("\n\n"); system ("pause"); return 0;printf ("\n\n"); system ("pause"); return 0;}}
7b
main
9ca
global
1
![Page 68: CES-10 INTRODUÇÃO À COMPUTAÇÃO Capítulo VIII Subprogramação](https://reader035.vdocuments.pub/reader035/viewer/2022070508/570638641a28abb82390166c/html5/thumbnails/68.jpg)
a
bb
c
ff
x
#include <stdio.h>#include <stdio.h>#include <stdlib.h>#include <stdlib.h>int a = 1;int a = 1;void ff ( ) {void ff ( ) {
int c, x;int c, x;printf ("Ponto 4: a = %5d; c = %13d; x = %13d;\n", a, c, x);printf ("Ponto 4: a = %5d; c = %13d; x = %13d;\n", a, c, x);c = 11; x = 22; a = 33;c = 11; x = 22; a = 33;printf ("Ponto 5: a = %5d; c = %13d; x = %13d;\n", a, c, x);printf ("Ponto 5: a = %5d; c = %13d; x = %13d;\n", a, c, x);
}}int main ( ) {int main ( ) {
int b, c;int b, c;printf ("Ponto 0: a = %5d; b = %13d; c = %13d;\n", a, b, c);printf ("Ponto 0: a = %5d; b = %13d; c = %13d;\n", a, b, c);b = 7; c = 9;b = 7; c = 9;printf ("Ponto 1: a = %5d; b = %13d; c = %13d;\n", a, b, c);printf ("Ponto 1: a = %5d; b = %13d; c = %13d;\n", a, b, c);{{ /* Bloco bb *//* Bloco bb */
int a;int a;printf ("Ponto 2: a = %5d; b = %13d; c = %13d;\n", a, b, c);printf ("Ponto 2: a = %5d; b = %13d; c = %13d;\n", a, b, c);a = 5;a = 5;printf ("Ponto 3: a = %5d; b = %13d; c = %13d;\n", a, b, c);printf ("Ponto 3: a = %5d; b = %13d; c = %13d;\n", a, b, c);ff ( );ff ( );
}}printf ("Ponto 6: a = %5d; b = %13d; c = %13d;\n", a, b, c);printf ("Ponto 6: a = %5d; b = %13d; c = %13d;\n", a, b, c);
printf ("\n\n"); system ("pause"); return 0;printf ("\n\n"); system ("pause"); return 0;}}
7b
main
9ca
global
1
![Page 69: CES-10 INTRODUÇÃO À COMPUTAÇÃO Capítulo VIII Subprogramação](https://reader035.vdocuments.pub/reader035/viewer/2022070508/570638641a28abb82390166c/html5/thumbnails/69.jpg)
c
ff
x
#include <stdio.h>#include <stdio.h>#include <stdlib.h>#include <stdlib.h>int a = 1;int a = 1;void ff ( ) {void ff ( ) {
int c, x;int c, x;printf ("Ponto 4: a = %5d; c = %13d; x = %13d;\n", a, c, x);printf ("Ponto 4: a = %5d; c = %13d; x = %13d;\n", a, c, x);c = 11; x = 22; a = 33;c = 11; x = 22; a = 33;printf ("Ponto 5: a = %5d; c = %13d; x = %13d;\n", a, c, x);printf ("Ponto 5: a = %5d; c = %13d; x = %13d;\n", a, c, x);
}}int main ( ) {int main ( ) {
int b, c;int b, c;printf ("Ponto 0: a = %5d; b = %13d; c = %13d;\n", a, b, c);printf ("Ponto 0: a = %5d; b = %13d; c = %13d;\n", a, b, c);b = 7; c = 9;b = 7; c = 9;printf ("Ponto 1: a = %5d; b = %13d; c = %13d;\n", a, b, c);printf ("Ponto 1: a = %5d; b = %13d; c = %13d;\n", a, b, c);{{ /* Bloco bb *//* Bloco bb */
int a;int a;printf ("Ponto 2: a = %5d; b = %13d; c = %13d;\n", a, b, c);printf ("Ponto 2: a = %5d; b = %13d; c = %13d;\n", a, b, c);a = 5;a = 5;printf ("Ponto 3: a = %5d; b = %13d; c = %13d;\n", a, b, c);printf ("Ponto 3: a = %5d; b = %13d; c = %13d;\n", a, b, c);ff ( );ff ( );
}}printf ("Ponto 6: a = %5d; b = %13d; c = %13d;\n", a, b, c);printf ("Ponto 6: a = %5d; b = %13d; c = %13d;\n", a, b, c);
printf ("\n\n"); system ("pause"); return 0;printf ("\n\n"); system ("pause"); return 0;}}
7b
main
9c
???a
bb
a
global
1
![Page 70: CES-10 INTRODUÇÃO À COMPUTAÇÃO Capítulo VIII Subprogramação](https://reader035.vdocuments.pub/reader035/viewer/2022070508/570638641a28abb82390166c/html5/thumbnails/70.jpg)
c
ff
x
#include <stdio.h>#include <stdio.h>#include <stdlib.h>#include <stdlib.h>int a = 1;int a = 1;void ff ( ) {void ff ( ) {
int c, x;int c, x;printf ("Ponto 4: a = %5d; c = %13d; x = %13d;\n", a, c, x);printf ("Ponto 4: a = %5d; c = %13d; x = %13d;\n", a, c, x);c = 11; x = 22; a = 33;c = 11; x = 22; a = 33;printf ("Ponto 5: a = %5d; c = %13d; x = %13d;\n", a, c, x);printf ("Ponto 5: a = %5d; c = %13d; x = %13d;\n", a, c, x);
}}int main ( ) {int main ( ) {
int b, c;int b, c;printf ("Ponto 0: a = %5d; b = %13d; c = %13d;\n", a, b, c);printf ("Ponto 0: a = %5d; b = %13d; c = %13d;\n", a, b, c);b = 7; c = 9;b = 7; c = 9;printf ("Ponto 1: a = %5d; b = %13d; c = %13d;\n", a, b, c);printf ("Ponto 1: a = %5d; b = %13d; c = %13d;\n", a, b, c);{{ /* Bloco bb *//* Bloco bb */
int a;int a;printf ("Ponto 2: a = %5d; b = %13d; c = %13d;\n", a, b, c);printf ("Ponto 2: a = %5d; b = %13d; c = %13d;\n", a, b, c);a = 5;a = 5;printf ("Ponto 3: a = %5d; b = %13d; c = %13d;\n", a, b, c);printf ("Ponto 3: a = %5d; b = %13d; c = %13d;\n", a, b, c);ff ( );ff ( );
}}printf ("Ponto 6: a = %5d; b = %13d; c = %13d;\n", a, b, c);printf ("Ponto 6: a = %5d; b = %13d; c = %13d;\n", a, b, c);
printf ("\n\n"); system ("pause"); return 0;printf ("\n\n"); system ("pause"); return 0;}}
7b
main
9c
???a
bb
a
global
1
![Page 71: CES-10 INTRODUÇÃO À COMPUTAÇÃO Capítulo VIII Subprogramação](https://reader035.vdocuments.pub/reader035/viewer/2022070508/570638641a28abb82390166c/html5/thumbnails/71.jpg)
c
ff
x
#include <stdio.h>#include <stdio.h>#include <stdlib.h>#include <stdlib.h>int a = 1;int a = 1;void ff ( ) {void ff ( ) {
int c, x;int c, x;printf ("Ponto 4: a = %5d; c = %13d; x = %13d;\n", a, c, x);printf ("Ponto 4: a = %5d; c = %13d; x = %13d;\n", a, c, x);c = 11; x = 22; a = 33;c = 11; x = 22; a = 33;printf ("Ponto 5: a = %5d; c = %13d; x = %13d;\n", a, c, x);printf ("Ponto 5: a = %5d; c = %13d; x = %13d;\n", a, c, x);
}}int main ( ) {int main ( ) {
int b, c;int b, c;printf ("Ponto 0: a = %5d; b = %13d; c = %13d;\n", a, b, c);printf ("Ponto 0: a = %5d; b = %13d; c = %13d;\n", a, b, c);b = 7; c = 9;b = 7; c = 9;printf ("Ponto 1: a = %5d; b = %13d; c = %13d;\n", a, b, c);printf ("Ponto 1: a = %5d; b = %13d; c = %13d;\n", a, b, c);{{ /* Bloco bb *//* Bloco bb */
int a;int a;printf ("Ponto 2: a = %5d; b = %13d; c = %13d;\n", a, b, c);printf ("Ponto 2: a = %5d; b = %13d; c = %13d;\n", a, b, c);a = 5;a = 5;printf ("Ponto 3: a = %5d; b = %13d; c = %13d;\n", a, b, c);printf ("Ponto 3: a = %5d; b = %13d; c = %13d;\n", a, b, c);ff ( );ff ( );
}}printf ("Ponto 6: a = %5d; b = %13d; c = %13d;\n", a, b, c);printf ("Ponto 6: a = %5d; b = %13d; c = %13d;\n", a, b, c);
printf ("\n\n"); system ("pause"); return 0;printf ("\n\n"); system ("pause"); return 0;}}
7b
main
9c
5a
bb
a
global
1
![Page 72: CES-10 INTRODUÇÃO À COMPUTAÇÃO Capítulo VIII Subprogramação](https://reader035.vdocuments.pub/reader035/viewer/2022070508/570638641a28abb82390166c/html5/thumbnails/72.jpg)
c
ff
x
#include <stdio.h>#include <stdio.h>#include <stdlib.h>#include <stdlib.h>int a = 1;int a = 1;void ff ( ) {void ff ( ) {
int c, x;int c, x;printf ("Ponto 4: a = %5d; c = %13d; x = %13d;\n", a, c, x);printf ("Ponto 4: a = %5d; c = %13d; x = %13d;\n", a, c, x);c = 11; x = 22; a = 33;c = 11; x = 22; a = 33;printf ("Ponto 5: a = %5d; c = %13d; x = %13d;\n", a, c, x);printf ("Ponto 5: a = %5d; c = %13d; x = %13d;\n", a, c, x);
}}int main ( ) {int main ( ) {
int b, c;int b, c;printf ("Ponto 0: a = %5d; b = %13d; c = %13d;\n", a, b, c);printf ("Ponto 0: a = %5d; b = %13d; c = %13d;\n", a, b, c);b = 7; c = 9;b = 7; c = 9;printf ("Ponto 1: a = %5d; b = %13d; c = %13d;\n", a, b, c);printf ("Ponto 1: a = %5d; b = %13d; c = %13d;\n", a, b, c);{{ /* Bloco bb *//* Bloco bb */
int a;int a;printf ("Ponto 2: a = %5d; b = %13d; c = %13d;\n", a, b, c);printf ("Ponto 2: a = %5d; b = %13d; c = %13d;\n", a, b, c);a = 5;a = 5;printf ("Ponto 3: a = %5d; b = %13d; c = %13d;\n", a, b, c);printf ("Ponto 3: a = %5d; b = %13d; c = %13d;\n", a, b, c);ff ( );ff ( );
}}printf ("Ponto 6: a = %5d; b = %13d; c = %13d;\n", a, b, c);printf ("Ponto 6: a = %5d; b = %13d; c = %13d;\n", a, b, c);
printf ("\n\n"); system ("pause"); return 0;printf ("\n\n"); system ("pause"); return 0;}}
7b
main
9c
5a
bb
a
global
1
![Page 73: CES-10 INTRODUÇÃO À COMPUTAÇÃO Capítulo VIII Subprogramação](https://reader035.vdocuments.pub/reader035/viewer/2022070508/570638641a28abb82390166c/html5/thumbnails/73.jpg)
c
ff
x
#include <stdio.h>#include <stdio.h>#include <stdlib.h>#include <stdlib.h>int a = 1;int a = 1;void ff ( ) {void ff ( ) {
int c, x;int c, x;printf ("Ponto 4: a = %5d; c = %13d; x = %13d;\n", a, c, x);printf ("Ponto 4: a = %5d; c = %13d; x = %13d;\n", a, c, x);c = 11; x = 22; a = 33;c = 11; x = 22; a = 33;printf ("Ponto 5: a = %5d; c = %13d; x = %13d;\n", a, c, x);printf ("Ponto 5: a = %5d; c = %13d; x = %13d;\n", a, c, x);
}}int main ( ) {int main ( ) {
int b, c;int b, c;printf ("Ponto 0: a = %5d; b = %13d; c = %13d;\n", a, b, c);printf ("Ponto 0: a = %5d; b = %13d; c = %13d;\n", a, b, c);b = 7; c = 9;b = 7; c = 9;printf ("Ponto 1: a = %5d; b = %13d; c = %13d;\n", a, b, c);printf ("Ponto 1: a = %5d; b = %13d; c = %13d;\n", a, b, c);{{ /* Bloco bb *//* Bloco bb */
int a;int a;printf ("Ponto 2: a = %5d; b = %13d; c = %13d;\n", a, b, c);printf ("Ponto 2: a = %5d; b = %13d; c = %13d;\n", a, b, c);a = 5;a = 5;printf ("Ponto 3: a = %5d; b = %13d; c = %13d;\n", a, b, c);printf ("Ponto 3: a = %5d; b = %13d; c = %13d;\n", a, b, c);ff ( );ff ( );
}}printf ("Ponto 6: a = %5d; b = %13d; c = %13d;\n", a, b, c);printf ("Ponto 6: a = %5d; b = %13d; c = %13d;\n", a, b, c);
printf ("\n\n"); system ("pause"); return 0;printf ("\n\n"); system ("pause"); return 0;}}
7b
main
9c
5a
bb
a
global
1
![Page 74: CES-10 INTRODUÇÃO À COMPUTAÇÃO Capítulo VIII Subprogramação](https://reader035.vdocuments.pub/reader035/viewer/2022070508/570638641a28abb82390166c/html5/thumbnails/74.jpg)
#include <stdio.h>#include <stdio.h>#include <stdlib.h>#include <stdlib.h>int a = 1;int a = 1;void ff ( ) {void ff ( ) {
int c, x;int c, x;printf ("Ponto 4: a = %5d; c = %13d; x = %13d;\n", a, c, x);printf ("Ponto 4: a = %5d; c = %13d; x = %13d;\n", a, c, x);c = 11; x = 22; a = 33;c = 11; x = 22; a = 33;printf ("Ponto 5: a = %5d; c = %13d; x = %13d;\n", a, c, x);printf ("Ponto 5: a = %5d; c = %13d; x = %13d;\n", a, c, x);
}}int main ( ) {int main ( ) {
int b, c;int b, c;printf ("Ponto 0: a = %5d; b = %13d; c = %13d;\n", a, b, c);printf ("Ponto 0: a = %5d; b = %13d; c = %13d;\n", a, b, c);b = 7; c = 9;b = 7; c = 9;printf ("Ponto 1: a = %5d; b = %13d; c = %13d;\n", a, b, c);printf ("Ponto 1: a = %5d; b = %13d; c = %13d;\n", a, b, c);{{ /* Bloco bb *//* Bloco bb */
int a;int a;printf ("Ponto 2: a = %5d; b = %13d; c = %13d;\n", a, b, c);printf ("Ponto 2: a = %5d; b = %13d; c = %13d;\n", a, b, c);a = 5;a = 5;printf ("Ponto 3: a = %5d; b = %13d; c = %13d;\n", a, b, c);printf ("Ponto 3: a = %5d; b = %13d; c = %13d;\n", a, b, c);ff ( );ff ( );
}}printf ("Ponto 6: a = %5d; b = %13d; c = %13d;\n", a, b, c);printf ("Ponto 6: a = %5d; b = %13d; c = %13d;\n", a, b, c);
printf ("\n\n"); system ("pause"); return 0;printf ("\n\n"); system ("pause"); return 0;}}
???c
ff
???x
7b
main
9c
5a
bb
a
global
1
![Page 75: CES-10 INTRODUÇÃO À COMPUTAÇÃO Capítulo VIII Subprogramação](https://reader035.vdocuments.pub/reader035/viewer/2022070508/570638641a28abb82390166c/html5/thumbnails/75.jpg)
#include <stdio.h>#include <stdio.h>#include <stdlib.h>#include <stdlib.h>int a = 1;int a = 1;void ff ( ) {void ff ( ) {
int c, x;int c, x;printf ("Ponto 4: a = %5d; c = %13d; x = %13d;\n", a, c, x);printf ("Ponto 4: a = %5d; c = %13d; x = %13d;\n", a, c, x);c = 11; x = 22; a = 33;c = 11; x = 22; a = 33;printf ("Ponto 5: a = %5d; c = %13d; x = %13d;\n", a, c, x);printf ("Ponto 5: a = %5d; c = %13d; x = %13d;\n", a, c, x);
}}int main ( ) {int main ( ) {
int b, c;int b, c;printf ("Ponto 0: a = %5d; b = %13d; c = %13d;\n", a, b, c);printf ("Ponto 0: a = %5d; b = %13d; c = %13d;\n", a, b, c);b = 7; c = 9;b = 7; c = 9;printf ("Ponto 1: a = %5d; b = %13d; c = %13d;\n", a, b, c);printf ("Ponto 1: a = %5d; b = %13d; c = %13d;\n", a, b, c);{{ /* Bloco bb *//* Bloco bb */
int a;int a;printf ("Ponto 2: a = %5d; b = %13d; c = %13d;\n", a, b, c);printf ("Ponto 2: a = %5d; b = %13d; c = %13d;\n", a, b, c);a = 5;a = 5;printf ("Ponto 3: a = %5d; b = %13d; c = %13d;\n", a, b, c);printf ("Ponto 3: a = %5d; b = %13d; c = %13d;\n", a, b, c);ff ( );ff ( );
}}printf ("Ponto 6: a = %5d; b = %13d; c = %13d;\n", a, b, c);printf ("Ponto 6: a = %5d; b = %13d; c = %13d;\n", a, b, c);
printf ("\n\n"); system ("pause"); return 0;printf ("\n\n"); system ("pause"); return 0;}}
???c
ff
???x
7b
main
9c
5a
bb
a
global
1
![Page 76: CES-10 INTRODUÇÃO À COMPUTAÇÃO Capítulo VIII Subprogramação](https://reader035.vdocuments.pub/reader035/viewer/2022070508/570638641a28abb82390166c/html5/thumbnails/76.jpg)
#include <stdio.h>#include <stdio.h>#include <stdlib.h>#include <stdlib.h>int a = 1;int a = 1;void ff ( ) {void ff ( ) {
int c, x;int c, x;printf ("Ponto 4: a = %5d; c = %13d; x = %13d;\n", a, c, x);printf ("Ponto 4: a = %5d; c = %13d; x = %13d;\n", a, c, x);c = 11; x = 22; a = 33;c = 11; x = 22; a = 33;printf ("Ponto 5: a = %5d; c = %13d; x = %13d;\n", a, c, x);printf ("Ponto 5: a = %5d; c = %13d; x = %13d;\n", a, c, x);
}}int main ( ) {int main ( ) {
int b, c;int b, c;printf ("Ponto 0: a = %5d; b = %13d; c = %13d;\n", a, b, c);printf ("Ponto 0: a = %5d; b = %13d; c = %13d;\n", a, b, c);b = 7; c = 9;b = 7; c = 9;printf ("Ponto 1: a = %5d; b = %13d; c = %13d;\n", a, b, c);printf ("Ponto 1: a = %5d; b = %13d; c = %13d;\n", a, b, c);{{ /* Bloco bb *//* Bloco bb */
int a;int a;printf ("Ponto 2: a = %5d; b = %13d; c = %13d;\n", a, b, c);printf ("Ponto 2: a = %5d; b = %13d; c = %13d;\n", a, b, c);a = 5;a = 5;printf ("Ponto 3: a = %5d; b = %13d; c = %13d;\n", a, b, c);printf ("Ponto 3: a = %5d; b = %13d; c = %13d;\n", a, b, c);ff ( );ff ( );
}}printf ("Ponto 6: a = %5d; b = %13d; c = %13d;\n", a, b, c);printf ("Ponto 6: a = %5d; b = %13d; c = %13d;\n", a, b, c);
printf ("\n\n"); system ("pause"); return 0;printf ("\n\n"); system ("pause"); return 0;}}
11c
ff
22x
7b
main
9c
5a
bb
a
global
33
![Page 77: CES-10 INTRODUÇÃO À COMPUTAÇÃO Capítulo VIII Subprogramação](https://reader035.vdocuments.pub/reader035/viewer/2022070508/570638641a28abb82390166c/html5/thumbnails/77.jpg)
#include <stdio.h>#include <stdio.h>#include <stdlib.h>#include <stdlib.h>int a = 1;int a = 1;void ff ( ) {void ff ( ) {
int c, x;int c, x;printf ("Ponto 4: a = %5d; c = %13d; x = %13d;\n", a, c, x);printf ("Ponto 4: a = %5d; c = %13d; x = %13d;\n", a, c, x);c = 11; x = 22; a = 33;c = 11; x = 22; a = 33;printf ("Ponto 5: a = %5d; c = %13d; x = %13d;\n", a, c, x);printf ("Ponto 5: a = %5d; c = %13d; x = %13d;\n", a, c, x);
}}int main ( ) {int main ( ) {
int b, c;int b, c;printf ("Ponto 0: a = %5d; b = %13d; c = %13d;\n", a, b, c);printf ("Ponto 0: a = %5d; b = %13d; c = %13d;\n", a, b, c);b = 7; c = 9;b = 7; c = 9;printf ("Ponto 1: a = %5d; b = %13d; c = %13d;\n", a, b, c);printf ("Ponto 1: a = %5d; b = %13d; c = %13d;\n", a, b, c);{{ /* Bloco bb *//* Bloco bb */
int a;int a;printf ("Ponto 2: a = %5d; b = %13d; c = %13d;\n", a, b, c);printf ("Ponto 2: a = %5d; b = %13d; c = %13d;\n", a, b, c);a = 5;a = 5;printf ("Ponto 3: a = %5d; b = %13d; c = %13d;\n", a, b, c);printf ("Ponto 3: a = %5d; b = %13d; c = %13d;\n", a, b, c);ff ( );ff ( );
}}printf ("Ponto 6: a = %5d; b = %13d; c = %13d;\n", a, b, c);printf ("Ponto 6: a = %5d; b = %13d; c = %13d;\n", a, b, c);
printf ("\n\n"); system ("pause"); return 0;printf ("\n\n"); system ("pause"); return 0;}}
11c
ff
22x
7b
main
9c
5a
bb
a
global
33
![Page 78: CES-10 INTRODUÇÃO À COMPUTAÇÃO Capítulo VIII Subprogramação](https://reader035.vdocuments.pub/reader035/viewer/2022070508/570638641a28abb82390166c/html5/thumbnails/78.jpg)
#include <stdio.h>#include <stdio.h>#include <stdlib.h>#include <stdlib.h>int a = 1;int a = 1;void ff ( ) {void ff ( ) {
int c, x;int c, x;printf ("Ponto 4: a = %5d; c = %13d; x = %13d;\n", a, c, x);printf ("Ponto 4: a = %5d; c = %13d; x = %13d;\n", a, c, x);c = 11; x = 22; a = 33;c = 11; x = 22; a = 33;printf ("Ponto 5: a = %5d; c = %13d; x = %13d;\n", a, c, x);printf ("Ponto 5: a = %5d; c = %13d; x = %13d;\n", a, c, x);
}}int main ( ) {int main ( ) {
int b, c;int b, c;printf ("Ponto 0: a = %5d; b = %13d; c = %13d;\n", a, b, c);printf ("Ponto 0: a = %5d; b = %13d; c = %13d;\n", a, b, c);b = 7; c = 9;b = 7; c = 9;printf ("Ponto 1: a = %5d; b = %13d; c = %13d;\n", a, b, c);printf ("Ponto 1: a = %5d; b = %13d; c = %13d;\n", a, b, c);{{ /* Bloco bb *//* Bloco bb */
int a;int a;printf ("Ponto 2: a = %5d; b = %13d; c = %13d;\n", a, b, c);printf ("Ponto 2: a = %5d; b = %13d; c = %13d;\n", a, b, c);a = 5;a = 5;printf ("Ponto 3: a = %5d; b = %13d; c = %13d;\n", a, b, c);printf ("Ponto 3: a = %5d; b = %13d; c = %13d;\n", a, b, c);ff ( );ff ( );
}}printf ("Ponto 6: a = %5d; b = %13d; c = %13d;\n", a, b, c);printf ("Ponto 6: a = %5d; b = %13d; c = %13d;\n", a, b, c);
printf ("\n\n"); system ("pause"); return 0;printf ("\n\n"); system ("pause"); return 0;}}
c
ff
x
7b
main
9c
5a
bb
a
global
33
![Page 79: CES-10 INTRODUÇÃO À COMPUTAÇÃO Capítulo VIII Subprogramação](https://reader035.vdocuments.pub/reader035/viewer/2022070508/570638641a28abb82390166c/html5/thumbnails/79.jpg)
#include <stdio.h>#include <stdio.h>#include <stdlib.h>#include <stdlib.h>int a = 1;int a = 1;void ff ( ) {void ff ( ) {
int c, x;int c, x;printf ("Ponto 4: a = %5d; c = %13d; x = %13d;\n", a, c, x);printf ("Ponto 4: a = %5d; c = %13d; x = %13d;\n", a, c, x);c = 11; x = 22; a = 33;c = 11; x = 22; a = 33;printf ("Ponto 5: a = %5d; c = %13d; x = %13d;\n", a, c, x);printf ("Ponto 5: a = %5d; c = %13d; x = %13d;\n", a, c, x);
}}int main ( ) {int main ( ) {
int b, c;int b, c;printf ("Ponto 0: a = %5d; b = %13d; c = %13d;\n", a, b, c);printf ("Ponto 0: a = %5d; b = %13d; c = %13d;\n", a, b, c);b = 7; c = 9;b = 7; c = 9;printf ("Ponto 1: a = %5d; b = %13d; c = %13d;\n", a, b, c);printf ("Ponto 1: a = %5d; b = %13d; c = %13d;\n", a, b, c);{{ /* Bloco bb *//* Bloco bb */
int a;int a;printf ("Ponto 2: a = %5d; b = %13d; c = %13d;\n", a, b, c);printf ("Ponto 2: a = %5d; b = %13d; c = %13d;\n", a, b, c);a = 5;a = 5;printf ("Ponto 3: a = %5d; b = %13d; c = %13d;\n", a, b, c);printf ("Ponto 3: a = %5d; b = %13d; c = %13d;\n", a, b, c);ff ( );ff ( );
}}printf ("Ponto 6: a = %5d; b = %13d; c = %13d;\n", a, b, c);printf ("Ponto 6: a = %5d; b = %13d; c = %13d;\n", a, b, c);
printf ("\n\n"); system ("pause"); return 0;printf ("\n\n"); system ("pause"); return 0;}}
c
ff
x
7b
main
9c
5a
bb
a
global
33
![Page 80: CES-10 INTRODUÇÃO À COMPUTAÇÃO Capítulo VIII Subprogramação](https://reader035.vdocuments.pub/reader035/viewer/2022070508/570638641a28abb82390166c/html5/thumbnails/80.jpg)
#include <stdio.h>#include <stdio.h>#include <stdlib.h>#include <stdlib.h>int a = 1;int a = 1;void ff ( ) {void ff ( ) {
int c, x;int c, x;printf ("Ponto 4: a = %5d; c = %13d; x = %13d;\n", a, c, x);printf ("Ponto 4: a = %5d; c = %13d; x = %13d;\n", a, c, x);c = 11; x = 22; a = 33;c = 11; x = 22; a = 33;printf ("Ponto 5: a = %5d; c = %13d; x = %13d;\n", a, c, x);printf ("Ponto 5: a = %5d; c = %13d; x = %13d;\n", a, c, x);
}}int main ( ) {int main ( ) {
int b, c;int b, c;printf ("Ponto 0: a = %5d; b = %13d; c = %13d;\n", a, b, c);printf ("Ponto 0: a = %5d; b = %13d; c = %13d;\n", a, b, c);b = 7; c = 9;b = 7; c = 9;printf ("Ponto 1: a = %5d; b = %13d; c = %13d;\n", a, b, c);printf ("Ponto 1: a = %5d; b = %13d; c = %13d;\n", a, b, c);{{ /* Bloco bb *//* Bloco bb */
int a;int a;printf ("Ponto 2: a = %5d; b = %13d; c = %13d;\n", a, b, c);printf ("Ponto 2: a = %5d; b = %13d; c = %13d;\n", a, b, c);a = 5;a = 5;printf ("Ponto 3: a = %5d; b = %13d; c = %13d;\n", a, b, c);printf ("Ponto 3: a = %5d; b = %13d; c = %13d;\n", a, b, c);ff ( );ff ( );
}}printf ("Ponto 6: a = %5d; b = %13d; c = %13d;\n", a, b, c);printf ("Ponto 6: a = %5d; b = %13d; c = %13d;\n", a, b, c);
printf ("\n\n"); system ("pause"); return 0;printf ("\n\n"); system ("pause"); return 0;}}
a
bb
c
ff
x
7b
main
9ca
global
33
Ponto 0: a = 1; b = 0; c = 4239532;Ponto 1: a = 1; b = 7; c = 9;Ponto 2: a = 0; b = 7; c = 9;Ponto 3: a = 5; b = 7; c = 9;Ponto 4: a = 1; c = 58; x = 582600;Ponto 5: a = 33; c = 11; x = 22;Ponto 6: a = 33; b = 7; c = 9;
No vídeo
![Page 81: CES-10 INTRODUÇÃO À COMPUTAÇÃO Capítulo VIII Subprogramação](https://reader035.vdocuments.pub/reader035/viewer/2022070508/570638641a28abb82390166c/html5/thumbnails/81.jpg)
O uso de O uso de blocosblocos e de e de variáveis automáticasvariáveis automáticas torna possível torna possível reservar espaçoreservar espaço para variáveis para variáveis só quando só quando necessárionecessário
Seja por exemplo, o seguinte esquema de Seja por exemplo, o seguinte esquema de programa:programa:--- Declarações globais ---
int main () { { /* Bloco 1 */ --- Declarações ocupando grande espaço de memória --- --- Comandos } { /* Bloco 2 */ --- Declarações ocupando grande espaço de memória --- --- Comandos } { /* Bloco 3 */ --- Declarações ocupando grande espaço de memória --- --- Comandos }}
![Page 82: CES-10 INTRODUÇÃO À COMPUTAÇÃO Capítulo VIII Subprogramação](https://reader035.vdocuments.pub/reader035/viewer/2022070508/570638641a28abb82390166c/html5/thumbnails/82.jpg)
As As variáveis automáticasvariáveis automáticas declaradas em declaradas em cada cada blocobloco só ocupam espaço de memória só ocupam espaço de memória durante a durante a execuçãoexecução do mesmo do mesmo
Não o ocupam durante Não o ocupam durante toda a execuçãotoda a execução da da função função mainmain
--- Declarações globais --- int main () { { /* Bloco 1 */ --- Declarações ocupando grande espaço de memória --- --- Comandos } { /* Bloco 2 */ --- Declarações ocupando grande espaço de memória --- --- Comandos } { /* Bloco 3 */ --- Declarações ocupando grande espaço de memória --- --- Comandos }}
![Page 83: CES-10 INTRODUÇÃO À COMPUTAÇÃO Capítulo VIII Subprogramação](https://reader035.vdocuments.pub/reader035/viewer/2022070508/570638641a28abb82390166c/html5/thumbnails/83.jpg)
Caso Caso não houvesse blocosnão houvesse blocos, todas essas , todas essas variáveis deveriam ser variáveis deveriam ser declaradasdeclaradas na função na função mainmain, ocupando espaço durante a execução de , ocupando espaço durante a execução de todo o programatodo o programa
Esse espaço poderia Esse espaço poderia não ser suficientenão ser suficiente
--- Declarações globais --- int main () { { /* Bloco 1 */ --- Declarações ocupando grande espaço de memória --- --- Comandos } { /* Bloco 2 */ --- Declarações ocupando grande espaço de memória --- --- Comandos } { /* Bloco 3 */ --- Declarações ocupando grande espaço de memória --- --- Comandos }}