0% acharam este documento útil (0 voto)
17 visualizações32 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.

Enviado por

mauriciosantos07
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
0% acharam este documento útil (0 voto)
17 visualizações32 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.

Enviado por

mauriciosantos07
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
Você está na página 1/ 32
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 vnota seinai2g, 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 vnota seinai2g, 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 1 seinai2g, 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) Bt seinai2g, 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 autor se)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 FUNGOES seinai2g, 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 Unidade seinai2g, 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 programagiio seinai2g, 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 campos seinai2g, 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 arquivos se)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

Você também pode gostar