Baixe o app para aproveitar ainda mais
Prévia do material em texto
UNIVERSIDADE FEDERAL DO RIO GRANDE DO NORTE PROGRAMA DE EDUCAC¸A˜O TUTORIAL CURSO DE NIVELAMENTO Realizac¸a˜o: PET’s de Engenharia Ele´trica, Engenharia Qu´ımica, F´ısica e Qu´ımica petee@dee.ufrn.br NATAL, 18 de Fevereiro de 2008 1 Suma´rio 1 Introduc¸a˜o 3 2 Conhecendo a sintaxe de C 5 2.1 Tipos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 2.2 Func¸o˜es . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 2.3 Expresso˜es . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 2.4 Operadores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 2.4.1 Operador de atribuic¸a˜o . . . . . . . . . . . . . . . . . . . . . . . . 8 2.4.2 Aritme´ticos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 2.4.3 Operadores de Relac¸a˜o e Lo´gico . . . . . . . . . . . . . . . . . . . 8 2.4.4 Incremento e decremento . . . . . . . . . . . . . . . . . . . . . . . 8 2.5 Precedeˆncia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 3 Func¸o˜es Ba´sicas 10 3.1 printf(); . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 3.2 scanf(); . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 4 Estruturas de Controle de Fluxo 12 4.1 IF . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 4.2 SWITCH . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 4.3 FOR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 4.4 WHILE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 5 Vetores 16 6 Matrizes 17 2 Cap´ıtulo 1 Introduc¸a˜o O computador sozinho e´ uma poderosa calculadora, que sem receber comandos serve- ria para basicamente nada. Tornava− se enta˜o necessa´rio algo que viasibilzasse a real- izac¸a˜o de diversas atividades usando sua alta capacidade de processamento de ca´lculos. Enta˜o para que os humanos tivessem a capacidade de mandar instruc¸o˜es para um com- putador com a sintaxe e semaˆntica da linguagem usada pelos humanos, determinados padro˜es de linguagem foram criados, surgindo assim as linguagens de programac¸a˜o. Um conjunto de comandos de programac¸a˜o gera um co´digo fonte que pode ser convertido para co´digo de ma´quina, este novo co´digo conte´m as instruc¸o˜es requeridas ao computa- dor, em uma linguagem que as ma´quinas entendam. Uma das mais famosas linguagem de programac¸a˜o utilizada atualmente pelos profissionais da a´rea e´ a linguagem C/C++. A linguagem C foi criada por Dennis Ritchie, em 1972, no centro de Pesquisas da Bell Laboratories. Sua primeira utilizac¸a˜o importante foi a reescrita do Sistema Operacional UNIX, que ate´ enta˜o era escrito em assembly. Em meados de 1970 o UNIX saiu do laborato´rio para ser liberado para as universidades. Foi o suficiente para que o sucesso da linguagem atingisse proporc¸o˜es tais que, por volta de 1980, ja´ existiam va´rias verso˜es de compiladores C oferecidas por va´rias empresas, na˜o sendo mais restritas apenas ao ambiente UNIX, pore´m compat´ıveis com va´rios outros sistemas operacionais. O C e´ uma linguagem de propo´sito geral, sendo adequada a` programac¸a˜o estruturada. No entanto e´ mais utilizada para escrever compiladores, analisadores le´xicos, bancos de dados, editores de texto, etc.. A linguagem C pertence a uma famı´lia de linguagens cujas caracter´ısticas sa˜o: • Portabilidade (as primeiras linguagens de programac¸a˜o eram criadas e tin- ham seu funcionamento somente voltada para um tipo ma´quina, com o surgimento de linguagens como C, tornou-se poss´ıvel a elaborac¸a˜o de co´digos que se compilados em tipos diferentes de ma´quina tambe´m funcionariam); •Modularidade (apresentam partes muta´veis, ou seja, podemos modificar certos mo´dulos a fim de usa-los de modo que nos sirvam); • Compilac¸a˜o separada (um programa em c pode funcionar em qualquer sistema operacional, contato que seja compilado no mesmo); • Recursos de baixo n´ıvel (e´ poss´ıvel trabalhar tambe´m com enderec¸os de memo´ria em c, como o uso de ponteiros, o que incrementa a linguagem recursos de linguagens de baixo n´ıvel como assembly); • Gerac¸a˜o de co´digo eficiente (as funcionalidades de c permitem gerar um co´digo 3 limpo e capaz de ser mudado, alem de que a baixa quantidade de palavras reservadas tornam o uso das propriedades mais eficientes); • Confiabilidade (os programas gerados em c dificilmente apresentam frequ¨eˆncia de erros, tornando enta˜o seus programas mais confia´veis que de outras linguagens); • Simplicidade (obtendo-se o domı´nio da sintaxe ba´sica da linguagem fica fa´cil interpretar diversos co´digos fonte); • Facilidade de uso (o pouco uso de palavras reservadas e o uso de estruturas eficientes tornam a linguagem muito simples de implementar); Apo´s escrito o co´digo fonte, este precisa ser compilado para gerar o executa´vel, os com- piladores utilizam o processo de transformac¸a˜o da linguagem de alto n´ıvel (por exemplo, C) para linguagens bina´rias que o computador entende e so´ enta˜o efetua a compilac¸a˜o para a criac¸a˜o do executa´vel. Na atualidade existem va´rios compiladores, mas os mais utilizados sa˜o o DEV-C++ para o Windows (voceˆ o encontra facilmente e gratuito na internet) e os compiladores que ja´ acompanham algumas verso˜es do Linux, como e´ o caso do Kurumim que ja´ vem com um compilador de C atrave´s do terminal, e em todas as verso˜es sa˜o chamado pelo comando “gcc”. Em 19XX, foi a` linguagem C foi atribu´ıda a orientac¸a˜o a` objeto e reformulado algumas sintaxes, passando esta a ser chamada de C++ (uma alusa˜o ao incrementador que e´ largamente utilizado nas duas linguagens). 4 Cap´ıtulo 2 Conhecendo a sintaxe de C Para construc¸a˜o de um programa em linguagem de n´ıvel me´dio, devera´ ser usado um editor de texto onde o programa tera´ que ser salvo na extensa˜o “.c”. Existem va´rios edi- tores preparados para digitac¸a˜o de co´digos fonte, por exemplo, os editores do Linux. Tais editores identificam aspectos pro´prios da linguagem, demarcando-os atrave´s de difer- entes cores para melhor visualizac¸a˜o, esse e´ um dos diversos motivos que faz com que a maioria dos programadores prefiram o Linux ao Windows. As linguagens de pro- gramac¸a˜o reservam algumas palavras para si, apresentam algumas regras, como forma de padronizar os co´digos. Fazendo com que os compiladores sejam capazes de entendeˆ- las. Tais padronizac¸o˜es sa˜o conhecidas por sintaxe da linguagem e palavras reservadas. Particularmente em linguagem C encontram-se 32 palavras reservadas (padra˜o ANSI) em BASIC, por exemplo, sa˜o encontradas muito mais que 100 palavras reservadas. Tal conjunto define a linguagem de programac¸a˜o. e´ necessa´rio atentar para o fato que esta linguagem e´ case sensitive (sens´ıvel a` caixa baixa e caixa alta), devemos enta˜o ser cuida- dosos na declarac¸a˜o de varia´veis. Por ter sido criada nos EUA e por se tratar de uma l´ıngua bastante difundida, os comandos sa˜o todos em ingleˆs, este se revela como um dos principais empecilhos a` compreensa˜o dos estudantes brasileiros. Comenta´rios em C Comenta´rios em C podem ser feitos usando “//COMENTA´RIO” para comenta´rios de linha e “/∗ COMENTA´RIO ∗/” para comenta´rios que ocupem mais de uma linha. Vale salientar que e´ importante deixar tais comenta´rios no co´digo fonte para que outros programadores possam entendeˆ-lo. Todo programa e´ iniciado com a func¸a˜o “main()”, cuja declarac¸a˜o e´ obrigato´ria, e cada instruc¸a˜o deve ser finalizada com um ponto e v´ırgula “;”. Um programa em C comec¸a com declarac¸o˜es de tipo e func¸o˜es, para que se possa posteriormente inserir expresso˜es pro´prias (do programador) atrave´s de operadores e func¸o˜es. 2.1 Tipos Toda varia´vel em C precisa ser inicialmente declarada para queo programa possa alocar memo´ria para seu uso, assim como quais as manipulac¸o˜es que esta podera´ sofrer. Para este curso ba´sico, o aluno deve ter o conhecimento dos seguintes tipos: 5 Tipo Inteiros Tipo Extremos int (−215,215) O tipo inteiro e´ para nu´meros inteiros, por ser de 16 bits, o nu´mero deve apresentar valo ma´ximo de 32.768. char [0,128) Para declarac¸a˜o de caracteres, podendo atrave´s da junc¸a˜o das letras formarem palavras. Na declarac¸a˜o voceˆ tambe´m tem que dizer quantas letras no ma´ximo o caractere armazenara´. long (−231,231) Igual ao int, entretanto com 32 bits, tendo assim a capacidade de guardar nu´meros maiores que o ma´ximo do int. OBS: Existem mais tipos, mas que na˜o se revelam de interesse para este curso ba´sico em espec´ıfico. Tipo Flutuantes Tipo Extremos float [−3.4−38,238] Pelo menos 6 d´ıgitos de precisa˜o decimal. double (−1.7−308,1.7308) Pelo menos 10 d´ıgitos decimais e precisa˜o maior que do float. long double (−1.7−308,1.7308) Pelo menos 10 d´ıgitos decimais e precisa˜o maior que do double. OBS: Por se tratar do sistema americano, os nu´meros flutuantes sa˜o representados com “.” e na˜o com “,” como ocorre no Brasil. Cuidado! O uso da v´ırgula podera´ causar erros na hora de compilar o programa. Exemplo de declarac¸a˜o de varia´veis: int a; float b,c,d,r,A; //atente para o fato de que “a” e´ diferente de “A” OBS: Uma mesma varia´vel na˜o pode ser declarada como dois tipos diferentes em uma mesma func¸a˜o, por exemplo: int a; float b,a; // “a” que ja´ foi declarado como inteiro, tambe´m e´ declarado como flutuante, o que ocasionara´ erro na hora de compilac¸a˜o. A mesma declarac¸a˜o de tipo e´ necessa´ria para as func¸o˜es, uma vez que estas em sua maioria retornam um atributo, caso na˜o o retorne deve ser declarada como “void nome−da−func¸a˜o(argumentos)“ (void, do ingleˆs significa nada), os tipos de func¸a˜o sa˜o os 6 mesmos das varia´veis com o acre´scimo do void. Exemplo de declarac¸a˜o de func¸o˜es: int funcao da soma de inteiros(int a, int b){EXPRESSA˜O}; void funcao imprimir na tela(char a){EXPRESSA˜O}; 2.2 Func¸o˜es Uso de formas geome´tricas distintas produzindo ac¸o˜es distintas para descrever cada uma das poss´ıveis ac¸o˜es durante a execuc¸a˜o do algoritmos.As func¸o˜es sa˜o padro˜es de execuc¸a˜o, na f´ısica existem va´rias func¸o˜es, como a func¸a˜o que determina a posic¸a˜o de um objeto em movimento partindo de certo ponto com velocidade constante num dado tempo, representado pela expressa˜o: S = S0 + vt (2.1) Para esta func¸a˜o e´ necessa´rio que se conhec¸a o ponto de partida, a velocidade do carro e o tempo decorrido para o qual se quer saber a posic¸a˜o, colocados na expressa˜o a` func¸a˜o retorna a posic¸a˜o do objeto no tempo pedido. Basicamente tudo que e´ declarado no co´digo e´ executado atrave´s de func¸o˜es, embora na˜o se conhec¸a seu co´digo-fonte. No caso da expressa˜o do exemplo, se teˆm a seguinte declarac¸a˜o da func¸a˜o: float posicao(float s0, float v, float t){ //o nome da func¸a˜o e´ ”posicao“ float s; //o resultado final e´ declarado s = s0 + v*t; //expressa˜o que determina a posic¸a˜o final return s; //o valor da posic¸a˜o final e´ retornado } NOTA: Na˜o fique preocupado se na˜o entender parte do co´digo, o importante agora e´ que tenha conhecimento da estrutura, mais a frente podera´ dominar perfeitamente tais func¸o˜es ba´sicas. No momento fixe que para iniciar as instruc¸o˜es de uma func¸a˜o deve comec¸ar com ”{“ e ao final da func¸a˜o fecha´-la com ”}“. 2.3 Expresso˜es As expresso˜es determinam o que voceˆ quer fazer com suas varia´veis. Assim que sa˜o declaradas, as varia´veis na˜o possuem atributos, na func¸a˜o principal ”main()“ podemos da´ a ela atributos, que pode ser atrave´s de um nu´mero ou atrave´s de uma expressa˜o, tornando assim uma varia´vel dependente de outras. Caso queiramos ao longo do programa tambe´m modificar alguma varia´vel devemos fazer uso de alguma expressa˜o que fac¸a exatamente o que desejamos. Ou seja, as expressa˜o sera˜o a parte mais subjetiva do programa, uma vez que cabera´ ao programador usar as func¸o˜es ja´ prontas e as que ele pro´prio declarara´ a fim de que o programa realize aquilo que ele deseja. 7 2.4 Operadores 2.4.1 Operador de atribuic¸a˜o O operador de atribuic¸a˜o em C e´ o igual ”=“, atrave´s deste atributo o programador pode atribuir valores inteiros, booleanos, caracteres, sempre de acordo com o que a varia´vel foi declarada, se houver incompatibilidade o programa na˜o sera´ compilado. Vale salientar que o ”=“ e´ um atribuidor e na˜o uma igualdade, portanto expresso˜es como: a = a + 1; (2.2) 2.4.2 Aritme´ticos Os operadores aritme´ticos em sua maioria ja´ sa˜o bastante conhecidos, abaixo uma tabela com o s´ımbolo e a atribuic¸a˜o de cada um. + Realiza uma soma - Realiza uma subtrac¸a˜o * Realiza uma multiplicac¸a˜o / Realiza uma divisa˜o % Retorna o resto de uma divisa˜o 2.4.3 Operadores de Relac¸a˜o e Lo´gico Outros operadores bastante u´teis sa˜o os operadores relacionais e lo´gicos que trabalham com relac¸o˜es de verdadeiro ou falso, por exemplo, 8 e´ igual a 8? O que se trata de uma verdade, mas 8 igual a 10 e´ falso. Abaixo uma tabela com os principais operadores relacionais e lo´gicos. Operadores Lo´gicos && AND || OR ! NOT Operadores Relacionais == Comparador de igualdade ! = Comparador de diferenc¸a > Maior que >= Maior ou igual < Menor que <= Menor ou igual 2.4.4 Incremento e decremento Um operador bastante utilizador em C, que inclusive dara´ nome a sua posterior (C++) e´ o incrementador, ele acrescenta uma unidade a` varia´vel, o decrementador (–) subtrai uma. Ex: a=10, usando a++; ”a“ agora passa a valer 11. Tal operac¸a˜o tambe´m poderia ter sido feita: a = a + 1; 8 2.5 Precedeˆncia Deve-se atentar para operac¸o˜es escritas com va´rios operadores, ja´ que eles apresentam uma ordem de precedeˆncia, portanto e´ aconselha´vel o constante uso de parentes para separar as operac¸o˜es. A ordem de precedeˆncia das operac¸o˜es e´ a seguinte: 1o. ++ e −− 2o. *, / e % 3o. + e Ex: a = 10 + 6/3 ∗ 3− 2%1; resultaria em: a = 10 + [(6/3) ∗ 3]− (2%1); a = 10 + [2 ∗ 3]− 0; a = 16; 9 Cap´ıtulo 3 Func¸o˜es Ba´sicas Na medida em que a linguagem C foi crescendo, bibliotecas foram criadas para que assim na˜o fosse necessa´rio criar co´digos para execuc¸o˜es ba´sicas, facilitando assim a` difusa˜o da linguagem, uma vez que iniciantes passavam a usar a linguagem mais rapidamente. No caso de C, a biblioteca ba´sica necessa´ria para executar comandos de entrada e sa´ıda e´ a ”stdio“. Tal biblioteca carrega func¸o˜es padro˜es (standard std) de entrada e sa´ıda (input and output io), devemos inclu´ı-la em todo in´ıcio de co´digo atrave´s do seguinte comando: # include <stdio.h> .h e´ a extensa˜o do arquivo que conte´m as func¸o˜es ja´ prontas, no caso desta, o compi- lador ja´ a conte´m dentro da pasta ”.../include“ do programa que utilizado para compilar.. Sabendo como instalar a biblioteca de func¸o˜es padro˜es de entrada e sa´ıda, resta conhecer as func¸o˜es e o que cada uma delas faz. 3.1 printf(); Tal func¸a˜o imprime na tela do computador o que o programador digitar entre aspas dentro dos pareˆnteses. Primeiro exemplo de programa: # include <stdio.h> int main(){ //a func¸a˜o main deve ser declara como int printf(“Ola Mundo!”); } A estrutura desse programa e´ bastante simples, atente para o fato de que a func¸a˜o principal ”main“ e´ declarada como int, tal fato se deve porque int e´ um alocador bastante simples que torna o programa mais eficiente. Pode-se declarar a func¸a˜o com qualquer tipo, uma vez que a mesma na˜o retornara´ nada, o que na˜o e´ aconselhado, pois, perder- se-ia alguns mile´simos de segundos que em alguns programas torna-se muito importante. Para imprimir uma varia´vel, deve-secolocar dentro das aspas % e a letra que representa o tipo da varia´vel, logo apo´s as aspas e entre os pareˆnteses coloca-se uma v´ırgula e so´ enta˜o a varia´vel. Exemplo: # include <stdio.h> 10 int main(){ int a; float b; char c[10]; //tal caractere recebe uma palavra de ate´ no ma´ximo 10 letras a=10; b=2.5; c=”palavrad10“; printf(”Vou imprimir um inteiro %d, agora um flutuante %f e para termi- nar um caractere %c“,a,b,c); /*deve-se colocar as varia´veis na ordem que foi as usando dentro dos pareˆnteses*/ } Caso a varia´vel seja do tipo float pode-se especificar a precisa˜o na qual se deseja im- primir, por exemplo, para imprimir um nu´mero com duas casas decimais deve-se colocar: %.2f. 3.2 scanf(); Esta func¸a˜o e´ a ba´sica de leitura, com ela pode-se ter uma conexa˜o com o usua´rio, assim o mesmo pode enviar dados para o programa processar. Exemplo: Programa para calculo da me´dia da UFRN # include <stdio.h> int main(){ float n1,n2,n3,m; printf(”Digite suas treˆs notas na ordem que foram realizadas: \n”); // o “\n” serve para pular uma linha scanf(“%f%f%f“,&n1, &n2, &n3); /*Ao usar o scanf deve-se colocar o & na frente da vara´vel, tal fato se deve porque o atributo & serve direcionar o enderec¸o em que o conteu´do lido sera´ guardado, caso isso na˜o fosse usado o conteu´do lido na˜o seria guardado no enderec¸o de memo´ria da varia´vel requerida. Portanto na˜o esquec¸a*/ m = (4*n1+5*n2+6*n3)/15; printf(”Sua media eh %.2f“,m); //lembre-se de na˜o usar acento nas palavras } 11 Cap´ıtulo 4 Estruturas de Controle de Fluxo As estruturas de controle de fluxo controlam o fluxo da execuc¸a˜o do programa, elas podem ser condicionais (if e switch), loop (for, while e do-while) e de desvio incondicional (goto, esta u´ltima e´ raramente utilizada). 4.1 IF A pro´pria traduc¸a˜o diz tudo, se algo for verdadeiro, fac¸a, podendo ainda incluir o ”else“ para o caso negativo e passando tambe´m para este uma instruc¸a˜o. Exemplo: Programa da me´dia melhorado (incluindo um impressa˜o de aprovac¸a˜o, 4a. prova e recuperac¸a˜o) # include <stdio.h> int main(){ float n1,n2,n3,m; printf(”Digite suas treˆs notas na ordem que foram realizadas: \n”); // o “\n” serve para pular uma linha scanf(“%f%f%f“,&n1, &n2, &n3); m = (4*n1+5*n2+6*n3)/15; if(m>=7){ printf(”Sua media e´ %.2f, parabe´ns voceˆ foi aprovado.\n”,m); } else{ if(m>=3){ printf(”Sua media e´ %.2f, voceˆ esta´ na quarta prova.\n“,m); } else{ printf(”Sua media e´ %.2f, voceˆ esta´ reprovado.\n“,m); } } } 12 4.2 SWITCH O que o switch faz seria perfeitamente feito por va´rios ”if“, mas daria muito trabalho e ficaria de certa forma desorganizado. O switch como o pro´prio nome diz faz uma es- colha, ele pega uma varia´vel e de acordo com o valor contido nesta varia´vel ele toma uma decisa˜o, e´ bastante u´til na construc¸a˜o de menus primitivos, como o mostrado abaixo. Analise bem a sintaxe, pois e´ a que apresenta mais diferenc¸a em relac¸a˜o a`s outras estru- turas, por isso, facilmente esquecida: # include <stdio.h> int main(){ int idade,escolha; char nome[50],sexo[1]; printf(”##### Banco de dados #####\n\nDigite seu nome: “); gets(nome); /*a func¸a˜o gets e´ semelhante a scanf no entanto so´ serve para a leitura de caracteres que necessitam do uso da barra de espac¸o como elemento, caso fosse usado o scanf assim que aperta´ssemos a barra de espac¸o a leitura do caractere seria finalizada.*/ print(”Digite sua idade: “); scanf(”%d“,&idade); printf(”Digite seu sexo (M/F): “); scanf(”%c”,sexo); //para a leitura de caracteres na˜o e´ necessa´rio usar o & printf(“\nDigite 1 para ver o nome digitado, 2 para ver a idade ou 3 para ver o sexo digitado: “); scanf(”%d“,&escolha); switch(escolha){ case 1: { printf(”%c“,nome); break; /*o comando break finaliza qualquer estrutura de con- trole de fluxo, caso na˜o fosse colocado os comandos dentro dos outros ”case“ tambe´m sera˜o executados*/ } case 2: { printf(”%d“,idade); break; } case 3: { printf(”%c“,sexo); break; } default: /*o default e´ acionado caso o usua´rio digite algo que voceˆ na˜o relacionou nos ”case”*/ 13 { printf(“Voce na˜o digitou nenhum dos numeros solicitados”); break; } } } 4.3 FOR O “for” faz um loop (lac¸o) atrave´s de um contador, ele realiza, portanto os comandos dentro do for a quantidade de vezes desejadas, seguindo a seguinte estrutura: 1o. declarac¸a˜o de uma varia´vel qualquer, geralmente chamada de i; 2o. Uso da estrutura passando como argumentos o valor inicial da varia´vel contadora, o seu valor ma´ximo e qual o passo de crescimento; Exemplo: # include <stdio.h> int main(){ int i; printf(“Este programa mostrara´ todos os numeros pares ate´ 100:\n”); for(i=0;i<=100;i=i+2){ printf(“%d\t”,i); // “\t” imprime um backspace } } OBS: Pode-se ou na˜o usar a varia´vel contadora, no caso i, o importante e´ que ela tenha um in´ıcio e fim, caso seja colocada uma expressa˜o que nunca leve a varia´vel a chegar a seu limite, os comandos sera˜o executados ate´ o ponto em que o computador travara´ por falta de memo´ria. Por exemplo, se tivesse sido colocado “for(i=0;i¡=100;i–){”, i comec¸a em 0 e so´ diminui, nunca cresce para chegar no seu limite que e´ 101, porque no 100 o loop ainda funcionara´ ja´ que foi usado maior ou igual. 4.4 WHILE O while e´ um loop que funcionara´ enquanto algo for verdade, se for fornecido como argumentos para o while 10¿8, por se tratar de uma verdade ele funcionara´ eternamente, no entanto se fornecido 8¿10 ele nunca funcionara´ por na˜o se tratar de uma verdade. e´ perfeitamente poss´ıvel fazer com um while tudo que um for faz, portanto esta e´ uma estrutura bastante poderosa. Exemplo: # include <stdio.h> int main(){ 14 int continuacao; continuacao=1; while(continuacao == 1){ printf(“Quer executar esse programa novamente? Digite 1 caso queira, e 0 caso na˜o queira ”); } } 15 Cap´ıtulo 5 Vetores Os vetores sa˜o varia´veis que guardam mais de um elemento em uma mesma varia´vel de mesmo nome, para tanto na declarac¸a˜o da varia´vel coloca-se a quantidade de elementos que a mesma guardara´ atrave´s de colchetes e o nu´mero de elementos da seguinte forma: VARIAVEL[NUMERO DE ELEMENTOS]. Cada elemento pode ser resgatado do vetor acessando-se sua posic¸a˜o no vetor que inicia no zero e vai ate´ o numero de elementos menos um. Vejamos um programa que calcula a me´dia da UFRN usando vetores: Exemplo: # include <stdio.h> int main(){ int peso[3],i; float nota[3],media; for(i=0;i<3;i++){ printf(“\nDigite a nota %d”,i+1); scanf(“%d”,¬a[i]); } peso[0]=4; peso[1]=5; peso[2]=6; media=0; for(i=0;i<3;i++){ media=media+peso[i]*nota[i]; } media=media/15; printf(“Sua media eh %f”,media); } 16 Cap´ıtulo 6 Matrizes Da mesma forma que uma varia´vel guarda va´rios elementos, que chamamos de vetor, pode-se fazer um vetor que guarde va´rios vetores, chamado de matrizes e apresenta a seguinte estrutura: VARIAVEL[N DE ELEMENTOS]. Poder-se-ia inclusive incluir mais uma quantidade de elementos obtendo assim um vetor de matrizes, e assim por diante. Vamos fazer agora um programa que pede ao usua´rio os elementos que ele quer colocar em uma matriz 2X2 e que a imprima. Exemplo: # include <stdio.h> int main(){ int i,j; float matriz[2][2]; for(i=0;i<2;i++){ for(j=0;j<2;j++){ printf(“Digite o elemento %dX%d da matriz:”,i+1,j+1); scanf(“%f”,&matriz[i][j]); } } printf(“[”); for(i=0;i<2;i++){ for(j=0;j<2;j++){ printf(“%f ”, matriz[i][j]); } printf(“\n”); } printf(“]”); } 17
Compartilhar