Esta é uma pré-visualização de arquivo. Entre para ver o arquivo original
* Estruturas Condicionais * Estruturas Condicionais Em L.A. A) Se Teste Então Início ... Fim_Se B) Se Teste Então Início ... Fim_Se Senão Início ... Fim_Senão c) Se Teste Então Início ... Fim_Se Senão Se Teste Então Início ... Fim_Se Senão Se Teste Então Início ... Fim_Se ... * Estruturas Condicionais Em C: A) if (Teste) { ... } B) if (Teste) { ... } else { ... } c) if (Teste) { ... } else If (Teste) { ... } else If ... ... * Estruturas Condicionais Exemplo Implemente um programa que receba 3 valores e verifique e informe qual o maior: #include <iomanip.h> main(){ int x,y,z; cout <<“Entre com três valores:”; cin >> x >> y >> z; If (x>=y && x>=z) { cout << “Maior:”<< x; } else If (z>=y) { cout << “Maior:” << z; } else { cout << “Maior:” << y; } } * Operadores Aritméticos Especiais * Utilizando Operadores Aritméticos em C++ Operadores de Incremento e Decremento Padrão: x = x + 1 x++ ou ++x x++ => Formato pós-fixado ++x => Formato pré-fixado x = x - 1 x-- ou --x x-- => Formato pós-fixado --x => Formato pré-fixado * Utilizando Operadores Aritméticos em C++ Embora pareçam, o uso das opções pré e pós fixada apresentam diferenças quando eles são usados em conjunto com outras instruções na mesma linha: Caso 1: int total = 0,count = 5; total = ++count + 6 // total recebe 12 Caso 2: int total = 0,count = 5; total = count++ + 6 // total recebe 11 * Utilizando Operadores Aritméticos em C++ Operadores aritméticos que abreviam atribuições também podem ser utilizados: x+=3 x = x + 3 X-=5 x = x – 5 x*=3 x = x * 3 x/=3 x = x / 3 x%=3 x = x % 3 * Estruturas de Repetição Def.: Permitem que determinados blocos de código sejam repetidos enquanto certas condições forem obedecidas Em C ocorrem em três formatos: while do...while for * Estruturas de Repetição while: Repete determinado bloco de código enquanto um teste for verdadeiro Sintaxe em VisualG: Enquanto <teste> faça ... FimEnquanto Sintaxe em C: while (teste) { ... } * while - Exemplo Implemente um algoritmo que liste os valores inteiros entre 1 e 1000. #include <iomanip.h> main() { int i=1; while(i<=1000) { cout << i << “ “; i++; } } * do...while Repete determinado bloco de código enquanto um teste for verdadeiro. Este teste, entretanto, é verificado no final do bloco de repetição, o que garante que a repetição ocorrerá sempre pelo menos uma vez Sintaxe em VisualG : repita ... Ate <teste> Sintaxe em C: do{ ... }while(teste); * do...while - Exemplo Implemente um algoritmo que liste os valores inteiros entre 1 e 1000. #include <iomanip.h> main() { int i=1; do{ cout << i << “ “; i++; } while(i<=1000); } * for Repete determinado bloco de código enquanto uma condição for verdadeira Sintaxe em VisualG: Para VC de VI Ate VF Faca ... FimPara Sintaxe em C: for(Área_Inicialização;Área_Teste;Área_Incremento) { ... } Área_Inicialização: Sempre executada uma únca vez e como primeira operação da execução da repetição “for” Área_Teste: É sempre executada imediatamente antes do início de cada repetição e, caso a sua execução resulte em um valor verdadeiro, a repetição ocorrerá novamente. Caso contrário, a repetição será finalizada Área_Incremento: É sempre executada imediatamente após o término de cada repetição e imediatamente antes da área de teste * for - Exemplo Implemente um algoritmo que liste os valores inteiros entre 1 e 1000. #include <iomanip.h> main() { int i; for(i=1;i<=1000;i++) { cout << i << “ “; } } * for – Outros Exemplos Nenhuma das áreas do “for” é obrigatória #include <iomanip.h> main() { int i=1; for(;i<=1000;) { cout << i << “ “; i++; } } * for – Outros Exemplos É possível ter mais de uma instrução em cada área do “for”, desde que separadas por vírgulas #include <iomanip.h> main() { int a,b; for(a=1,b=1;a+b<=100;a++,b++) { cout << a+b << “ “; } } * for – Outros Exemplos Cuidado com o uso da área de testes... Você pode gerar repetições infinitas (loops infinitos) #include <iomanip.h> main() { for(;;) { cout << “LOOP INFINITO“; } } * Contadores, Acumuladores e Entrada de um número Indefinido de Valores * Contadores Def.: São variáveis simples (em geral numéricas) que são utilizadas em lógica de programação com o intuito de “contar algo”. Exemplo de padrão de uso: Implemente um programa em C que receba 100 valores e conte todas as ocorrências de um número igual a 5 #include <iomanip.h> main() { int i, x, c=0; for(i=1;i<=100;i++) { cout << “Entre com um valor:” cin >> x; if(x == 5) { c++; } } cout << “Número de ocorrências do número 5: “ << c; } * Acumuladores Def.: São variáveis simples (em geral numéricas) que são utilizadas em lógica de programação com o intuito de “somar ou multiplicar algo”. Exemplo de padrão de uso de acumulador de soma: Implemente um programa em C que receba 100 valores e some todos eles #include <iomanip.h> main() { int i, x, s=0; for(i=1;i<=100;i++) { cout << “Entre com um valor:” cin >> x; s=s+x; } cout << “Soma de todos os valores: “<<s; } Sempre recebendo ela mesma somada com o valor a acumular * Acumuladores Exemplo de padrão de uso de acumulador de multiplicação: Implemente um programa em C que receba 10 valores e calcule o produto entre os que forem diferentes de zero #include <iomanip.h> main() { float i, x, p=1; for(i=1;i<=10;i++) { cout << “Entre com um valor:” cin >> x; if(x != 0) { p=p*x; } } cout << “ Multiplicação dos valores diferentes de zero: “<<p; } Sempre recebendo ela mesma multiplicada pelo valor a acumular * Problemas de Entrada de um Número Desconhecido de Valores É uma categoria de problemas muito comum onde precisamos implementar uma solução onde a quantidade de valores que o usuário deverá fornecer como entrada é desconhecida * Problemas de Entrada de um Número Desconhecido de Valores Implemente um programa em C que receba um número indefinido de valores e conte todas as ocorrências dos valores negativos. #include <iomanip.h> main() { int c=0,x; cout << “Entre com um valor (Digite -100 para finalizar):”; cin >> x; while(x!=-100) { if(x < 0) { c++; } cout<<“Entre com um valor (Digite -100 para finalizar):”; cin>>x; } cout<<“Número de valores negativos: “<< c; } * Cálculo de Percentuais São sempre relativos à quantidades Implemente um programa em C que receba um número indefinido de valores e calcule o percentual de valores maiores do que 20. #include <iomanip.h> main() { int c=0,ct=0,x; cout << “Entre com um valor (Digite -100 para finalizar):”; cin >> x; while(x!=-100) { if(x > 20) { c++; } ct++; cout<<“Entre com um valor (Digite -100 para finalizar):”; cin>>x; } cout<<“Percentual de valores maiores do que 20: “<< c * 100 / ct; } * Cálculo de Médias Aritméticas É a divisão de um acumulador por um contador Implemente um programa em C que receba um número indefinido de valores e calcule a média aritmética entre os valores que forem pares. #include <iomanip.h> main() { int c=0, x; float s=0; cout << “Entre com um valor (Digite -100 para finalizar):”; cin >> x; while(x!=-100) { if(x % 2 == 0) { s+=x; c++; } cout<<“Entre com um valor (Digite -100 para finalizar):”; cin>>x; } if(c>0) { cout<<“Média dos valores pares: “<< s/c; } else { cout << “Nada a calcular”; } } * Variáveis Compostas e Homogêneas Vetores Matrizes e Strings * Variáveis Compostas e Uniformes Vetores e Matrizes São variáveis capazes de armazenar mais de um valor ao mesmo tempo, guardando a restrição de que estes valores devem ser do mesmo tipo Sintaxe de declaração: tipo varivel[DIM1][DIM2]…[DIMn] Ex.: int v[10]; * Variáveis Compostas e Uniformes Vetores e Matrizes No exemplo dado, “v” é uma variável composta e homogênea capaz de armazenar 10 elementos, sendo todos eles do tipo int Graficamente poderíamos visualizar esta variável da forma que se segue: A variável “v” possui todos estes valores que podem ser acessados através do padrão definido a seguir: * Variáveis Compostas e Uniformes Vetores e Matrizes v[0] => 10 v[4] => 11 v[9] => 99 Os valores entre os colchetes são chamados de índices ou posições e indicam a posição do elemento que se deseja acessar de “v”. Em C, a primeira posição de um elemento de um vetor sempre é zero Variáveis Compostas e Homogêneas com uma dimensão (como a variável “v”) são comumente chamadas de VETORES * Exemplo #include <iostream.h> main() { float v[10], c=0; int i; for(i=0;i<10;i++){ cout << “Entre com um valor:”; cin >> v[i]; if(v[i]>100) c++; } cout <<”Quantidade de valores > 100:”<<c; } * Variáveis Compostas e Uniformes Vetores e Matrizes Vamos agora a dois exemplos de variáveis compostas e homogêneas de mais de uma dimensão: float m1[3][3]; int m2[3][3][2]; Representando graficamente, teríamos: 0 1 2 0 1 2 0 1 2 0 1 2 m1 m2 Pg. 0 Pg. 1 * Variáveis Compostas e Uniformes Vetores e Matrizes O acesso a cada um dos valores de “m1” e “m2”se dá pelos padrões abaixo: m1[0][0] => 2.1 m2[0][0][0] => 8 m1[2][1] => -2.3 m2[2][1][0] => 34 m1[1][2] => 51.2 m2[0][0][1] => 80 m1[2][2] => 10.4 m2[2][2][1] => 9 Neste exemplo foi convencionado que a primeira dimensão seria a coluna, a segunda seria a linha e a terceira seria a página, entretanto isto é a penas uma convenção. Para a máquina não existe representação gráfica, e sim quantidade de elementos. Sendo assim, quem define o que significa cada dimensão é o desenvolvedor Variáveis compostas e homogêneas de mais de uma dimensão são comumente chamadas de MATRIZES * Exemplo #include <iostream.h> main() { float m[4][4], s=0; int i,j; for(i=0;i<4;i++){ for(j=0;j<4;j++){ cout << “Entre com um valor:”; cin >> m[i][j]; s+=m[i][j]; } } cout <<”Soma de todos os valores é:”<<s; } * Variáveis Compostas e Uniformes Vetores e Matrizes Em C, vetores e matrizes podem ser inicializadas no momento de suas declarações. Por exemplo: int v[5] = {1,3,5,7,8}; int m[2][2] = { {2,2}, {3,4} }; Também é possível inicializar apenas parte dos elementos. Por exemplo: int v[5] = {5}; Inicializa apenas o primeiro elemento (índice = 0) com 5. Os demais elementos são inicializados com ZEROS. Para inicializarmos todos os elementos com ZEROS, podemos fazer: int v[100] = {0}; * Variáveis Compostas e Uniformes Strings Uma string é uma variável especial que hora se comporta como variável simples, quando recebe um texto como entrada, por exemplo, hora se comporta como variáves composta, quando acessamos e/ou manipulamos cada caractere do texto individualmente Em C uma string é um vetor de caracteres: char s[10]; * Variáveis Compostas e Uniformes Strings Toda string em C++ é finalizada com um caractere de escape que referencia o valor nulo: ‘\0’. Por exemplo, seja a string “s” com o texto a seguir: Quando se comporta como variável simples, analisamos a string pelo seu texto inteiro: “CASA” Observe que o mesmo é finalizado com o ‘\0' Quando se comporta como um vetor, analisamos a string caractere a caractere: s[0] => ‘C’ s[3] => ‘A’ s[4] => ‘\0’ * Variáveis Compostas e Uniformes Strings É importante observarmos que o caractere ‘\0’ ocupa uma posição válida da string. Sendo assim, se você precisa criar uma string que irá ocupar 100 bytes, lembre-se de reservar um a mais para o ‘\0’, o que daria 101 bytes Ex.: char s[101]; * Variáveis Compostas e Uniformes Strings É possível realizar a inicialização de strings no momento de sua declaração. Por exemplo: char x[10] = “Xyz”; Também é possível criarmos uma string sendo inicializada com uma dimensão do tamanho da string para ela inicializada. char z[] = “ABC”; Esta variável terá 4 bytes (considerando o byte para o ‘\0’) * Funções de Manipulação de Strings Existem em grande quantidade e encontram-se definidas na biblioteca string.h Para os nossos propósitos vamos analizar as listadas abaixo: puts gets strlen strcat strcpy strcmp * Funções de Manipulação de Strings puts: Escreve uma string na tela e provoca uma quebra de linha ao término da escrita Sintaxe: puts(string) Ex.: puts(“Entre com 10 valores:”); Provoca a saída do texto entre aspas na tela * Funções de Manipulação de Strings gets: Pára a execução de um programa e espera pela entrada de um texto qualquer a ser armazenado em uma string Sintaxe: gets(variável_string) Ex.: … char s[200]; puts(“Entre com um texto qualquer:”); gets(s); … * Funções de Manipulação de Strings strlen: Conta o número de caracteres de uma string Sintaxe: NumCaracteres = strlen(string) Ex.: … char s[200]; int i; puts(“Entre com um texto qualquer:”); gets(s); n=strlen(s); // n será igual ao número de caracteres de s … * Funções de Manipulação de Strings strcat: Junta ou concatena duas strings Sintaxe: strcat(string_dest, string_origem) Ex.: … char s1[30] = “abc”, s2[30]=“def”; strcat(s1,s2); // s1 passa a valer “abcdef” … * Funções de Manipulação de Strings strcpy: Copia o conteúdo de uma string sobre o conteúdo de outra string Sintaxe: strcpy(string_dest, string_origem) Ex.: … char s1[30] = “111”, s2[30]=“222”; strcpy(s1,s2); // o texto de s1 é sobreposto // e passa a ser “222” … * Funções de Manipulação de Strings strcmp: Compara o conteúdo de duas strings. Se as duas forem iguais, esta função retornará ZERO. Se elas forem diferentes, ela retornará um valor diferente de zero. Sintaxe: strcmp(string1, string2) Ex.: … char s1[200], s2[200]; puts(“Entre com um texto qualquer:”); gets(s1); puts(“Entre com outro texto qualquer:”); gets(s2); if(strcmp(s1,s2)==0) puts(“Textos iguais”); else puts(“Textos diferentes”); … * *