Buscar

Estruturas Condicionais

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”);
…
*
*

Teste o Premium para desbloquear

Aproveite todos os benefícios por 3 dias sem pagar! 😉
Já tem cadastro?

Mais conteúdos dessa disciplina