Introdução a linguagem c   karen lowhany
Upcoming SlideShare
Loading in...5
×
 

Introdução a linguagem c karen lowhany

on

  • 8,083 views

Material: Prof. Camilo

Material: Prof. Camilo

Statistics

Views

Total Views
8,083
Views on SlideShare
8,077
Embed Views
6

Actions

Likes
1
Downloads
209
Comments
0

2 Embeds 6

http://unisophie.com 4
http://www.edmodo.com 2

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

Introdução a linguagem c   karen lowhany Introdução a linguagem c karen lowhany Presentation Transcript

  • Prof. Camilo Carmo dos Santos Lógica deProgramação Introdução à Linguagem C Técnico em informática
  • Tradução TRADUTORCÓDIGO FONTE CÓDIGO OBJETO... LET SOMA = VAR1 + TOTAL ... ... 00010110111001011001011010 ...(linguagem de prog.) (“executável”) MONTADOR (assembler) Tradutor para linguagens de 2a geração. COMPILADOR: Traduz todo o programa de uma vez. INTERPRETADOR: Traduz o programa instrução por instrução. 2
  • Histórico da Linguagem CCriada por Denis Ritchie, na década de 1970, para uso em um computador DEC PDP-11 em UnixC++ é uma extensão da linguagem CO sistema Unix é escrito em C e C++ 3
  • Estrutura básica de umprograma C diretivas para o pré-processador declaração de variáveis globais main () { declaração de variáveis locais da função main comandos da função main } 4
  • Diretivas para o processador -Lógica de Programação – Prof. Camilo Carmo dos Santos Bibliotecas Diretiva #include permite incluir uma biblioteca Bibliotecas contêm funções pré- definidas, utilizadas nos programas Exemplos #include <stdio.h> Funções de entrada e saída #include <stdlib.h> Funções padrão #include <math.h> Funções matemáticas #include <string.h> Funções de texto Cap. 1 - Visão Geral 5
  • O ambiente Dev-C++O Dev-C++ é um ambiente de desenvolvimento de programas em C e C++ (editor, compilador, bibliotecas...)Pode ser baixado de: http://www.bloodshed.net/devcpp.html 6
  • Lógica de Programação – Prof. Camilo Carmo dos Santos Usando o Dev-C++ Inicie o Dev-C++ pelo ícone ou pelo menu Crie um novo arquivo, com o comando File, New Source File Edite o programa da página seguinte Cap. 1 - Visão Geral 7 7
  • Usando o Dev-C++ (3)#include <stdio.h>#include <stdlib.h>main(){ printf ("Alo mundo!"); system("PAUSE");} 8
  • Usando o Dev-C++ (4)Salve o programa com o nome exemplo.cppCompile o programa com o comando Executar, Compilar ou com a tecla Ctrl-F9Se houver algum erro de sintaxe, aparece uma ou mais mensagens no rodapé da janela. Neste caso, corrija o programa e repita.Se não houver erros, execute o programa com o comando Executar, Executar ou com a tecla Ctrl-F10 9
  • DicasTermine todas as linhas com ;Sempre salve o programa antes de compilarSempre compile o programa antes de executarQuando ocorrer um erro de compilação, dê um duplo clique sobre a mensagem de erro para destacar o comando errado no programaVerifique também a linha anterior, que pode ser a responsável pelo erro, especialmente se faltar o ;Use comentários, iniciados por // 10
  • Template (Exemplo 1)#include <stdio.h>#include <stdlib.h>main(){ printf ("Alo mundo!"); system("PAUSE");} 11
  • DETALHE:• TODO o programa vai começar com bibliotecas no topo, em “C” as principais são:• #include <stdio.h>• #include <stdlib.h>
  • • Stdlib.h : é um arquivo cabeçalho da biblioteca de propósito geral padrão da liguagem de programação C. Ela possui funções envolvendo alocação de memória, controle de processos, conversões e outras. Ela é compatível com C++ e é chamada cstdlib em C++. O nome "stdlib" vem de standard library (standard library é biblioteca padrão em inglês).• Stdio.h: é um cabeçalho da biblioteca padrão do C. Seu nome vem da expressão inglesa standard input-output header (cabeçalho padrão de entrada/saída).• Possui definições de subrotinas relativas às operações de entrada/saída, como leitura de dados digitados no teclado e exibição de informações na tela do programa de computador. Também possui numerosas definições de constantes, variáveis e tipos. É um dos cabeçalhos mais populares da linguagem de programação C, intensivamente utilizado tanto por programadores iniciantes como por experientes.
  • Arrumando o programa: #include <stdio.h> #include <stdlib.h> main() { printf ("Alo mundo!"); printf("n");// PULA UMA LINHA system("PAUSE"); } 14
  • EXERCÍCIOFAÇA UM PROGRAMA QUE ESCREVA O SEU NOME NA TELA DO COMPUTADOR. 15
  • DeclaraçõesDeclaram as variáveis e seus tiposOs nomes das variáveis devem conter apenas letras, dígitos e o símbolo _Os principais tipos são: int, float, double e charExemplos int n; int quantidade_valores; float x, y, somaValores; char sexo; char nome[40];C diferencia letras maiúsculas de minúsculas!int n, N;n é diferente de N! 16
  • Algoritmo...... Na Linguagem C... #include <stdio.h> #include <stdlib.h> main() { double n1, n2, n3, media;Real: n1, n2, n3,media system("PAUSE"); } 17
  • Comando de atribuiçãoAtribui o valor da direita à variável da esquerdaO valor pode ser: uma constante, uma variável ou uma expressãoExemplos x = 4; --> lemos x recebe 4 y = x + 2; y = y + 4; valor = 2.5; sexo = F 18
  • Entrada e Saída de Dados 19
  • Entrada de DadosFunção scanf scanf ("formatos", &var1, &var2,...) Exemplos: %d inteiro int i, j; %f float float x; char c; %lf double scanf("%d", &i); %c char scanf("%d %f", &j, &x); %s palavra scanf("%c", &c); scanf("%s", nome); 20
  • Entrada de Dados (Exemplo 2)Algoritmo Na Linguagem C... #include <stdio.h> #include <stdlib.h> main()Real: n1, n2, n3,media { ler n1 double n1, n2, n3, media; ler n2 scanf ("%lf",&n1); ler n3 scanf ("%lf",&n2); scanf ("%lf",&n3); ler n1, n2, n3 scanf ("%lf %lf %lf",&n1, &n2, &n3); system("PAUSE"); } 21
  • Operadores MatemáticosOperador Exemplo Comentário+ x + y Soma x e y- x – y Subtrai y de x* x * y Multiplica x e y/ x / y Divide x por y% x % y Resto da divisão de x por y++ x++ Incrementa em 1 o valor de x-- x-- Decrementa em 1 o valor de x 22
  • Entrada de Dados (exemplo 3)Algoritmo << --- Parou Aqui Na Linguagem C... #include <stdio.h> #include <stdlib.h>Real: n1, n2, n3, media main() ler n1, n2, n3 { double n1, n2, n3, media; media=(n1+n2+n3)/3 scanf ("%lf %lf %lf",&n1, &n2, &n3); media=(n1+n2+n3)/3; printf(“a media é: %lf”, media); system("PAUSE"); } 23
  • Saída de DadosFunção printf printf ("formatos", var1, var2,...) Exemplos: %d inteiro int i, j; %f float float x; char c; %lf double printf("%d", i); %c char printf("%d, %f", j, x); %s palavra printf("%c", c); printf("%s", nome); 24
  • Saída de Dados (Exemplo 4)#include <stdio.h>#include <stdlib.h>main(){ int i, j; float x; char c; char nome [10]; i = 1; j = 2; x = 3; printf("%d", i); printf(“,"); printf("%d, %f", j, x); system("PAUSE");} 25
  • Saída de Dados (Exemplo 5)#include <stdio.h>#include <stdlib.h>main(){ double n1, n2, n3, media; // definicao de variaveis scanf ("%lf %lf %lf",&n1, &n2, &n3); // entrada de dados media=(n1+n2+n3)/3; // operacao matemática printf("%f", n1); // saida de dados na tela printf("%f", n2); // saida de dados na tela printf("%f", n3); // saida de dados na tela printf("%f", media); // saida de dados na tela system("PAUSE"); // pausa do sistema, pressione qualquer tecla} 26
  • Saída de Dados (Exemplo 5)#include <stdio.h>#include <stdlib.h>main(){double n1, n2, n3, media; // definicao de variaveis printf(“DIGITE 3 NÚMERO PARA CALCULAR A MEDIA");scanf ("%lf %lf %lf",&n1, &n2, &n3); // entrada de dados: Leia &n1, &n2, &n3 media=(n1+n2+n3)/3; // operacao printf("%f", n1); // saida de dados 1° valor printf(","); // colocando uma virgula printf("%f", n2);// saida de dados 2° valor printf(",");//colocando outra virgula printf("%f", n3);// saida de dados 3° valor printf("n"); // pulando uma linha printf("A media e: "); // Exibindo a frase “a média e:” printf("%f",media); // Exibindo o valor da variável média;printf("n"); // pulando outra linha system("PAUSE"); // Parada do sistema} 27
  • Saída de Dados (Exemplo 6)#include <stdio.h>#include <stdlib.h>main(){ // definicao de variaveisint i, j; // variavel do tipo inteirofloat x; // variavel do tipo real ou ponto flutuantechar c; // variavel do tipo caracterchar nome[30]; // variavel do tipo caracter com várias posições ou string....... //entrada de dadosscanf("%d", &i); // lendo 1 valor do tipo inteiroscanf("%d %f", &j, &x); // lendo 1 valor tipo inteiro e 1 valor realscanf("%s", &c); // Ler um caractere qualquerscanf("%s", nome); // Ler um nome qualquer com no máximo 30 posições // exibindo os dadosprintf("%d", i); // exibindo o inteiroprintf("%d, %f", j, x); // exibindo o inteiro eo realprintf("%c", c); // exibindo caractereprintf("%s", nome); // exibindo a variável com vários caracteres system("PAUSE"); // uma paradinha básica} 28
  • ARRUMANDO... (Exemplo 6){ << --- Parou aqui.int i, j;float x;char c;char nome[30];printf("DIGITE UM NUMERO INTEIROn"); scanf("%d", &i);printf("DIGITE UM NUMERO INTEIRO E UM REALn"); scanf("%d %f", &j, &x);printf("DIGITE UM CARACTERn"); scanf("%s",&c);printf("DIGITE UMA PALAVRAn"); scanf("%s",nome);printf("n O numero inteiro e:%d", i);printf("n o inteiro e o real sao:%d, %f", j, x);printf("n o caracter e:%c", c);printf("na Palavra e:%s", nome); system("PAUSE");} 29
  • Exemplo 7 //PROGRAMINHA BOBO QUE SOMA VALORES#include <stdio.h>#include <stdlib.h>main(){ //declaracao de variaveis int n; int quantidade_valores; float x, y, somaValores; char sexo; char nome[40]; // operacao somaValores =1+1; //saida de dados printf("somaValores=%f", somaValores);system("PAUSE");} 30
  • #include <stdio.h> Exemplo 8#include <stdlib.h>main(){ // definicao de vairiaveis int n; int quantidade_valores; float x, y, somaValores; char sexo; char nome[40]; x = 1; y = 2; // valores passados pelas variaveis //atribuicao somaValores = x + y; // mostra mensagem de texto na tela printf("alo mundo n"); // mostra valor na tela printf("somaValores=%f", somaValores);printf("n"); system("PAUSE");} 31
  • Entrada e Saída Exemplo 9 Exemplo 10#include <stdio.h> #include <stdio.h>#include <stdlib.h> #include <stdlib.h>main() main(){ { double n1, n2, n3, media; double n1, n2, n3, media; scanf ("%lf %lf %lf",&n1, &n2, &n3); printf("Digite 3 notas: "); media=(n1+n2+n3)/3; scanf ("%lf %lf %lf",&n1, &n2, &n3); printf ("%lf",media); media=(n1+n2+n3)/3; printf ("Media: %.2lf",media); printf (“n”); system("PAUSE"); system("PAUSE");} } 32
  • Exemplo 111) Tendo como dados de entrada a altura e o sexo de uma pessoa, construa um programa que calcule seu peso ideal, utilizando a seguinte fórmula: peso ideal = (72.7*h) – 58#include <stdio.h>#include <stdlib.h>#include <conio.h>// conio.h é uma biblioteca que serve para manipular caracteres na telamain(){ float altura, pesoIdeal; char sexo; printf ("nDigite sua altura em metros: "); scanf ("%f",&altura); printf ("nDigite seu sexo (F/M): "); sexo=getche(); // evento da biblioteca conio.h pega a tecla digitada pesoIdeal=(72.7*altura)-58; printf ("nO sexo digitado foi %c e o peso ideal desta pessoa eh %.2f quilosn", sexo, pesoIdeal);// Valor das variaveis jogado dentro do testo system("PAUSE");} 33
  • PROGRAMA I.M.C.#include <stdio.h>#include <stdlib.h>main(){ float altura, peso, imc; printf ("nDigite sua altura em metros: n"); scanf ("%f",&altura); printf ("nDigite seu peso: n"); scanf ("%f",&peso); imc = peso /(altura*altura); printf ("n O SEU IMC E: %.2f",imc ); printf("n");// aqui introduziremos o "IF"... system("PAUSE");}
  • #include <stdio.h> PROGRAMA I.M.C.#include <stdlib.h>main(){ float altura, peso, imc; printf ("nDigite sua altura em metros: n"); scanf ("%f",&altura); printf ("nDigite seu peso: n"); scanf ("%f",&peso); imc = peso /(altura*altura); printf ("n O SEU IMC E: %.2f",imc ); printf("n");// aqui introduziremos o "IF"... if (imc<19) {printf ("Voce esta abaixo do peso n"); } if (imc>19&&imc<25) {printf ("Voce esta no peso ideal n"); } if (imc>25 ) {printf ("Voce esta acima do peso n"); } system("PAUSE");}
  • Operadores de AtribuiçãoOperador Exemplo Comentário= x = y Atribui o valor de y a x+= x += y Equivale a x = x + y-= x -= y Equivale a x = x – y*= x *= y Equivale a x = x * y/= x /= y Equivale a x = x / y%= x %= y Equivale a x = x % y 36
  • Funções MatemáticasFunção Exemplo Comentárioceil ceil(x) Arredonda o número real para cima; ceil(3.2) é 4cos cos(x) Cosseno de x (x em radianos)exp exp(x) e elevado à potencia xfabs fabs(x) Valor absoluto de xfloor floor(x) Arredonda o número Real para baixo; floor(3.2) é 3log log(x) Logaritmo natural de xlog10 log10(x) Logaritmo decimal de xpow pow(x,y) Calcula x elevado à potência ysin sin(x) Seno de xsqrt sqrt(x) Raiz quadrada de xtan tan(x) Tangente de x #include <math.h> 37
  • // LAGORITMO PARA FUNÇÕES MATEMÁTICAS#include <conio.h> // necessária para getch()#include <math.h> // necessária para pow() e sqrt()#include <stdio.h> // necessária para printf()int main(){ int a = 2, b = 3; printf("%d + %d = %dn", a, b, a + b); printf("%d - %d = %dn", a, b, a - b); printf("%d x %d = %dn", a, b, a * b); printf("%d / %d = %0.1fn", a, b, (float) a / b); // resultado fracionário printf("%d elevado a %d = %0.1fn", a, b, pow(a, b)); // pow(base, expoente) printf("raiz quadrada de %d = %0.1fn", a, sqrt(a)); getch(); return 0;}
  • Exemplo 12 < --PAROU AQUI2) Construa um programa que tendo como entrada dois pontos quaisquer do plano P(x1,y1) e Q(x2,y2), imprima a distância entre eles. A fórmula da distância é:#include <stdio.h>#include <stdlib.h>#include <math.h>main(){ float x1, y1, x2, y2; float distancia; printf ("nDigite o valor de x1: "); scanf ("%f",&x1); printf ("nDigite o valor de y1: "); scanf ("%f",&y1); printf ("nDigite o valor de x2: "); scanf ("%f",&x2); printf ("nDigite o valor de y2: "); scanf ("%f",&y2); distancia=sqrt(pow((x2-x1),2)+pow((y2-y1),2)); printf ("nA distancia entre os pontos P1 e P2 eh %.2fn", distancia); system("PAUSE");} 39
  • Exercicio I3) Construa um programa que calcule a quantidade de latas de tinta necessárias e o custo para pintar tanques cilíndricos de combustível, onde são fornecidos a altura e o raio desse cilindro.Sabendo que:- a lata de tinta custa R$20,00- cada lata contém 5 litros- cada litro de tinta pinta 3 metros quadrados.Sabendo que:Área do cilindro=3.14*raio2 + 2*3.14*raio*alturae que raio e altura são dados de entrada. 40
  • Resposta do Exercício I#include <stdio.h>#include <stdlib.h>#include <math.h>main(){ float altura, raio, areaCilindro, qtdadeLitros, qtdadeLatas, custo; printf ("nDigite o valor da altura em metros: "); scanf ("%f",&altura); printf ("nDigite o valor do raio em metros: "); scanf ("%f",&raio); areaCilindro=3.14*raio*raio + 2*3.14*raio*altura; printf ("nA area do cilindro eh %.2f metros quadrados", areaCilindro); qtdadeLitros=areaCilindro/3; printf ("nA qtidade de litros necessaria eh de %.2f ", qtdadeLitros); qtdadeLatas=qtdadeLitros/5; printf ("nA qtidade de latas necessaria eh de %.2f ", qtdadeLatas); custo=qtdadeLatas*20; printf ("nO valor total das tintas eh de R$ %.2f n", custo); system("PAUSE");} 41
  • Operadores RelacionaisOperador Exemplo Comentário== x == y O conteúdo de x é igual ao de y!= x != y O conteúdo de x é diferente do de y<= x <= y O conteúdo de x é menor ou igual ao de y>= x >= y O conteúdo de x é maior ou igual ao de y< x < y O conteúdo de x é menor que o de y> x > y O conteúdo de x é maior que o de y As expressões relacionais em C retornam : • 1 se verdadeiro e; • 0 se falso. 42
  • Operadores Lógicos&& (E lógico): retorna verdadeiro se ambos os operandos são verdadeiros e falso nos demais casos. Exemplo: if( a>2 && b<3).|| (OU lógico): retorna verdadeiro se um ou ambos os operandos são verdadeiros e falso se ambos são falsos. Exemplo: if( a>1 || b<2).! (NÃO lógico): usada com apenas um operando. Retorna verdadeiro se o operando é falso e vice-versa. Exemplo: if( !var ). 43
  • PROGRAMINHA COM LÓGICA:#include<stdio.h>#include<stdlib.h>main(){ float x = 3.0; int n = 55; int i = 0; int resultado;// operadores lógicos "0" e falso, e "1" e verdadeirosystem(“PAUSE”);}
  • CONTINUANDO...........// operadores lógicos "0" e falso e "1" e verdadeiro resultado = (i != 0); printf("nO resultado e %d", resultado); resultado = (x == 0); printf("nO resultado e %d", resultado); resultado = (n < 100); printf("nO resultado e %d", resultado); resultado = ((i != 0) || (x == 0)); printf("nO resultado e %d", resultado); resultado = ((i != 0) || (x == 0) || (n < 100)); printf("nO resultado e %d", resultado); printf("n"); system("PAUSE");}
  • PROGRAMA COMPLETO:#include<stdio.h>#include<stdlib.h>main(){float x = 3.0; int n = 55; int i = 0; int resultado;// operadores lógicos "0" e falso e "1" e verdadeiroresultado = (i != 0);printf("nO resultado e %d", resultado);resultado = (x == 0);printf("nO resultado e %d", resultado);resultado = (n < 100);printf("nO resultado e %d", resultado);resultado = ((i != 0) || (x == 0));printf("nO resultado e %d", resultado);resultado = ((i != 0) || (x == 0) || (n < 100));printf("nO resultado e %d", resultado);printf("n");system("PAUSE");}
  • Relembrando:Operadores Lógicos Tabela E Tabela OU Tabela NÃO VeV→V V ou V → V Não V → F VeF→F V ou F → V Não F → V FeV→F F ou V → V FeF→F F ou F → F 47
  • EXERCÍCIO:Dadas as declarações abaixo, indique cada um dos itens na seqüência:int i=1, j=2, k= 3, n=2;float x= 3.3, y =4.4;
  • Estrutura condicional compostaComando if...else if (condição) Executa o comando se a condição for comando; qualquer coisa diferente de zero! else comando; if (peso= =peso_ideal) printf (“Vc está em forma!”); if (condição) { else comando1; printf (“Necessário fazer dieta!”); comando2; } em pseudo-código: else { se (peso= =peso_ideal) comando3; entao exibir “Vc está em forma!” comando4; senao exibir “Necessário fazer dieta!” }
  • Estrutura SWITCHswitch (numero){ case 1: printf ("Janeiron"); break; case 2: printf ("Fevereiron"); break; case 3: printf ("Marcon"); break; case 4: printf ("Abriln"); break; case 5: printf ("Maion"); break; case 6: printf ("Junhon"); break; case 7: printf ("Julhon"); break; case 8: printf ("Agoston"); break; case 9: printf ("Setembron"); break; case 10: printf ("Outubron"); break; case 11: printf ("Novembron"); break; case 12: printf ("Dezembron"); break; default: printf (“Mes invalidon"); }
  • Exercício 11) Dados dois números A e B, identifica o maior número.#include <stdio.h>#include <stdlib.h>main(){ int A, B, maior; printf ("Digite o valor de A: "); scanf ("%d", &A); printf ("Digite o valor de B: "); scanf ("%d", &B); if (A>B) maior=A; else maior=B; printf ("O maior valor e: %dn", maior); system("pause");}
  • Exercício 22) Escreva um algoritmo para determinar se uma pessoa é maior ou menor de idade.#include <stdio.h>#include <stdlib.h>main (){int idade;printf ("Digite a idade da pessoa: ");scanf ("%d", &idade);if (idade>=18) printf ("Pessoa eh maior de idade.n");else printf ("Pessoa eh menor de idade.n");system("pause");}
  • Exercício 3Ou utilizando boolean:#include <stdio.h>#include <stdlib.h>main (){int idade;bool status;printf ("Digite a idade da pessoa: ");scanf ("%d", &idade);if (idade>=18) status=true;else status=false;if (status) printf ("Pessoa eh maior de idade.n");else printf ("Pessoa eh menor de idade.n");printf(“%b”,status);system("pause");}
  • Exercícios4) Faça um algoritmo que leia a quantidade comprada de um produto e o preço unitário deste produto.- Se o preço total a ser pago for inferior a R$ 100, então forneça um desconto de 5%.- Se o preço total a ser pago ficar entre 100 e 1000, então forneça um desconto de 5% e armazene um bônus de 5% em cima do valor total.- Se o preço total a ser pago for superior a 1000, então forneça um desconto de 10%, armazene um bônus de 5% em cima do valor total e escreva na tela que o cliente será cadastrado como ‘Cliente Vip’.
  • #include <stdio.h>#include <stdlib.h>main(){ int qtdade; float preco, valorTotal, descontado, bonus; printf ("nDigite a qtdade: "); scanf ("%d", &qtdade); printf ("nDigite o preco unitario: "); scanf ("%f", &preco); valorTotal=qtdade*preco; if (valorTotal<100) descontado=valorTotal*0.95; else if (valorTotal>=100 && valorTotal<=1000) { descontado=valorTotal*0.95; bonus=valorTotal*0.05; } else if (valorTotal>1000)//poderia ser soh: else { descontado=valorTotal*0.90; bonus=valorTotal*0.05; printf ("n Cliente vip!n"); } printf ("n Valor Total eh %.2fn", valorTotal); printf ("n Valor com desconto eh %.2fn", descontado); printf ("n Bonus eh %.2fn", bonus); system("pause");}
  • Laço While (Enquanto) O laço while é usado quando queremos que um bloco de instruções seja executado ENQUANTO uma condição for verdadeira (true). ex.: int valor = 1; while(valor <= 10) { printf("%d ", valor); valor++; }
  • Laço While Lembre-se de que a condição testada em um laço while deve resultar em um valor boolean (true ou false). O trecho de código seguinte deixa isso mais claro:
  • #include <stdio.h>#include <stdlib.h>main(){int continuar = 1; // 1 é true em Cint valor = 1;while(continuar) // estou dizendo enquanto "continua" for verdadeiro{ printf("%d ", valor); valor++; if(valor > 10) continuar = 0; // 0 é false em C}printf("n");system("PAUSE");}
  • Passo a passo....#include <stdio.h>#include <stdlib.h>main(){ int valor = 1; while(valor <= 10) { printf("%d ", valor); valor++; } system("PAUSE"); }
  • Laço While Este trecho de código exibe os números de 1 à 10 na página. Veja agora o mesmo trecho de código, desta vez contando de 10 à 1:int valor = 10;while(valor >= 1){printf("%d ", valor); valor--; // decrementando }
  • Laço While#include <stdio.h>#include <stdlib.h>main(){ int valor = 10; while(valor >= 1) { printf("%d ", valor); valor--; // decrementando _sleep(1000); // função nova “_sleep”, faz a espera de tempo } system("PAUSE"); }
  • Usando o laço for em C O laço for é usado quando queremos executar um bloco de instruções um determinado número de vezes. Este laço é composto de três partes:for(inicialização;teste;incremento/decremento) { bloco de instruções }
  • Usando o laço for em C•a parte inicialização nós definimos o valor inicial davariável de controle. Na parte teste nós usamos ovalor da variável de controle para testar acontinuidade ou interrupção do laço.•inalmente, na parte incremento/decremento nósalteramos o valor da variável de controle para cimaou para baixo. Veja um exemplo:
  • Laço Formain(){ int i; for(i = 1; i <= 10; i++) { printf("%d ", i); } printf("nn"); system("PAUSE"); }
  • Laço For : Mostrar os númerospares de 0 a 20.int main({ int i; for(i = 0; i <= 20; i += 2) { printf("%d ", i); } printf("nn"); system("PAUSE"); } // Observe que "i += 2" é o mesmo que "i = i + 2".
  • Laço Forom exceção da parte de testes, podemosinserir múltiplas expressões nas demaispartes de um laço for. Veja:
  • #include <stdio.h>#include <stdlib.h>main(){ int i, x; for(i = 0, x = 2; i <= 10; printf("%d ", i * x), i++);// agora com expressões matemáticas ☺ printf("nn"); system("PAUSE");}
  • Laço Formain(){int a;for ( a = 0; a <= 10; a = a + 1 ){ int b; printf("nDigite um valor para b: "); scanf("%d", &b); printf("na = %d, b = %d e sua soma = %d.", a, b, a + b);}printf("nA variavel a ainda existe e vale %d.", a);system("PAUSE");}
  • Loop Infinito erro clássico de programação
  • Loop infinito#include <stdio.h>#include <stdlib.h>main(){ int valor = 1; while(valor >= 1) { printf("%d ", valor); valor ++ ; } system("PAUSE"); }
  • Loop infinito (Caso maiscomum, falta de atenção)#include <stdio.h>#include <stdlib.h>main(){ int valor = 1; while(valor != 10) // Aqui mora o perigo { printf("%d ", valor); valor = valor + 2 ; } system("PAUSE"); } // o valor vai pular o "10" e continuar compilando...
  • Lendo com cin e o operador deextração >>O objeto cin (“C in”) manipula toda entrada do teclado por meio do operador de extração >> que conecta a entrada de dados à variável que a conterá.
  • EXERCÍCIOSFaça um programa que pega um númerodigitado e imprime na tela esse número deasteriscos.Ex: o usuário digita 7 e o programaimprime *******
  • #include <stdio.h>#include <stdlib.h>main(){int valor,cont;printf("DIGITE UM NUMERO: ");scanf("%d",&valor);cont=0;while(cont<= valor){ printf("*"); cont = cont+1;}printf("n");system("PAUSE");}
  • EXERCÍCIOS2) Escreva um programa que apresente a série de Fibonacci até o décimo quinto termo. A série de Fibonacci é formada pela seqüência: 1, 1, 2, 3, 5, 8, 13, 21, 34, ... .
  • #include <stdio.h>#include <stdlib.h>int num, f1, f2, f3, cont;main(){ printf("Digite um numero:n "); scanf("%i", &num);f1=0;f2=1; // inicia com esses valore para começar a sequencia..num=num-1; // para não fazer mais voltas que o pedido. // uma sequencia a mais ele vai fazer de qualquer jeito //devido aos valores iniciais "0" e "1"for(cont=0;cont<=num;cont++){ f3=f2+f1; printf("%i - ",f3); f1=f2;f2=f3;}system("PAUSE");}
  • EXERCÍCIOS Em uma eleição presidencial existem 4 candidatos. Os votos são informados por código. Os dados utilizados para a contagem obedecem à seguinte codificação: • 1, 2, 3, 4 = voto para os respectivos candidatos • 5 = nulo • 6 = voto em branco Elabore um programa em C que calcule e escreva: • O total de votos para cada candidato e seu percentual sobre o total • O total de votos nulos e seu percentual sobre o total • O total de votos brancos e seu percentual sobre o total Como finalizador do conjunto de votos, tem-se o valor 0.
  • #include<stdlib.h>#include<stdio.h>int voto,cand1,cand2,cand3,cand4,ttal;main(){voto = 13;// ou qualquer numero diferente de “0” while (voto!= 0) { printf("1-Candidato LulaMolusco;n"); printf("2-Candidato MotoSerra;n"); printf("3-Candidato DilmaVez;n"); printf("4-Candidato Siqueirido;n"); printf("DIGITE O NUMERO DO SEU CANDIDATO: "); scanf("%d",&voto); if (voto == 1) cand1 = cand1+1; if (voto == 2) cand2 = cand2+1; if (voto == 3) cand3 = cand3+1; if (voto == 4) cand4 = cand4+1; system("cls"); // limpar a tela } // falta fazer os calculos printf("n1-Candidato LulaMolusco; %d",cand1); printf("n2-Candidato MotoSerra;%d",cand2); printf("n3-Candidato DilmaVez;%d",cand3); printf("n4-Candidato Siqueirido;%d",cand4); system("PAUSE"); }
  • #include<stdio.h>int voto,cand1,cand2,cand3,cand4,ttal;float aux;main(){voto = 13;// ou qualquer numero diferente de “0” while (voto!= 0) { printf("1-Candidato LulaMolusco;n"); printf("2-Candidato MotoSerra;n"); printf("3-Candidato DilmaVez;n"); printf("4-Candidato Siqueirido;n"); printf("DIGITE O NUMERO DO SEU CANDIDATO: "); scanf("%d",&voto); if (voto <= 4) { if (voto == 1) cand1 = cand1+1; if (voto == 2) cand2 = cand2+1; if (voto == 3) cand3 = cand3+1; if (voto == 4) cand4 = cand4+1; system("cls"); // limpar a tela ttal = ttal+1; } else { printf("nVOTO INVALIDO n"); system("PAUSE"); system("cls"); } } printf("n1 O Total de votos foi: %d",ttal); printf("n1-Candidato LulaMolusco; %d, %.1f%%%dos votos",cand1, aux =(cand1*100/ttal) ); printf("n2-Candidato MotoSerra;%d, %.1f%%%dos votos",cand2, aux = (cand2*100/ttal)); printf("n3-Candidato DilmaVez;%d, %.1f%%%dos votos",cand3, aux = (cand3*100/ttal)); printf("n4-Candidato Siqueirido;%d, %.1f%%%dos vostos",cand4, aux = (cand4*100/ttal)); printf("n"); system("PAUSE"); }
  • EXERCÍCIO:PROGRAMA DESPENCOL 1- PARAFUSO R$ 05,00 A CAIXA 2- TROLHA R$ 15,65 A UNIDADE 3- PORCAS R$ 06,50 A CAIXA 4- PREGOS R$ 04,30 A CAIXA 5- MARTELO R$ 10,00 A UNIDADE 6- CERROTE R$ 30,00 A UNIDADE 7- CIMENTO R$ 99,99 O SACO 8- TIJOLO R$ 300,00 O MILHEIROVALOR “0” PRA ENCERRARO PROGRAMA DEVE MOSTRAR A QUANTIDADE DEITENS VENDIDOS E O VALOR TOTAL DE CADA ITEM EO VALOR TOTAL DA VENDA.
  • Múltiplas entradas com cin#include<iostream.h>main() { printf("nDigite as notas das 4 provas: "); float p1,p2,p3,p4; cin >>p1>>p2>>p3>>p4; float media=(p1+p2+p3+p4)/4; printf("nMedia: %.2f",media); system("PAUSE");}
  • Tabela ASCII
  • Código pra gerar a tabela ASCII#include <stdio.h> #include <stdlib.h>int main() { char c = 32; do printf("[%d] %cn", c, c); while (++c <= 126); system("Pause");}
  • Conversões de tipo e o operadorde moldeSuponhamos que desejemos imprimir o valor numérico de um caractere da tabela ASCII.Para isso, usaremos um novo operador chamado operador de molde, que consiste em escrever o nome do tipo desejado e em seguida o valor ou a expressão a ser avaliada entre parênteses.Char ch = ‘A’;Cout << int(ch); //Imprime 65
  • As funções getche() e getch()#include <stdlib.h>#include <stdio.h>#include <iostream.h>#include <conio.h>main(){ char ch; printf("nPressione uma tecla "); ch = getche(); printf("nA tecla sucessora ASCII e: %d", char(ch)); printf("n");system("PAUSE");}
  • As funções getche() e getch()A função getche() retorna o caractere lido no teclado.O valor retornado de uma função pode ser chamado de valor da função ou resultado da função.A expressão ch=getche();atribui o valor da função getche à variável ch.
  • As funções getche() e getch()A função getch() é similar à função getche(), exceto pelo fato de que o caractere digitado não é impresso no vídeo.As duas necessitam da biblioteca “conio.h”.
  • Operadores de incremento e dedecrementoA instrução x=x+1;é equivalente a ++x;que é equivalente a x++;
  • Operadores de incremento e dedecremento n=5; x=++n; printf(“nN= “<<n<<“ X= “<<x);A saída será N=6 X=6
  • Operadores de incremento e de decremento n=5; x=n++; cout<<“nN= “<<n<<“ X= “<<x;A saída será N=6 X=5
  • Operadores de incremento e de decremento x=x-1;é equivalente a --x;que é equivalente a x--;
  • Operadores aritméticos de atribuiçãoi+=2; equivale a i=i+2;X*=y+1; equivale a x=x*(y+1)t/=2.5; equivale a t=t/2.5;P%=5; equivale a p=p%5;D-=3; equivale a d=d-3;
  • Operadores relacionais> maior>= maior ou igual< menor<= menor ou igual== igual!= diferente
  • Programa exemplo#include<iostream.h>main(){ int verdadeiro, falso; verdadeiro = (15<20); falso = (15==20); cout<<“nVerdadeiro “<<verdadeiro; cout<<“nFalso “<<falso;}
  • Operadores lógicos: && || !C++ oferece três operadores lógicos. São eles:&& lógico e|| lógico ou! Lógico não
  • O operador condicional ternário: ?:Sua sintaxe geral possui a seguinte construção: exp1 ? exp2 : exp3A exp1 é avaliada primeiro. Se seu valor for diferente de zero (verdadeira) a exp2 é avaliada e seu resultado será o valor da expressão condicional com um todo.Se exp1 for zero, a exp3 é avaliada e será o valor da expressão condicional com um todo.
  • O operador condicional ternário: ?:Na expressão: max = (a>b) ? a : bA variável que contém o maior valor numérico entre a e b será atribuída a max.
  • Comandos de decisãoOs comandos de decisão permitem determinar qual é a ação a ser tomada com base no resultado de uma expressão condicional.
  • O comando ifA instrução if consiste na palavra-chave if seguida de uma expressão de teste entre parênteses.Se a expressão de teste for verdadeira, a instrução é executada; do contrário, nada é feito.
  • O comando ifif (expressão de teste){Instrução;Instrução;}
  • O comando if-elseO comando if-else é uma expansão de um simples comando if.O comando if permite que executemos algo somente se a sua expressão de teste for verdadeira, caso contrário nada é executado.
  • O comando if-elseSuponhamos que você queira executar alguma coisa se a expressão de teste for verdadeira e outra coisa se a expressão de teste for falsa.Neste caso, você deve usar o comando if-else.
  • O comando if-elseif (expressão de teste){instrução;instrução;}else{instrução;instrução;}
  • O comando if-elseif (expressão de teste 1){instrução;instrução;}else if (expressão de teste 2){instrução;instrução;}else{instrução;instrução;}
  • LaçosO laço for Geralmente usado quando queremos repetir algo um número fixo de vezes. Isto significa que utilizamos um laço for quando sabemos de antemão o número de vezes a repetir.
  • Laços#include<iostream.h>#include<conio.h>main(){ int i; for(i=1;i<=10;i++) { cout<<i; // mostra o valor getch(); // pega a tecla _sleep(1000); // a espera} system(“PAUSE”); }
  • Laços#include<iostream.h>#include<conio.h>main(){ int i; for(i=10;i<=1;i--) { cout<<i; // mostra o valor getch(); // pega a tecla _sleep(1000); // a espera} system(“PAUSE”); }
  • EXERCÍCOFaça um programa que calcule o valor fatorial de um número inteiro.
  • EXERCÍCO2) Escreva um programa que apresente a série de Fibonacci até o décimo quinto termo. A série de Fibonacci é formada pela seqüência: 1, 1, 2, 3, 5, 8, 13, 21, 34, ... .
  • O laço whileA segunda estrutura de laço em C++ é o laço while.À primeira vista, o laço while parece simples se comparado ao laço for; utiliza os mesmos elementos, mas eles são distribuídos de maneira diferente no programa.
  • O laço whileexpressão de inicialização;while (expressão de teste){..expressão de incremento (passo);.}
  • O laço do-whileA terceira e última estrutura de laço em C++ é o laço do-while.Este laço é bastante similar ao laço while e é utilizado em situações em que é necessário executar o corpo do laço uma primeira vez e depois avaliar a expressão de teste e criar um ciclo repetido.
  • O laço do-whiledo{instrução;instrução;} while (teste);
  • MATRIZESEstruturas de Dados Homogêneas Multidimensionais – Matrizes
  • Matrizes em Linguagem “C”• Matrizes são Estruturas de Dados Homegêneas Multidimensionais• Necessitam de dois (ou mais) índices de acesso.• Declaração: tipo nomedamatriz[DimMax_x][DimMax_y];Onde: – tipo:um dos tipos primitivos de dados em C (char, int, float, double) – nomedamatriz: segue as mesmas regras das variáveis básicas – DimMax_x, DimMax_y: define o tamanho da área de armazenamento - pode ser uma expressão constante inteira
  • Matrizes em Linguagem “C”#include <stdio.h>#include <stdlib.h>void main(){float matriz [2][2];float media, quant;matriz[0][0] = 9.0;matriz[0][1] = 8.0;matriz[1][0] = 7.0;matriz[1][1] = 7.0;quant = matriz[0][0] + matriz[0][1] + matriz[1][0] + matriz[1][1];media = quant / 4.0;printf (“ A média dos 4 números é: %f.”, media);system (“PAUSE”);}
  • Matrizes em Linguagem “C”Exemplos:int main(){ float parc_aluno[2]; float notas_alunos[5][2]; char nome[40]; char nomes_turma[5][40];return 0;}(Importante: Indexação no estilo [Linha][Coluna])
  • Matrizes em Linguagem “C”#include <stdio.h>#include <stdlib.h>void main (){ float matriz [2][2]; float media, quant; printf ( “Digite o 1o número:” ); scanf ( “%f”, &matriz [0][0] ); printf ( “Digite o 2o número:” ); scanf ( “%f”, &matriz [0][1] ); printf ( “Digite o 3o número:” ); scanf ( “%f”, &matriz [1][0] ); printf ( “Digite o 4o número:” ); scanf ( “%f”, &matriz[1][1] ); quant = matriz[0][0] + matriz[0][1] + matriz[1][0] + matriz[1][1]; media = quant / 4.0; printf(“ A média dos 4 números é: %f.”, media); system (“pause”);}
  • Matrizes em Linguagem “C”#include <stdio.h>#include <stdlib.h>void main (){ float matriz [2][4]; float media[2], soma; int cont1, cont2;for ( cont1 = 0; cont1 < 2; cont1 = cont1 + 1 ){ soma = 0.0f; for ( cont2 = 0; cont2 < 4; cont2 = cont2 + 1 ) { printf ( “ Digite a nota posição %i, %i da matriz: ”, cont1, cont2 ); scanf ( “%f”, &matriz[cont1][cont2] ); soma = soma + matriz[cont1][cont2] ; } media[cont1] = quant / 4.0; printf ( “ A média dos números da linha %d da matriz é: %f.”, cont1, media[cont1]);}printf(“nE a média geral entre todos os números é: %2.2fn”, (media[0]+media[1])/2.0f);system (“pause”);}
  • Matrizes em Linguagem “C” Exercíciosa) Uma matriz M pode ser transposta em uma matriz N onde o número de linhas/colunas da primeira passa a ser o número de colunas/linhas da segunda. Faça um programa que: - Leia uma matriz M (o usuário deve fornecer a quantidade de linhas e a quantidade de colunas que não deverão exceder 50 linhas e 50 colunas). - Calcule a transposta N da matriz M. - Imprima a transposta calculada.b) Elabore um programa que multiplique duas Matrizes M e N (10x10) fornecidas pelo usuário. O programa deve: - Ler as matrizes M e N. - Calcular a multiplicação e armazenar na matriz Mult. - Imprimir o resultado.c) Elabore um programa que manipule os dados para uma sala de 40 alunos. O programa deve receber como entrada (via leitura de teclado): - Os nomes dos alunos (máximo 50 caracteres). - As duas notas parciais. O programa deve calcular e imprimir, numa mesma linha, para cada aluno: - O nome, a média final e a freqüência. E também deve apresentar: - A maior média da turma, e a menor média da turma. - A quantidade de alunos aprovados, reprovados e em exame. - Uma listagem com o nome dos alunos que irão para a final.
  • #include<stdio.h>main(){int vet1[5]={1,2,3,4,5}; /*declaração e inicialização do vetor vet1*/int vet2[5]={6,1,2,2,5}; /*declaração e inicialização do vetor vet2*/int vetSoma[5];/*declaração do vetor vetSoma que vai guardar o resutado da soma dos dois vetores(vet1 e vet2).*/int x;printf("Este programa soma os dois vetores abaixo:n");printf("vet1={1,2,3,4,5}n");printf("vet2={6,1,2,2,5}n");printf("n");printf("vetor resultante da soma:n");for(x=0; x<5; x++){ vetSoma[x]=vet1[x]+vet2[x]; /*soma os valores*/ printf("vetSoma[%d]:%dn",x,vetSoma[x]); /*exibe na tela*/} /*fim do for*/} /*fim do programa*/
  • main(){int mat[2][2];float det;int x,y;printf("Este programa calcula a determinante de uma matriz quadrada de ordem 2");printf("nnEntre com os valores a da matriz:n");for(x=0;x<2;x++){for(y=0;y<2;y++){printf("mat[%d][%d]=",x+1,y+1);scanf("%d",&mat[x][y]);} /*fim do for*/} /*fim do for*/det=mat[0][0]*mat[1][1]-mat[1][0]*mat[0][1]; /*formula para calcular a determinante */printf("Determinante da matriz = %fn",det);} /*fim do programa*/
  • Linguagem C++Vetores, Matrizes e Funções
  • Revisão de Funções• O que são “Funções”? (ou subprogramas ou subrotinas) – São trechos de código fonte agrupados sob um nome, que podem ser chamados sempre que for necessário executar uma determinada ação programada neste trecho;• Como usar funções? – Atribui-se um nome à uma seqüência de comandos, e faz-se referência a este nome nos vários lugares do programa onde a seqüência em questão deveria ser repetida.
  • Revisão de Funções• Por que usar funções? – Evita escrita repetida de código (uma certa seqüência de comandos deve ser repetida em vários lugares de um programa). • Economiza o tempo gasto com o trabalho de copiar estas seqüências; • Evitar a necessidade de mudar em múltiplos lugares caso deseje alterar o seu funcionamento; – Dividir grandes tarefas de computação em tarefas menores: • Facilita o gerenciamento de grandes sistemas e • Aumenta a confiabilidade dos mesmos.• Resumo: Principais motivações para uso das funções! – Evitar repetição de código – Modularização
  • Revisão de Vetores• Vetores são Estruturas de Dados Homegêneas, isto é, capazes de armazenar uma quantidade pré-definida de valores do mesmo tipo• Necessitam de apenas um índice de acesso.• Declaração: tipo nomedovetor[DimMax];Onde: – tipo:um dos tipos primitivos de dados em C (char, int, float, double) – nomedovetor: segue as mesmas regras das variáveis básicas – DimMax: define o número máximo de elementos do vetor pode ser uma expressão constante inteira
  • Revisão de Vetores#include <stdio.h>#include <stdlib.h>#define NUM_ALUNOS 3int main( ){float notas [NUM_ALUNOS];float media_turma = 0.0;int i; for ( i = 0; i < NUM_ALUNOS; i++ ) { printf ("Digite a nota do %d o. aluno: ", i+1); scanf ("%f", &notas[i]); } for ( i = 0; i < NUM_ALUNOS; i++ ) { media_turma += notas[i]; } media_turma = media_turma / NUM_ALUNOS ; printf ("A media da turma eh %.2f n", media_turma); system ("Pause"); return 0;}
  • Vetores e Funções#include <stdio.h> int main( )#include <stdlib.h> { float notas [NUM_ALUNOS];#define NUM_ALUNOS 3 float media_turma; int i;float media ( float notas[], int n ){ for ( i = 0; i < NUM_ALUNOS; i++ ) int i = 0; { float m = 0.0; printf ("Digite a nota do %d o. aluno: ", i+1); scanf ("%f", &notas[i]); for ( i = 0; i < n; i++ ) } { media_turma = media ( notas, NUM_ALUNOS ); m = m + notas[i] ; } printf ("A media da turma eh %.2f n", media_turma); m = m / n; system ("Pause"); return m; return 0;} }
  • Vetores e Funções• E para calcular o número de #include <stdio.h> alunos com notas acima da #include <stdlib.h> média? #define NUM_ALUNOS 3• A função de cálculo de média float media ( float notas[], int n ) { pode ser a mesma já utilizada..... int i = 0; float m = 0.0;• E agora criamos a função de for ( i = 0; i < n; i++ ) cálculo da quantidade de alunos { m = m + notas[i] ; acima da média! } m = m / n; return m; }
  • Vetores e Funçõesint conta_alunos_acima_da_ media ( float notas[], int n, float media){ int i, conta = 0; for ( i = 0; i < n; i++ ) { if (notas[i] > media) { conta += 1; } } return conta;}
  • Vetores e Funçõesint main( ){float notas [NUM_ALUNOS];float media_turma;int i, melhores_alunos; for ( i = 0; i < NUM_ALUNOS; i++ ) { printf ("Digite a nota do %d o. aluno: ", i+1); scanf ("%f", &notas[i]); } media_turma = media ( notas, NUM_ALUNOS ); printf ("A media da turma eh %.2f n", media_turma); melhores_alunos=conta_alunos_acima_da_ media(notas, NUM_ALUNOS, media_turma); printf (“E o numero de alunos com nota acima da media foi: %d .n”, melhores_alunos); system ("Pause"); return 0;}
  • Vetores e Funções• Desafio 1: Alterar o programa anterior para: – Receber duas notas bimestrais de cada aluno; – Verificar se cada nota está entre 0.0 e 10.0; – Calcular a média de cada aluno (e armazenar o valor em um vetor); – Modificar o programa para apresentar os seguintes resultados: • média geral da turma; • número de alunos com média individual acima da média da turma.
  • Matrizes e Funções• Será que é possível “passar matrizes” por parâmetro?• Se sim, como?
  • Matrizes e Funções#include <stdio.h>#include <stdlib.h>#define NUM_ALUNOS 3int main(){float notas [NUM_ALUNOS][2], media_turma;int i; for ( i = 0; i < NUM_ALUNOS; i++ ) { printf ("Digite a 1a. nota do %d o. aluno n: ", i+1); scanf ("%f", &notas[i][0]); printf ("Digite a 2a. nota do %d o. aluno n: ", i+1); scanf ("%f", &notas[i][1]); } media_turma = media_geral ( notas, NUM_ALUNOS ); printf ( "A media da turma eh %.2f n", media_turma); system ("Pause"); return 0;}
  • Matrizes e Funçõesfloat media_geral ( float notas[][2], int n ){int i = 0;float m = 0.0;float notaaluno = 0.0;for ( i = 0; i < n; i++ ){ notaaluno = ( notas[i][0] + notas[i][1] )/2; m = m + notaaluno;}m = m / n;return m;}
  • Exercício Complementar:• Elabore um programa que manipule os dados para uma sala de 40 alunos.• O programa deve receber como entrada (via leitura de teclado): - Os nomes dos alunos (máximo 50 caracteres). - As duas notas parciais. – O programa deve calcular e imprimir, numa mesma linha, para cada aluno: - O nome e a média final. – E também deve apresentar: - A maior média da turma, e a menor média da turma. - A quantidade de alunos aprovados, reprovados e em exame. - Uma listagem com o nome dos alunos que irão para a final.
  • LINGUAGEM DE PROGRAMAÇÃO LINGUAGEM C Funções, Matrizes, Vetores e Strings 2010/1
  • #include <stdio.h> Funções em C : Exemplofloat area(float r); /* declaracao do prototipo da funcao */float potencia(float num, int pot); /* declaracao do prototipo da funcao */float area(float r) /* Funcao que retorna a area da esfera*/{ return (4*3.14159*potencia(r,2)); /* retorna a area em um tipo float */ }float potencia(float num, int pot) /*Funcao que Eleva a uma potencia positiva um dado */{float result = 0; /* declaracao de var. local */int i = 0; if(pot < 0) return 0; /* Indica que houve erro */ if(pot == 0) return 1; result = num; for(i = 1; i < pot; i++) result *= num; return result;}void main(void){char a;float raio = 0;printf("Digite o raio da esfera: ");scanf("%f", &raio);printf("A area da esfera e %.2f", area(raio));a=getchar();a=getchar();}
  • Funções recursivas em C• Em C, todos os argumentos de funções são passados “por valor”.• A função chamada recebe uma cópia dos valores dos argumentos e cria outras variáveis temporárias para armazenar estes valores.• A função chamada não pode alterar o valor de uma variável da função que a chamou; ela só pode alterar sua cópia temporária. C permite a criação de funções long int Fatorial(long int i) No exemplo, cadarecursivas, isto é, uma função { chamada recursiva daque possui dentro do seu corpo if(i > 1) função “fatorial” coloca return i*Fatorial(i-1); mais uma variável i dode instruções uma chamada a si else tipo long int na pilhaprópria. return 1; (stack). }
  • Funções recursivas em C: Exemplo#include <ansi_c.h>#include <stdio.h>long Fatorial(long n);long Fatorial(long N){if (N==0) return(1);else return(N*Fatorial(N-1));}void main(void){ int num; long result; printf("Digite o número para calcular o fatorial"); scanf("%d", &num); result=Fatorial(num); printf("Resultado:%ld",result); getchar(); getchar();}
  • Matrizes Unidimensionais: Vetores• Vetores: São tipos de dados estruturados mais conhecidos como arrays. Correspondem a conjuntos de elementos de um mesmo tipo representados por um único nome.• Vetor Cada elemento do array V[0] = 4 pode ser referenciado através de índices. V[1] = 7 Declaração V[4] = 3 Atribuição <Tipo><Nome_da_Var>[<tamanho>]; v[i] = 10; Ex: int v[30]; float n[10]; v[2] = 12 + x; v[i+2] = 14; Leitura Impressão printf("nnVetor: "); for (i=0; i<30; i++) for (i=0; i<30; i++) { printf("nnElemento %d: ",i+1); printf(" %d ",v[i]); scanf(“%d”,&v[i]); }
  • Declarando e inicializando vetoresInicializacão:float x[7]={-1.1,0.2,33.0,4.4,5.05,0.0,7.7};x[0] = -1.1 Inicializador: seqüência de valoresx[1] = 0.2 separados por virgula.x[2] = 33.0x[3] = 4.4 O número de bytes para armazenar umx[4] = 5.05 vetor é igual ao tamanho do tipo basex[5] = 0.0 (short = 2 bytes, double = 8 bytes, …)x[6] = 7.7 vezes o número de elementos. Para armazenar 100 elementos do tipo float são necessários 100 * 32 = 3200 bits ou 400 bytes.
  • Vetores: Exemplo#include <ansi_c.h>#include <stdio.h> Diretiva de pré-processamento usada#define N 5 para definir constantes simbólicas.void main(void){int i=0, soma=0;int a[N]; // aloca cinco espacos de memoriafor (i=0; i<N; i++) // armazena os valores nos espacos de memoriaa[i]=7+i*i;for (i=0; i<N; i++) // Le os valores nos espacos de memoriaprintf("a[%d]=%d ", i, a[i]);for (i=0; i<N; i++) soma+=a[i]; printf("nsoma=%dn", soma);getchar();}
  • Matrizes Unidimensionais: Strings• Em C, uma string é uma matriz unidimensional (vetor) de caracteres e terminada por um caracter nulo ‘0’.• Strings são usadas para armazenar e manipular textos, palavras ou sentenças. Ao lado temos as Funções suportadas em C para a manipulação de Strings. Elas usam o cabeçalho padrão string.h
  • Strings: exemplo#include <ansi_c.h>#include <stdio.h>#include <string.h>void main(void){ char s1[80]; char s2[80]; gets(s1); gets(s2); printf("Comprimentos: %d %d n", strlen(s1), strlen(s2)); if (!strcmp(s1,s2)) printf("As strings sao iguais n"); strcat(s1,s2); printf("%sn", s1); strcpy(s1 "Isso e um testen"); printf("s1"); if (strchar("alo",o)) printf("o esta em alon"); if (strstr("ola aqui","ola")) printf("ola encontrado"); getchar(); getchar();}
  • Registros• São conjuntos de dados logicamente relacionados, mas de tipos diferentes (inteiro, real, char, etc.). – Exemplo: Numa dada aplicação, podem-se ter os Matricula, Nota1 seguintes dados sobre os alunos de uma turma: Nota2 , Média• Cada conjunto de informações do aluno pode ser referenciado por um mesmo nome, por exemplo, ALUNO. Tais estruturas são conhecidas como registros, e aos elementos do registro dá-se o nome de campos. Declaração Exemplo: Atribuição: typedef struct { variaveis }nome_do_tipo; typedef struct { int mat; Nome-do-registro.campo = valor; float n1, n2, med; aluno.n1 = 5.0; TAlunos aluno; }TAlunos; scanf("%d", &aluno.mat);
  • Vetor de Registros• Podem-se ter conjunto de registros referenciáveis por um mesmo nome e individualizados por índices, através da utilização de um vetor de registros. Exemplo: Atribuição: typedef struct { int mat; nome-do-vetor[indice].campo = float n1, n2, med; valor; }TAlunos; aluno[3].n1 = 5.0; TAlunos aluno[30]; scanf("%d", &aluno[i].mat);
  • Vetor de Registros: Exemplo#include <ansi_c.h>#include <stdio.h>void main(void){ { typedef struct {int mat,serie,irmao,mens; }Tescola; Tescola escola[30];int i, qa; qa=2;for (i=0; i<qa; i++) { printf("nnDados do Aluno %dnn",i+1); printf("ntNumero de Matricula do Aluno: "); scanf("%d",&escola[i].mat); printf("ntSerie (1-4): "); scanf("%d",&escola[i].serie); printf("ntTem irmao na escola (1-sim, 2-nao)? "); scanf("%d",&escola[i].irmao); switch(escola[i].serie) {case 1: escola[i].mens = 110; break; case 2: escola[i].mens = 130; break; case 3: escola[i].mens = 160; break; case 4: escola[i].mens = 170; break; } if (escola[i].irmao == 1) escola[i].mens = escola[i].mens*0.8; printf("%d",escola[i].mens); }}getchar();getchar();
  • Matrizes Bidimensionais:• A linguagem C suporta matrizes multidimensionais; Para declarar uma matriz Exemplo: carrega a matriz num de bidimensional de inteiros 1 a 12 e escreve linha por linha. d com dimensões 10x20, #include <ansi_c.h> #include <stdio.h> temos: void main(void) { int t, i, num[3][4];Para acessar o elemento // Salve os numeros na matriz num1,2 da matriz d, usamos: for (t=0; t<3;++t) for (i=0; i<4;++i) num[t][i]=(t*4)+i+1; // Leia e escreva os numeros da matriz numO número de bytes for (t=0; t<3;++t) {printf("t");necessários para printf("n"); for (i=0; i<4;++i)armazenar uma matriz printf("%3dt", num[t][i]);} printf("n");bidimensional é dado por: getchar(); }
  • Matrizes de Strings• Para criar uma matriz de strings usa-se uma matriz bidimensional de caracteres.• O tamanho do índice esquerdo indica o número de strings e o tamanho do índice direito indica o comprimento máximo de cada string.• O código seguinte declara uma matriz de 30 strings onde cada uma tem um comprimento máximo de 79 caracteres:• Para acessar uma string, especifica-se no comando de gets() apenas o índice esquerdo:
  • Matrizes de Strings : Exemplo #include <ansi_c.h> O programa ao lado #include <stdio.h>usa a matriz de strings #define MAX 100 #define LEN 100como base para um char texto[MAX][LEN]; //Um editor de textos muito simplspequeno editor detextos. void main(void) { O programa recebe register int t, i, j; printf("Digite uma linha vazia para sair. n");linhas de texto até que for (t=0; t<MAX; t++) {uma linha em branco printf("%d", t); gets(texto[t]);seja inserida. Em if(!*texto[t]) break; //sai com linha em brancoseguida ele mostra cada } for (i=0; i<t; i++){linha com um caracter for (j=0; texto[i][j]; i++) putchar(texto[i][j]); putchar(n);por vez. } getchar(); }
  • Exercícios(1)1. Ler um conjunto de números e imprimi-los na ordem inversa da leitura. A quantidade de números também será lida e será no máximo 20.2. Ler o tamanho e os elementos de dois vetores e em seguida, caso os vetores tenham o mesmo tamanho, gere e imprima um vetor SOMA, onde seus elementos serão formados pela soma dos elementos de mesmos índices dos dois vetores lidos3. Ler um vetor de números e imprimir os números das posições PARES e em seguida os números das posições ÍMPARES.4. Ler dois vetores e caso tenham tamanhos iguais armazene seus elementos alternadamente em um terceiro vetor.5. Ler um vetor de números inteiros e imprimir as posições do maior e do menor elemento do vetor. Assuma que não existem elementos repetidos no vetor.6. Ler um conjunto de matrícula e notas dos alunos de uma turma e imprima a matricula dos alunos de tiveram nota acima da média das notas da turma.10. Ler dois vetores de números e gerar um terceiro vetor formado pela INTERSECÇÃO dos dois vetores lidos.11. Ler dois vetores de números e gerar um terceiro vetor formado pela DIFERENÇA dos dois vetores lidos.12. Ler dois vetores de números e gerar um terceiro vetor formado pela UNIÃO dos dois vetores lidos.13. Ler um vetor e gerar um segundo vetor com os elementos do vetor lido menos os elementos repetidos. Ex : VetorLido = 5 1 2 7 5 3 7 5 9 3; VetorGerado = 5 1 2 7 3 914. Ler um vetor de números e imprimir os números que se repetem nesse vetor.
  • Exercícios(2)15. Escreva uma função que indique quantas vezes aparece um determinado caractere em uma dada string.16. Escreva uma função que localize um caractere em uma string, substituindo-a por outro.17. Escreva uma função que insira um determinado caractere em uma determinada posição de uma string.18. Escreva uma função que retire todos os caracteres brancos, tabulações ou nova linha [enter] de uma dada string.19. Escreva um programa que converta todas os caracteres minúsculos de uma string para o correspondente caractere maiúsculo.20. Escreva um programa para criar uma tabela com os seus horários ocupados e compromissos na semana. Armazene o valor de cada compromisso através de uma tabela de strings. Inicialize a tabela com valor 0, e solicite ao usuário que forneça o seu horário. Por fim, apresente na tela o resultado obtido.
  • Exercícios (3)21. Use uma matriz bidimensional para armazenar as notas de cada aluno. O professor tem três turmas e um máximo de 30 alunos por turma. Use a sugestão:22. Crie um programa para calcular a matriz transposta de uma dada matriz. Aloque uma memória para uma matriz bidimensional com dimensão máxima de 10x10. Crie uma função para inicializar a matriz com zeros. Depois questione o usuário para sob a dimensão da matriz que ele deseja calcular a transposta, considerando a dimensão máxima permitida. Em seguida, adquira os valores dos termos que compõem a matriz, solicitando ao usuário que forneça estes dados. Por fim, calcule a transporta da matriz e escreva na tela o resultado final da matriz.
  • Exercícios (4)23. Fazer um programa para a companhia de energia elétrica da cidade. Para cada consumidor são fornecidos os seguintes dados: matrícula do consumidor, nome, tipo do consumidor (1-comercial, 2-industrial, 3- residencial), quantidade de KWh consumidos no mês. O programa irá calcular o valor da conta. O programa irá ler uma quantidade de consumidores e armazenará os dados dos consumidores em um vetor de registro. Imprimir um relatório contendo os dados do consumidor e o relat rio valor que o mesmo deve pagar e no final, imprimir o relatório estatístico: – Total a ser arrecadado pela empresa de energia – Media de consumo das industrias – Total de consumo das residências – Quantidade de estabelecimentos comerciais OBS: Valor de 1 KWh – Residência: R$ 5,00 – Comércio: R$ 3,00 – Indústria: R$ 2,00