You are on page 1of 75

Logo

Aula 01

Tipos de Dados

Saída de Dados

Entrada de Dados

Programação
sequencial

2
Modelo de código para C/C++

• Um modelo de código para C/C++ é


semelhante ao seguinte:

#include <bits/stdc++.h>
using namespace std;
int main() {
// corpo do programa
return 0;
}

3
Modelo de código para C/C++
• No código anterior tem-se:

– #include <bits/stdc++.h>
• É a biblioteca que engloba todas as
demais bibliotecas do C/C++

– using namespace std;


• Declara que as classes e funções da
biblioteca padrão pode ser usado
diretamente no código.

4
Modelo de código para C/C++
• Continuação:

– int main()
• É o função principal do programa, ela é
obrigatório em todos os programas.

– // corpo do programa
• // e / * */ é comentário do programa.
• // é utilizado para comentar uma única
linha.
• /* e */ é utilizado para comentar mais de
uma linha.
5
Modelo de código para C/C++
• Continuação:
– return 0;
• É o retorno que seu programa faz
ao Sistema Operacional.

–{ }
• { e } são inicio e fim do bloco da
função principal.

6
Compilando o Programa
• O código pode ser compilado usando o
seguinte comando:

g++ -O2 -Wall test.cpp -o test

• Este comando produz um arquivo


executável chamado “test”, gerado do
código-fonte test.cpp. O compilador
otimiza o código (-O2) e mostra avisos
sobre possíveis erros (-Wall).

7
Tipo de Dados - Inteiro

• Tipo de dado representa como a


informação é armazenada na memória
do computador.

• Isto significa:
– quanto da memória é utilizada pela
informação;
– Se a informação é ou não numérica;
– Se numérica, qual é a sua menor e maior
representatividade numérica;

8
Tipo de Dados - Inteiro
• Define um valor que representa uma informação do tipo
numérica inteira (sem ponto decimal);
• C/C++ tem os tipos:
Tipo Faixa de Valores Tamanho
short int -32.768 a 32.767 16 bits
unsigned short int 0 a 65.535 16 bits
int -2.147.483.647 a 2.147.483.647 32 bits
unsigned int 0 a 4.294.967.295 32 bits
long long int -9.223.372.036.854.775.808 a 64 bits
9.223.372.036.854.775.807
unsigned long long int 0 a 18.446.744.073.709.551.615 64 bits

9
Tipo de Dados - Real
• Define um valor que representa uma informação do tipo
numérica não inteira (com ponto decimal);
• C/C++ tem os tipos:

Tipo Faixa de Valores Tamanho


positive float 1.17549e-38 a 3.40282e+38 32 bits
negative float -1.17549e-38 a -3.40282e+38 32 bits
positive double 2.22507e-308 a 1.79769e+308 64 bits
negative double -2.22507e-308 a 1.79769e+308 64 bits
positive long double 3.3621e-4932 a 1.18973e+4932 80 bits
negative long double -3.3621e-4932 a 1.18973e+4932 80 bits

10
Tipo de Dados - Caracter
• Define um valor que representa uma informação do tipo não
numérica constituída de apenas um único caractere.
• C/C++ tem os tipos:

Tipo Faixa de Valores Tamanho


char -127 a 127 8 bits
unsingned char 0 a 255 8 bits

11
Tipo de Dados - Cadeia
• Define um valor que representa uma informação do tipo não
numérica constituída de vários caracteres.
• C/C++ tem os tipos:
Tipo Faixa de Valores Tamanho
char nome_variavel[n] n * (-127 a 127) n * 8 bits
unsingned char n * (0 a 255) n * 8 bits
nome_variavel[n]
signed char nome_variavel[n] n * (-127 a 127) n * 8 bits

• C++ tem o tipo:


Tipo Faixa de Valores Tamanho
string n * (-127 a 127) n * 8 bits

12
Tipo de Dados - Booleano
• Define um valor que representa uma informação do tipo
verdadeiro ou falso.

• C++ tem os tipos:

Tipo Faixa de Valores Tamanho


bool true ou false ? bits

13
Variável
• Definição:
– É o nome do local físico da memória onde a informação é
armazenada no computador.
• Regras de nomes:
– Todo nome deve ser composto apenas por letras, números e
sublinhado ( ‘_’ );
– Deve começar com uma letra;
– Não pode ser igual a nenhuma palavra reservada, ou seja,
palavras que já possuam um significado próprio para a
linguagem como por exemplo, true, var ou if.

14
Programa com Variável

#include <bits/stdc++.h>
using namespace std;
int main() {
//tipo nome_variavel;
// corpo do programa
return 0;
}

15
Declaração da Variável
• Ao avaliar o problema, o programador deve definir quais tipos
de variáveis vai utilizar e declarar o nome da variável na
forma.
tipo_variavel nome_variavel_1, nome_variavel_2, …,
nome variavel_n;
• Pode separar as variáveis de mesmo tipo por virgula, ou
colocar uma abaixo da outra. Como exemplo:
Observação:
A declaração pode
int x, idade, y10; ocorrer em qualquer
float a, pi, graus; parte do programa,
char x, ch, st[100]; mas antes de utilizar
string st1; a variável.

16
Exemplo com Tipo Inteiro

#include <bits/stdc++.h>
using namespace std;
int main() {
int i, j, idade;
int x, y;
// corpo do programa
return 0;
}

Os demais exemplos
seguem essa mesmas
característica.
17
Atribuição
• Atribuir significa dar um valor significativo a uma variável.
• Em linguagem C/C++ será:
variavel = valor;
• Isto significa que um dado valor está sendo atribuído, ou seja
está sendo armazenado numa variável.

int x, y; double x, y; char x, y;


x = 10; x = 3.14159; x = ‘r’;
y = 10 * x; y = sin(x); y = 1 + x;

O tipo cadeia ou string só string x, y;


pode usado nessa atribuição x = “UNIFEI”;
se for declarado como y = x + “palavra”;
“string”. 18
Atribuição
• No tipo cadeia ou string, em C, a atribuição usando o sinal =
deve ser feita na declaração da variável

char x[10] = “Estudo Aqui”;

• Se não tem que usar a função strcpy(a, b). Essa função serve
para copiar o conteúdo de b em a.

char x[10], y[10];


strcpy(x, “Estudo Aqui”);
strcpy(y, x);

19
Exercício
• Declare as variáveis A, B, C, D, E, F, G do tipo inteiro:
– Atribua o valor 10 a variável A;
– Atribua o valor 100 a variável B;
– Some o valor da variável A com a B e atribua a C;
– Subtraia o valor da variável A do valor da variável B e atribua a
D;
– Multiplique o valor da variável A com a B e atribua a E;
– Divida o valor da variável A do valor da variável B e atribua a F;
– Atribua a variável G o valor da variável A;
– Atribua a variável A o valor da variável B;
– Atribua a variável B o valor da variável G;
Mostre as operações de atribuições e seus valores.
20
Exercício - solução
int A, B, C, D, E, F, G;
Atribuição Valor da Atribuição
C = A + B; C = 10 + 100 = 110
D = A – B; D = 10 – 100 = -90
E = A * B; E = 10 * 100 = 1000
F = A / B; F = 10 / 100 = 0 *
G = A; G = 10 **
A = B; A = 100 **
B = G; B = 10 **
* Cuidado com a divisão de número inteiro.
** O valor de A e B foi trocado, devido a variável
auxiliar G. 21
Saída de dados
• Definição:
– Saída de dados compreende a operação de externar uma
informação, ou seja, mostrar ao usuário o conteúdo de uma
ou mais variáveis num programa
• C ou C++
– Em C ou C++ utiliza-se a função printf (const char*
formato, variable);
• C++
– Em C++ utiliza-se, também, a função cout << string ou
variable;

22
Printf
• Definição:
– printf é a função no C a qual se usa para imprimir strings
na tela.
• Estrutura
– Sua em duas partes.
• Entre aspas (“”) ficam as strings e os formatos.
• Após a virgula deve se colocar as variáveis, tomando o
cuidado de colocar a mesma quantidade de variáveis e
formato.

23
Printf
• Exemplo:
– printf("Meu primeiro programa.");

• Nesse caso imprimi na tela: meu primeiro programa.

– Os formatos são precedidos do carácter %. A tabela a


seguir apresenta os formatos existentes.

24
Printf
Código Função do Formato
%d ou %i Um número inteiro decimal (int)
% lld Um número inteiro decimal (long long int)
%u Um decimal sem sinal (unsigned)
%f Um número real de simples precisão (float)
%lf Um número real de dupla precisão (double)
%e ou %E Um número em notação científica com o
"e" minúsculo ou "E" maiúsculo
%g ou %G Escolhe automaticamente o melhor entre
%f e %e ou %E
%c Um carácter (char)
%s Uma string
25
Printf
Código Função do Formato
%o Um número inteiro octal
%x ou %X Um número inteiro hexadecimal com as
letras minusculas ou maiúsculas
%p Um ponteiro (endereço de memória)
%% O carácter %

Mais informação, visite o site:


http://www.cplusplus.com/reference/cstdio/printf/
ou
https://www.geeksforgeeks.org/how-to-print-using-printf/
26
Printf
• Controle da Impressão:
– Todas as linhas de saída necessitam do controle da
impressão, conforme a tabela:
Constante Significado
\n Nova linha
\" Coloca aspas no texto de saída
\' Coloca apóstrofo no texto de saída
\0 Nulo (0 decimal)
\\ Barra invertida
\t Tabulação horizontal <tab>
\b Retorno do curso
27
Printf

Estes caracteres podem ser colocado:
– No inicio do comando de saída;
– No meio
– No fim ;


A colocação do carácter de controle de saída ( \n ) na
instrução de impressão indica que a informação será impressa
e em seguida o computador fica disponível para imprimir
nova informação na linha seguinte à que acabou de ser
impressa;

28
Printf
• Exemplo:
#include <bits/stdc++.h>
using namespace std;
int main() {
printf("Meu primeiro programa.\n");
printf("\"Meu primeiro programa.\"\n");
printf("\'Meu primeiro programa.\'\n");
printf("\\Meu primeiro programa.\\\n");
printf("\tMeu primeiro programa.\\\n");
return 0;
}

29
Cout
• Objeto cout:
– O objeto cout representa o stream de saída no C++. Este
stream é uma espécie de sequência de dados a serem
impressos na tela. Para realizar a impressão, usa-se o
“operador de inserção” que insere dados dentro do
stream.

– Isto não impossibilita de usar o printf no lugar do cout.

30
Cout
• << Operador de Inserção
– O operador << executa a saída (imprime na tela) com
streams em C++. O objeto cout é usado em conjunto com
ele para a impressão de dados.

#include <bits/stdc++.h>
using namespace std;
int main() {
cout << "Meu primeiro programa.";
return 0;
}

http://umich.edu/~eecs381/handouts/formatting.pdf
http://umich.edu/~eecs381/handouts/formatting.pdf

31
Cout
• Controle de Impressão:
– O cout utiliza dos mesmo controle da impressão do printf.
No entanto, ele também pode usar o comando ‘endl’ para
fazer o mesmo que o ‘\n’.

#include <bits/stdc++.h>
using namespace std;
int main() {
cout << "Meu primeiro programa." << endl;
cout << "Meu primeiro programa.\n" ;
cout << "Meu primeiro programa." << "\n";
return 0;
}
32
Como descobrir o tamanho do tipo?

#include <bits/stdc++.h>
using namespace std;
int main()
{
cout << "char de: " << CHAR_MIN << " a " << CHAR_MAX << endl;
cout << "short char de: " << SCHAR_MIN << " a " << SCHAR_MAX << endl;
cout << "unsigned char de: " << 0 << " a " << UCHAR_MAX << endl;
cout << endl;

https://www.geeksforgeeks.org/data-type-ranges-and-their-macros-in-c/

http://en.cppreference.com/w/c/types/limits
33
Como descobrir o tamanho do tipo?

cout << "short int de: " << SHRT_MIN << " a " << SHRT_MAX << endl;
cout << "unsigned short int de: " << 0 << " a " << USHRT_MAX << endl;
cout << "int de: " << INT_MIN << " a " << INT_MAX << endl;
cout << "unsigned int de: " << 0 << " a " << UINT_MAX << endl;
cout << "long long int de: " << LLONG_MIN << " a " << LLONG_MAX << endl;
cout << "unsigned long long int de: " << 0 << " to " << ULLONG_MAX << endl;

https://www.geeksforgeeks.org/data-type-ranges-and-their-macros-in-c/

http://en.cppreference.com/w/c/types/limits
34
Como descobrir o tamanho do tipo?

cout << endl;


cout << "float de: " << FLT_MIN << " a " << FLT_MAX << endl;
cout << "negative float de: " << -FLT_MIN << " a " << -FLT_MAX << endl;
cout << "double de: " << DBL_MIN << " a " << DBL_MAX << endl;
cout << "negative double de: " << -DBL_MIN << " a " << +DBL_MAX << endl;
cout << "long double de: " << LDBL_MIN << " a " << LDBL_MAX << endl;
cout << "negative long double de: " << -LDBL_MIN << " a " << +LDBL_MAX << endl;

return 0;

https://www.geeksforgeeks.org/data-type-ranges-and-their-macros-in-c/

http://en.cppreference.com/w/c/types/limits
35
Saída de valores inteiros
• A formatação de números inteiros. Podem ser:
#include <bits/stdc++.h>
using namespace std;
int main() {
printf("-----\n");
printf("%*d\n", 5, 123); -----
printf("%5d\n", 123); 123
printf("%05d\n", 123); 123
cout << setw(5) << 123 << endl; 00123
cout.width(5); 123
cout << 123 << "\n"; 123
cout << "-----\n"; -----
return 0;
} http://umich.edu/~eecs381/handouts/formatting.pdf 36
Saída de valores inteiros
• Idem ao anterior usando variável inteira ‘x’:
#include <bits/stdc++.h>
setw(x) formata a
using namespace std;
quantidade x de
int main() { dígitos do número.
int x = 5;
printf("-----\n");
printf("%*d\n", x, 123); -----
123
printf("%5d\n", 123);
123
cout << setw(x) << 123 << endl; 123
cout.width(x); 123
cout << 123 << "\n"; -----
cout << "-----\n";
return 0;
} 37
Saída de valores inteiros
• Justificando a direita:
#include <bits/stdc++.h>
using namespace std;
int main() {
int x = 5;
printf("-----\n"); -----
printf("%*d\n", x, 123); 123
printf("%5d\n", 123); 123
cout << setw(x) << 123 << endl; 123
123
cout.width(x);
-----
cout << 123 << "\n";
cout << "-----\n";
return 0;
} 38
Saída de valores reais
printf(“%n.df”, variavel);
• A formatação de números reais: printf(“%n.dlf”, variavel);
#include <bits/stdc++.h> n é a quantidade de dígitos
contando o ponto decimal ‘.’.
using namespace std; d é a quantidade de casas
int main() { decimais do número.

printf("----------\n");
printf("%f\n", 3.14159); ----------
3.141590
printf("%.0f\n", 3.14159);
3
printf("%.1f\n", 3.14159);
3.1
printf("%.2f\n", 3.14159); 3.14
printf("%.3f\n", 3.14159); 3.142
printf("%10.3f\n", 3.14159); 3.142
printf("----------\n"); ----------
return 0;
} 39
Saída de valores reais
• A formatação de números reais: fixed fixa a quantidade de casas decimais.
#include <bits/stdc++.h> setprecision() ou precision() determina a
quantidade de casas decimais.
using namespace std; setw() pode ser usado para determinar a
int main() { quantidade de dígitos.
printf("----------\n");
cout << 3.14159 << endl;
cout << fixed << setprecision(0); ----------
cout << 3.14159 << "\n"; 3.14159
cout << fixed << setprecision(1); 3
cout << 3.14159 << "\n"; 3.1
cout << setw(10) << setprecision(3); 3.142
cout << 3.14159 << "\n"; 3.1416
cout.precision(4);
----------
cout << 3.14159 << "\n";
cout << "----------\n";
return 0;
40
}
Saída de UM carácter
• A formatação de carácter:

#include <bits/stdc++.h>
using namespace std; a
int main() { a
printf("%c\n", 'a');
cout << 'a' << endl;
return 0;
}

41
Saída de string ou cadeia
• A formatação de string. printf(“%n.ds”, variavel);
n é a quantidade de caracteres
#include <bits/stdc++.h> da string.
using namespace std; d é a de caracteres que vai
aparecer da string.
int main() {
printf("----------\n");
printf("%s\n", "Programa"); ----------
Programa
printf("%10s\n", "Programa");
Programa
printf("%-10s\n", "Programa");
Programa
printf("%10.3s\n", "Programa"); Pro
printf("----------\n"); ----------
return 0;
}

42
Saída de string ou cadeia
• A formatação de string.
#include <bits/stdc++.h>
using namespace std;
int main() {
printf("----------\n");
cout << "Programa" << endl; ----------
Programa
cout << setw(10) << left;
Programa
cout << "Programa" << "\n";
Programa
cout << setw(10) << right; ----------
cout << "Programa" << "\n";
cout << "----------\n";
return 0;
}
http://faculty.cs.niu.edu/~mcmahon/CS241/c241man/node83.html
http://faculty.cs.niu.edu/~mcmahon/CS241/ /node83.html 43
Exercícios
• https://www.urionlinejudge.com.br/judge/en/login

– URI 2747 a 2756

44
Entrada de dados
• Definição:
• Entrada de dados compreende a operação realizada
pelo usuário do programa de fornecer o conteúdo de
uma informação ao computador e este armazenar esta
informação na memória (variável).
• C ou C++
– Em C ou C++ utiliza-se a função scanf (const char* formato,
variable);
• C++
– Em C++ utiliza-se, também, a função cin >> variable;

45
Scanf
• Definição:
– scanf é a função no C a qual se usa para ler valores do
teclado ou arquivo.
• Estrutura
– Sua em duas partes.
• Entre aspas (“”) ficam as strings e os formatos.
• Após a virgula deve se colocar as variáveis, tomando o
cuidado de colocar a mesma quantidade de variáveis e
formato.

46
Scanf
• Exemplo:
– scanf("A%d", &variavel);

• Nesse caso variavel é uma variável inteira.


• E a string A deve ser ignorada quando você digitar, por
exemplo, A10.
• É obrigatório para todos os tipos, exceto cadeia ou
string, a utilização do sinal & antes do nome da variável
de entrada;

– Os formatos são precedidos do carácter %, conforme


vimos na tabela de formatação no printf.
47
Entrada de valores inteiros
• A leitura de valores inteiros
#include <bits/stdc++.h>
using namespace std;
int main() {
int i;
long long int j; A[10]
scanf("A[%d]", i); X[10]
printf("X[%d]\n", i); 10
scanf("%d", i); 00010
10
printf("%05d\n", i);
10
scanf("%lld", j);
printf("%lld\n", j);
return 0;
} 48
Entrada de valores inteiros
• A leitura de valores inteiros
#include <bits/stdc++.h>
using namespace std;
int main() {
int i;
long long int j; 10
10
cin >> i;
10
cout << i << endl;
10
cin >> j;
cout << j << endl;
return 0;
}

49
Entrada de valores reais
• A leitura de números reais:
#include <bits/stdc++.h>
using namespace std;
int main() {
float x;
double y; 343.235
343.234985
scanf("%f", &x);
343.235
printf("%f\n", x);
343.235000
scanf("%lf", &y);
printf("%lf\n", y);
return 0;
}

50
Entrada de valores reais
• A leitura de números reais:
#include <bits/stdc++.h>
using namespace std;
int main() {
float x;
double y; 343.235
343.235
cin >> x;
343.235
cout << x << endl;
343.235
cin >> y;
cout << y << endl;
return 0;
}

51
Entrada de UM Carácter
• A leitura de carácter: CUIDADO
#include <bits/stdc++.h> Tem que colocar um espaço
using namespace std; em branco antes do %c.
int main() {
char ch;
scanf (" %c", &ch); a
a
printf("%c\n", ch);
a
cin >> ch;
a
cout << ch << endl;
return 0;
}

52
Entrada de cadeia ou string
• A leitura de cadeia ou string: CUIDADO
#include <bits/stdc++.h> Lê até encontrar um espaço
using namespace std; em branco ou o fim da linha.
int main() {
char st[40], st1[40];
scanf (" %s", st); Roberto
Roberto
printf("%s\n", st);
Roberto Affonso
scanf (" %[^\n]", st);
Roberto Affonso
printf("%s\n", st); Roberto-Affonso
scanf (" %[^-]-%[^\n]", st, st1); Roberto Affonso
printf("%s %s\n", st, st1);
return 0;
} O %[^\n] serve somente no
scanf(). 53
Entrada de cadeia ou string
• A leitura de cadeia ou string:
#include <bits/stdc++.h>
using namespace std;
int main() {
char st[40];
cin.getline(st, 40); Roberto Affonso
Roberto Affonso
cout << st << endl;
Roberto Affonso
cin >> st;
Roberto
cout << st << endl;
return 0;
} CUIDADO
Lê até encontrar um espaço
em branco ou o fim da linha.
54
Entrada de cadeia ou string
• Se usar uma variável de C++ declarada com o tipo string,
deve usar somente cin e cout.
#include <bits/stdc++.h>
using namespace std;
int main() {
string st; Roberto Affonso
getline(cin, st); Roberto Affonso
Roberto Affonso
cout << st << endl;
Roberto
cin >> st;
cout << st << endl;
return 0; CUIDADO
} Lê até encontrar um espaço
em branco ou o fim da linha.
55
Exercícios
• https://www.urionlinejudge.com.br/judge/en/login

– URI 1957, 1958, 2757 a 2766, menos o 2760 (está errado)

56
cin-cout vs scanf-printf
• Quando devemos usar cin-cout ou scanf-printf?
– Quando você tiver domínio dos dois e achar mais comodo.
– Se quiser ver uma boa comparação vá a página abaixo.

https://www.geeksforgeeks.org/cincout-vs-scanfprintf/

57
Estrutura sequenciais
• Uma estrutura sequencial realiza um conjunto predeterminado
de comandos de forma sequencial, na ordem em que foram
declarados no código fonte.

• Ela é delimitada na linguagem C/C++ pelos caracteres { e } e


contém basicamente comandos de atribuição, comandos de
entrada e comandos de saída.
#include <bits/stdc++.h>
using namespace std;
int main()
{
// corpo do programa
return 0;
} 58
Operações Matemáticas
• Operações matemáticas simples

– Soma +
– Subtração -
– Multiplicação *
– Divisão /
– Resto da divisão %

59
Funções Matemáticas
• Cosseno cos(x) • Exponencial exp(x)
• Seno sin(x) • Logaritmo log10(x)
• Tangente tan(x) • Logaritmo neperiano log(x)
• Arco cosseno acos(x) • Raiz quadrada sqrt(x)
• Arco seno asin(x) • Potenciação pow(x)
• Teto alto ceil(x)
• Arco tangente atan(x)
• Teto baixo floor(x)
Ou atan2(x)
• Valor absoluto inteiro abs(x)
• Valor absoluto real fabs(x)
• x está em radianos.
• O valor de pi pode ser obtido
com as constante: M_PI

http://www.cplusplus.com/reference/cmath/
60
URI 1001
• Fazer o problema 1001 do URI

https://www.urionlinejudge.com.br/judge/pt/problems/view/1001

61
URI 1001
• Resolvendo o problema 1001 do URI

#include <bits/stdc++.h>
using namespace std;
int main() {
int A, B, X;
scanf ("%d %d", &A, &B);
X = A + B;
printf("X = %d\n");
return 0;
}

62
URI 1002
• Fazer o problema 1002 do URI

https://www.urionlinejudge.com.br/judge/pt/problems/view/1002

63
URI 1002
• Resolvendo o problema 1002 do URI

#include <bits/stdc++.h>
using namespace std;
int main() {
double area, raio, PI = 3.14159;
scanf ("%lf", &raio);
area = PI * pow(raio, 2);
printf("A=%.4lf\n");
return 0;
}

64
Hierarquia dos Operadores
• A hierarquia dos operadores define a ordem em que uma
expressão é calculada;

• Segue-se a seguinte tabela de prioridade para os


operadores:
– Parênteses ( mais alta )
– Multiplicação e divisão
– Adição e subtração

• Operadores com mesma prioridade, a ordem de resolução


é da esquerda para a direita.

65
Operadores Inteiros
• Operação constituídas de variáveis e constantes inteiras

• Resultado é sempre inteiro

• Exemplo:

A expressão: A expressão:
5*2/3 2/3*5
Resulta no valor 3 Resulta no valor 0

A expressão:
3/2*5
Resulta no valor 5 66
Operadores Reais
• Operação constituídas de variáveis e constantes reais

• Resultado é sempre real

• Exemplo:

A expressão: A expressão:
5.0 * 2.0 / 3.0 2.0 / 3.0 * 5.0
Resulta no valor 3.333333 Resulta no valor 3.333333

A expressão:
3.0 / 2.0 * 5.0
Resulta no valor 4.500000 67
Operadores Misto
• Operação constituídas de variáveis e constantes inteiras e
reais

• Resultado é sempre real

• Exemplo:
A expressão: A expressão:
5.0 * 2 / 3.0 2 / 3 * 5.0
Resulta no valor 3.333333 Resulta no valor 0.000000

A expressão:
3.0 / 2.0 * 5
Resulta no valor 4.500000 68
Typecast
• Pode-se forçar temporariamente, a mudança do tipo de uma
variável, através do casting do tipo, que consiste em se
anteceder o nome da variável com o novo tipo, entre
parênteses.
A expressão:
2 / 3 * 5.0
Resulta no valor 0.000000

A expressão:
(float) 2 / 3 * 5.0
Resulta no valor 3.333333

69
Typecast
• Pode ser utilizado da seguinte forma:
#include <bits/stdc++.h> #include <bits/stdc++.h>
using namespace std; using namespace std;
int main() { int main() {
int A, B; int A, B;
float C; float C;
B = 2; A = 7;
C = 7.0; B = 2;
A = (int) (C / B); C = (float) (A / B);
printf("%d\n", A); printf("%d\n", C);
return 0; return 0;
} }
O resultado é: 3 O resultado é: 3.000000
70
Typecast
• Pode ser utilizado da seguinte forma:

#include <bits/stdc++.h>
using namespace std;
int main() {
int A;
A = 97;
printf("%d - %c\n", A, (char) A);
return 0;
}

O resultado é: 97 - a

71
Transformando
• Pode ser utilizado da seguinte forma:
#include <bits/stdc++.h>
using namespace std;
int main() {
int A, B;
char C;
A = 5;
B = 'A' - A;
C = 'A' + A;
printf("%d - %c\n", B, C);
return 0;
}
O resultado é: 60 - F
72
Tabela ASCII
• Só funciona devido a tabela ASCII

73
Operadores Especiais
• A linguagem C/C++ tem alguns operadores especiais:

Operação Operador Significado


Soma A ++; Soma 1 unidade a variável A
A += n; Soma n unidades a variável A
Subtração A --; Subtrai 1 unidade da variável A
A -- n; Subtrai n unidades da variável A
Multiplicação A *= n; Multiplica a variável A por n
Divisão A /= n; Dividi a variável A por n
Resto da A %= n; Tira o resto da divisão da variável
divisão A por n
n pode ser um número ou uma operação
74
Exercícios
• https://www.urionlinejudge.com.br/judge/en/login

– URI 1003 a 1021, 1921, 1930, 1959, 1963, 2159, 2164,


2234.

• Sugestão para o 1021, trate o número real como dois inteiros,


basta usar o scanf("%d.%d", &n, &m);.

75

You might also like