UD III 2024 v4
UD III 2024 v4
UD III 2024 v4
Extrato da
TABELA ASCII
(American
Standard Code
for Information
Interchange)
VARIÁVEIS | Tipos básicos de dados
VARIÁVEIS | Tipos básicos de dados
#include <stdio.h>
int main(){
printf("Tamanhos em bytes:\n");
printf("char = %d\n", sizeof(char));
printf("unsigned char = %d\n", sizeof(unsigned char));
printf("signed char = %d\n", sizeof(signed char));
printf("int = %d\n", sizeof(int));
printf("unsigned int = %d\n", sizeof(unsigned int));
printf("signed int = %d\n", sizeof(signed int));
printf("short int = %d\n", sizeof(short int));
printf("unsigned short int = %d\n", sizeof(unsigned short int));
printf("signed short int = %d\n", sizeof(signed short int));
printf("long int = %d\n", sizeof(long int));
printf("unsigned long int = %d\n", sizeof(unsigned long int));
printf("signed long int = %d\n", sizeof(signed long int));
printf("float = %d\n", sizeof(float));
printf("double = %d\n", sizeof(double));
printf("long double = %d\n", sizeof(long double));
return 0;
}
VARIÁVEIS | Tipos básicos de dados
○ Signed
○ Unsigned
○ Short
○ Long
VARIÁVEIS | Tipos básicos de dados
○ Signed
mín = -1 * 2N-1 máx = 2N-1 -1
Ex: char (8 bits): mín = -1*28-1 = -128 & máx = 28-1 -1 = 127
○ Unsigned
mín = 0 máx = 2N -1
Ex: unsigned char (8 bits): mín = 0 & máx = 28 -1 = 255
VARIÁVEIS | Tipos básicos de dados
N = (-1)S x M x 2E-127
● Onde
○ S é o sinal (s = 0 ou 1), representado por um único bit.
○ M (mantissa) é uma série de bits representando um valor entre 0 e 1
(ou 1 e 2).
○ E é uma série de bits representando um número inteiro.
● Em variáveis float, são reservados 8 bits para E e 23 para M.
● Variáveis double reservam 11 bits para E e 52 para M.
VARIÁVEIS | Tipos básicos de dados
VARIÁVEIS | Utilizando variáveis
● É por isso que existem as variáveis, que nada mais são do que um
espaço reservado na memória, e que possuem um nome (identificador)
para facilitar a referência, onde seu conteúdo pode ser alterado durante
a execução do programa.
● As variáveis podem ser de diversos tipos (int, char, float, double, etc).
VARIÁVEIS | Utilizando variáveis
DECLARAÇÃO DE VARIÁVEIS
● Para serem usadas, as variáveis precisam ser declaradas de modo que
o compilador possa reservar espaço na memória para o valor a ser
armazenado. A forma geral de uma declaração é:
tipo lista_de_variaveis;
● Exemplos:
○ int i;
○ unsigned int a, b, c;
○ unsigned short int dia, mes, ano;
○ double salario;
PRÁTICA
#include <stdio.h>
int main ( ) {
float raio;
double area, comprimento;
area = (raio*raio)*PI;
comprimento = raio*2*PI;
// Outra solução
#include <stdio.h>
#include <math.h>
int main(){
//Outra forma de se declarar uma constante
//O seu valor NÃO poderá ser alterado no decorrer do programa
const double pi = 4 * atan(1);
int raio =0;
printf("Entre com o raio do circulo :");
scanf("%f",&raio);
printf("Perimetro do circulo = %f\n", 2*pi*raio);
printf("Area do circulo = %f\n", pi*raio*raio);
return 0;
}
VARIÁVEIS | Imprimindo variáveis com printf()
Exemplo:
#include <stdio.h>
int main(){
float salario = 5123.4567;
printf("%s = R$ %.2f", "Salario", salario);
// Imprime: Salario = R$ 5123.46
return 0;
}
VARIÁVEIS | Lendo variáveis com scanf()
#include <stdio.h>
int main(){
float salario = 0.0;
printf("Digite o valor do salario: ");
scanf("%f", &salario);
printf("%s = R$ %.2f", "Salario", salario);
return 0;
}
VARIÁVEIS | printf() e scanf()
ESPECIFICADORES DE FORMATO COMUNS
%c char %f float
%0Xd Inteiro sinalizado com X espaços reservados para sua impressão, com zeros à
esquerda.
%X.Yf ou %X.Ylf Ponto flutuante com X espaços reservados para impressão e Y casas decimais
%% Imprime %
... ...
VARIÁVEIS | printf() e scanf()
PEGADINHA!!!
#include<stdio.h>
int main() {
printf("Digite um caracter: ");
char ch1;
scanf("%c",&ch1);
printf("O caracter digitado foi %c\n", ch1);
printf("Digite outro caracter: ");
char ch2;
scanf("%c",&ch2);
printf("O caracter digitado foi %c", ch2);
return 0;
}
VARIÁVEIS | printf() e scanf()
#include<stdio.h>
int main() {
printf("Digite um caracter: ");
char ch1;
scanf("%c",&ch1);
printf("O caracter digitado foi %c\n", ch1);
printf("Digite outro caracter: ");
char ch2; Colocar um espaço
scanf(" %c",&ch2); em branco antes do
%c!!!
printf("O caracter digitado foi %c", ch2);
return 0;
}
VARIÁVEIS | printf() e scanf()
#include<stdio.h>
int main() {
printf("Digite um caracter: ");
char ch1;
scanf("%c",&ch1);
printf("O caracter digitado foi %c\n", ch1);
printf("Digite outro caracter: ");
char ch2; getchar() limpa o
getchar(); caracter Enter do
buffer de entrada.
scanf("%c",&ch2);
printf("O caracter digitado foi %c", ch2);
return 0;
}
VARIÁVEIS | printf() e scanf()
O que acontece?
#include<stdio.h> #include<stdio.h>
int main() { int main() {
double x = 0.; int i = 'c';
printf("x = %d\n", x); printf("%d\n" , i);
printf("x = %c\n", x); return 0;
return 0; }
}
VARIÁVEIS | printf() e scanf()
O que acontece?
#include<stdio.h> #include<stdio.h>
int main() {
int main() { printf("Velocidade da Luz no Vacuo = %e m/s", 299792458.);
int i = 0x0A; return 0;
printf("%d" , i); }
return 0;
}
VARIÁVEIS | printf() e scanf()
O que acontece?
EXEMPLO
#include <stdio.h>
int i = 1; // definido num nível externo
int main ( ) {
printf(“%d\n”, i); // imprime 1
{
int i = 2, j = 3;
printf(“%d %d\n”, i, j); // imprime 2 e 3
{
int i = 0;
printf(“%d %d\n”, i, j); // imprime 0 e 3
}
printf(“%d\n”, i); // imprime 2
}
printf (“%d\n“, i); // imprime 1
return 0;
}
OPERADORES
OPERADORES | Lista de operadores
OPERADORES | Precedência de operadores
1+2-3 0 +-
24 - 3 * 5 9 * -
4-2*6/4+1 2 */-+
6 / 2 + 11 % 3 * 4 11 /%*+
OPERADORES | Precedência de operadores
Exemplo:
1 + (2 - 3) 0 -+
(24 - 3) * 5 105 -*
(4 - 2 * 6) / 4 + 1 -1 *-/+
● Exemplos:
i += 1; i = i + 1;
j -= val; j = j - val;
int main(){
int i, j, k;
double max, min;
i = j = k = 1;
max = min = 0;
max = i = 3.56;
return 0;
}
OPERADORES | Operadores Lógicos e Relacionais
A B !A A && B A || B
0 0 1 0 0
1 0 0 0 1
0 1 1 0 1
1 1 0 1 1
OPERADORES | Operadores Lógicos e Relacionais
#include <stdio.h>
int main(){
int A = 0;
float B = 0.1;
char C = 0;
int D = 123;
return 0;
}
OPERADORES | Operadores Lógicos e Relacionais
#include <stdio.h>
int main(){
int A = 102;
float B = 102.0;
char C = 'a';
int D = 50;
return 0;
}
OPERADORES | Operadores Lógicos e Relacionais
OPERADOR
== !=
&&
||
?:
OPERADORES | Operadores Bit a Bit
● ~ (NOT) : ~0 = 1 ● ^ (XOR) : 0 ^ 0 = 0
~1 = 0 0^1=1
1^0=1
● & (AND) : 0 & 0 = 0 1^1=0
0&1=0
1&0=0 ● << (Shift-left) :
1&1=1 0010 1100 << 2 = 1011 0000
#include <stdio.h>
int main(){
unsigned char A = 2; // A = 0010
unsigned char B = 7; // B = 0111
Obs: Caso a expressão seja apenas uma única variável, os parênteses podem
ser omitidos. No caso da entrada ser um tipo, os parênteses são obrigatórios.
● Por exemplo, suponha que o tipo float ocupa 4 bytes em certa máquina, então a
função sizeof(float) retorna o valor 4.
OPERADORES | Operador sizeof()
● Exemplo:
#include <stdio.h>
#define DIM 10
int main() {
int i=0;
float f=3.0;
char c='a';
int v[DIM]; //Vetor de inteiros – Veremos vetores mais adiante no curso.
printf("Tamanho em bytes de alguns tipos\n");
printf("Tamanho de int = %d bytes\n", sizeof (i));
printf("Tamanho do float = %d bytes\n", sizeof (f));
printf("Tamanho do double = %d bytes\n", sizeof (double));
printf("Tamanho do char = %d bytes\n", sizeof (c));
printf("Tamanho do vetor de %d inteiros = %d bytes\n", DIM, sizeof (v));
return 0;
}
OPERADORES | Operação com operandos de mesmo tipo
● Por outro lado, uma operação pode ser composta por operandos de
tipos diferentes.
○ Ex: Sejam as variáveis abaixo e a operação de multiplicação entre elas.
int a;
float x;
(a * x) → essa operação possui 2 tipos diferentes envolvidos
ATENÇÃO
int main(){
float x, y = 0.0;
x = 3*1/10;
printf("x = %f \n" , x);
y = 3.0*1/10;
printf("y = %f \n" , y);
return 0;
}
OPERADORES | Operação com operandos de tipos diferentes
int main(){
float x, y = 0.0;
return 0;
}
OPERADORES | Operação com operandos de tipos diferentes
#include <stdio.h>
int main(){
char ch = 'a';
int num = 3;
printf("O caracter ch = '%c' em ASCII é %d e tem tamanho de %d byte(s)\n", ch, ch, sizeof(ch));
printf("O numero num = %d tem tamanho de %d byte(s)\n", num, sizeof(num));
printf("ch + num = %d (tamanho = %d byte(s))\n\n", ch+num, sizeof(ch + num));
float fl = 10.0;
double db = 10.0;
return 0;
}
OPERADORES | Conversão de tipos
ATENÇÃO
#include<stdio.h> #include<stdio.h>
int main( ) int main( )
{ {
float res; float res;
int n1, n2, n3; int n1, n2, n3;
printf(“Digite tres numeros inteiros\n”); printf(“Digite tres numeros inteiros\n”);
scanf(“%d%d%d”, &n1, &n2, &n3); scanf(“%d%d%d”, &n1, &n2, &n3);
res = (float)(n1 + n2 + n3)/3; res = (n1 + n2 + n3)/3.0;
printf(“A media eh %.2f “, res); printf(“A media eh %.2f “, res);
return 0; return 0;
} }
VARIÁVEIS E OPERADORES
PRÁTICA
PRÁTICA