37
Introdução à Lógica e Programação
UAM
31
Introdução à Lógica e Programação
UAM
28
Introdução à Lógica e Programação
UAM
34
Introdução à Lógica e Programação
UAM
30
Introdução à Lógica e Programação
UAM
1
Introdução à Lógica e Programação
UAM
4
Introdução à Lógica e Programação
UAM
1
Introdução à Lógica e Programação
UAM
Texto de pré-visualização
21082023 1630 Técnicas de Programacgao TECNICAS DE PROGRAMACAO UNIDADE 1 PROGRAMACAO ESTRUTURADA Fernando Cortez Sica httpscodelyfmucontents3amazonawscomMoodleEADConteudoCTITECPRO19unidade1ebookindexhtml 131 21082023 1630 Técnicas de Programação httpscodelyfmucontents3amazonawscomMoodleEADConteudoCTITECPRO19unidade1ebookindexhtml 231 21082023 1630 Técnicas de Programacgao ee Introducao g Para iniciarmos a nossa conversa é interessante falarmos sobre o que é a linguagem de programaao Sabemos que linguagem é todo sistema constituido por cédigos regido por regras cujo objetivo é transmitir uma informado Mas 0 que vem a ser linguagem na computado Linguagens existem apenas para desenvolver programas No campo da informatica a linguagem nado é usada somente na criacdo de programas computacionais mas sim em diversas outras ocasidées podemos citar as linguagens formais que permitem por exemplo a especificagdo e teste das prdéprias linguagens de programacao protocolos de redes de computadores e reconhecimento de padrées em processamento de textos Na area de hardware podemos citar as linguagens de descrido de hardware HDL Hardware Description Language este tipo de linguagem objetiva o projeto de circuitos eletrénicos digitais tais como processadores A partir do uso de uma HDL podese por exemplo criar um chip configurar uma FPGA Field Programmable Gate Array Matriz de Portas Programaveis em Campo ou um PSoC Programmable SystemonChip Sistema programavel em um chip Por fim podemos mencionar também as linguagens de marcaao dotadas de elementos de anotacées de forma a formatar um texto a ser exibido ou a ser manipulado Como exemplos temos a HTML HyperText Markup Languagem Linguagem de Marcado de HiperTextos e o XML eXtensible Markup Languagem Linguagem de Marcacao Extensivel No nosso caso vamos nos aprofundar nas linguagens de programaao mais especificamente nas linguagens estruturadas utilizando para as exemplificacées a linguagem C de programacao Entdo 0 que vem a ser efetivamente uma linguagem de programacao Neste capitulo veremos alguns conceitos relacionados a programacado estruturada assim como os primeiros passos para a construcdo de programas computacionais Ao final deste vocé tera condicées de implementar programas manipulando tipos de dados simples strings e vetores 11 Conceitos e caracteristicas Uma linguagem de programacdo tem por objetivo descrever a sequéncia das ac6es que o computador devera executar para que um objetivo seja alcancado PUGA 2016 Para tanto a linguagem devera descrever também as informac6es constantes e variaveis que serado processadas pelas instrucées As acgOes a serem realizadas pelo computador sdo representadas nas linguagens de programagdo pelas instruc6es de alto nivel que deverdo ser codificadas em instrucées de baixo nivel especifica do processador A figura a seguir ilustra as etapas necessarias para que tenhamos um programa apto a ser executado em uma plataforma computacional httpscodelyfmucontents3amazonawscomMoodleEADConteudoCTITECPRO19unidade1ebookindexhtml 331 21082023 1630 Técnicas de Programacgao Ideias e reflexdes Levantamento dos requisitos q Codificagao Usando ambiente de objetivos do programa e par rogramacao ou editor de texto ticularidades a serem observadas Prog sa Arquivo c ou cpp Compilagao Geracgao de um codigo LinkEdigao Geragao do arquivo intermediario ja em linguagem de executavel final maquina cédigo especifico do processador destino Arquivo objeto oO ou obj Arquivo executavel exe Figura 1 Etapas para a geracdo de um programa arquivo executavel Neste fluxo ndo estado representadas as etapas de teste e verificacdo de qualidade que podem provocar uma volta a primeira etapa processo ciclico Fonte Elaborada pelo autor 2019 Como mostrado na figura falouse em plataforma computacional Mas porque nado falamos diretamente processador ou computador Para saber mais sobre o tema clique nas abas abaixo Linguagen O fato é que algumas linguagens como o PHP Ruby e 0 Javascript sdo linguagens Ss interpretadas ou seja as suas instrugdes sao executadas por uma maquina virtual interpreta que converte em tempo de execudo para o cddigo do hardware especifico das Linguagen Por sua vez linguagens compiladas como o CC e Pascal tem os seus cédigos de Ss baixo nivel compativeis com o processador gerados na etapa de compilacao compilada produzindo por exemplo os arquivos do tipo exe s Linguagen Existem as linguagens hibridas tais como o JAVA e 0 C que sao compiladas porém s hibridas sao executadas sobre uma maquina virtual Antes de continuarmos pode vir a cabeca a seguinte duvida a linguagem C ANSI aqui referenciada simplesmente como linguagem C é diferente da linguagem C C plus plus Existem diferencas entre os dois padrées Rapidamente falando a linguagem C é uma extensao da linguagem C incorporando por exemplo os conceitos de programacao orientada por objetos httpscodelyfmucontents3amazonawscomMoodleEADConteudoCTITECPRO19unidade1ebookindexhtml 431 21082023 1630 Técnicas de Programacgao SSS VOCE O CONHECE A linguagem C foi criada nos finais dos anos de 1960 e inicio dos anos de 1970 por Dennis Ritchie Além de criar essa famosa linguagem que ainda esta presente em diversas plataformas e sistemas ele também foi responsavel pela criacgdo do sistema operacional UNIX Para saber mais sobre Dennis Ritchie clique aqui httpmindbendingorgptumanosemdennisritchie httpmindbendingorgptumanosemdennisritchie MAGNUN 2012 httpmindbendingorgptumanosemdennisritchie RN Para implementar um programa deveremos ter em mente o seu objetivo e consequentemente quais informag6es deverdo ser manipuladas e quais informacées deverdo ser produzidas variaveis de entrada e de saida por ele Com isso poderemos refletir na primeira acdo a ser feita para que possamos prosseguir na implementacao definicdo das variaveis Na sedo a seguir falaremos sobre 0 que vem a ser os tipos das variaveis 12 Tipos de Dados Como mencionamos uma linguagem de programacdo deve conter além das instruc6des as prdprias informa6es a serem manipuladas sendo assim 0 sistema operacional deve reservar espacos na memoria principal do computador para armazenalas Mas como saber a quantidade de memoria a ser alocada A resposta a essa pergunta esta relacionada com 0 tipo das variaveis Em linguagens de programacao como a linguagem CC o programador deve assinalar em seu cddigo o tipo das variaveis a serem manipuladas Além de possibilitar a alocacdo de memoria a definido do tipo servira também para criar os mecanismos internos inerentes 4 sua manipulado Por exemplo se pensarmos na matematica encontramos os tipos numéricos cada um com as suas especificidades nuimeros reais inteiros racionais dentre outros essa diferenciagdo que ocorre na matematica pode ser trazida para a programacao Vamos inicialmente nos deter aos tipos numéricos da linguagem CC Existem diferenas nos tipos e na forma de definiado entre 0 C standard e o C No quadro a seguir ilustraremos alguns tipos basicos numéricos que encontramos em ambas as linguagens ASCENCIO 2012 httpscodelyfmucontents3amazonawscomMoodleEADConteudoCTITECPRO19unidade1ebookindexhtml 531 21082023 1630 Técnicas de Programacgao Capaz de armazenar a faixa de valores entre 128 a 127 O seu nome relacionase a possibilidade de seu uso para armazenar char caracteres representados pelo seu cédigo na tabelaASC 8 bits 1 byte V v Porém um char pode ser usado também para armazenar dados numericos Manipula valores inteiros na faixa de 32768 até 32767 on 6bits ou 32 bits Quando associado ao modificador de tipo long long int conformeo int tem a sua faixa de 2147483648 a 2147483647 4 bytes O compilador V V tipo int pode variar em fungao do compilador utilizado mp utilizado podendo ser representado em alguns casos por 4 bytes float Manipula valores reais na faixa de 34E a 34E 32 bits V v Assim como o float o double também armazena numeros double reais porém na faixa de 17E a34E 64 bits v v bool Usado para valores binarios true verdadeiro ou false 8 bits J falso Quadro 1 Tipos de dados numéricos basicos encontrados nas linguagens CC Os tamanhos sAo relativos aos computadores padrdo x86 podem variar em outras arquiteturas Fonte ASCENCIO 2012 p26 Mas como definir as variaveis Vamos supor que temos que fazer um programa que calcule a média da idade de duas pessoas Clique nos itens abaixo e aprenda mais sobre a definiao dessas variaveis Qual o objetivo de nosso programa Calcular a média de duas idades Quais informacgoes deverao ser classificadas como entradas As idades das duas pessoas As idades deverao ser de qual tipo Considerando que as idades sao representadas por numeros inteiros entao deveremos declara las como int httpscodelyfmucontents3amazonawscomMoodleEADConteudoCTITECPRO19unidade1ebookindexhtml 631 21082023 1630 Técnicas de Programacgao e Qual informacao que devera ser gerada A média das duas idades e e A media devera ser de qual tipo Como a média podera resultar em um valor real deveremos declarala como float Antes de colocarmos aqui o nosso primeiro exemplo de cédigo em C mencionamos que a definiao de uma variavel segue a estrutura de acordo com Deitel 2011 tipo nomedavariavel J Ou tipo nomedavariavel1 nomedavariavel2 J As estruturac6es acima sdo utilizadas no cédigo a seguir Neste cddigo que objetiva o calculo e impressdo na tela a média de duas idades Os comentarios estao precedidos por duas barras comentarios também poderdo aparecer entre as marcas e usadas quando o comentario extrapolar mais do que uma linha Os numeros no lado direito colocados como comentarios representam o numero das linhas httpscodelyfmucontents3amazonawscomMoodleEADConteudoCTITECPRO19unidade1ebookindexhtml 731 21082023 1630 Técnicas de Programacgao Programa para o calculo da média de duas idades Hinclude stdioh f1 int maind ff2 ffs int idadels6 idade7365 FF Float mediag f media Cidadel idadez 205 S printfCMédia ZF medias fi return Ff9 final main f3 Desta forma na codificaao acima temos Linha 1 a diretiva include referéncia a inclusdo de um arquivo em tempo de compilaao Este arquivo é denominado arquivo header cabecalho e contém defini6es tais como o formato de utilizacdo do comando a ser chamado oportunamente de funcdo printf O stdio denota standard IO Standard InputOutput EntradaSaida Padrao Linha 2 0 processamento do programa deve ser iniciado por uma linha especifica Neste caso o ponto de partida é denominado como programa principal por isso o nome main principal Linha 3 0 simbolo indica 0 inicio de um bloco funcional Blocos funcionais envolvem as instrug6es que deverdo ser executadas em conjunto de forma sequencial A finalizacdo do bloco funcional encontrase na linha 9 indicada pelo caracter Linhas 4 e 5 Essas linhas indicam a definicdo das variaveis Na linha 4 temos a definido de 2 variaveis do mesmo tipo tipo int cada variavel dentro de uma lista de um mesmo tipo é separada por uma virgula e na linha 5 foi realizada a definiado de uma variavel do tipo float O nome de cada variavel nao pode conter caracteres especiais como por exemplo e acentos e deve comecar por uma letra ou com um trao underline Em CC nado ha a obrigatoriedade das declaraées de variaveis aparecerem antes do inicio efetivo do cddigo No momento da criaado da variavel podera ocorrer também a instanciaao inicial como por exemplo int x a 165 Linha 6 essa linha contém o processamento para o calculo da média Nela aparece 0 comando de atribuido simbolo responsavel por atribuir 0 resultado do calculo a variavel media Notase a utilizacdo da representacdo do denominador como numero real float para que o resultado ndo seja arredondado para um inteiro uma vez que as variaveis utilizadas no numerador so inteiras Linha 7 0 comando printf realiza a impressdo do resultado No caso deste exemplo a impressdo sera direcionada a tela A mensagem a ser exibida é descrita entre aspas média f Mas 0 que vem a ser 0 Yf O simbolo indica o formato que sera exibida a informacao Utilizandose a letra f a variavel sera exibida no formato de nimero real float Caso o programador desejasse também exibir os valores das idades poderia usar printfA média das idades d e d é f idade1 idade2media Neste caso as idades seriam impressas no formato decimal inteiro em fungdo da utilizagdo do d na mascara de impressao Linha httpscodelyfmucontents3amazonawscomMoodleEADConteudoCTITECPRO19unidade1ebookindexhtml 831 21082023 1630 Técnicas de Programacgao 8 retorno do programa principal Tal retorno neste caso é realizado pelo programa ao sistema operacional de modo que este possa saber a causa do término da execucdo do programa condiao normal de término ou em fungao de alguma falha em seu processamento Focando melhor no comando printf além das opcées d e f existem outros formatos de impressdo alguns estado resumidos no quadro a seguir Imprime um caracter de tabulagao tab printfd dxy 5 8 Imprime uma nova linha printfc coplop2 A B Imprime um caracter printfdx 5 Imprime um caracter printfdx 500 Soc Caracter printfvalorcop valorA d Decimal inteiro printfvalordop valor65 i Equivalente ao d printfvaloriop valor65 Ki Inteiro com K casas a esquerda printfvalor5ix valor5 of Ponto flutuante printfvalorfz valor5340000 KE Ponto flutuante com K casas decimais printfvalor2fz valor433172 e Notagao cientifica printfvalorev valor33416e3 0 Octal printfvalorok valor1353 ox Hexadecimal mintsculo printfvalorxk valor2eb OX Hexadecimal maiusculo printfvalorXk valor2EB Quadro 2 Alguns formatos de impressAo na tela associados a mascara do comando printf Fonte Elaborado pelo autor 2019 Vamos incrementar um pouco nosso exemplo Veremos a seguir algumas funcionalidades que poderdo ser incorporadas aos nossos programas tratandose das estruturas de decisdo e de repetidao 13 Estruturas de decisao e de repeticao Os programas nem sempre sao codificados pensandose em um fluxo de execucdo linear ou seja as vezes temos que alterar o fluxo de execucdo em virtude de tomadas de decisdo Essa alteracdo de fluxo pode ser provocada pelos comandos condicionais e pelos comandos de lacos de repetido Comandos condicionais sao aqueles que resultam em uma tomada direta de decisdo em fundo de uma condiao a ser verificada Por sua vez comandos de lacos de repetido servem para executar uma instrudo ou um conjunto de instrucdées intmeras vezes de forma repetitiva enquanto uma certa condiao estiver sendo satisfeita Vamos a seguir detalhar esses dois tipos de comandos 131 Estruturas de decisdo httpscodelyfmucontents3amazonawscomMoodleEADConteudoCTITECPRO19unidade1ebookindexhtml 931 21082023 1630 Técnicas de Programacgao No nosso cotidiano temos que tomar frequentemente decis6es para que as acdes sejam consequéncias das escolhas compativeis aos objetivos No caso da programacao nado é diferente ou seja existem comandos para tomadas de decisdo Tomemos um exemplo de nosso cotidiano Se estiver chovendo Entao Escolher um f11me Fazer pipoca Deitar na cama para ver o filme com pipoca Senao Combinar com oS amigos um encontro Seair de casa Encontrar oS amigos no local combinade No trecho acima aparecem elementos que poderdo ser mapeados diretamente em uma linguagem de programacao por exemplo em C 0 condicionante Sia é definido na linguagem C pelo comando if Ga que tem a funcdo de testar uma condicao aetiwer chowerde para que se possa tomar a decisdo de executar o bloco contendo as ades no nosso exemplo do cotidiano relativas a ficar em casa ou as aces relativas a sair de casa As acées pertinentes a saida de casa sdo referenciadas na linguagem C pelo comando else GSenao Para melhor exemplificar a sintaxe na programado vamos tomar 0 exemplo de uma implementaao para o calculo da média de duas notas fornecidas pelo usuario de modo a informar posteriormente se o cursista foi ou nao aprovado httpscodelyfmucontents3amazonawscomMoodleEADConteudoCTITECPRO19unidade1ebookindexhtml 1031 21082023 1630 Técnicas de Programacgao Programa para o calculo da média de duas notas fornecidas fpelo usuario Hinclude stdioh int main float notal notaz mediay fF peintfePreimeira Notat Jo scanftcsZr anotaldy 2 printcSequnda Notat Jy scanfcf notazyy ffs media Cnotal notaz 2 ifmedia 6 fF ffs printcCursista Aprovadoly ffé fi ése ffs ffs prantfcCursista Reprovadol 25 ffl ffil return y ffinal main Na codificaao acima foi introduzido mais um comando de entrada e saida tratase do scanf linhas 2 e 3 Nas referidas linhas o programa fornece orientaées ao usuario através do comando printf e espera pela digitacdo das notas fornecidas pelo usuario cujo formato é passado ao scanf através da diretiva precedida pelo simbolo no caso a variavel lida pelo teclado é armazenada no formato float MIZRAHI 2008 Por sua vez a linha 4 corresponde ao comando condicional if executando as instrugées delimitadas pelas marcaées de inicio de final de bloco simbolos begin inicio e end fim respectivamente Quando o bloco envolver apenas uma Unica instrucdo a utilizacdo dos delimitadores de bloco tornase opcional Notase no comando condicional if a expressdo de teste delimitada pelos parénteses A expressdo de teste admite os demais operadores de comparacao e operadores légicos operadores de comparagao maior menor maior ou igual menor ou igual igual diferente operadores légicos or ou e and not ndo Neste caso podemos escrever no codigo expressdes condicionais compostas como por exemplo exemplo 1 if ta bd c I d Neste caso o if somente sera verdadeiro caso a variavel a seja maior do que b e simultaneamente c seja diferente em relacgao a variavel d httpscodelyfmucontents3amazonawscomMoodleEADConteudoCTITECPRO19unidade1ebookindexhtml 1131 21082023 1630 Técnicas de Programação httpscodelyfmucontents3amazonawscomMoodleEADConteudoCTITECPRO19unidade1ebookindexhtml 1231 exemplo 2 para esse exemplo o if será verdadeiro caso as variáveis a e b sejam iguais entre si ou a variável c seja diferente do valor zero Para expressar c diferente de 0 poderiase também usar c 0 exemplo 3 por fim neste exemplo temse a execução do bloco do if somente se a variável a seja igual a 0 e a variável c diferente de 0 Voce pode estar se perguntando Mas qual a relaçao entre por exemplo a com a comparaçao de a com o valor 0 Na linguagem C todo valor diferente de 0 e considerado como verdade e consequentemente o 0 e considerado como falso Sendo assim caso a variavel a seja 0 a expressao 0 pode ser tratada como não falso ou seja verdade Comandos condicionais poderao ser manipulados de formas encadeadas ou aninhadas Neste caso a condiçao do senao else resulta em um novo condicional Como exemplo vamos supor as alıquotas de desconto do imposto de renda sobre as faixas salariais até 190398 isento de 190399 a 282665 75 de 282666 a 375105 15 de 375106 a 466468 225 acima de 466468 275 Implementando um programa usando comandos condicionais encadeados temos 21082023 1630 Técnicas de Programacgao include stdioh int mainvoid float salario descontoj printfeDigite o valor do salaric Jy scanfCf tsalarios ifsalariotslse335 begin descontozgy end else if salari021590359948salariots257665 begin descontosal ari00755 end else if salarios2676 668salariotes3185 begin descontozsal ar10155 end else if salario23751 6644asal ario0265466 begin descontozsal ar1002254 end éese begin descontozsal ar1002754 end praintfSalarios2f Desconto IRRF 2f Salaricdescontoy return F No caso do cédigo acima temos as faixas de desconto do imposto de renda sendo cobertas pelos testes condicionais A grande vantagem de se usar testes condicionais encadeados esta no fato de que quando uma condido for satisfeita as demais comparacgées nado serdo realizadas diminuindose assim o esforco computacional e consequentemente 0 tempo de processamento E importante salientar que esse uso somente é aplicavel quando os casos forem excludentes ou seja no caso de nosso exemplo um salario se enquadrara em apenas uma faixa de descontos httpscodelyfmucontents3amazonawscomMoodleEADConteudoCTTECPRO19unidade1ebookindexhtml 1331 21082023 1630 Técnicas de Programacgao a VOCE QUER LER e Os sinais usados como operadores légicos sao também encontrados na manipulaao bitabit Assim temos por exemplo AND Légico AND bitabit Esses operadores bitabit poderdo ser encontrados e usados na implementacao por exemplo de sistemas embarcados device drivers e kermel nucleo de sistemas operacionais Maiores detalhes sobre as operagoes bitabit bitwise vocé pode ler aqui httpswwwembarcadoscombrbitsemlinguagemc httpswwwembarcadoscombrbitsemlinguagemc SOUZA 2015 De O comando condicional if também podera escrito na forma de if terndrio Por exemplo suponha 0 seguinte codigo iffa b begin cz 105 end ese begin cz i155 end No trecho acima os delimitadores e inicio e fim foram utilizados porém pelo fato de que tanto o bloco do if quanto o bloco do else conter apenas uma Unica instruao poderiam ser omitidos Podemos notar que a variavel c é instanciada tanto no processamento do if quanto no processamento do else Sendo assim poderemos reescrever o trecho do cédigo substituindoo pela estrutura do if terndrio httpscodelyfmucontents3amazonawscomMoodleEADConteudoCTITECPRO19unidade1ebookindexhtml 1431 21082023 1630 Técnicas de Programacgao ceffaby ig 153 No if terndrio o valor da instanciacdo relativa a parte do if é precedida pelo simbolo enquanto que a relativa a parte do else é precedida pelo caracter ee VOCE SABIA e Quando temos que selecionar uma acdo dentre de varias opc6es ao invés de utilizarmos a estrutura ifelse if podemos usar o comando switchcase Usando 0 switchcase os nossos programas ficam mais organizados e claros para serem entendidos Para saber mais sobre essa forma clique aqui httpswwwembarcadoscombrcomandodecontroleswitchcase httpswwwembarcadoscombrcomandodecontroleswitchcase GATTO 2016 httpswwwembarcadoscombrcomandodecontroleswitchcase ee O controle de fluxo alterando a sequéncia da execudo das instrugées nado é especifico aos comandos condicionais também é pertinente as estruturas de repeticao A seguir veremos o que sao as estruturas ou lacos de repeticao 132 Estruturas de repetido Os comandos de repetido permitem que um determinado bloco de instru6es seja executado por mais de uma vez A quantidade de vezes que o bloco sera executado repetitivamente é definida pela estrutura condicional Em CC encontramos 3 comandos de repetiao for while e dowhile comando for esse comando é utilizado quando se tem de forma antecipada a quantidade de vezes que o bloco devera ser executado No caso do exemplo do fatorial sabese que a Nn multiplicacao fat fat i devera ser executada N vezes Os httpscodelyfmucontents3amazonawscomMoodleEADConteudoCTITECPRO19unidade1ebookindexhtml 1531 21082023 1630 Técnicas de Programação httpscodelyfmucontents3amazonawscomMoodleEADConteudoCTITECPRO19unidade1ebookindexhtml 1631 campos de configuração separados por ponto e vírgula são todos opcionais A seguir seguem o formato para a utilização do comando for e alguns exemplos de codificação Exemplos neste caso o bloco será executado por 10 vezes incrementandose automaticamente a variável i a cada iteração cada campo do comando for poderá ter vários itens separados por vírgulas Neste caso ocorrem as instanciações das variáveis i e j para que possam ser incrementadas e decrementadas a cada interação respectivamente As repetições serão finalizadas quando a expressão lógica i5j0 assumir um valor falso para esse caso não existe uma instanciação de variável no início do laço de repetição ou seja as variáveis serão manipuladas com os seus valores atuais esse último caso sem qualquer conteúdo dos campos do comando for denota um laço infinito comando while o comando while realiza a execução do bloco de instruções a ele vinculado enquanto a sua expressão de permanência resultar em um valor verdade Neste caso utiliza se esse comando quando não se sabe de antemão a quantidade de vezes que o bloco deverá ser executado Igualmente aos comandos if e for a expressão pode ser composta com os itens separados por operadores lógicos Diferentemente ao for esse comando não realiza os incrementos automáticos das variáveis ficando neste caso o programador responsável pelo controle do laço 21082023 1630 Técnicas de Programacgao comando dowhile comando semelhante do while porém o teste de permanéncia do laco é realizado apos pelo menos uma interacgao Sendo assim esse comando executa e testa enquanto que o while realiza a sequéncia testa e executa A expressao de permanéncia do laco de repeticdo também pode envolver operadores légicos Para uma melhor abstrado tomemos por exemplo a figura abaixo que mostra 3 vers6es para calcular o valor do fatorial de um certo nimero cada versdo usando um comando de repetiao httpscodelyfmucontents3amazonawscomMoodleEADConteudoCTITECPRO19unidade1ebookindexhtml 1731 21082023 1630 Técnicas de Programacgao include stdioh include stdioh int main int main int N fatl il int N fatl il printf N printf N scant d46N scant tdéN ifN 0 ifN 9 printf Ndo existe fat de num negativo printf Nao existe fat de num negativo else else if N if N fat1 fat1 else else do ft for iN i fat fat i fat fat i itt while i Nj printf Valor do fatorial de td d N fat printfValor do fatorial de td é td final else N fat return 0 return 0 a Usando for b Usando dowhile include stdioh int main int N fatl1 i printtN scanf td4N ifN 0 printf Nao existe fat de num negativo else iN while i fat fat i i printf Valor do fatorial de 4d é d N fat return O c Usando while Figura 2 Trés vers6es de cédigo para o calculo do fatorial de um nuimero em a usando 0 comando for Em b calculo utilizando 0 comando dowhile e em c usando 0 while Fonte Elaborada pelo autor 2019 Na figura acima podemos ver a utilizagdo dos comandos de repetiao encontrados na linguagem C os comandos for while e o dowhile Perceberemos entre b e c ando necessidade do teste condicional comparando o N com o valor 0 uma vez que o while realiza o teste de permanéncia do laco antes da primeira execucao diferente do comando dowhile que realiza pelo menos uma execudo para depois efetuar o teste httpscodelyfmucontents3amazonawscomMoodleEADConteudoCTTECPRO19unidade1ebookindexhtml 1831 21082023 1630 Técnicas de Programacgao a CASO Atualmente para o desenvolvimento de sistemas encontramos dois grandes grupos as linguagens puramente estruturadas como por exemplo 0 C Standard e as linguagens orientadas a objetos como o C e o Java Um certo desenvolvedor de sistemas embarcados sistemas onde a programacado é geralmente voltada para um micro controlador se deparou com o dilema na escolha do paradigma Comecou a ponderar alguns pontos tais como tamanho de cddigo gerado sistemas embarcados possuem grande limitagdo de memoria e necessidade de ter o maximo controle sobre a manipulacdo de memoria e ter a possibilidade de otimizar ao maximo o cédigo em funao das particularidades do dispositivo a ser programado a orientado por objetos em seu encapsulamento de cddigo torna dificil atender a esses requisitos Analisou que mesmo com as facilidades de desenvolvimento manutencdo e portabilidade do paradigma orientado a objetos os dois primeiros pontos foram decisivos na adocdo de programacao estruturada utilizandose para tal a linguagem C Moral da historia mesmo com todas as facilidades proporcionadas pelas linguagens por exemplo C e Java juntando com as facilidades dos ambientes integrados de desenvolvimento 6 sempre bom sabermos uma linguagem que temos maior controle de como as operaoées estado sendo feitas principalmente nos niveis mais baixos de abstracao préximos ao hardware Sendo assim é conveniente que se saiba linguagens do tipo C Standard ou C ANSI ee Os comandos de laco de repetido e condicionais sao a base da légica de programacdo Sendo assim um programa é uma sequéncia de instanciaées e controles de fluxo de execucdo Particularmente os comandos de repetido sdo extremamente Uteis quando manipulamos variaveis cujas estruturas sdo denominadas como vetores Eo que veremos a seguir 14 Vetores Em algumas situac6es temos que manipular um grande ntimero de informacées do mesmo tipo por exemplo supondo que devemos armazenar as notas de uma certa prova de uma turma inteira de cursistas Vamos voltar ao exemplo da média abordado anteriormente haviamos manipulado apenas duas notas gerando para isso duas variaveis Vocé deve se perguntar Se para duas notas fornecidas pelo usuario usamos duas variaveis entdo para por exemplo 40 notas deveremos usar 40 variaveis A resposta tornara a solucdo mais simples usaremos um vetor para armazenar as notas Mas entao o que é um vetor Vetor é uma estrutura computacional para 0 armazenamento de dados homogéneos ou seja todas as informagées do vetor possuem a mesma tipagem Para definirmos um vetor em CC usaremos a seguinte sintaxe httpscodelyfmucontents3amazonawscomMoodleEADConteudoCTITECPRO19unidade1ebookindexhtml 1931 21082023 1630 Técnicas de Programacgao tipo momedavariavel Etamanhodovetor14 Por exemplo se desejarmos no caso da nota a manipulagao de 8 itens teremos Float motas sj Para manipularmos um vetor teremos que usar um indice que indicara qual a célula a ser acessada A figura a seguir ilustra a estruturado do vetor de oito posiées cujas células armazenardo valores do tipo float indice Posiggco 66OF8CFlod1lClU2lhCUD8lCUMAl CSCC Contetido da celula células Figura 3 Estruturacdo de um vetor de 8 posiées As posiées sdo acessadas por um indice que varia da posicao 0 até a posicdo N1 no caso deste exemplo até a posicao 7 Fonte Elaborada pelo autor 2019 Na figura acima temos a estruturacdo de um vetor Mas como efetivamente declarar um vetor preenchélo e utilizarmos as informac6ées de suas células Vamos adaptar o exemplo da média das notas para que a média seja calculada sobre um conjunto de 8 notas httpscodelyfmucontents3amazonawscomMoodleEADConteudoCTITECPRO19unidade1ebookindexhtml 2031 21082023 1630 Técnicas de Programacgao Programa para o calculo da média de notas fffornecidas pelo usuario Usande vetor include stdioh int maint float notast6 mediaegj ffi int indices fordindice 6 indice Sf indicet ff2 printfeNota Zck indicey ffs scanfFcif anotasEindicel yy ff4 forindice 6 indice BF indice media notasEindicely 5 media media 9 45 printfeMedia finali 2f medialy fi return Na codificado acima para o calculo da média de 8 notas temos e Linha 1 criagao do vetor de notas com 8 posicdes de float e também criacdo da variavel que recebera o calculo da média jaa atribuindo o valor 0 devido ao fato de que ela acumulara a somatoria das notas em cada iteracdo do laco de repeticdo e Linha 2 definicdo do laco de repetido manipulando a variavel de indice para o acesso das células do vetor O indice varia de 0 até 7 em funcgao do tamanho do vetor criado e Linha3 apenas uma mensagem de orientacdo ao usuario de forma que ele fornea a nota da iteragao corrente A impressao na tela se dara na forma por exemplo Nota 3 e Linha 4 linha responsavel pelo recebimento do valor através da digitacdo do usuario Notase que sera preenchida a célula do vetor cuja posido é apontada pelo indice Desta forma temse httpscodelyfmucontents3amazonawscomMoodleEADConteudoCTITECPRO19unidade1ebookindexhtml 2131 21082023 1630 Técnicas de Programacgao genericamente que a atribuido do valor a uma célula do vetor é feita na forma vetorid valor onde a variavel i desempenha a funcdo de indice do vetor O caracter faz parte do uso da fungao scanf e Linha5 responsavel pela somatoria das notas Em funcdo da complexidade do programa essa somatoria poderia ser colocada no mesmo laco de repeticdo da entrada porém foi colocada em um laco a parte para permitir uma melhor abstracdo Para realizar a somatoria é acessada a célula correspondente a interacdo Desta forma temse genericamente que o acesso ao valor de uma célula do vetor é feito na forma varidvel vetorfia Na mesma linha aparece a expressao media notaslLindice Que equivale a media média notaslindicel e Linha 6 essa linha finaliza o calculo da média dividindose a somatoria obtida no laco de repeticdo pelo numero de valores fornecidos e Linha 7 nesta linha existe um elemento novo na formatagao do orintf o uso do 2 entre o simbolo e o caractere que indica o formato de impressao f float Com isso formatase a impressdo para dois digitos apds 0 ponto realizando um arredondamento do valor Caso haja a necessidade de usar estruturas com mais de uma dimensio por exemplo matrizes como proceder A forma de manipulagao de matrizes é andloga a dos vetores adicionando mais uma dimensdo e consequentemente trabalhando com mais um fndice um para percorrer as linhas e outro para percorrer as colunas O trecho de cédigo a seguir exemplifica uma criaao e instanciacdo de uma matriz de dimensées 5x4 httpscodelyfmucontents3amazonawscomMoodleEADConteudoCTITECPRO19unidade1ebookindexhtml 2231 21082023 1630 Técnicas de Programação httpscodelyfmucontents3amazonawscomMoodleEADConteudoCTITECPRO19unidade1ebookindexhtml 2331 Existe um tipo especial de vetor que e representado pelas strings Sendo assim uma string nada mais e do que uma sequencia de caracteres Veremos a seguir um pouco de manipulaçao de strings 15 Strings mo mencionado anteriormente as strings sao uma sequencia de caracteres ou seja um vetor onde cada celula armazenara uma letra tipo char caracter A seguir sao relacionadas algumas das principais funcionalidades para a manipulaçao de strings da linguagem C Criação leitura e impressão de string A criação é feita através de um vetor de caracteres tipo char No código a seguir na função scanf não foi utilizado o junto à variável nome pelo fato da string ser tratada como uma posição de memória Exemplo 21082023 1630 Técnicas de Programação httpscodelyfmucontents3amazonawscomMoodleEADConteudoCTITECPRO19unidade1ebookindexhtml 2431 Tamanho da String o tamando de uma string é retornado através da função strlen C Standard Neste caso e também no caso da utilização de outras funções que manipulam strings fazse necessário incluir o arquivo header stringh Exemplo Concatenação concatenar significa unir duas strings No caso da linguagem C essa funcionalidade é feita pela função strcat O resultado da concatenação é atribuído ao primeiro parâmetro da função no caso do código exemplo à variável texto Exemplo 21082023 1630 Técnicas de Programação httpscodelyfmucontents3amazonawscomMoodleEADConteudoCTITECPRO19unidade1ebookindexhtml 2531 Concatenação com quantidade específica de caracteres semelhante à função strcat porém concatena ao destino os N primeiros caracteres da variável fonte No caso do exemplo ao lado os 5 primeiros caracteres de nome são concatenados à variável texto Exemplo Cópia a cópia de strings em C é feita pela função strcpy Na função strcat o primeiro parâmetro destino representa a string que receberá o resultado da cópia da informação contida no segundo parâmetro fonte Exemplo 21082023 1630 Técnicas de Programação httpscodelyfmucontents3amazonawscomMoodleEADConteudoCTITECPRO19unidade1ebookindexhtml 2631 Cópia com quantidade específica de caracteres análogo à função strcpy porém realiza a cópia dos N primeiros caracteres da variável fonte No exemplo ao lado a variável texto será instanciada com os 5 primeiros caracteres da variável nome Exemplo Comparação para se comparar duas strings em C usase a função strcat Quando as duas strings forem iguais a função strcmp retorna o valor 0 Exemplo 21082023 1630 Técnicas de Programação httpscodelyfmucontents3amazonawscomMoodleEADConteudoCTITECPRO19unidade1ebookindexhtml 2731 String para número Em C a conversão é feita mediante a função atoi ASC TO Integer Neste caso fazse necessário incluir o arquivo header stdlibh Exemplo Número para string Em C a conversão é feita pela função itoa Integer TO ASC Como parâmetros da função temos na ordem da esquerda para a direita o valor numérico a ser convertido a string que receberá a conversão por último a base 21082023 1630 Técnicas de Programacgao numerica sobre a qual sera a conversao No caso do exemplo o valor 10 denota a base decimal caso tivesse por exemplo o valor 2 a conversao seria baseada na base binaria Exemplo include stdioh include string sh Hinclude stdlibh char textofS5 int valor1255 itoatvalortexto163 printhead se Zstextoly Quando definir uma string por meio do vetor de caracteres devese sempre dimensionar a variavel com um espaco a mais em relacao a demanda do programa Esse espaco a mais é usado para colocar o caractere terminador de string caracter x0 caracter nulo ou caractere 0 zero O caractere terminador de string serve para indicar 0 término de uma string Neste caso por exemplo a funao printf executa a impressdo dos caracteres de uma string até encontrar o caractere nulo Sendo assim aproveitando o fato de que toda string é finalizada com esse caractere para limpar o contetido de uma string basta textofe AxO ff textolO 295 Na linha de cédigo acima temos duas formas de referenciar o caractere nulo através de seu valor na tabela ASCII ou através da simbologia que o representa A figura a seguir ilustra o formato de uma string sendo finalizada pelo caractere x0 httpscodelyfmucontents3amazonawscomMoodleEADConteudoCTITECPRO19unidade1ebookindexhtml 2831 21082023 1630 Técnicas de Programacgao char strf6 A E I 0 Uo AKO Figura 4 Formato de uma string de 6 posiées destacando que a sua ultima posiao deve conter necessariamente o caractere finalizador de string x0 Fonte Elaborada pelo autor 2019 Analisandose a figura acima convém entao reforcar que uma string deve necessariamente ser finalizada com oO caractere x0 a VOCE QUER VER e Saber manipular strings é de suma importancia no contexto de desenvolvimento de sistemas computacionais pois as encontraremos em diversas situacées Por exemplo uma simples falta do caractere x0 pode acarretar em travamento do programa quando em execucdo Vocé pode acessar este link httpswwwyoutubecomwatch vL4IYcJSoH3M httpswwwyoutubecomwatchvL4IYcJSoH3M para ver um pouco de manipulagao de strings na pratica LOBATO 2012 ee Até 0 momento tanto nos vetores quanto nas strings falamos sobre o tipo homogéneo capaz de armazenar em sua estrutura valores de apenas um tipo Mas sera possivel armazenar em uma variavel dados heterogéneos ou seja haver varios tipos de informaées centradas em apenas uma variavel Sim isso é possivel através da utilizado das estruturas de dados em C esse tipo é representado pela struct Sintese Chegamos ao fim de nossa primeira conversa sobre técnicas de programacao Tivemos a oportunidade de conhecer alguns conceitos iniciais e comandos basicos de uma linguagem estruturada com estas informaées ja sera possivel o desenvolvimento de programas computacionais escritos em C Porém para desenvolver um httpscodelyfmucontents3amazonawscomMoodleEADConteudoCTITECPRO19unidade1ebookindexhtml 2931 21082023 1630 Técnicas de Programacgao programa nado basta apenas entender a linguagem de programaao mas também treinar bastante o raciocinio ldgico de forma a facilitar a otimizacao dos cédigos a serem criados A partir das informaées contidas neste capitulo esperamos que vocé continue treinando e incrementando os seus programas computacionais de forma a deixalos mais funcionais corretos e eficientes Nesta unidade vocé teve a oportunidade de e ter contato com conceitos de linguagens de programacao estruturadas e utilizar os tipos de dados de forma apropriada analisar e empregar corretamente aos comandos condicionais e de repeticao estruturar as informacgoes com vetores Clique para baixar o contetido deste tema Bibliografia ASCENCIO A F G Fundamentos de Programacao de Computadores Algoritmos PASCAL CC Padrdo ANSI e Java 3 ed Sado Paulo Pearson Education do Brasil 2012 Disponivel em https brasilblackboardcomwebapps gabibliotecaSSOBBLEARNhomePearsonhttps brasilblackboardcomwebapps gabibliotecaSSOBBLEARNhomePearson https brasilblackboardcomwebapps gabibliotecaSSOBBLEARNhomePearson Acesso em 27062019 ASCENCIO A F G Fundamentos de Programacao de Computadores Algoritmos PASCAL CC Padrdo ANSI e Java 3 ed Sado Paulo Pearson Education do Brasil 2012 Disponivel em https brasilblackboardcomwebapps gabibliotecaSSOBBLEARNhomePearsonhttps brasilblackboardcomwebapps gabibliotecaSSOBBLEARNhomePearson https brasilblackboardcomwebapps gabibliotecaSSOBBLEARNhomePearson Acesso em 27062019 GATTO E C Comando de Controle Switch Case 2016 Disponivel em httpswwwembarcadoscombrcomandodecontroleswitch casehttpswwwembarcadoscombrcomandodecontroleswitchcase httpswwwembarcadoscombrcomandodecontroleswitchcase Acesso em 05072019 LOBATO P Programagao C Strings char strlen strcmp Inverso Palindromo Aula 11 2012 18 min Disponivel em httpswwwyoutubecomwatchvL4IYcJSoH3M httpswwwyoutubecomwatch vL4IYcJSoH3M httpswwwyoutubecomwatchvL4lYcJSoH3M Acesso em 05072019 MAGNUN Um Ano sem Dennis Ritchie 2012 Disponivel em httpmindbendingorgptumanosem dennisritchiehttpmindbendingorgptumanosemdennisritchie httpmindbendingorgptumano semdennisritchie Acesso em 01072019 httpsdocsmicrosoftcomptbrcppclanguagecbit fieldsviewvs2019 ASCENCIO A F G Fundamentos de Programacao de Computadores Algoritmos PASCAL CC Padrdo ANSI e Java 3 ed Sado Paulo Pearson Education do Brasil 2012 Disponivel em https brasilblackboardcomwebapps gabibliotecaSSOBBLEARNhomePearsonhttps httpscodelyfmucontents3amazonawscomMoodleEADConteudoCTITECPRO19unidade1ebookindexhtml 3031 21082023 1630 Técnicas de Programação httpscodelyfmucontents3amazonawscomMoodleEADConteudoCTITECPRO19unidade1ebookindexhtml 3131 brasilblackboardcomwebappsgabibliotecaSSOBBLEARNhomePearson https brasilblackboardcomwebappsgabibliotecaSSOBBLEARNhomePearson Acesso em 27062019 ASCENCIO A F G Fundamentos de Programação de Computadores Algoritmos PASCAL CC Padrao ANSI e Java 3 ed Sao Paulo Pearson Education do Brasil 2012 Disponıvel em https brasilblackboardcomwebappsgabibliotecaSSOBBLEARNhomePearsonhttps brasilblackboardcomwebappsgabibliotecaSSOBBLEARNhomePearson https brasilblackboardcomwebappsgabibliotecaSSOBBLEARNhomePearson Acesso em 27062019 SOUZA F Bits em Linguagem C Conceito e Aplicação 2015 Disponıvel em httpswwwembarcadoscombrbitsemlinguagemchttpswwwembarcadoscombrbitsem linguagemc httpswwwembarcadoscombrbitsemlinguagemc Acesso em 01072019
37
Introdução à Lógica e Programação
UAM
31
Introdução à Lógica e Programação
UAM
28
Introdução à Lógica e Programação
UAM
34
Introdução à Lógica e Programação
UAM
30
Introdução à Lógica e Programação
UAM
1
Introdução à Lógica e Programação
UAM
4
Introdução à Lógica e Programação
UAM
1
Introdução à Lógica e Programação
UAM
Texto de pré-visualização
21082023 1630 Técnicas de Programacgao TECNICAS DE PROGRAMACAO UNIDADE 1 PROGRAMACAO ESTRUTURADA Fernando Cortez Sica httpscodelyfmucontents3amazonawscomMoodleEADConteudoCTITECPRO19unidade1ebookindexhtml 131 21082023 1630 Técnicas de Programação httpscodelyfmucontents3amazonawscomMoodleEADConteudoCTITECPRO19unidade1ebookindexhtml 231 21082023 1630 Técnicas de Programacgao ee Introducao g Para iniciarmos a nossa conversa é interessante falarmos sobre o que é a linguagem de programaao Sabemos que linguagem é todo sistema constituido por cédigos regido por regras cujo objetivo é transmitir uma informado Mas 0 que vem a ser linguagem na computado Linguagens existem apenas para desenvolver programas No campo da informatica a linguagem nado é usada somente na criacdo de programas computacionais mas sim em diversas outras ocasidées podemos citar as linguagens formais que permitem por exemplo a especificagdo e teste das prdéprias linguagens de programacao protocolos de redes de computadores e reconhecimento de padrées em processamento de textos Na area de hardware podemos citar as linguagens de descrido de hardware HDL Hardware Description Language este tipo de linguagem objetiva o projeto de circuitos eletrénicos digitais tais como processadores A partir do uso de uma HDL podese por exemplo criar um chip configurar uma FPGA Field Programmable Gate Array Matriz de Portas Programaveis em Campo ou um PSoC Programmable SystemonChip Sistema programavel em um chip Por fim podemos mencionar também as linguagens de marcaao dotadas de elementos de anotacées de forma a formatar um texto a ser exibido ou a ser manipulado Como exemplos temos a HTML HyperText Markup Languagem Linguagem de Marcado de HiperTextos e o XML eXtensible Markup Languagem Linguagem de Marcacao Extensivel No nosso caso vamos nos aprofundar nas linguagens de programaao mais especificamente nas linguagens estruturadas utilizando para as exemplificacées a linguagem C de programacao Entdo 0 que vem a ser efetivamente uma linguagem de programacao Neste capitulo veremos alguns conceitos relacionados a programacado estruturada assim como os primeiros passos para a construcdo de programas computacionais Ao final deste vocé tera condicées de implementar programas manipulando tipos de dados simples strings e vetores 11 Conceitos e caracteristicas Uma linguagem de programacdo tem por objetivo descrever a sequéncia das ac6es que o computador devera executar para que um objetivo seja alcancado PUGA 2016 Para tanto a linguagem devera descrever também as informac6es constantes e variaveis que serado processadas pelas instrucées As acgOes a serem realizadas pelo computador sdo representadas nas linguagens de programagdo pelas instruc6es de alto nivel que deverdo ser codificadas em instrucées de baixo nivel especifica do processador A figura a seguir ilustra as etapas necessarias para que tenhamos um programa apto a ser executado em uma plataforma computacional httpscodelyfmucontents3amazonawscomMoodleEADConteudoCTITECPRO19unidade1ebookindexhtml 331 21082023 1630 Técnicas de Programacgao Ideias e reflexdes Levantamento dos requisitos q Codificagao Usando ambiente de objetivos do programa e par rogramacao ou editor de texto ticularidades a serem observadas Prog sa Arquivo c ou cpp Compilagao Geracgao de um codigo LinkEdigao Geragao do arquivo intermediario ja em linguagem de executavel final maquina cédigo especifico do processador destino Arquivo objeto oO ou obj Arquivo executavel exe Figura 1 Etapas para a geracdo de um programa arquivo executavel Neste fluxo ndo estado representadas as etapas de teste e verificacdo de qualidade que podem provocar uma volta a primeira etapa processo ciclico Fonte Elaborada pelo autor 2019 Como mostrado na figura falouse em plataforma computacional Mas porque nado falamos diretamente processador ou computador Para saber mais sobre o tema clique nas abas abaixo Linguagen O fato é que algumas linguagens como o PHP Ruby e 0 Javascript sdo linguagens Ss interpretadas ou seja as suas instrugdes sao executadas por uma maquina virtual interpreta que converte em tempo de execudo para o cddigo do hardware especifico das Linguagen Por sua vez linguagens compiladas como o CC e Pascal tem os seus cédigos de Ss baixo nivel compativeis com o processador gerados na etapa de compilacao compilada produzindo por exemplo os arquivos do tipo exe s Linguagen Existem as linguagens hibridas tais como o JAVA e 0 C que sao compiladas porém s hibridas sao executadas sobre uma maquina virtual Antes de continuarmos pode vir a cabeca a seguinte duvida a linguagem C ANSI aqui referenciada simplesmente como linguagem C é diferente da linguagem C C plus plus Existem diferencas entre os dois padrées Rapidamente falando a linguagem C é uma extensao da linguagem C incorporando por exemplo os conceitos de programacao orientada por objetos httpscodelyfmucontents3amazonawscomMoodleEADConteudoCTITECPRO19unidade1ebookindexhtml 431 21082023 1630 Técnicas de Programacgao SSS VOCE O CONHECE A linguagem C foi criada nos finais dos anos de 1960 e inicio dos anos de 1970 por Dennis Ritchie Além de criar essa famosa linguagem que ainda esta presente em diversas plataformas e sistemas ele também foi responsavel pela criacgdo do sistema operacional UNIX Para saber mais sobre Dennis Ritchie clique aqui httpmindbendingorgptumanosemdennisritchie httpmindbendingorgptumanosemdennisritchie MAGNUN 2012 httpmindbendingorgptumanosemdennisritchie RN Para implementar um programa deveremos ter em mente o seu objetivo e consequentemente quais informag6es deverdo ser manipuladas e quais informacées deverdo ser produzidas variaveis de entrada e de saida por ele Com isso poderemos refletir na primeira acdo a ser feita para que possamos prosseguir na implementacao definicdo das variaveis Na sedo a seguir falaremos sobre 0 que vem a ser os tipos das variaveis 12 Tipos de Dados Como mencionamos uma linguagem de programacdo deve conter além das instruc6des as prdprias informa6es a serem manipuladas sendo assim 0 sistema operacional deve reservar espacos na memoria principal do computador para armazenalas Mas como saber a quantidade de memoria a ser alocada A resposta a essa pergunta esta relacionada com 0 tipo das variaveis Em linguagens de programacao como a linguagem CC o programador deve assinalar em seu cddigo o tipo das variaveis a serem manipuladas Além de possibilitar a alocacdo de memoria a definido do tipo servira também para criar os mecanismos internos inerentes 4 sua manipulado Por exemplo se pensarmos na matematica encontramos os tipos numéricos cada um com as suas especificidades nuimeros reais inteiros racionais dentre outros essa diferenciagdo que ocorre na matematica pode ser trazida para a programacao Vamos inicialmente nos deter aos tipos numéricos da linguagem CC Existem diferenas nos tipos e na forma de definiado entre 0 C standard e o C No quadro a seguir ilustraremos alguns tipos basicos numéricos que encontramos em ambas as linguagens ASCENCIO 2012 httpscodelyfmucontents3amazonawscomMoodleEADConteudoCTITECPRO19unidade1ebookindexhtml 531 21082023 1630 Técnicas de Programacgao Capaz de armazenar a faixa de valores entre 128 a 127 O seu nome relacionase a possibilidade de seu uso para armazenar char caracteres representados pelo seu cédigo na tabelaASC 8 bits 1 byte V v Porém um char pode ser usado também para armazenar dados numericos Manipula valores inteiros na faixa de 32768 até 32767 on 6bits ou 32 bits Quando associado ao modificador de tipo long long int conformeo int tem a sua faixa de 2147483648 a 2147483647 4 bytes O compilador V V tipo int pode variar em fungao do compilador utilizado mp utilizado podendo ser representado em alguns casos por 4 bytes float Manipula valores reais na faixa de 34E a 34E 32 bits V v Assim como o float o double também armazena numeros double reais porém na faixa de 17E a34E 64 bits v v bool Usado para valores binarios true verdadeiro ou false 8 bits J falso Quadro 1 Tipos de dados numéricos basicos encontrados nas linguagens CC Os tamanhos sAo relativos aos computadores padrdo x86 podem variar em outras arquiteturas Fonte ASCENCIO 2012 p26 Mas como definir as variaveis Vamos supor que temos que fazer um programa que calcule a média da idade de duas pessoas Clique nos itens abaixo e aprenda mais sobre a definiao dessas variaveis Qual o objetivo de nosso programa Calcular a média de duas idades Quais informacgoes deverao ser classificadas como entradas As idades das duas pessoas As idades deverao ser de qual tipo Considerando que as idades sao representadas por numeros inteiros entao deveremos declara las como int httpscodelyfmucontents3amazonawscomMoodleEADConteudoCTITECPRO19unidade1ebookindexhtml 631 21082023 1630 Técnicas de Programacgao e Qual informacao que devera ser gerada A média das duas idades e e A media devera ser de qual tipo Como a média podera resultar em um valor real deveremos declarala como float Antes de colocarmos aqui o nosso primeiro exemplo de cédigo em C mencionamos que a definiao de uma variavel segue a estrutura de acordo com Deitel 2011 tipo nomedavariavel J Ou tipo nomedavariavel1 nomedavariavel2 J As estruturac6es acima sdo utilizadas no cédigo a seguir Neste cddigo que objetiva o calculo e impressdo na tela a média de duas idades Os comentarios estao precedidos por duas barras comentarios também poderdo aparecer entre as marcas e usadas quando o comentario extrapolar mais do que uma linha Os numeros no lado direito colocados como comentarios representam o numero das linhas httpscodelyfmucontents3amazonawscomMoodleEADConteudoCTITECPRO19unidade1ebookindexhtml 731 21082023 1630 Técnicas de Programacgao Programa para o calculo da média de duas idades Hinclude stdioh f1 int maind ff2 ffs int idadels6 idade7365 FF Float mediag f media Cidadel idadez 205 S printfCMédia ZF medias fi return Ff9 final main f3 Desta forma na codificaao acima temos Linha 1 a diretiva include referéncia a inclusdo de um arquivo em tempo de compilaao Este arquivo é denominado arquivo header cabecalho e contém defini6es tais como o formato de utilizacdo do comando a ser chamado oportunamente de funcdo printf O stdio denota standard IO Standard InputOutput EntradaSaida Padrao Linha 2 0 processamento do programa deve ser iniciado por uma linha especifica Neste caso o ponto de partida é denominado como programa principal por isso o nome main principal Linha 3 0 simbolo indica 0 inicio de um bloco funcional Blocos funcionais envolvem as instrug6es que deverdo ser executadas em conjunto de forma sequencial A finalizacdo do bloco funcional encontrase na linha 9 indicada pelo caracter Linhas 4 e 5 Essas linhas indicam a definicdo das variaveis Na linha 4 temos a definido de 2 variaveis do mesmo tipo tipo int cada variavel dentro de uma lista de um mesmo tipo é separada por uma virgula e na linha 5 foi realizada a definiado de uma variavel do tipo float O nome de cada variavel nao pode conter caracteres especiais como por exemplo e acentos e deve comecar por uma letra ou com um trao underline Em CC nado ha a obrigatoriedade das declaraées de variaveis aparecerem antes do inicio efetivo do cddigo No momento da criaado da variavel podera ocorrer também a instanciaao inicial como por exemplo int x a 165 Linha 6 essa linha contém o processamento para o calculo da média Nela aparece 0 comando de atribuido simbolo responsavel por atribuir 0 resultado do calculo a variavel media Notase a utilizacdo da representacdo do denominador como numero real float para que o resultado ndo seja arredondado para um inteiro uma vez que as variaveis utilizadas no numerador so inteiras Linha 7 0 comando printf realiza a impressdo do resultado No caso deste exemplo a impressdo sera direcionada a tela A mensagem a ser exibida é descrita entre aspas média f Mas 0 que vem a ser 0 Yf O simbolo indica o formato que sera exibida a informacao Utilizandose a letra f a variavel sera exibida no formato de nimero real float Caso o programador desejasse também exibir os valores das idades poderia usar printfA média das idades d e d é f idade1 idade2media Neste caso as idades seriam impressas no formato decimal inteiro em fungdo da utilizagdo do d na mascara de impressao Linha httpscodelyfmucontents3amazonawscomMoodleEADConteudoCTITECPRO19unidade1ebookindexhtml 831 21082023 1630 Técnicas de Programacgao 8 retorno do programa principal Tal retorno neste caso é realizado pelo programa ao sistema operacional de modo que este possa saber a causa do término da execucdo do programa condiao normal de término ou em fungao de alguma falha em seu processamento Focando melhor no comando printf além das opcées d e f existem outros formatos de impressdo alguns estado resumidos no quadro a seguir Imprime um caracter de tabulagao tab printfd dxy 5 8 Imprime uma nova linha printfc coplop2 A B Imprime um caracter printfdx 5 Imprime um caracter printfdx 500 Soc Caracter printfvalorcop valorA d Decimal inteiro printfvalordop valor65 i Equivalente ao d printfvaloriop valor65 Ki Inteiro com K casas a esquerda printfvalor5ix valor5 of Ponto flutuante printfvalorfz valor5340000 KE Ponto flutuante com K casas decimais printfvalor2fz valor433172 e Notagao cientifica printfvalorev valor33416e3 0 Octal printfvalorok valor1353 ox Hexadecimal mintsculo printfvalorxk valor2eb OX Hexadecimal maiusculo printfvalorXk valor2EB Quadro 2 Alguns formatos de impressAo na tela associados a mascara do comando printf Fonte Elaborado pelo autor 2019 Vamos incrementar um pouco nosso exemplo Veremos a seguir algumas funcionalidades que poderdo ser incorporadas aos nossos programas tratandose das estruturas de decisdo e de repetidao 13 Estruturas de decisao e de repeticao Os programas nem sempre sao codificados pensandose em um fluxo de execucdo linear ou seja as vezes temos que alterar o fluxo de execucdo em virtude de tomadas de decisdo Essa alteracdo de fluxo pode ser provocada pelos comandos condicionais e pelos comandos de lacos de repetido Comandos condicionais sao aqueles que resultam em uma tomada direta de decisdo em fundo de uma condiao a ser verificada Por sua vez comandos de lacos de repetido servem para executar uma instrudo ou um conjunto de instrucdées intmeras vezes de forma repetitiva enquanto uma certa condiao estiver sendo satisfeita Vamos a seguir detalhar esses dois tipos de comandos 131 Estruturas de decisdo httpscodelyfmucontents3amazonawscomMoodleEADConteudoCTITECPRO19unidade1ebookindexhtml 931 21082023 1630 Técnicas de Programacgao No nosso cotidiano temos que tomar frequentemente decis6es para que as acdes sejam consequéncias das escolhas compativeis aos objetivos No caso da programacao nado é diferente ou seja existem comandos para tomadas de decisdo Tomemos um exemplo de nosso cotidiano Se estiver chovendo Entao Escolher um f11me Fazer pipoca Deitar na cama para ver o filme com pipoca Senao Combinar com oS amigos um encontro Seair de casa Encontrar oS amigos no local combinade No trecho acima aparecem elementos que poderdo ser mapeados diretamente em uma linguagem de programacao por exemplo em C 0 condicionante Sia é definido na linguagem C pelo comando if Ga que tem a funcdo de testar uma condicao aetiwer chowerde para que se possa tomar a decisdo de executar o bloco contendo as ades no nosso exemplo do cotidiano relativas a ficar em casa ou as aces relativas a sair de casa As acées pertinentes a saida de casa sdo referenciadas na linguagem C pelo comando else GSenao Para melhor exemplificar a sintaxe na programado vamos tomar 0 exemplo de uma implementaao para o calculo da média de duas notas fornecidas pelo usuario de modo a informar posteriormente se o cursista foi ou nao aprovado httpscodelyfmucontents3amazonawscomMoodleEADConteudoCTITECPRO19unidade1ebookindexhtml 1031 21082023 1630 Técnicas de Programacgao Programa para o calculo da média de duas notas fornecidas fpelo usuario Hinclude stdioh int main float notal notaz mediay fF peintfePreimeira Notat Jo scanftcsZr anotaldy 2 printcSequnda Notat Jy scanfcf notazyy ffs media Cnotal notaz 2 ifmedia 6 fF ffs printcCursista Aprovadoly ffé fi ése ffs ffs prantfcCursista Reprovadol 25 ffl ffil return y ffinal main Na codificaao acima foi introduzido mais um comando de entrada e saida tratase do scanf linhas 2 e 3 Nas referidas linhas o programa fornece orientaées ao usuario através do comando printf e espera pela digitacdo das notas fornecidas pelo usuario cujo formato é passado ao scanf através da diretiva precedida pelo simbolo no caso a variavel lida pelo teclado é armazenada no formato float MIZRAHI 2008 Por sua vez a linha 4 corresponde ao comando condicional if executando as instrugées delimitadas pelas marcaées de inicio de final de bloco simbolos begin inicio e end fim respectivamente Quando o bloco envolver apenas uma Unica instrucdo a utilizacdo dos delimitadores de bloco tornase opcional Notase no comando condicional if a expressdo de teste delimitada pelos parénteses A expressdo de teste admite os demais operadores de comparacao e operadores légicos operadores de comparagao maior menor maior ou igual menor ou igual igual diferente operadores légicos or ou e and not ndo Neste caso podemos escrever no codigo expressdes condicionais compostas como por exemplo exemplo 1 if ta bd c I d Neste caso o if somente sera verdadeiro caso a variavel a seja maior do que b e simultaneamente c seja diferente em relacgao a variavel d httpscodelyfmucontents3amazonawscomMoodleEADConteudoCTITECPRO19unidade1ebookindexhtml 1131 21082023 1630 Técnicas de Programação httpscodelyfmucontents3amazonawscomMoodleEADConteudoCTITECPRO19unidade1ebookindexhtml 1231 exemplo 2 para esse exemplo o if será verdadeiro caso as variáveis a e b sejam iguais entre si ou a variável c seja diferente do valor zero Para expressar c diferente de 0 poderiase também usar c 0 exemplo 3 por fim neste exemplo temse a execução do bloco do if somente se a variável a seja igual a 0 e a variável c diferente de 0 Voce pode estar se perguntando Mas qual a relaçao entre por exemplo a com a comparaçao de a com o valor 0 Na linguagem C todo valor diferente de 0 e considerado como verdade e consequentemente o 0 e considerado como falso Sendo assim caso a variavel a seja 0 a expressao 0 pode ser tratada como não falso ou seja verdade Comandos condicionais poderao ser manipulados de formas encadeadas ou aninhadas Neste caso a condiçao do senao else resulta em um novo condicional Como exemplo vamos supor as alıquotas de desconto do imposto de renda sobre as faixas salariais até 190398 isento de 190399 a 282665 75 de 282666 a 375105 15 de 375106 a 466468 225 acima de 466468 275 Implementando um programa usando comandos condicionais encadeados temos 21082023 1630 Técnicas de Programacgao include stdioh int mainvoid float salario descontoj printfeDigite o valor do salaric Jy scanfCf tsalarios ifsalariotslse335 begin descontozgy end else if salari021590359948salariots257665 begin descontosal ari00755 end else if salarios2676 668salariotes3185 begin descontozsal ar10155 end else if salario23751 6644asal ario0265466 begin descontozsal ar1002254 end éese begin descontozsal ar1002754 end praintfSalarios2f Desconto IRRF 2f Salaricdescontoy return F No caso do cédigo acima temos as faixas de desconto do imposto de renda sendo cobertas pelos testes condicionais A grande vantagem de se usar testes condicionais encadeados esta no fato de que quando uma condido for satisfeita as demais comparacgées nado serdo realizadas diminuindose assim o esforco computacional e consequentemente 0 tempo de processamento E importante salientar que esse uso somente é aplicavel quando os casos forem excludentes ou seja no caso de nosso exemplo um salario se enquadrara em apenas uma faixa de descontos httpscodelyfmucontents3amazonawscomMoodleEADConteudoCTTECPRO19unidade1ebookindexhtml 1331 21082023 1630 Técnicas de Programacgao a VOCE QUER LER e Os sinais usados como operadores légicos sao também encontrados na manipulaao bitabit Assim temos por exemplo AND Légico AND bitabit Esses operadores bitabit poderdo ser encontrados e usados na implementacao por exemplo de sistemas embarcados device drivers e kermel nucleo de sistemas operacionais Maiores detalhes sobre as operagoes bitabit bitwise vocé pode ler aqui httpswwwembarcadoscombrbitsemlinguagemc httpswwwembarcadoscombrbitsemlinguagemc SOUZA 2015 De O comando condicional if também podera escrito na forma de if terndrio Por exemplo suponha 0 seguinte codigo iffa b begin cz 105 end ese begin cz i155 end No trecho acima os delimitadores e inicio e fim foram utilizados porém pelo fato de que tanto o bloco do if quanto o bloco do else conter apenas uma Unica instruao poderiam ser omitidos Podemos notar que a variavel c é instanciada tanto no processamento do if quanto no processamento do else Sendo assim poderemos reescrever o trecho do cédigo substituindoo pela estrutura do if terndrio httpscodelyfmucontents3amazonawscomMoodleEADConteudoCTITECPRO19unidade1ebookindexhtml 1431 21082023 1630 Técnicas de Programacgao ceffaby ig 153 No if terndrio o valor da instanciacdo relativa a parte do if é precedida pelo simbolo enquanto que a relativa a parte do else é precedida pelo caracter ee VOCE SABIA e Quando temos que selecionar uma acdo dentre de varias opc6es ao invés de utilizarmos a estrutura ifelse if podemos usar o comando switchcase Usando 0 switchcase os nossos programas ficam mais organizados e claros para serem entendidos Para saber mais sobre essa forma clique aqui httpswwwembarcadoscombrcomandodecontroleswitchcase httpswwwembarcadoscombrcomandodecontroleswitchcase GATTO 2016 httpswwwembarcadoscombrcomandodecontroleswitchcase ee O controle de fluxo alterando a sequéncia da execudo das instrugées nado é especifico aos comandos condicionais também é pertinente as estruturas de repeticao A seguir veremos o que sao as estruturas ou lacos de repeticao 132 Estruturas de repetido Os comandos de repetido permitem que um determinado bloco de instru6es seja executado por mais de uma vez A quantidade de vezes que o bloco sera executado repetitivamente é definida pela estrutura condicional Em CC encontramos 3 comandos de repetiao for while e dowhile comando for esse comando é utilizado quando se tem de forma antecipada a quantidade de vezes que o bloco devera ser executado No caso do exemplo do fatorial sabese que a Nn multiplicacao fat fat i devera ser executada N vezes Os httpscodelyfmucontents3amazonawscomMoodleEADConteudoCTITECPRO19unidade1ebookindexhtml 1531 21082023 1630 Técnicas de Programação httpscodelyfmucontents3amazonawscomMoodleEADConteudoCTITECPRO19unidade1ebookindexhtml 1631 campos de configuração separados por ponto e vírgula são todos opcionais A seguir seguem o formato para a utilização do comando for e alguns exemplos de codificação Exemplos neste caso o bloco será executado por 10 vezes incrementandose automaticamente a variável i a cada iteração cada campo do comando for poderá ter vários itens separados por vírgulas Neste caso ocorrem as instanciações das variáveis i e j para que possam ser incrementadas e decrementadas a cada interação respectivamente As repetições serão finalizadas quando a expressão lógica i5j0 assumir um valor falso para esse caso não existe uma instanciação de variável no início do laço de repetição ou seja as variáveis serão manipuladas com os seus valores atuais esse último caso sem qualquer conteúdo dos campos do comando for denota um laço infinito comando while o comando while realiza a execução do bloco de instruções a ele vinculado enquanto a sua expressão de permanência resultar em um valor verdade Neste caso utiliza se esse comando quando não se sabe de antemão a quantidade de vezes que o bloco deverá ser executado Igualmente aos comandos if e for a expressão pode ser composta com os itens separados por operadores lógicos Diferentemente ao for esse comando não realiza os incrementos automáticos das variáveis ficando neste caso o programador responsável pelo controle do laço 21082023 1630 Técnicas de Programacgao comando dowhile comando semelhante do while porém o teste de permanéncia do laco é realizado apos pelo menos uma interacgao Sendo assim esse comando executa e testa enquanto que o while realiza a sequéncia testa e executa A expressao de permanéncia do laco de repeticdo também pode envolver operadores légicos Para uma melhor abstrado tomemos por exemplo a figura abaixo que mostra 3 vers6es para calcular o valor do fatorial de um certo nimero cada versdo usando um comando de repetiao httpscodelyfmucontents3amazonawscomMoodleEADConteudoCTITECPRO19unidade1ebookindexhtml 1731 21082023 1630 Técnicas de Programacgao include stdioh include stdioh int main int main int N fatl il int N fatl il printf N printf N scant d46N scant tdéN ifN 0 ifN 9 printf Ndo existe fat de num negativo printf Nao existe fat de num negativo else else if N if N fat1 fat1 else else do ft for iN i fat fat i fat fat i itt while i Nj printf Valor do fatorial de td d N fat printfValor do fatorial de td é td final else N fat return 0 return 0 a Usando for b Usando dowhile include stdioh int main int N fatl1 i printtN scanf td4N ifN 0 printf Nao existe fat de num negativo else iN while i fat fat i i printf Valor do fatorial de 4d é d N fat return O c Usando while Figura 2 Trés vers6es de cédigo para o calculo do fatorial de um nuimero em a usando 0 comando for Em b calculo utilizando 0 comando dowhile e em c usando 0 while Fonte Elaborada pelo autor 2019 Na figura acima podemos ver a utilizagdo dos comandos de repetiao encontrados na linguagem C os comandos for while e o dowhile Perceberemos entre b e c ando necessidade do teste condicional comparando o N com o valor 0 uma vez que o while realiza o teste de permanéncia do laco antes da primeira execucao diferente do comando dowhile que realiza pelo menos uma execudo para depois efetuar o teste httpscodelyfmucontents3amazonawscomMoodleEADConteudoCTTECPRO19unidade1ebookindexhtml 1831 21082023 1630 Técnicas de Programacgao a CASO Atualmente para o desenvolvimento de sistemas encontramos dois grandes grupos as linguagens puramente estruturadas como por exemplo 0 C Standard e as linguagens orientadas a objetos como o C e o Java Um certo desenvolvedor de sistemas embarcados sistemas onde a programacado é geralmente voltada para um micro controlador se deparou com o dilema na escolha do paradigma Comecou a ponderar alguns pontos tais como tamanho de cddigo gerado sistemas embarcados possuem grande limitagdo de memoria e necessidade de ter o maximo controle sobre a manipulacdo de memoria e ter a possibilidade de otimizar ao maximo o cédigo em funao das particularidades do dispositivo a ser programado a orientado por objetos em seu encapsulamento de cddigo torna dificil atender a esses requisitos Analisou que mesmo com as facilidades de desenvolvimento manutencdo e portabilidade do paradigma orientado a objetos os dois primeiros pontos foram decisivos na adocdo de programacao estruturada utilizandose para tal a linguagem C Moral da historia mesmo com todas as facilidades proporcionadas pelas linguagens por exemplo C e Java juntando com as facilidades dos ambientes integrados de desenvolvimento 6 sempre bom sabermos uma linguagem que temos maior controle de como as operaoées estado sendo feitas principalmente nos niveis mais baixos de abstracao préximos ao hardware Sendo assim é conveniente que se saiba linguagens do tipo C Standard ou C ANSI ee Os comandos de laco de repetido e condicionais sao a base da légica de programacdo Sendo assim um programa é uma sequéncia de instanciaées e controles de fluxo de execucdo Particularmente os comandos de repetido sdo extremamente Uteis quando manipulamos variaveis cujas estruturas sdo denominadas como vetores Eo que veremos a seguir 14 Vetores Em algumas situac6es temos que manipular um grande ntimero de informacées do mesmo tipo por exemplo supondo que devemos armazenar as notas de uma certa prova de uma turma inteira de cursistas Vamos voltar ao exemplo da média abordado anteriormente haviamos manipulado apenas duas notas gerando para isso duas variaveis Vocé deve se perguntar Se para duas notas fornecidas pelo usuario usamos duas variaveis entdo para por exemplo 40 notas deveremos usar 40 variaveis A resposta tornara a solucdo mais simples usaremos um vetor para armazenar as notas Mas entao o que é um vetor Vetor é uma estrutura computacional para 0 armazenamento de dados homogéneos ou seja todas as informagées do vetor possuem a mesma tipagem Para definirmos um vetor em CC usaremos a seguinte sintaxe httpscodelyfmucontents3amazonawscomMoodleEADConteudoCTITECPRO19unidade1ebookindexhtml 1931 21082023 1630 Técnicas de Programacgao tipo momedavariavel Etamanhodovetor14 Por exemplo se desejarmos no caso da nota a manipulagao de 8 itens teremos Float motas sj Para manipularmos um vetor teremos que usar um indice que indicara qual a célula a ser acessada A figura a seguir ilustra a estruturado do vetor de oito posiées cujas células armazenardo valores do tipo float indice Posiggco 66OF8CFlod1lClU2lhCUD8lCUMAl CSCC Contetido da celula células Figura 3 Estruturacdo de um vetor de 8 posiées As posiées sdo acessadas por um indice que varia da posicao 0 até a posicdo N1 no caso deste exemplo até a posicao 7 Fonte Elaborada pelo autor 2019 Na figura acima temos a estruturacdo de um vetor Mas como efetivamente declarar um vetor preenchélo e utilizarmos as informac6ées de suas células Vamos adaptar o exemplo da média das notas para que a média seja calculada sobre um conjunto de 8 notas httpscodelyfmucontents3amazonawscomMoodleEADConteudoCTITECPRO19unidade1ebookindexhtml 2031 21082023 1630 Técnicas de Programacgao Programa para o calculo da média de notas fffornecidas pelo usuario Usande vetor include stdioh int maint float notast6 mediaegj ffi int indices fordindice 6 indice Sf indicet ff2 printfeNota Zck indicey ffs scanfFcif anotasEindicel yy ff4 forindice 6 indice BF indice media notasEindicely 5 media media 9 45 printfeMedia finali 2f medialy fi return Na codificado acima para o calculo da média de 8 notas temos e Linha 1 criagao do vetor de notas com 8 posicdes de float e também criacdo da variavel que recebera o calculo da média jaa atribuindo o valor 0 devido ao fato de que ela acumulara a somatoria das notas em cada iteracdo do laco de repeticdo e Linha 2 definicdo do laco de repetido manipulando a variavel de indice para o acesso das células do vetor O indice varia de 0 até 7 em funcgao do tamanho do vetor criado e Linha3 apenas uma mensagem de orientacdo ao usuario de forma que ele fornea a nota da iteragao corrente A impressao na tela se dara na forma por exemplo Nota 3 e Linha 4 linha responsavel pelo recebimento do valor através da digitacdo do usuario Notase que sera preenchida a célula do vetor cuja posido é apontada pelo indice Desta forma temse httpscodelyfmucontents3amazonawscomMoodleEADConteudoCTITECPRO19unidade1ebookindexhtml 2131 21082023 1630 Técnicas de Programacgao genericamente que a atribuido do valor a uma célula do vetor é feita na forma vetorid valor onde a variavel i desempenha a funcdo de indice do vetor O caracter faz parte do uso da fungao scanf e Linha5 responsavel pela somatoria das notas Em funcdo da complexidade do programa essa somatoria poderia ser colocada no mesmo laco de repeticdo da entrada porém foi colocada em um laco a parte para permitir uma melhor abstracdo Para realizar a somatoria é acessada a célula correspondente a interacdo Desta forma temse genericamente que o acesso ao valor de uma célula do vetor é feito na forma varidvel vetorfia Na mesma linha aparece a expressao media notaslLindice Que equivale a media média notaslindicel e Linha 6 essa linha finaliza o calculo da média dividindose a somatoria obtida no laco de repeticdo pelo numero de valores fornecidos e Linha 7 nesta linha existe um elemento novo na formatagao do orintf o uso do 2 entre o simbolo e o caractere que indica o formato de impressao f float Com isso formatase a impressdo para dois digitos apds 0 ponto realizando um arredondamento do valor Caso haja a necessidade de usar estruturas com mais de uma dimensio por exemplo matrizes como proceder A forma de manipulagao de matrizes é andloga a dos vetores adicionando mais uma dimensdo e consequentemente trabalhando com mais um fndice um para percorrer as linhas e outro para percorrer as colunas O trecho de cédigo a seguir exemplifica uma criaao e instanciacdo de uma matriz de dimensées 5x4 httpscodelyfmucontents3amazonawscomMoodleEADConteudoCTITECPRO19unidade1ebookindexhtml 2231 21082023 1630 Técnicas de Programação httpscodelyfmucontents3amazonawscomMoodleEADConteudoCTITECPRO19unidade1ebookindexhtml 2331 Existe um tipo especial de vetor que e representado pelas strings Sendo assim uma string nada mais e do que uma sequencia de caracteres Veremos a seguir um pouco de manipulaçao de strings 15 Strings mo mencionado anteriormente as strings sao uma sequencia de caracteres ou seja um vetor onde cada celula armazenara uma letra tipo char caracter A seguir sao relacionadas algumas das principais funcionalidades para a manipulaçao de strings da linguagem C Criação leitura e impressão de string A criação é feita através de um vetor de caracteres tipo char No código a seguir na função scanf não foi utilizado o junto à variável nome pelo fato da string ser tratada como uma posição de memória Exemplo 21082023 1630 Técnicas de Programação httpscodelyfmucontents3amazonawscomMoodleEADConteudoCTITECPRO19unidade1ebookindexhtml 2431 Tamanho da String o tamando de uma string é retornado através da função strlen C Standard Neste caso e também no caso da utilização de outras funções que manipulam strings fazse necessário incluir o arquivo header stringh Exemplo Concatenação concatenar significa unir duas strings No caso da linguagem C essa funcionalidade é feita pela função strcat O resultado da concatenação é atribuído ao primeiro parâmetro da função no caso do código exemplo à variável texto Exemplo 21082023 1630 Técnicas de Programação httpscodelyfmucontents3amazonawscomMoodleEADConteudoCTITECPRO19unidade1ebookindexhtml 2531 Concatenação com quantidade específica de caracteres semelhante à função strcat porém concatena ao destino os N primeiros caracteres da variável fonte No caso do exemplo ao lado os 5 primeiros caracteres de nome são concatenados à variável texto Exemplo Cópia a cópia de strings em C é feita pela função strcpy Na função strcat o primeiro parâmetro destino representa a string que receberá o resultado da cópia da informação contida no segundo parâmetro fonte Exemplo 21082023 1630 Técnicas de Programação httpscodelyfmucontents3amazonawscomMoodleEADConteudoCTITECPRO19unidade1ebookindexhtml 2631 Cópia com quantidade específica de caracteres análogo à função strcpy porém realiza a cópia dos N primeiros caracteres da variável fonte No exemplo ao lado a variável texto será instanciada com os 5 primeiros caracteres da variável nome Exemplo Comparação para se comparar duas strings em C usase a função strcat Quando as duas strings forem iguais a função strcmp retorna o valor 0 Exemplo 21082023 1630 Técnicas de Programação httpscodelyfmucontents3amazonawscomMoodleEADConteudoCTITECPRO19unidade1ebookindexhtml 2731 String para número Em C a conversão é feita mediante a função atoi ASC TO Integer Neste caso fazse necessário incluir o arquivo header stdlibh Exemplo Número para string Em C a conversão é feita pela função itoa Integer TO ASC Como parâmetros da função temos na ordem da esquerda para a direita o valor numérico a ser convertido a string que receberá a conversão por último a base 21082023 1630 Técnicas de Programacgao numerica sobre a qual sera a conversao No caso do exemplo o valor 10 denota a base decimal caso tivesse por exemplo o valor 2 a conversao seria baseada na base binaria Exemplo include stdioh include string sh Hinclude stdlibh char textofS5 int valor1255 itoatvalortexto163 printhead se Zstextoly Quando definir uma string por meio do vetor de caracteres devese sempre dimensionar a variavel com um espaco a mais em relacao a demanda do programa Esse espaco a mais é usado para colocar o caractere terminador de string caracter x0 caracter nulo ou caractere 0 zero O caractere terminador de string serve para indicar 0 término de uma string Neste caso por exemplo a funao printf executa a impressdo dos caracteres de uma string até encontrar o caractere nulo Sendo assim aproveitando o fato de que toda string é finalizada com esse caractere para limpar o contetido de uma string basta textofe AxO ff textolO 295 Na linha de cédigo acima temos duas formas de referenciar o caractere nulo através de seu valor na tabela ASCII ou através da simbologia que o representa A figura a seguir ilustra o formato de uma string sendo finalizada pelo caractere x0 httpscodelyfmucontents3amazonawscomMoodleEADConteudoCTITECPRO19unidade1ebookindexhtml 2831 21082023 1630 Técnicas de Programacgao char strf6 A E I 0 Uo AKO Figura 4 Formato de uma string de 6 posiées destacando que a sua ultima posiao deve conter necessariamente o caractere finalizador de string x0 Fonte Elaborada pelo autor 2019 Analisandose a figura acima convém entao reforcar que uma string deve necessariamente ser finalizada com oO caractere x0 a VOCE QUER VER e Saber manipular strings é de suma importancia no contexto de desenvolvimento de sistemas computacionais pois as encontraremos em diversas situacées Por exemplo uma simples falta do caractere x0 pode acarretar em travamento do programa quando em execucdo Vocé pode acessar este link httpswwwyoutubecomwatch vL4IYcJSoH3M httpswwwyoutubecomwatchvL4IYcJSoH3M para ver um pouco de manipulagao de strings na pratica LOBATO 2012 ee Até 0 momento tanto nos vetores quanto nas strings falamos sobre o tipo homogéneo capaz de armazenar em sua estrutura valores de apenas um tipo Mas sera possivel armazenar em uma variavel dados heterogéneos ou seja haver varios tipos de informaées centradas em apenas uma variavel Sim isso é possivel através da utilizado das estruturas de dados em C esse tipo é representado pela struct Sintese Chegamos ao fim de nossa primeira conversa sobre técnicas de programacao Tivemos a oportunidade de conhecer alguns conceitos iniciais e comandos basicos de uma linguagem estruturada com estas informaées ja sera possivel o desenvolvimento de programas computacionais escritos em C Porém para desenvolver um httpscodelyfmucontents3amazonawscomMoodleEADConteudoCTITECPRO19unidade1ebookindexhtml 2931 21082023 1630 Técnicas de Programacgao programa nado basta apenas entender a linguagem de programaao mas também treinar bastante o raciocinio ldgico de forma a facilitar a otimizacao dos cédigos a serem criados A partir das informaées contidas neste capitulo esperamos que vocé continue treinando e incrementando os seus programas computacionais de forma a deixalos mais funcionais corretos e eficientes Nesta unidade vocé teve a oportunidade de e ter contato com conceitos de linguagens de programacao estruturadas e utilizar os tipos de dados de forma apropriada analisar e empregar corretamente aos comandos condicionais e de repeticao estruturar as informacgoes com vetores Clique para baixar o contetido deste tema Bibliografia ASCENCIO A F G Fundamentos de Programacao de Computadores Algoritmos PASCAL CC Padrdo ANSI e Java 3 ed Sado Paulo Pearson Education do Brasil 2012 Disponivel em https brasilblackboardcomwebapps gabibliotecaSSOBBLEARNhomePearsonhttps brasilblackboardcomwebapps gabibliotecaSSOBBLEARNhomePearson https brasilblackboardcomwebapps gabibliotecaSSOBBLEARNhomePearson Acesso em 27062019 ASCENCIO A F G Fundamentos de Programacao de Computadores Algoritmos PASCAL CC Padrdo ANSI e Java 3 ed Sado Paulo Pearson Education do Brasil 2012 Disponivel em https brasilblackboardcomwebapps gabibliotecaSSOBBLEARNhomePearsonhttps brasilblackboardcomwebapps gabibliotecaSSOBBLEARNhomePearson https brasilblackboardcomwebapps gabibliotecaSSOBBLEARNhomePearson Acesso em 27062019 GATTO E C Comando de Controle Switch Case 2016 Disponivel em httpswwwembarcadoscombrcomandodecontroleswitch casehttpswwwembarcadoscombrcomandodecontroleswitchcase httpswwwembarcadoscombrcomandodecontroleswitchcase Acesso em 05072019 LOBATO P Programagao C Strings char strlen strcmp Inverso Palindromo Aula 11 2012 18 min Disponivel em httpswwwyoutubecomwatchvL4IYcJSoH3M httpswwwyoutubecomwatch vL4IYcJSoH3M httpswwwyoutubecomwatchvL4lYcJSoH3M Acesso em 05072019 MAGNUN Um Ano sem Dennis Ritchie 2012 Disponivel em httpmindbendingorgptumanosem dennisritchiehttpmindbendingorgptumanosemdennisritchie httpmindbendingorgptumano semdennisritchie Acesso em 01072019 httpsdocsmicrosoftcomptbrcppclanguagecbit fieldsviewvs2019 ASCENCIO A F G Fundamentos de Programacao de Computadores Algoritmos PASCAL CC Padrdo ANSI e Java 3 ed Sado Paulo Pearson Education do Brasil 2012 Disponivel em https brasilblackboardcomwebapps gabibliotecaSSOBBLEARNhomePearsonhttps httpscodelyfmucontents3amazonawscomMoodleEADConteudoCTITECPRO19unidade1ebookindexhtml 3031 21082023 1630 Técnicas de Programação httpscodelyfmucontents3amazonawscomMoodleEADConteudoCTITECPRO19unidade1ebookindexhtml 3131 brasilblackboardcomwebappsgabibliotecaSSOBBLEARNhomePearson https brasilblackboardcomwebappsgabibliotecaSSOBBLEARNhomePearson Acesso em 27062019 ASCENCIO A F G Fundamentos de Programação de Computadores Algoritmos PASCAL CC Padrao ANSI e Java 3 ed Sao Paulo Pearson Education do Brasil 2012 Disponıvel em https brasilblackboardcomwebappsgabibliotecaSSOBBLEARNhomePearsonhttps brasilblackboardcomwebappsgabibliotecaSSOBBLEARNhomePearson https brasilblackboardcomwebappsgabibliotecaSSOBBLEARNhomePearson Acesso em 27062019 SOUZA F Bits em Linguagem C Conceito e Aplicação 2015 Disponıvel em httpswwwembarcadoscombrbitsemlinguagemchttpswwwembarcadoscombrbitsem linguagemc httpswwwembarcadoscombrbitsemlinguagemc Acesso em 01072019