0 notas 0% acharam este documento útil (0 voto) 17 visualizações 32 páginas Unidade 4 Algoritmos
O documento aborda a programação com vetores e matrizes na linguagem C, explicando a sintaxe e a codificação dessas estruturas de dados. Ele detalha como os vetores permitem armazenar múltiplos dados do mesmo tipo em posições contíguas de memória e apresenta exemplos práticos de manipulação de vetores. Além disso, introduz o conceito de matrizes como estruturas multidimensionais, destacando sua importância na programação.
Descrição aprimorada por IA
Direitos autorais
© © All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu,
reivindique-o aqui .
Formatos disponíveis
Baixe no formato PDF ou leia on-line no Scribd
Ir para itens anteriores Ir para os próximos itens
Salvar Unidade 4 Algoritmos para ler mais tarde seinai2g, 19:22 wiléd_231_u4_alg_log_ pro
APLICAGGES DE PROGRAMACAO,
> Aula 1-Programacio e funcées com vetores
> Aula 2 - Programaco com matrizes
> Aula 3- Introducao a funcio e recursvidade
> Aula 4 - Registros e arquivos
> Refeséncias
Aula
PROGRAMACAO E FUNGOES COM VETORES
‘Nesta unidace estuciaremos a sintaxe e a coaificacdo destes vetores, usando a linguagem de
programagao C.
INTRODUGAO
01, estudante, hoje vamos iniciar uma nova unidade da disciplina de algoritmos e légica de programagao, em
{que voce ver na pritica a programagao de uma estrutura de dados baseada em vetores, que € um recurso
muito utilizado na engenharia,
Na programacao, o vetor é usado para manipular um conjunto de dados de um mesmo tipo primitive (inteiro,
real, caracter). Estes ficardo em posigdes contiguas da meméria do computador, permitindo o seu acesso de
uma forma mais facil e répida.
Nesta unidade estudaremos a sintaxe e a codificagdo destes vetores, usando a linguagem de programacao C
Vamos ver que os conceitos de declaragao de variaveis, estrutura de repetigao e de vetores estudados nas
unidades anteriores serao importantes e muito bem aplicados nesta unidade,
Entdo, estudantes, vamos em frente.‘eloaas, 19:22 wi 204 oa pro
PROGRAMAGAO DE VETORES EM UMA PSEUDOLINGUAGEM: PROGRAMACAO E FUNGGES COM
VETORES
Caro estudante, 0 vetor é uma estrutura que permite armazenar varios dados do mesmo tipo em uma mesma
varivel.
Imprint
Por exemplo: se quisermos armazenar em um programa as notas que 40 alunos tiveram em uma
determinada prova de uma disciplina e nao tivéssemos o vetor, precisariamos usar no programa 40 variveis
com nomes distintos, sendo armazenada em cada varidvel a nota de um aluno. Com o uso de vetor, vamos
conseguir armazenar em uma Unica varidvel as notas dos 40 alunos. Esta variavel ter dentro dela 40
posig6es, sendo que, em cada posi¢ao, vamos incluir a nota de um aluno.
(O vetor também é chamado de estrutura composta homogénea unidimensional, em que’
+ Estrutura composta consiste nas varias posigdes que teremos na varidvel.
+ Homogénea porque estas posicdes sdo do mesmo tipo de dado (inteiro, real, caracter)
+ Unidimensional porque tem uma nica dimensao; 0 multidimensional é uma matriz,
(0 vetor passa a existir a partir da sua declaracao, quando, ento, Ine so associados um nome ou
identificador e a respectiva posigo de meméria por ela representada. Qualquer referéncia ao seu
identificador significa 0 acesso ao conteido de uma Unica posi¢ao de meméria (FARRER, 1999).
‘As posicées do vetor so guardadas em uma sequéncia continua de meméria, ou seja, uma posi¢ao seguida
da outra
A diferenga da declarago de um vetor e de uma variavel normal do programa est na parte que vem apés 0
nome, em que, na declarac3o do vetor, tem-se a quantidade de posicdes do vetor entre colchetes,
Exemplo de nome do vetor: Vnota/40y;
Exemplo de declaracdo do vetor: Real Vnota[40];
No qual temos:
+ Real: tipo primitivo de dados do vetor, indicando que em cada posigdo do vetor, sera inserido um numero do
tipo real da matemética;
+ Vnota: nome da varidvel do tipo vetor. Neste exemplo, seré a nota dos alunos;
+ 40: quantidade de posigdes do vetor. Neste exemplo, cada posicdo conteré a nota de um aluno.
Percebam que na declaracdo do vetor, ele é definide com 40 posigées. Estas posigdes so numeradas
sequencialmente, iniciando com a posigo 0 até a posisdo 39. Chamamos estas posigdes de indice do vetor.
Figura | Vetor vnotaseinai2g, 19:22 wiléd_231_u4_alg log pro
Fonte: elaborada pelo autor.
‘Agora vamos trabalhar com este vetor, usando uma pseudolinguagem, inserindo nas posicdes do vetor as
notas dos alunos.
A posicao que desejamos inserir a nota, colocamos entre os calchetes:
vnota [ 6 ] = 6,5; // serd inserido o valor 6,5 na posicdo 6 do vetor
vnota [ 1] = 7,85
vnota [ 3] = 5,33
Figura? | Vetor vnota
1, 5, 6,
8 a 5
o 1 2 3 4 5 6 7 « 38 39
Fonte: elaborada pelo autor.
Conseguimos acessar as posiges de forma aleatéria, ou seja, fomos para a 6* posigio, depois para a 1*
posigdo e depois para a 3* posigdo do vetor.
Vamos incluir novos elementos no vetor, mas usando uma nova varidvel A, que terd a posicao em que sera
incluido 0 elemento no vetor.
Inteiro ay
Leia (A); // supondo que fot informado 5
vnotal A] = 9,8;
vnota [ A-1 ] = 9,1;
Leia (vnota [ A+2 ] ); // supondo que foi informado 4,7
No final da execusao, 0 vetor ficara da seguinte forma:
Figura 3 | Vetor vnotaseinai2g, 19:22 wiléd_231_u4_alg_log_ pro
Fonte: elaborada pelo autor,
PROGRAMAGAO DE VETORES NA LINGUAGEM C
\Vamos agora aprofundar nossos conhecimentos referentes & codificagdio de vetores, trabalhando em um
‘exemplo da codificagao do vetor na linguagem de programagao C,
Vamos usar 0 mesmo vetor Vneta que codificamos anteriormente uma pseudolinguagem, mas agora, varios
implementé-lo na linguagem de programagio C.
Para facilitar a aprendizagem, serd mostrado 0 cédigo em C, numerando as linhas do programa e, em seguida,
serd comentada cada uma das linhas.
1 #include
2 main()
4 float vnota[4e];
5 int A;
6 Vnota [6
235
7 vnota [1]=7.8
8 vnota [3
35
Inicialmente, foi declarada na linha 1 do programa, a biblioteca stdio.h da linguagem C, para usarmos os
comandos de entrada e saida de dados printfe scant.
A linha 2 tem a declaracdo do programa principal e na linha 3 0 inicio do seu bloco.
Na linha 4, foi criado 0 vetor Vnota, com 40 posigdes e nas linhas 6, 7 e 8 foram incluidas as notas 6,5, 7,8 € 5,3
nas posigdes 6, 1 e3 do vetor.
Dando sequéncia na codificagdo do programa do vetor, temos:
9 printf (\"Digite o valor de A: \");
30 scan#(\"Kd\" 8A);
11 VnotalA
12 Vnota[A-1]=9.1;
13 printf(\"Digite o valor de Vnota[A+3]: \")s
14 scanf(\"%d\" ,AVnota[A+3])
15 printf (\"Valores do vetor:\");seinai2g, 19:22 wiléd_231_u4_alg_log_ pro
16 for (int x=0;x<10;x++)
17 printf (\"\nvnota[Xd] = %.1F\",x,Vnota[x]) 5
18)
Nas linhas 9 e 10, fol solicitada a entrada de um dado do tipo inteiro que ser armazenado na varlével A. O
valor desta varidvel est sendo usado como posi¢do de meméria para a incluso da nota 9,8. Se for digitado o
valor 5, a nota 9,8 serd inserida na posi¢o 5 do vetor, conforme mostrado na linha 11
Na linha 12, foi subtraido 1 do valor digitado, ou seja, se foi digitado 0 valor 5, a nota 9,1 serd incluida na
posicao 4 do vetor.
Na linha 13 e 14, foi solicitada a digitagaio de uma nota, sendo esta inserida na posi¢dio A+3, ou seja, a nota
digitada sera inserida na posigao 8, se o valor digitado para A foi.
Para acessar todas as posicées do vetor, precisamos usar uma estrutura de repetigdo. Dentro desta estrutura
de repeticgo conseguimos acessar todas os elementos do vetor.
Aeestrutura de repeti¢ao mais indicada para a manipulagao do vetor é 0 Para (valor inicial do Indice, condigao
de repeticao, incremento do indice). A codificagao desta estrutura de repeti¢ao est nas linhas 16 e 17 deste
cédigo.
Como pode ser observado, a estrutura de repeticdo se inicia com o valor 0 no indice, para acessar a 1* posico
do vetor, incrementando de 1 em 1 para cada execucao dos comandos que fazem do bloco da estrutura de
repeticao, até a Ultima posicso do vetor.
Com a execugo do programa, a saida que sera mostrada sera a seguinte:
Fgura | Tela do DEV C++ com a safda da execugio do programa
Fonte: captura de tela do DEV C++ elaborada pelo autor.
MANIPULAGAO DAS VARIAVEIS DO VETOR
Um algoritmo classico em que precisamos usar vetor é quando precisamos ler determinados valores, fazer
algum tipo de célculo com os dados e depois comparar o que foi calculado com os valores lidos. Por exemplo:
lancar as notas dos alunos de uma determinada disciplina e depois mostrar a quantidade de notas maiores
que a média,seinai2g, 19:22 wiléd_231_u4_alg_log_ pro
Para resolver, é necessario ler todas as notas e armazené-las em um vetor. Com os valores armazenados, sera
possivel manipulé-los.
Entdo vamos resolver da seguinte forma: (1) ler as notas dos alunos, (2) calcular a média aritmética, (3)
comparar cada nota com a média calculada (4) contar as notas maiores que a média (5) mostrar a quantidade,
algoritmo que implementa este exemplo segue abalxo:
1 Hinclude
2 main()
af
4 Float Vnota[1e], somanota-9, media;
5 int somanaior=0;
6 for (int x=0;x<10;x++)
8 printf (\
igite a nota %d :\",x+2);
9 scanf(\"%F\" avnotalx]) 5
10 sonanota = sonanota + Vnota[x];
11 Fflush(stdin);
2}
13 media = somanota / 10;
14 printf (\" Media das notas: %.1f\",media);
15 for (int x=@;xnedia)
18 somamaion +43
19}
20 printf (\"Quantidade de notas maiores que a media: %d\", somamaior);
a}
Vamos fazer um outro exercicio com vetor, mas agora os elementos do vetor sero inicializados quando forem
declarados. Depois vamos somar os elementos do vetor e mostrar 0 resultado da soma,
1 #include seinai2g, 19:22 wiléd_231_u4_alg_log_ pro
2 #include
3 main()
5 int vetor[5]={1,3,5,7,9}, 50m
6 for (int cont=0;cont<5;cont++)
7 sona = soma + vetor{ cont]
printf(\"Soma dos elementos do vetor: %d\", soma);
9}
Continuando este mesmo programa, agora vamos mostrar o vetor que foi declarado e inicializado na linha 4,
de trds para frente, ou seja, 0 iltimo elemento do vetor seré o Ultimo mostrado, o pentiltimo seré o segundo e
assim sucessivamente.
9 include
10 for (int cont:
11 print€(\"\nElemento %d do vetor: %d\",cont, vetor[cont]);
Ry
Veja que, para mostrar o vetor de tras para frente, foi codificada uma estrutura de repeticao, iniciando com 0
valor do maior indice do vetor e decrementando de 1 até a primeira posicao do vetor.
VIDEO RESUMO
1a, estudante, vamos agora ao video, em que vocé verd uma explicagao como se programam vetores na
linguagem de programacao C, No video, usaremos este recurso da programacao e explicaremos como vocé
deve fazer para codificé-lo, considerando a sua sintaxe e a sua légica.
Vamos ver também que os conceitos de légica, estrutura de repetigdo e de vetores estudados s30 muito bem
usadas nesta unidade.
69 Saiba mais
Para codificar programas na linguagem de programaco C, vocé deveré usar um aplicativo que tenha as
ferramentas necessdrias para programar em C/C++.
Recomendamos o uso do Bloodshed Dev C++. Este pacote compe um ambiente completo de
desenvolvimento para a criaco, debug e compilaco do cédigo de programacao em C, e pode ser
analisado e ser feito download em seu site,seinai2g, 19:22 wiléd_231_u4_alg_log_ pro
u
Aula2
PROGRAMAGAO COM MATRIZES
‘Nesta aula, estuciaremos a sintaxe e a coaificacdo de matrizes, usanao a lirguagem de programécao C.
INTRODUGAO
a, estudante, hoje vamos para um novo tépico da disciplina Algoritmos e Légica de Programaco, em que
voce vers na pratica a programacao de uma estrutura de dados baseada em matrizes,
Nesta aula, estudaremos a sintaxe e a codificagao de matrizes, usando a linguagem de programacéo C.
Vamos ver que a aprendizagem do funcionamento de um vetor estudado anterioriormente é muito
importante para 0 entendimento de matrizes, por ser uma estrutura composta homogénea que traz uma
maior complexidade na sua codificacao.
Vamos ver também que a matriz é um instrumento muito usado pelos programadores para resolver varios
problemas do dia a dia na programacio,
Entao, estudantes, vamos em frente.
DEFINIGAO, CARACTERISTICAS E SINTAXE DE MATRIZES
Caro estudante, vamos estudar outra forma de organizar os dados dentro de uma estrutura baseada em
matrizes da matemética.
Enquanto um vetor é uma estrutura de dados homogénea unidimensional, pelo motivo de crescer os dados
de estrutura apenas em uma direcdo, que é para o lado direito, na forma de linha, a matriz é uma estrutura de
dados homogénea multidimensional, por permitir crescer os dados da estrutura em mais de uma direcdo, que
& para o lado direito (linha) e para baixo (coluna),
Vamos ver isto no exemplo abaixo:
Exemplo de um vetor com 8 elementos, uma letra em cada posicao do vetor:
Figura 1 | Vetor Letras)seinai2g, 19:22 wiléd_231_u4_alg log pro
aA |B jc |p |e /F |¢ |H
4 2 3 4 5 6 7
Fonte: elaborada pela autora,
Se quisermos inserir novos elementos no vetor, estes deverdo ser incluidos em novas posicées, que ficarao do
lado direito, na mesma linha.
Agora vamos para um exemplo de uma matriz, com 8 elementos divididos em linhas e colunas.
Figura2 | Matiz Letras(2.4]
0
Fonte: elaborada pela autora,
Veja que organizamos os mesmos dados representados no vetor, mas agora em 2 linhas e 4 colunas. Esta
forma de organizagio de estrutura de dados foi feita em uma matriz [2,4].
‘Se quisermos incluir novos elementos na matriz, podemos inclui-los em uma nova coluna no lado direito, mas
também podemes incluF-los em uma nova linha, abaixo da existente,
Da mesma forma que o vetor, as matrizes precisam ter um nome e precisam ter indices para identificar a
posicao dos seus elementos. Como a matriz que estamos representando possui 2 dimensées, baseada na
linha e na coluna, precisamos de 2 indices para identificar uma posico de um elemento na matriz, 0 primeiro
identifica a linha e o segundo identifica a coluna,
Por exemplo:
+ Elemento da posigao da matriz Letra [0,21
+ Elemento da posigdo da matriz Letra [1,3]= H.
A matriz também uma estrutura composta homogénea, com isto, todos os seus elementos devem ter 0
mesmo tipo primitivo de dado (inteiro, real, caracter). Com isto, quando declaramos uma matriz, precisamos
identificar qual é o tipo de dados que sero inseridos nas suas posig6es.
Por exemplo:
Caracter Letra[2,4) => 6 uma mattiz em que poderdo ser inseridos até 8 elementos do tipo caracter.
Em que temos:seinai2g, 19:22 wiléd_231_u4_alg_log_ pro
+ Caracter: tipo primitivo de dados do vetor, indicando que em cada posic3o do vetor, sera inserido um.
caracter.
+ Letra: nome da varidvel do tipo matriz.
+2: quantidade de linhas da matriz
+ 4: quantidade de colunas da matriz.
Percebam que na declaracdo da matriz, ela definida com 8 posicdes divididas em 2 linhas e 4 colunas. 0
indice para a linha é numerado sequencialmente, iniciando com 0, da mesma forma para a coluna, que
também tem um indice iniciando com 0.
Outro exemplo:
Real Nota[3,4]
6 uma matriz em que podersio ser inseridos até 12 elementos do tipo real.
PROGRAMAGAO DE MATRIZES NA LINGUAGEM C
Vamos agora aprofundar nossos conhecimentos na codificagdo de matrizes na linguagem de programacao C.
Vamos usar como exemplo o mesmo Vnota que usamos para codificé-lo na forma de vetor, mas, agora,
vamos trabalhar com 0 Vnota na forma de uma estrutura de dados homogénea bidimensional, que é uma
matriz,
Para facilitar a aprendizagem, ser mostrado o cédigo em C, numerando as linhas do programa e, em seguida,
seré comentada cada uma das linhas.
1 include
2 main()
at
4 Float vnota[4] [10];
5 int xys
6 nota [@][@]=8.1;
7 vnota [@][2]=6.5;
8 nota [1][4]=7.8;
9 vnota [2][6]=9.4;
10 printf (\"Digite o valor de xX:
11 scan#(\"%a\",8X); Ser digitado o valor 2
12 printf (\"Digite o valor de
13. scanf(\"Kd\",8Y) 5 J] Sera digitado 0 valor 1seinai2g, 19:22 wiléd_231_u4_alg_log_ pro
14 vnotafxl Ly.
05
15 Vnota[x] [y+2]=3-95
16 Vnota[x+1] [y+2]=7.0;
17 printé(\’
igite 0 valor de Vnota[9.9]:
Y
18 scanf(\"%d\",8Vnota[9][9]; // Seré digitado o valor 8.4
2)
Com a insergo destes elementos na matriz, ela fica desta forma:
igura 3 | Mati float Vnatal4,10)
ol en 65
i 78
2 60 | 39 4
s 70 84.
o 1 2 3 4 5 6 7 8 Q
Fonte: elaborada pelo autor
Na linha 4, foi declarada uma matriz com nome Vnota, com 40 posicdes, organizada na forma de 4 linhas e 10
colunas, sendo os elementos da matriz do tipo de dados float (Real)
Nas linhas 6 a 9, foram inseridos elementos na matriz nas posicGes [0.0], (0,21.11.4] € [2.6].
Nas linhas 11 e 13 foram solicitadas a entrada de dois dados do tipo inteiro que serao armazenados
respectivamente nas varidveis x e y. Supondo neste exemplo que foram digitados os valores 2 para xe 1 para
y.
Na linha 14 os valores da varidvels x ey foram usados para a incluso do elemento 6.0 na posic0 [2,1] da
mati
Na linha 15 a variavel y que é usada para indicar a coluna, foi incrementada de 1, com isto, o elemento 3.9 foi
incluido na posi¢So [2,2] da matriz,
Na linha 16, a varivel x que é usada para indicar a linha, foi incrementada de 1 e a varidvel y que é usada
para indicar a coluna, foi incrementada de 2, com isto, o elemento 7.0 foi incluido na posicao [3,3] da matriz.
Na linha 17 e 18, foi solicitado a digitag3o de uma nota, sendo est inserida na posi¢o [9,9] da matriz.
Para acessar todos os elementos de uma matriz, precisamos usar uma estrutura de repeti¢ao dentro de outra
estrutura de repeti¢ao, em que a estrutura de repeticao externa vai passar por todas as linhas e a estrutura de
repeticao interna vai passar pelas colunas da matriz,seinai2g, 19:22 wiléd_231_u4_alg_log_ pro
Vamos ver este exemplo:
1 for (x=05x<45x4+)
24
3 for (
sy
2 main()
3k
4 int M[3][4] = (1,2,3,4,5,6,7,8,9,10,11,12}, somaeo;
5 for (int x=0;x<3;x++)
6t
7 for (int y=0sy<4jy++)
at
9 if Cy >x)
1@ soma= soma + M[x]Ly]3
nu}
2}
13. print#(\"soma dos elementos:%d\", soma);
14)
Na linha 4 do programa, inicializamos a matriz no mesmo momento da sua declaracéo, como uma matriz (3]
[4] tem 12 elementos, fizemios uma definicao sequencial de 1 a 12 entre chaves logo apés a declaracao de
mati,
Como é solicitado que sejam somados somente os elementos em vermelho e estes elementos sao 0s que a
coluna é maior que a linha, consideramos no programa que a variavel x para a linha, declarado na estrutura
de repetigao externa e y para a coluna, declarado na estrutura de repetigao interna,
Na linha 9, foi codificada uma condicional, considerando somente os elementos nos quais 0 valor de y (coluna)
for maior que x(linhal.
Como resultado da execugdo do programa, teremos: Soma dos elementos: 36
Vamos para um segundo enunciado em que se faz necessério o uso de matriz:
Faca um algoritmo que lela uma matriz M[3,3] e um valor X. A seguir, multiplique cada elemento da matriz
pelo valor X, colocando 0 resultado da multiplicacao de cada elemento da matriz em um vetor V{9}. No final, 0
algoritmo deve listar todos os elementos do vetor.
Veja que para a codificacdo deste programa, vamos usar os conhecimentos de matrizes e vetores.
1 Hinclude
2 main)
Btseinai2g, 19:22 wiléd_231_u4_alg_log_ pro
4 int M[3][3],V[9],cont=0;
5 for (int x-0;x<3;x++)
7 for (int y=@;y<3;y++)
9 print# (\" Valor: \")3
10 seant(\"Kd\" ,8M[x] [Y])5
a1 VEcont:
(x) Ly]
12 cont++5
3
14)
15 for (cont=8;cont<9;cont++)
16 printf (\" Xd \",V[cont]);
wv)
Na linha 4 do programa, declaramos uma matriz (3)[3) € um vetor (9)
Na linha 10, fizemos a codificagao para a leitura dos elementos da matriz M[3I[3I
Na linha 11, atribuimos o valor de cada elemento da matriz para uma posi¢go do vetor VI]
Na linha 15 declaramos uma nova estrutura de repeti¢ao para percorrer todo do vetor VI9], mostrando os
elementos do vetor (linha 16].
Asada para a execucdo deste programa seré a seguinte:
Figura S| Tela do DEV C++ com a saida da execugio do programa
Fonte: captura de tela do DEV C++ elaborada pelo autorse)o4as, 13:22 wied_291_v4_alp_tog_o-0
VIDEO RESUMO
ld, estudante, neste video varios estudar formas de organizacao dos dados em uma estrutura baseada em
matrizes da matemética. Vamos ver como ela deve ser usada, a sintaxe e a codificagao destas matrizes,
usando a linguagem de programacao C.
6d Saiba mais
Veja os conceitos e dicas para codificacdo de matrizes no site Learn da Microsoft.
Aprofunde os seus conhecimentos sobre matrizes aplicadas na matematica e na ciéncia da computaco,
no site do Khanacademy.
Aula3
INTRODUGAO A FUNGAO E RECURSIVIDADE
Vamos ver que podemos criar as nossas préprias fungdes no programa e podemos usar as fungdes pré-
definidas, as quais ajudam, e muito, na organizacéo dos programas.
31 minutos
INTRODUGAO
la, estudante, hoje vamos para um novo tépico da disciplina de Algoritmos e Légica de Programacao, em que
serd abordado 0 recurso de funsdes na programacao de computadores.
Vamos ver que podemos criar as nossas préprias fungées no programa e podemos usar as funcdes pré-
definidas, as quais ajudam, e muito, na organizagao dos programas.
‘Também vamos estudar um tipo especial de func3o que permite a codificacao de recursividade, em que a
fungo é chamada para si mesma,
Vamos ver que as fungées séo solugdes elegantes e simples nos programas, mas esta elegancia e simplicidade
t@m um preco que requer muita atenc3o em sua implementago, Ento estudantes, vamos em frente.
DEFINIGAO E EXEMPLO DE FUNGOESseinai2g, 19:22 wiléd_231_u4_alg_log_ pro
Caro estudante, quando precisamos resolver um problema na programagio e tentamos dividi-lo em
subproblemas independentes, resolvendo o problema “em pedacos", de forma mais simples, podemos usar 0
recurso chamado de func.
‘Afungao cria uma forma de encapsulamento da sua ldgica interna, expondo como se fosse um servico, na
qual um bloco de comandos sera executado, recebendo alguns pardmetros de entrada e retornando um
resultado como safda da funcio.
© principal beneficio de usar fungées na programacao é que podemos evitar repeticio de linhas de cédigo,
Pois, se 0 programador quiser executar uma operagdo mais de uma vez, ele pode simplesmente escrever a
fungo uma ver e utilizé-la diversas vezes, ao invés de escrever 0 mesmo cédigo varias vezes.
Outro beneficio & que se vocé desejar alterar ou corrigir alguma coisa mais tarde, é mais fécil alterar em um
nico lugar.
Toda fungao precisa ser invocada para ser executada. Desta forma, quando uma fungdo que jé foi usada
anteriormente é invocada, 0 programador no vai mais precisar se preocupar como a légica deve ser realizada
na fungio e também no vai precisar se preacupar com os testes da funcio,
Func6es sao codificadas independentemente umas das outras e as varidveis usadas dentro de funcdes nao
so compartilhadas, ou seja, as varidveis so locais a uma funcSo.
‘As funges se comunicam por meio de pardmetros passados como entrada eos valores retornados como
saida, com isto, a comunicago entre as fungdes é totalmente controlada.
A fungdo poderé também chamar a si prépria, criando-se uma funco recursiva. Este tipo de fungdo torna-se
uma implementagao elegante e simples, por serem executadas tarefas repetitivas sem utilizar nenhuma
estrutura de repeticao.
Para declarar uma fungo no programa, a seguinte sintaxe deve ser utilizada:
‘ nome_da_fungdo ( pardnetrot,
paranetro2, ..., parametron)
return valor_de_retorno;
Toda fungao deve ter um tipo de dados. Esse tipo determina qual sera o tipo de seu valor de retorno, podendo
ser inteiro, real, caractere, etc. Quando a fung3o nao tem um tipo (void), entao ela no pode retornar um
valor, ou seja, passa a ser um procedimento.se)o4as, 13:22 wied_291_v4_alp_tog_o-0
5 parametros sao os valores passados para a funcdo que vio sofrer algum tipo de modificagao durante a
execucdo dos comandos da fungao como se fosse uma fungéio matemética, em que o parSmetro é o valor de
entrada fungio.
{As funges dever ser declaradas antes do programa principal (main)
Exemplo de funcao:
1 Hinelude
2 int sona(int a, int b)
3 Ant soma;
4 sona = a +b;
5 return soma;
main() {
8 print f("Soma de 2 numeros: Xd",soma(5,18));
Neste exemplo, foi codificada a fungao soma, que recebe 2 ntimeros inteiros como parametro de entrada, faz
soma dos 2 nlimeros e retorna o resultado;
‘A fungdo soma foi invocada no programa principal.
Existem algumas fungdes na linguagem C que jé esto prontas, ou seja, esto codificadas e testadas. Flas
recebem o nome de fungGes pré-definidas. Paré usé-las, precisamos somente declarar no programa o nome
da biblioteca onde est a fungao.
Por exemplo: para calcular a potenciagdo de um numero, podemos usar a funcdo pré-definida pow(base,
poténcia), da seguinte forma:
1 #include
2 include
3 maint) ¢
4 print f(\"Potenciagéo de 2 elevado a 3: %d\",pow(2,3))5
5s}
Veja que incluimos a biblioteca no programa. Dentro desta biblioteca hd a funcaio chamada pow,
que calcula a potenciasio. No programa principal, invocamos a fungdo pow, passando como parametro 0
valor 2 como base e 3 como poténcia. O resultado que ser mostrado neste programa sera 8.sainaize, 19:22 wiléd_231_u4_alg_log_ pro
PROGRAMACAO DE FUNCOES E RECURSIVIDADE A LINGUAGEM C
Vamos agora aprofundar nossos conhecimentos de funcdes pré-definidas, dando énfase as funcdes
matematicas, devido a sua importancia para a drea de engenharia,
Veja abaixo exemplos de fungdes pré-definidas que esto prontas na biblioteca math.h da linguagem C.
TTabela 1 | Fungdes pré-definidas da biblioteca mathh
Fungo Descrigso
fmod(dividendo,divisor) _| Retorna o resto da divisso (float dividend, float divisor)
abs(numero) Retorna o valor absoluto do ntimero (int numero)
sqrt(numero) Retorna a raiz quadrada do numero
‘modf{num, *inteiro) Separa a parte fracionéria da inteira de numero
in(numero) Retorna 0 arco seno de nimero
acos(numero) Retorna o arco cosseno de nimero
atan(numero) Retorna o arco tangente de ntimero
floorifloat num): Retorna o menor inteiro menor que ntimero (ex. 9.9 retorna 9)
ceil(float num): Retorna o maior inteiro maior que nimero (ex. 9.9 retorna 10)
strrevinum) Retorna o inverso do ntimero (niimero espelhado)
Fonte: elaborada pelo autor.
Considerando a existéncia da funco sqrt(numero) para calcular a raiz quadrada de um numero, veja como
fica facil realizar o célculo resolver a raiz quadrada de 9:
1 include
2 include
main() {
4 printf(\"Raiz Quadrada de 9: %4\",sqrt(9))s
‘Temos outras bibliotecas, com outros tipos de funces pré-definidas, tais como:
1. Contém fungdes para entrada e saida de dados.seinai2g, 19:22 wiléd_231_u4_alg_log_ pro
2. Contém fungées para manipular hordrios e datas,
3. Contém fung6es para manipulagao de strings.
4, Contém fungoes para manipulagio de video,
5. Contém fungées para converso de nimeras em texto e vice-versa, lacado de meméria,
niimeros aleatérios, busca e ordenagio.
6. Contém funcGes para classificar caracteres pelo tipo ou para converter entre caixa alta e baixa
independentemente da codificacao.
Por exemplo: ja estamos acostumados em usar as fungSes pré-definidas printf)) e scanf() da biblioteca
, no sabemos como elas foram escritas, mas sabemos como utilizé-as, ou seja, sabernos
‘o nome das fungSes e quais informagSes precisamios fornecer como pardimetros para que a fungao produza
0 resultados esperados.
Implementacio de fungdes recursivas
Vamos ver agora a codificagao de fungées recursivas, em que a funcao chama a si prépria ou chama outras
fungdes que, em algum momento, chama a primeira, tornando-se um processo recursivo,
Cada chamada da fungo recursiva é inserida numa espécie de pilha, sendo o limite de vezes para a sua
chamada limitada ao tamanho desta pilha. Se o valor correspondente ao tamanho maximo da pilha for
atingido, haver4 um estouro da pilha ou Stack Overflow, por este motivo, a sua codificagéo requer muita
atencao.
Trazendo a recursividade para a nossa realidade, vamos considerar como exemplo a ago contar o valor em
dinhelro que temos em um saco de maedas. Cada ato de retirar uma moeda do saco, ver o valor e somé-lo a0
valor das moedas jé retiradas é um proceso recursivo.
Este processo de retirar uma moeda, identificar seu valor e somar com o restante do saco se repete até que 0
aco esteja vazio, quando atingiremos 0 ponto de parada e a fungao retornars o valor zero, indicando que nao
hd mais moedas no saco.
Nesse ponto a fungSo contar dinheiro foi chamada um nlimero de vezes igual a quantidade de moedas no
aco, ea iltima chamada comeca a devolver os valores de retorno de cada instancia da fungio, iniciando por
2er0 (aco vazio), somado ao valor da titima moeda, da penditima etc, até retornar & primeira chamada
referente a primeira moeda, e nesse momento a funcao inicial se encerra trazendo como valor de retorno a
soma dos valores de todas as moedas que estavam no saco.
EXEMPLOS PRATICOS DE RECURSIVIDADE
Estudante, vamos agora aplicar a recursividade nas linguagens de programacio, lembrando que, é um recurso
de programagio que pode ser usado nas linguagens C, C++, Java, Visual Basic, Python, entre outras. Aqui
continuaremos usando a linguagem de programacao C
‘As fungdes recursivas contém duas partes fundamentais:seinai2g, 19:22 wiléd_231_u4_alg_log_ pro
1. Ponto de Parada ou Condicao de Parada: é o ponto onde a fungio serd encerrada,
2. Regra Geral: 6 0 método que reduz a resoluc3o do problema através da invocagao recursiva de casos
menores, que por sua vez so resolvidos pela resolugéo de casos ainda menores pela prépria fungéo, assim
sucessivamente até atingir 0 “ponto de parada” que finaliza a funsao.
Cada vez que uma fungao & chamada de forma recursiva, sao alojados e armazenados uma cépia dos seus
pardmetros, de modo a no perder os valores dos parametros das chamadas anteriores,
‘A chamada a uma fungao recursiva é igual chamada de uma fungao nao recursiva, na qual é necessario,
guardar uma “estrutura de invocago", sendo esta estrutura liberada depois do fim da execugao da funcao e
atualizac3o do valor de retorno.
‘Vamos entao ver um exemplo de programa com recursividade, onde sera criada uma func3o que faga a soma
dos niimeros e fica chamando a si préprio até que a condicao de parada aconteca. Neste exemplo, seré
somado 0s ntimeros no intervalo de 5 até o némero 0.
1 #include
2 int soma(int x)
4 int ys
5 if(x==@)
6 return @5
7 else
af
9 y =x + soma(x -1);
10 return y5
uo}
BR)
13 main()
ut
45 int num;
16 printf(\"\nA soma de @ ate 5
Hd \",soma(5));
wv)
Na linha 2 do programa, temos a declaragio da funcao soma.sainaize, 19:22 wiléd_231_u4_alg_log_ pro
Na linha 9, temos a chamada recursiva da funcao soma, onde sera somado 0 valor do nimero, acumulando a
soma na variavel y.
Na linha 5 temos a condigéo de parada, que é quando o numero chega no valor 0, ou seja, est iniciando em
5, que € 0 parametro recebido na funcao e vai até o valor 0.
Na linha 16 temas a chamada da func3o soma, passando o valor 5 como pardmetro.
0s valores que estdo sendo somados ficardo em uma pilha até a condiggo de parada, De uma forma
ilustrativa, ficaré da seguinte forma:
Figura | Fungo Recursiva
Ear ca)
Cente)
5+(44(3+Soma(3-1)))
§+(4#(3+(2+Soma(2-1))))
Fonte: elaborada pelo autor
Vamos para um segundo exemplo de recursividade, codificando-se agora uma fungo recursiva para somar
quantidade de digitos de um niimero. Serd usada na fungio recursiva, a fungo pré-definida abs(num) para
teste da condigao de parada e sera contado na fungao recursiva conta, a quantidade de digitos do nimero
10.000, sendo este pasado como parametro para a fungao recursiva conta,
1 #include
2 #include
3 int conta(int x)
5 int ys
if(abs(x) < 18)
7 return 15
@ else
9 y = 1 + conta(x/10);seinai2g, 19:22 wiléd_231_u4_alg_log_ pro
0 )
11 main()
Rt
13. int nun = 10000;
14 print#(\"Total: Xd\",conta(num) );
45}
De uma forma ilustrativa, este programa funcionaré da seguinte forma:
Fgura? | Fungio recursiva para conta digitos de um nimero
Die ste eoA)
Dee eeee at)
Deababa otra)
Dea ea haba lt R))
Sa hat al lL 2)
Fonte: elaborada pelo autor
VIDEO RESUMO
‘A maior motivacao que temos para estudar a codificagio de fungdes nas linguagens de programagoes
contempordneas é 2 reducéo da complexidade e a melhoria da modularidade dos programas. Entao vamos
ver neste video, como implementamos estas fungées e também exemplos praticos com a sua aplicabilidade.
Vocé poderd criar 0 seu programa recursivo, usando um site Palza.to para compilar e executar 0
programa de forma on-line.
‘Agora faca um teste usando este site, copiando e colando o programa recursivo abaixo, que faz a soma
dos niimeros que esto no intervalo de Oa 5.seinai2g, 19:22 wiléd_231_u4_alg_log_ pro
Hinclude
int sona(int x)
‘
int ys
if( x == 0)
return 05
else
t
y = x + soma(x -1)3
return ys
)
>
int main()
i
int nuns
printf(\"\nA soma de @ ate 5 = %d \",soma(5));
+
Aula 4
REGISTROS E ARQUIVOS
Vamos ver que o registro é um recurso importante para a organizaco dos dados utilizados nos
programas, pois permite tratar os dados na visdo de um conjunto de dados heterogéneos.
27 minutos
INTRODUGAO
la, estudante, vamos para um novo t6pico da disciplina de Algoritmos e Légica de Programagio, em que seré
abordada a programacio de registros e manipulacdo de arquivos, usando a linguagem de programagio C.seinai2g, 19:22 wiléd_231_u4_alg_log_ pro
Vamos ver que o registro € um recurso importante para a organizacao dos dados utilizados nos programas,
pois permite tratar os dados na visao de um conjunto de dados heterogeneos.
Vamos ver também como podemos manipular arquivos nos programas em C, gravando e recuperando os
conjuntos de dados a serem tratados nos programas. Ento, os registros serdo tratados como um conjunto de
campos € 0s arquivos como um conjunto de registros.
DEFINIGAO DE REGISTROS E ARQUIVOS
Caro estudante, ao manusearmos dados nos programas, muitas vezes, nos deparamos com informagées que
no so simples de armazenar em variaveis homogéneas, como sao os tipos inteiros, reais e caracteres, mas,
na verdade, eles so um conjunto de varios dados. Este conjunto de dados passa a ser entdo composto com
varias varidveis do tipo inteiro, real e caractere que, de alguma forma, sio interligadas, formando um registro.
Segundo Farrer (1999), os registros s80 um conjunto de dados logicamente relacionados, mas de tipos
diferentes, que facilita 0 agrupamento de variaveis que nao so do mesmo tipo e que tém estreita relac3o
légica entre eles.
Por exemplo: vamos definir um registro para representar um determinado produto.
Figura 1 | Registro Produto
Registro Produto
Fonte: elaborada pelo autor.
Este registro produto est definido com as variavels Codigo, Descricao, Unidade e Preco, sendo que cada
varidvel precisa agora ser associada um determinado tipo de dados, ficando entao da seguinte forma:
Inteiro Codigo,
caracter Descricao,
Caracter Unidade
Real Preco
‘Agora vamos atribuir valores para eles:
Figura2 | Registro Produto
Registro Produto
PCT
Unidadeseinai2g, 19:22 wiléd_231_u4_alg_log_ pro
Fonte: elaborada pelo autor,
Neste exemplo, temos um registro definido para o produto de cédigo 0001, sendo ele formado por varidveis
de tipos diferentes.
Os registros sao classificados como variaveis compostas heterogéneas, pois permitem agrupar variaveis de
tipos diferentes, como mostrado no exemplo acima.
Dependendo do volume de registros que deverd ser tratado no programa, ndo ser possivel manté-los em
meméria, por falta de espago ou pela necessidade de armazené-lo por um periodo de tempo longo. A
alternativa para isto & armazenar os registros em um arquivo,
© arquivo é ento um conjunto de registros armazenados em algum dispositivo secundario, como por
‘exemplo, um disco HD,
‘As operacbes basicas que podem ser feitas neste arquivo, por meio de um programa em C so: obteng3o de
um registro do arquivo, insergiio de um novo registro, modificagtio ou exclusdo de um registro.
A disposiao dos registros no arquivo pode favorecer determinadas operacdes em detrimento de outras. O
conhecimento das possibilidades de organizacdo dos registros nos arquivos permite ao programador escolher
aquela que seja mais adequada a solucdo do seu problema em termos de eficiéncia e eficdcia,
Existem 2 possibilidades de organizac3o dos arquivos:
41. Sequencial: 0s registros sdo inseridos ou consultados no arquivo na ordem sequencial.
2. Direta: 0 acesso ao registro é feito em ordem aleatéria.
05 arquivos podem assumir 2 formatos:
1. Texto: armazena caracteres que podem ser mostrados diretamente na tela ou modificados por editores de
texto simples.
- Exemplos: lista de dados, cédigo C, texto simples, paginas HTML.
2. Binério: arquivo tem uma sequéncia de bits sujeita As convengdes dos programas que o geraram, n3o
sendo legiveis diretamente.
- Exemplos: arquivos executaveis ou compactados.
Os registros, combinados com o seu armazenamento em arquivos, propiciam a gravacio dos dados de forma
permanente, possibilitando a recuperaso destes dados toda vez que se fizer necessério traté-los nos
programas.
PROGRAMAGAO DE REGISTROS NA LINGUAGEM C
Vamos agora aprofundar nossos conhecimentos de registros e arquivos, dando énfase na programagiioseinai2g, 19:22 wiléd_231_u4_alg_log_ pro
(Os registros sdo declarados como sendo uma estrutura na linguagem C, por meio do comando struct, sendo
uma colegdo de um ou mais varidvels, possivelmente de tipos diferentes, agrupadas sob um Unico nome.
Exemplo de uma declaragao de registro:
struct data
int dia;
‘int mes;
int ano;
oa
Onde:
+ a palavra-chave struct informa ao compilador que um modelo de estrutura est sendo definido;
+ "data" & uma etiqueta que dé nome a definido da estrutura;
+ osnomes dia, mes e ano declarados entre as chaves sdo as variéveis da estrutura;
+ uma definigdo de estrutura é um comando, por isso deve terminar com ponto-e-virgula,
As variaveis de uma mesma estrutura devem ter nomes diferentes, porém, estruturas diferentes podem
conter campos com o mesmo nome.
‘A definigdo de uma estrutura nao reserva qualquer espaco na meméria. No exemplo dado, nenhuma variavel
foi declarada de fato, apenas a forma dos dados foi definida. Essa definicdo, porém, cria um tipo de dados,
que pode ser usado para declarar varidveis,
Temos 2 formas de declarar uma variével x como sendo do tipo data:
struct data
int dia;
int mes;
int ano;
h
data x;
Nesta forma, definimos a estrutura e declaramos a varidvel xdo novo tipo definid em um nico comando.seinai2g, 19:22 wiléd_231_u4_alg_log_ pro
(Os campos de uma estrutura podem ser de qualquer tipo, inclusive uma estrutura previamente definida ea
declaragdo do formato de uma estrutura pode ser feita dentro da fungao principal (main) ou fora dela,
Vamos agora estudar um programa em C em que declaramos uma estrutura Reg Produto, com varidveis de
tipos diferentes, que representam um registro para um produto, conforme mostrado anteriormente, nas
Figuras 1 e 2 deste material
1 include
2 main ()
3
4 struct Reg_Produto {
5 char codigo[ 10];
6 char descricao[30]}
7 char unidade[S];
8 float preco;
9 h
1 Reg_Produto Prod;
11 print#(\"Digite 0 codigo:\");
12 scanf(\"%s\", &Prod. codigo) ;
13 printf(\"Digite a descricao:\");
14 scanf(\"%s\",8Prod.descricao) ;
15 printf(\"Digite a unidade:\");
16 scanf(\"%s\", &Prod.unidade) ;
17 print#(\"Digite o preco:
3
18 scanf(\'
-2\" ,8Prod.preco);
19}
Na linha 4 deste programa, declaramos a estrutura que chamamos de Reg Produto, contendo as variaveis
cédigo, descricdo, unidade e preco, declaradas nas linhas 5, 6, 7 8.
Na linha 10, declaramos a varidvel Prod, como sendo do tipo da estrutura Reg, Produto, com isto, teremos
dentro da variavel Prod, os campos codigo, descricao, unidade e preco.
Na linha 12, estamos lendo um valor do teclado e inserindo este valor na variavel cOdigo que est dentro da
varivel Prod, Veja entdo que este comando de leitura tern o nome da varidvel associada estrutura e depois
‘o nome da varidvel cédigo, separados por um ponto (). Esta é a forma de acessar individualmente os camposseinai2g, 19:22 wiléd_231_u4_alg_log_ pro
de uma determinada estrutura como se fossem varidveis comuns.
Nas linhas 14, 16 e 18, estamos lendo os valores para as varidveis Prod.descricao, Prod.unidade e Prod.preco.
PROGRAMAGAO DE ARQUIVOS NA LINGUAGEM C
Agora vamos complementar os nossos estudos com a codificagdo para manipular os arquivos na linguagem
de programagao C.
Para tratar arquivos, a linguagem C fornece um nivel de abstracao entre o programa e o dispositivo a ser
usado. Esta abstragio é chamada fila de bytes e 0 dispositive normalmente é o arquivo.
A biblioteca tem um identificador FILE, que é uma estrutura que define varios aspectos do arquivo,
‘como nome, status, posigSo corrente no arquivo, além de ter uma fila associada
Para manipular o arquivo seré necessério entdo criar no programa este ponteiro, associado a esta estrutura
FILE.
Exemplo: FILE “arg,
Onde arq seré 0 ponteiro para um arquivo. é usando este tipo de ponteiro que vamos poder manipular os
arquivos na linguagem C.
Abertura de arquivos
Toda vez que for necessério trabalhar com arquivo, primeiramente precisamos ABRIR 0 arquivo. Abrir 0
arquivo significa alocar o periférico em que o arquivo se encontra e deixé-lo disponivel para leitura/gravagao.
Exemplo: arg = fopen(nome_arquivo, ‘modo’
‘Onde arq é 0 ponteiro para 0 arquivo e modo € a forma como arquivo sera acessado, podendo ser das
seguintes formas:
ara escrta (cria novo arquivo ou sobrepde se arquivo jé existi
+r: para leltura (arquivo deve existr)
+ at para escrita no final do arquivo, e se nao existircria novo arquivo;
+ we: para leitura e gravacao (cria novo arquivo ou sobrepoe se jé existe)
+ rt: para leltura e gravacdo (arquivo deve existe)
+ at: para leitura ou escrita no fim do arquivo, e se no existircria novo arquivo;
+b: modo binério;
+t: modo texto.
Fechamento de arquivosse)o4as, 13:22 wied_291_v4_alp_tog_o-0
Da mesma maneira que precisamos abrir um arquivo antes do processamento, também se faz necessério 0
fechamento dele, para que suas informagbes nao possam ser violadas ou danificadas. Fechar um arquivo
significa liberar o periférico que estava sendo utilizado.
Exemplo: felose(arq):
Onde arq é 0 ponteiro para 0 arquivo,
Leitura de arquivos
Apés abrir um arquivo é necessirio LER os dados que esto em disco e transferi-los para meméria, Essa
transferéncia ¢ feita por registro. Esse procedimento é gerenciado pelo préprio sistema operacional
Exempla: fscanf(arq, "4s", string):
‘Onde arqé 0 ponteiro para 0 arquivo e string é a varidvel que receberd a linha apontada pelo ponteiro dentro
do arquivo.
Gravagio de arquivos
Da mesma maneira que os registros sao lidos de um arquivo, também devemos gravar registros em um
arquivo. A gravacdo consiste na transferéncia de um registro da memsria, para um periférico.
Exemplo: fprintf (arg, "6s
" string);
Toda ver que abrimos um arquivo ele posiciona o ponteiro no primeiro registro, ou seja, no inicio do arquivo.
Para que possamos trabalhar com os dados se torna necessdrio saber onde esté 0 ponteiro do registro. Isso
poderemos fazer testando se o ponteiro est no inicio (BOF - Bottom OF File) ou no final do arquivo (EOF - End
Of File). Esse é sempre executado apés a leitura do registro (mudanga da posicao do ponteiro).
Simbolicamente podemos representar esse passo da seguinte maneira:
Fgura3 | Representagio dos regisros em arquives
BOF (sido
brain)
‘a CODEU [NOME ENDERECO. LEONE] wl nagar
100i JOSE OA SILVA [RUA DAS CAMELIAS [760-7000
00002 — [MARIA RUA DAS DORES [786-2001 sr
0003 J ANTONTO [RUA HORTENCIAS [788-2002 Registro 2
7
EOF Final
de Argues)
Fonte: elaborada pelo autor.
Movimentagao de registros
Quando um arquivo € aberto, o panteiro esté apontando para o primeiro registro do arquivo. A cada leltura
do arquivo o ponteiro se movimenta para o préximo registro e assim por diante.
Exemplo de trecho do programa para fazer esta movimentago no arquivo:seinai2g, 19:22 wiléd_231_u4_alg_log_ pro
1 while (feof(arq)==0) {
2 fscanf(arq, \"%s\", string);
3 print#(\"%s %d\n\", string, num) ;
Este trecho do programa esté lendo todos os registros de um arquivo, em que a funcao feoffarq) retorna 1
quando 0 ponteiro arq esta apontando para o ultimo registro do arquivo, sendo retorna 0.
‘Agora vamos analisar um programa que abre o arquivo exemplo.txt,Ié e exibe em tela todos os registros
deste arquivo,
1 include
2 include
3 rain ()
5 FILE *arq;
6 char textol256];
7 arq =fopen (\"exemplo.txt\",\"rt\");
& if (arg == NULL)
18 printf (\
ro na abertura do arquivo. Fim de programa.
a1 exit (1)
2 }
13 fscanf(arq,\"%s\", texto); /* Léa primeira linha */
14 while(Ifeof(arq))
3
16 printf(\" Xs\", texto); /* Exibe @ linha na tela */
17 fscanf(arq,\"Xs\", texto); /* Lé a \"préxima\" linha */
18 }
19 felose(arq);
2 }se)o4as, 13:22 wied_291_v4_alp_tog_o-0
Na linha 5 deste programa, est sendo criado um ponteiro chamado *arq que é usado para navegar no
arquivo exemplo.txt, que esta sendo aberto na linha 7 deste programa. Na linha 13 do programa, est sendo
lida a 1° linha do arquivo. Na linha 14 tern-se uma estrutura de repetico, em que é testado se o ponteiro do
arquivo *arq chegou na ultima linha do arquivo. Enquanto a condigio for verdadeira, ou seja, nao chegou na
Ultima linha, 0 programa mostra a linha e |@ a préxima linha.
VIDEO RESUMO
Crie 0 seu programa de registros e arquivos, usando o site Paiza.io em que vocé poder’ codificar, compilar e
rodar deforma on-line.
6a Saiba mais
‘A manipulacao de caract
res € inteiros pode ocasionar dificuldades na legibilidade do cédigo,
principalmente pelas conversdes implicitas que a linguagem C permite na execug3o dos programas. Para
essas construcées especificas, Luis Damas organizou uma subsecdo em sua obra, com alguns exemplos
detalhadamente descritos.
0 livro Linguagem Cesté na nossa biblioteca virtual, e 0 capitulo que aborda esse assunto esté na
subsegao Situagées em que inteiros e caracteres ndo se devem misturar, na pagina 43.
Aula
FARRER, H. ef al. Algoritmos estruturados. Rio de Janeiro: LTC Editora, 1999.
MIZRAHI, V. V. Treinamento em Linguagem C: médulo 1 e 2. Sao Paulo: Pearson Prentice Hall, 2007.
Aula2
FARRER, H. et al. Algoritmos estruturados. Rio de Janeiro: LTC Editora, 1999.
MIZRAHI, V. V. Treinamento em linguagem C: médulo 1 e 2. Sao Paulo: Pearson Prentice Hall, 2007.seinaizg, 19:22 vwildd_231_v4_alg_log_pro
Aula3
FARRER, Harry; BECKER, Christiano; FARIA, Eduardo; MATOS, Helton; Santos, Marcos Augusto; MAIA, Miriam L.
Algoritmos Estruturados. Rio de Janeiro: LTC Editora, 1999,
KERNIGHAN, Brian W. e RITCH, Dennis M., C: A Linguagem de Programago, Rio de Janeiro, Campus, 1986.
MIZRAHI, Victorine Viviane. Treinamento em Linguagem C: médulo 1 e 2. Sao Paulo: Pearson Prentice Hall,
2007; ISBN 9788576051350.
Aula 4
FARRER, H. et al. Algoritmos estruturados. Rio de Janeiro: LTC Editora, 1999.
Imager de capa Stonseteshuterstock