Sei sulla pagina 1di 73

Estruturas de dados — Aula 01a

Revisão da Sintaxe da Linguagem C

Raoni S. Ferreira

Centro de Ciências Exatas e Tecnológicas — UFAC

2018
Roteiro
1 Estrutura de um programa em C

2 Variáveis

3 Atribuição

4 Saída de dados: printf

5 Entrada de dados: scanf

6 Expressões e Operadores Aritméticos

7 Operadores Relacionais e Lógicos

8 Comandos condicionais

9 Exercício

Raoni S. Ferreira (Centro de Ciências Exatas e Tecnológicas


CCET130 — Aula
UFAC)
01a 2018 2 / 73
Estrutura de um Programa em C

Exemplo 1:
#i n c l u d e < s t d i o . h>

i n t main ( ) { // e s t e e o programa p r i n c i p a l
int a;
int b, c ;

a = 7+9;
b = a +10;
c = b−a ;
}

Raoni S. Ferreira (Centro de Ciências Exatas e Tecnológicas


CCET130 — Aula
UFAC)
01a 2018 3 / 73
Estrutura de um Programa em C

Exemplo 2:
#i n c l u d e < s t d i o . h>
/∗ c o m e n t a r i o s ∗/

#d e f i n e MIN 32
#d e f i n e MAX 50
#d e f i n e CONVERT 5/9

i n t main ( ) {
int fahren ;
float celsius ;

p r i n t f ( " f a h r e n h e i t c e l s i u s \n" ) ;
p r i n t f ( "−−−−−−−−−− −−−−−−−\n " ) ;
f o r ( f a h r e n = MIN ; f a h r e n <= MAX; f a h r e n ++) {
c e l s i u s = CONVERT ∗ ( f a h r e n − 3 2 ) ;
p r i n t f ( "\%5d \%10.2 f " , f a h r e n , c e l s i u s ) ;
}
}

Raoni S. Ferreira (Centro de Ciências Exatas e Tecnológicas


CCET130 — Aula
UFAC)
01a 2018 4 / 73
Variáveis

Definição
Variáveis são locais onde armazenamos valores. Toda variável é
caracterizada por um nome, que a identifica em um programa, e por um
tipo, que determina o que pode ser armazenado naquela variável.

Durante a execução do programa, um pedacinho da memória


corresponde à variável.

Raoni S. Ferreira (Centro de Ciências Exatas e Tecnológicas


CCET130 — Aula
UFAC)
01a 2018 5 / 73
Declarando uma variável

Declara-se da seguinte forma: Tipo_Variavel Nome_Variavel;

Exemplos corretos:
int soma;
float preco_abacaxi;
char resposta;
Exemplos incorretos:
soma int;
float preco_abacaxi

Raoni S. Ferreira (Centro de Ciências Exatas e Tecnológicas


CCET130 — Aula
UFAC)
01a 2018 6 / 73
Variáveis inteiras

Variáveis utilizadas para armazenar valores inteiros. Ex: 13 ou 1102 ou 24.

Abaixo temos os tipos da linguagem C que servem para armazenar


inteiros:
int: Inteiro cujo comprimento depende do processador. É o inteiro
mais utilizado. Em processadores Intel comum, ocupa 32 bits e pode
armazenar valores de -2.147.483.648 a 2.147.483.647.
unsigned int: Inteiro cujo comprimento depende do processador e
que armazena somente valores positivos. Em processadores Intel
comum, ocupa 32 bits e pode armazenar valores de 0 a 4.294.967.295.

Raoni S. Ferreira (Centro de Ciências Exatas e Tecnológicas


CCET130 — Aula
UFAC)
01a 2018 7 / 73
Variáveis inteiras

long int: Inteiro que ocupa 64 bits em computadores Intel de 64bits,


e pode armazenar valores de aprox. −9 × 1018 a aprox. 9 × 1018 .
unsigned long int: Inteiro que ocupa 64 bits em computadores Intel
de 64bits, e armazena valores de 0 até aprox. 18 × 1018 .
short int: Inteiro que ocupa 16 bits e pode armazenar valores de
-32.768 a 32.767.
unsigned short int: Inteiro que ocupa 16 bits e pode armazenar
valores de 0 a 65.535.

Raoni S. Ferreira (Centro de Ciências Exatas e Tecnológicas


CCET130 — Aula
UFAC)
01a 2018 8 / 73
Variáveis inteiras

Exemplos de declaração de variáveis inteiras:


int numVoltas;
int ano;
unsigned int quantidadeChapeus;
Exemplos Inválidos:
int int numVoltas;
unsgned int ano;

Raoni S. Ferreira (Centro de Ciências Exatas e Tecnológicas


CCET130 — Aula
UFAC)
01a 2018 9 / 73
Variáveis de tipo caractere

Variáveis utilizadas para armazenar letras e outros símbolos existentes em


textos. OBS: Guarda apenas um caractere.

Exemplos de declaração:
char umaLetra;
char YorN;

Raoni S. Ferreira (Centro de Ciências Exatas e Tecnológicas


CCET130 — Aula
UFAC)
01a 2018 10 / 73
Variáveis de tipo ponto flutuante

Armazenam valores reais. Mas possuem problemas de precisão pois há uma


quantidade limitada de memória para armazenar um número real.
Exemplos de números em ponto flutuante: 2.1345 ou 9098.123.

float: Utiliza 32 bits, e na prática tem precisão de aproximadamente 6


casas decimais (depois do ponto).
Pode armazenar valores de (+/−)10−38 a (+/−)1038
double: Utiliza 64 bits, e na prática tem precisão de
aproximadamente 15 casas decimais.
Pode armazenar valores de (+/−)10−308 a (+/−)10308

Raoni S. Ferreira (Centro de Ciências Exatas e Tecnológicas


CCET130 — Aula
UFAC)
01a 2018 11 / 73
Variáveis de tipo ponto flutuante

Exemplos de declaração de variáveis de tipo ponto flutuante.


float salario;
float resultado;
double cotaDolar;

Raoni S. Ferreira (Centro de Ciências Exatas e Tecnológicas


CCET130 — Aula
UFAC)
01a 2018 12 / 73
Declarando Várias Variáveis

Você pode declarar várias variáveis de um mesmo tipo. Basta separar as


variáveis por vírgula:
int numVoltas, ano;
double x1, x2, x3, x4;

Raoni S. Ferreira (Centro de Ciências Exatas e Tecnológicas


CCET130 — Aula
UFAC)
01a 2018 13 / 73
Regras para nomes de variáveis em C

Deve começar com uma letra (maíuscula ou minúscula) ou


subscrito(_). Nunca pode começar com um número.
Pode conter letras maíusculas, minúsculas, números e subscrito.
Não pode-se utilizar como parte do nome de uma variável:
{ ( +− ∗ / \ ; . , ?

Letras maiúsculas e minúsculas são diferentes:


int c;
int C;

Raoni S. Ferreira (Centro de Ciências Exatas e Tecnológicas


CCET130 — Aula
UFAC)
01a 2018 14 / 73
Regras para nomes de variáveis em C

As seguintes palavras já tem um significado na linguagem C e por esse


motivo não podem ser utilizadas como nome de variáveis:

auto double int struct break


enum register typedef char extern
return union const float short
unsigned continue for signed void
default goto sizeof volatile do
if static while

Raoni S. Ferreira (Centro de Ciências Exatas e Tecnológicas


CCET130 — Aula
UFAC)
01a 2018 15 / 73
Variáveis e Constantes

Constantes são valores previamente determinados e que por algum motivo,


devem aparecer dentro de um programa.

Assim como as variáveis, as constantes também possuem um tipo. Os


tipos permitidos são exatamente os mesmos das variáveis, mais o tipo
string, que corresponde a uma sequência de caracteres.
Exemplos de constantes:
85 , 0.10 , ’ c ’ , " Hello , world ! "

Raoni S. Ferreira (Centro de Ciências Exatas e Tecnológicas


CCET130 — Aula
UFAC)
01a 2018 16 / 73
Exemplos de atribuição

OBS: A declaração de uma variável sempre deve ocorrer antes de seu


uso.

int a ,b;
float f ;
char h ;

a = 10;
b = −15;
f = 10.0;
h = ’A ’ ;

a = b;
f = a;
a = ( b+a ) ;
Qual o valor final na variável a?

Raoni S. Ferreira (Centro de Ciências Exatas e Tecnológicas


CCET130 — Aula
UFAC)
01a 2018 17 / 73
Exemplos errados de atribuição

int a ,b;
float f ,g;
char h ;

a b = 1 0 ; // E r r a d o ! Por que ?
b = −15
d = 9 0 ; // E r r a d o ! Por que ?

Raoni S. Ferreira (Centro de Ciências Exatas e Tecnológicas


CCET130 — Aula
UFAC)
01a 2018 18 / 73
Constantes Inteiras

Possíveis formas de escrita em C de um número inteiro:


Um número inteiro como escrito normalmente
Ex: 10, 145, 1000000
Um número na forma hexadecimal (base 16), precedido de 0x
Ex: 0xA (0xA16 = 10), 0x100 (0x10016 = 256)
Um número na forma octal (base 8), precedido de 0
Ex: 010 (0x108 = 8)

Raoni S. Ferreira (Centro de Ciências Exatas e Tecnológicas


CCET130 — Aula
UFAC)
01a 2018 19 / 73
Constantes do tipo de ponto flutuante

Um número só pode ser considerado um número ponto flutuante se


tiver uma parte “não inteira”, mesmo que essa parte não inteira tenha
valor zero.
Ex: 10.0, 5.0
Um número ponto flutuante pode ser escrito em notação científica
também: deve conter um número seguido da letra e mais um
expoente. Um número escrito dessa forma deve ser interpretado como:

numero · 10expoente
Ex: 2e2 (2e2 = 2 · 102 = 200.0)

Raoni S. Ferreira (Centro de Ciências Exatas e Tecnológicas


CCET130 — Aula
UFAC)
01a 2018 20 / 73
Caractere

São, na verdade, variáveis inteiras que armazenam um número


associado ao símbolo. A principal tabela de símbolos utilizada pelos
computadores é a tabela ASCII (American Standard Code for
Information Interchang), mas existem outras (EBCDIC, Unicode, etc ..
).
char: Armazena um símbolo (no caso, o inteiro correspondente). Seu
valor pode ir de -128 a 127.

Raoni S. Ferreira (Centro de Ciências Exatas e Tecnológicas


CCET130 — Aula
UFAC)
01a 2018 21 / 73
Tabela ASCII

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
0 caracterees de Controle
16
32 ! " # $ % & ’ ( ) * + , - . /
48 0 1 2 3 4 5 6 7 8 9 : ; < = > ?
64 @ A B C D E F G H I J K L M N
V
O
80 P Q R S T U V W X Y Z [ / ] _
96 ‘ a b c d e f g h i j k l m n o
112 p q r s t u v w x y z { | } ∼

Raoni S. Ferreira (Centro de Ciências Exatas e Tecnológicas


CCET130 — Aula
UFAC)
01a 2018 22 / 73
Caractere

Toda constante do tipo caractere pode ser usada como uma constante
do tipo inteiro e vice-versa. Nesse caso, o valor atribuído será o valor
daquela letra na tabela ASCII.
int a;
char b ;

b = 65;
p r i n t f ( " v a l o r de b : %c \n" , b ) ;

a = ’C ’ ;
p r i n t f ( " v a l o r de a : %d\n" , a ) ;

Raoni S. Ferreira (Centro de Ciências Exatas e Tecnológicas


CCET130 — Aula
UFAC)
01a 2018 23 / 73
Comando de Atribuição

Definição
O comando de atribuição serve para atribuir valores para variáveis.

A sintaxe do uso do comando é:


variavel = valor ;
Exemplos:
int a;
float c;
a = 5;
c = 67.89505456;

Raoni S. Ferreira (Centro de Ciências Exatas e Tecnológicas


CCET130 — Aula
UFAC)
01a 2018 24 / 73
Comando de Atribuição

No exemplo abaixo, a variável soma recebe o valor calculado da expressão


a + b.

soma = a + b;
 AA
K
A
A
Variável Expressão

Raoni S. Ferreira (Centro de Ciências Exatas e Tecnológicas


CCET130 — Aula
UFAC)
01a 2018 25 / 73
Comando de Atribuição

Exemplos:
int a;
float c;
a = 5 + 5 + 10;
c = 67.89505456 + 8 − 9;

Raoni S. Ferreira (Centro de Ciências Exatas e Tecnológicas


CCET130 — Aula
UFAC)
01a 2018 26 / 73
Escrevendo na tela

Para imprimir um texto, utilizamos o comando printf. O texto pode


ser uma constante do tipo string.
p r i n t f ( " Ola P e s s o a l ! " ) ;

S a i d a : Ola P e s s o a l !

No meio da constante string pode-se incluir caracteres de formatação


especiais. O símbolo especial \n é responsável por pular uma linha na
saída.
p r i n t f ( " Ola P e s s o a l ! \n Ola P e s s o a l " ) ;

S a i d a : Ola P e s s o a l !
Ola P e s s o a l

Raoni S. Ferreira (Centro de Ciências Exatas e Tecnológicas


CCET130 — Aula
UFAC)
01a 2018 27 / 73
Escrevendo o conteúdo de uma variável na tela

Podemos imprimir, além de texto puro, o conteúdo de uma variável


utilizando o comando printf. Para isso utilizamos símbolos especiais
no texto, para representar que aquele trecho deve ser substituído por
uma variável ou constante, e no final, passamos uma lista de variáveis
ou constantes, separadas por vírgula.
i n t a =10;
p r i n t f ( "A v a r i a v e l %s contem o v a l o r %d" , " a " , a ) ;

S a i d a : A v a r i a v e l a contem o v a l o r 10

Nesse caso, %s deve ser substituído por uma variável ou constante do


tipo string, enquanto %d deve ser substituído por uma variável ou
constante do tipo int.

Raoni S. Ferreira (Centro de Ciências Exatas e Tecnológicas


CCET130 — Aula
UFAC)
01a 2018 28 / 73
Formatos inteiros

%d — Escreve um inteiro na tela.


p r i n t f ( "%d" , 1 0 ) ;

Saida : 10

i n t a =12;
p r i n t f ( "O v a l o r e %d" , a ) ;

S a i d a : O v a l o r e 12

Raoni S. Ferreira (Centro de Ciências Exatas e Tecnológicas


CCET130 — Aula
UFAC)
01a 2018 29 / 73
Formatos inteiros

A letra d pode ser substituída pelas letras u e ld, quando desejamos


escrever variáveis do tipo unsigned ou long, respectivamente.
p r i n t f ( "%d" , 4 0 0 0 0 0 0 0 0 0 ) ;

S a i d a : −294967296

Enquanto que
p r i n t f ( "%l d " , 4 0 0 0 0 0 0 0 0 0 ) ;

Saida : 4000000000.

Raoni S. Ferreira (Centro de Ciências Exatas e Tecnológicas


CCET130 — Aula
UFAC)
01a 2018 30 / 73
Formatos ponto flutuante

%f — Escreve um ponto flutuante na tela.


p r i n t f ( "%f " , 1 0 . 0 ) ;

Saida : 10.000000

Raoni S. Ferreira (Centro de Ciências Exatas e Tecnológicas


CCET130 — Aula
UFAC)
01a 2018 31 / 73
Formatos ponto flutuante

%.Nf — Escreve um ponto flutuante na tela, com N casas


decimais.
p r i n t f ( " %.2 f " , 1 0 . 1 1 1 1 ) ;

Saida : 10.11

Raoni S. Ferreira (Centro de Ciências Exatas e Tecnológicas


CCET130 — Aula
UFAC)
01a 2018 32 / 73
Formatos ponto flutuante

O formato %f pode ser substituido por %lf, para escrever um double


ao invés de um float.
double a = 10.0;
p r i n t f ( " %.2 l f " , a ) ;

Saida : 10.00

Raoni S. Ferreira (Centro de Ciências Exatas e Tecnológicas


CCET130 — Aula
UFAC)
01a 2018 33 / 73
Formato caracter

%c — Escreve um caracter.
p r i n t f ( "%c " , ’A ’ ) ; }

Saida : A

Note que printf ("%c", 65) também imprime a letra A. Por quê?

Raoni S. Ferreira (Centro de Ciências Exatas e Tecnológicas


CCET130 — Aula
UFAC)
01a 2018 34 / 73
Formato string

%s — Escreve uma string


p r i n t f ( "%s " , "Meu p r i m e i r o p ro g r a m a " ) ;

Saida : Meu p r i m e i r o p r o g ra m a

Raoni S. Ferreira (Centro de Ciências Exatas e Tecnológicas


CCET130 — Aula
UFAC)
01a 2018 35 / 73
A função scanf

Realiza a leitura de dados a partir do teclado.


Parâmetros:
I Uma string, indicando os tipos das variáveis que serão lidas e o
formato dessa leitura.
I Uma lista de variáveis.
Aguarda que o usuário digite um valor e atribui o valor digitado à
variável.

Exemplo:
#i n c l u d e < s t d i o . h>
i n t main ( ) {
int n;
p r i n t f ( " D i g i t e um numero : " ) ;
s c a n f ( "%d" ,&n ) ;
p r i n t f ( "O v a l o r d i g i t a d o f o i %d\n" , n ) ;
}

Raoni S. Ferreira (Centro de Ciências Exatas e Tecnológicas


CCET130 — Aula
UFAC)
01a 2018 36 / 73
Formatos de leitura de variável

Os formatos de leitura são muito semelhantes aos formatos de escrita


utilizados pelo printf. A tabela a seguir mostra alguns formatos possíveis
de leitura
Código Função
%c Lê um único caracter
%s Lê uma sequencia de caracteres
%d Lê um número decimal
%u Lê um decimal sem sinal
%ld Lê um inteiro longo
%f Lê um número em ponto flutuante
%lf Lê um double

Raoni S. Ferreira (Centro de Ciências Exatas e Tecnológicas


CCET130 — Aula
UFAC)
01a 2018 37 / 73
A função scanf

O programa abaixo, lê um caracter, depois um nũmero ponto flutuante e


por fim um decimal. Por fim o programa imprime os dados lidos.
#i n c l u d e < s t d i o . h>

i n t main ( ) {
char c ;
float b;
int a;

p r i n t f ( " E n t r e com um c a r a c t e r e : " ) ;


s c a n f ( "%c " , &c ) ;
p r i n t f ( " E n t r e com um p o n t o f l u t u a n t e : " ) ;
s c a n f ( "%f " , &b ) ;
p r i n t f ( " E n t r e com um numero : " ) ;
s c a n f ( "%d" ,& a ) ;

p r i n t f ( "Os d a d o s l i d o s f o r a m : %c , %f , %d \n" , c , b , a ) ;
}

Raoni S. Ferreira (Centro de Ciências Exatas e Tecnológicas


CCET130 — Aula
UFAC)
01a 2018 38 / 73
A função scanf

É possível ler várias variáveis em um mesmo comando scanf, basta


especificar todos os formatos das variáveis a serem lidas e depois as
variáveis separadas por virgula:
#i n c l u d e < s t d i o . h>

i n t main ( ) {
i n t m, n , o ;
p r i n t f ( " D i g i t e t r e s numeros : " ) ;
s c a n f ( "%d %d %d" ,&m, &n , &o ) ;
p r i n t f ( "O v a l o r e s d i g i t a d o s f o r a m %d %d %d\n" , m, n , o ) ;
}

Raoni S. Ferreira (Centro de Ciências Exatas e Tecnológicas


CCET130 — Aula
UFAC)
01a 2018 39 / 73
Expressões Aritméticas

Os operadores aritméticos são: +, -, *, /, %


expressao + expressao : Calcula a soma de duas expressões.
Ex: 10 + 15;
expressao - expressao : Calcula a subtração de duas expressões.
Ex: 5 - 7;
expressao * expressao : Calcula o produto de duas expressões.
Ex: 3 * 4;

Raoni S. Ferreira (Centro de Ciências Exatas e Tecnológicas


CCET130 — Aula
UFAC)
01a 2018 40 / 73
Expressões

expressao / expressao : Calcula a divisão de duas expressões.


Ex: 4 / 2;
expressao % expressao : Calcula o resto da divisão (inteira) de duas
expressões.
Ex: 5 % 2;
- expressao : Inverte o sinal da expressão.
Ex: -5;

Raoni S. Ferreira (Centro de Ciências Exatas e Tecnológicas


CCET130 — Aula
UFAC)
01a 2018 41 / 73
Expressões

Mais sobre o operador resto da divisão: %


Quando computamos "a dividido por b", isto tem como resultado um
valor p e um resto r < b que são únicos tais que

a=p∗b+r

Ou seja a pode ser dividido em p partes inteiras de tamanho b, e


sobrará um resto r < b.
Exemplos:
5%2 tem como resultado o valor 1.
15%3 tem como resultado o valor 0.
1%5 tem como resultado o valor 1.
19%4 tem como resultado o valor 3.

Raoni S. Ferreira (Centro de Ciências Exatas e Tecnológicas


CCET130 — Aula
UFAC)
01a 2018 42 / 73
Expressões

No exemplo abaixo, quais valores serão impressos?


#i n c l u d e < s t d i o . h>

i n t main ( ) {

p r i n t f ( "%d \n" , 29%3);


p r i n t f ( "%d \n" , 4%15);
}

Raoni S. Ferreira (Centro de Ciências Exatas e Tecnológicas


CCET130 — Aula
UFAC)
01a 2018 43 / 73
Expressões

Mais sobre o operador /


Quando utilizado sobre valores inteiros, o resultado da operação de
divisão será inteiro. Isto significa que a parte fracionária da divisão
será desconsiderada.
I 5/2 tem como resultado o valor 2.
Quando pelo menos um dos operandos for ponto flutuante, então a
divisão será fracionária. Ou seja, o resultado será a divisão exata dos
valores.
I 5.0/2 tem como resultado o valor 2.5.

Raoni S. Ferreira (Centro de Ciências Exatas e Tecnológicas


CCET130 — Aula
UFAC)
01a 2018 44 / 73
Expressões

No exemplo abaixo, quais valores serão impressos?


#i n c l u d e < s t d i o . h>

i n t main ( ) {
i n t a =5 , b =2;
f l o a t c =5.0 , d =2.0;

p r i n t f ( "%d \n" , a /b ) ;
p r i n t f ( "%f \n" , a /d ) ;
p r i n t f ( "%f \n" , c /d ) ;
}

Raoni S. Ferreira (Centro de Ciências Exatas e Tecnológicas


CCET130 — Aula
UFAC)
01a 2018 45 / 73
Expressões

As expressões aritméticas (e todas as expressões) operam sobre outras


expressões.
É possível compor expressões complexas como por exemplo:
a = b *( (2 / c)+(9 + d * 8) );
Qual o valor da expressão 5 + 10 % 3?
E da expressão 5 * 10 % 3?

Raoni S. Ferreira (Centro de Ciências Exatas e Tecnológicas


CCET130 — Aula
UFAC)
01a 2018 46 / 73
Precedência

Precedência é a ordem na qual os operadores serão avaliados quando o


programa for executado. Em C, os operadores são avaliados na
seguinte ordem:
I * e /, na ordem em que aparecerem na expressão.
I %
I + e -, na ordem em que aparecerem na expressão.
Exemplo: 8+10*6 é igual a 68.

Raoni S. Ferreira (Centro de Ciências Exatas e Tecnológicas


CCET130 — Aula
UFAC)
01a 2018 47 / 73
Alterando a precedência

(expressão ) também é uma expressão, que calcula o resultado da


expressão dentro dos parênteses, para só então calcular o resultado
das outras expressões.
I 5 + 10 % 3 e igual a 6
I (5 + 10) % 3 e igual a 0
Você pode usar quantos parênteses desejar dentro de uma expressão.
Use sempre parênteses em expressões para deixar claro em qual ordem
a expressão é avaliada!

Raoni S. Ferreira (Centro de Ciências Exatas e Tecnológicas


CCET130 — Aula
UFAC)
01a 2018 48 / 73
Incremento(++) e Decremento(−−)

É muito comum escrevermos expressões para


incrementar/decrementar o valor de uma variável por 1.
a = a + 1;

Em C, o operador unário ++ é usado para incrementar de 1 o valor


de uma variável.
a = a + 1 ; e o mesmo que a++;

O operador unário −− é usado para decrementar de 1 o valor de uma


variável.
a = a − 1 ; e o mesmo que a−−;

Raoni S. Ferreira (Centro de Ciências Exatas e Tecnológicas


CCET130 — Aula
UFAC)
01a 2018 49 / 73
Informações Extras: Incremento(++) e Decremento(−−)

Há uma diferençaa quando estes operadores são usados à esquerda ou à


direita de uma variável e fizerem parte de uma expressão maior:
++a : Neste caso o valor de a será incrementado antes e só depois o
valor de a é usado na expressão.
a++: Neste caso o valor de a é usado na expressão maior, e só
depois é incrementado.
A mesma coisa acontece com o operador −−.

Raoni S. Ferreira (Centro de Ciências Exatas e Tecnológicas


CCET130 — Aula
UFAC)
01a 2018 50 / 73
Avalie o que será impresso nos dois programas abaixo.
#i n c l u d e < s t d i o . h>

i n t main ( ) {
i n t a =5 , b ;

b = ++a ;

p r i n t f ( "b : %d \n" , b ) ;
p r i n t f ( " a : %d \n" , a ) ;
}

#i n c l u d e < s t d i o . h>

i n t main ( ) {
i n t a =5 , b ;

b = a++;

p r i n t f ( "b : %d \n" , b ) ;
p r i n t f ( " a : %d \n" , a ) ;
}

Raoni S. Ferreira (Centro de Ciências Exatas e Tecnológicas


CCET130 — Aula
UFAC)
01a 2018 51 / 73
Informações Extras: Atribuições simplificadas

Uma expressão da forma


a = a + b;

onde ocorre uma atribuição para uma das variáveis da expressão pode ser
simplificada como
a += b ;

Raoni S. Ferreira (Centro de Ciências Exatas e Tecnológicas


CCET130 — Aula
UFAC)
01a 2018 52 / 73
Informações Extras: Atribuições simplificadas

Comando Exemplo Corresponde a:


+= a += b; a = a + b;
-= a -= b; a = a - b;
∗= a *= b; a = a * b;
/= a /= b; a = a / b;
%= a %= b; a = a % b;

Raoni S. Ferreira (Centro de Ciências Exatas e Tecnológicas


CCET130 — Aula
UFAC)
01a 2018 53 / 73
Informações Extras: Conversão de tipos
È possível converter alguns tipos entre si: de forma implícita ou
explícita.
Na implícita atribui-se diretamente um dado de um tipo para uma
variável de outro tipo.
#i n c l u d e < s t d i o . h>

i n t main ( ) {
int a = 9;
double b ;

b = a;
p r i n t f ( " a : %d e b : % l f \ n " , a , b ) ;

b = 5.56;
a = b;
p r i n t f ( " a : %d e b : % l f \ n " , a , b ) ;

b = 4000000000.56;
a = b;
p r i n t f ( " a : %d e b : % l f \ n " , a , b ) ;

p r i n t f ( "Tamanho em b y t e s de um d o u b l e : %l d \ n " , s i z e o f ( d o u b l e ) ) ;
p r i n t f ( "Tamanho em b y t e s de um i n t : %l d \ n " , s i z e o f ( i n t ) ) ;
}

I Notem que a capacidade (tamanho) do destino deve ser maior que a


origem senão há perda de informação.
Raoni S. Ferreira (Centro de Ciências Exatas e Tecnológicas
CCET130 — Aula
UFAC)
01a 2018 54 / 73
Informações Extras: Conversão de tipos

Conversão Explícita:
I Explicitamente informa o tipo que o valor da variável ou expressão é
convertida.
#i n c l u d e < s t d i o . h>

i n t main ( ) {
double b ;

b = ( ( double ) 5 / ( double ) 2) ;
p r i n t f ( "% l f \n" , b ) ;

b = 5 / 2 ;
p r i n t f ( "% l f \n" , b ) ;
}

Raoni S. Ferreira (Centro de Ciências Exatas e Tecnológicas


CCET130 — Aula
UFAC)
01a 2018 55 / 73
Informações Extras: Um uso da conversão de tipos

A operação de divisão (/) possui dois modos de operação de acordo com


os seus argumentos: inteira ou de ponto flutuante.
Se os dois argumentos forem inteiros, acontece a divisão inteira. A
expressão 10 / 3 tem como valor 3.
Se um dos dois argumentos for de ponto flutuante, acontece a divisão
de ponto flutuante. A expressão 1.5 / 3 tem como valor 0.5.
Quando se deseja obter o valor de ponto flutuante de uma divisão
(não-exata) de dois inteiros, basta converter um deles para ponto flutuante:
A e x p r e s s \~ ao 10 / ( f l o a t ) 3 tem como v a l o r 3 . 3 3 3 3 3 3 3 3

Raoni S. Ferreira (Centro de Ciências Exatas e Tecnológicas


CCET130 — Aula
UFAC)
01a 2018 56 / 73
Expressões relacionais

Expressões relacionais são aquelas que realizam uma comparação entre


duas expressões e retornam
1 Zero (0), se o resultado é falso
2 Um (1), ou qualquer outro número diferente de zero, se o resultado é
verdadeiro.

Raoni S. Ferreira (Centro de Ciências Exatas e Tecnológicas


CCET130 — Aula
UFAC)
01a 2018 57 / 73
Operadores Relacionais

Os operadores relacionais da linguagem C são:


== : igualdade.
! = : diferente.
> : maior que.
< : menor que.
>= : maior ou igual que.
<= : menor ou igual que.

Raoni S. Ferreira (Centro de Ciências Exatas e Tecnológicas


CCET130 — Aula
UFAC)
01a 2018 58 / 73
O que será impresso pelo programa?
#i n c l u d e < s t d i o . h>

i n t main ( ) {
int a , b;

p r i n t f ( "%d\n" , 9 > 3);

p r i n t f ( "%d\n" , ( 3 ∗ 4 ) / 2 != ( 2 ∗ 3 ) ) ;

a = 1;
b = −1;
p r i n t f ( "%d\n" , a !=b ) ;
}

Raoni S. Ferreira (Centro de Ciências Exatas e Tecnológicas


CCET130 — Aula
UFAC)
01a 2018 59 / 73
Operadores Lógicos

Na linguagem C temos os seguintes operadores lógicos:


&&: operador E.
||: operador OU.
!: operador NÃO.
Qual o resultado da expressão lógica abaixo?
a = 0;
b = 1;
( a == 0 | | b == 0 )

Raoni S. Ferreira (Centro de Ciências Exatas e Tecnológicas


CCET130 — Aula
UFAC)
01a 2018 60 / 73
O que será impresso pelo programa?
#i n c l u d e < s t d i o . h>

i n t main ( ) {
p r i n t f ( "%d\n" , (8 >9) && ( 1 0 ! = 2 ) ) ;

p r i n t f ( "%d\n" , ( 1 4 > 1 0 0 ) | | ( 2 > 1 ) ) ;

p r i n t f ( "%d\n" , ( !(14 >100 ) && !(1 >2) ) ) ;


}

Raoni S. Ferreira (Centro de Ciências Exatas e Tecnológicas


CCET130 — Aula
UFAC)
01a 2018 61 / 73
Comandos condicionais
Um comando condicional é aquele que permite decidir se um determinado
bloco de comandos deve ou não ser executado, a partir do resultado de
uma expressão relacional ou lógica.

Raoni S. Ferreira (Centro de Ciências Exatas e Tecnológicas


CCET130 — Aula
UFAC)
01a 2018 62 / 73
Comandos condicionais

O principal comando condicional da linguagem C é o if, cuja sintaxe é:


i f ( e x p r e s s a o r e l a c i o n a l ou l o g i c a )
um u n i c o comando ;

ou também
i f ( e x p r e s s a o r e l a c i o n a l ou logica ) {
comando 1 ;
comando 2 ;
...
comando n ;
}

Os comandos são executados somente se a expressão relacional/lógica


for verdadeira.

Raoni S. Ferreira (Centro de Ciências Exatas e Tecnológicas


CCET130 — Aula
UFAC)
01a 2018 63 / 73
Comandos condicionais

Usando chaves e indentação para deixar mais claro:

i f ( cond1 ) {
i f ( cond2 )
comando1 ;
else
comando2 ;
}

Raoni S. Ferreira (Centro de Ciências Exatas e Tecnológicas


CCET130 — Aula
UFAC)
01a 2018 64 / 73
Exercício

Implemente um programa em C que calcule o ano de nascimento de uma


pessoa a partir de sua idade.

Raoni S. Ferreira (Centro de Ciências Exatas e Tecnológicas


CCET130 — Aula
UFAC)
01a 2018 65 / 73
Exercício

Escreva um programa que lê um número e verifica em qual dos seguintes


casos o número se enquadra:
Par e menor que 100.
Par e maior ou igual a 100.
Ímpar e menor que 100.
Ímpar e maior ou igual a 100.

Raoni S. Ferreira (Centro de Ciências Exatas e Tecnológicas


CCET130 — Aula
UFAC)
01a 2018 66 / 73
Exercício if-else

Vamos fazer um programa que calcula a área de três tipos de objetos


geométricos: quadrado, retângulo e círculo.
Primeiramente deve ser lido um caractere que indica o tipo de objeto
a ter a área calculada: ’q’ para quadrado, ’r’ para retângulo e ’c’ para
círculo.
Em seguida deverá ser lido as dimensões do objeto:
I Para um quadrado deve ser lido o tamanho de um lado.
I Para um retângulo devem ser lidos os tamanhos de cada lado.
I Para um círculo, deve ser lido o raio.
Em seguida o programa faz o cálculo da área e a imprime.
Se o usuário digitar um caractere diferente de ’q’, ’r’, e ’c’ o programa
deverá imprimir uma mensagem de erro.

Raoni S. Ferreira (Centro de Ciências Exatas e Tecnológicas


CCET130 — Aula
UFAC)
01a 2018 67 / 73
Exercício

Escreva um programa lê três números distintos e os imprime em


ordem (ordem decrescente).

Raoni S. Ferreira (Centro de Ciências Exatas e Tecnológicas


CCET130 — Aula
UFAC)
01a 2018 68 / 73
Informações Extras: O comando switch

O objetivo do comando switch ? simplificar uma construção if-else-if


encaixados quando as condições ocorrem sobre uma variável inteira ou
caractere:

Sintaxe
switch (variável inteira) {
case valor: comandos
break;
case valor: comandos
break;
}

Raoni S. Ferreira (Centro de Ciências Exatas e Tecnológicas


CCET130 — Aula
UFAC)
01a 2018 69 / 73
Informações Extras: O comando switch

p r i n t f ( " D i g i t e o RA : " ) ;
s c a n f ( "%d" , &a ) ;
switch (a) {
case 10129:
p r i n t f ( " M a r i a C a n d i d a M o r e i r a T e l l e s \n" ) ;
break ;
case 33860:
p r i n t f ( " L a r i s s a G a r c i a A l f o n s i \n" ) ;
break ;
case 33967:
p r i n t f ( " L e o n a r d o K o z l o w i s k i Kenupp \n" ) ;
break ;
}

Raoni S. Ferreira (Centro de Ciências Exatas e Tecnológicas


CCET130 — Aula
UFAC)
01a 2018 70 / 73
Informações Extras: O comando switch

Os comandos começam a ser executados a partir do ponto onde o


valor da variável corresponde ao valor antes dos dois pontos (:).
São executados todos os comandos até que se encontre um comando
break ou que se chegue ao final do bloco de comandos do switch.

Raoni S. Ferreira (Centro de Ciências Exatas e Tecnológicas


CCET130 — Aula
UFAC)
01a 2018 71 / 73
Informações Extras. Valor padrão

Você pode utilizar uma condição default. A execução dentro da


alternativa default ocorre se nenhuma outra condição for verdadeira
(assim como o último else do if-else-if encaixados).

Sintaxe
switch (variavel inteira) {
valor: comandos break;
default: comandos
}

Raoni S. Ferreira (Centro de Ciências Exatas e Tecnológicas


CCET130 — Aula
UFAC)
01a 2018 72 / 73
Créditos

Estes slides são baseados no material do Prof. Eduardo C. Xavier da


Unicamp.

Raoni S. Ferreira (Centro de Ciências Exatas e Tecnológicas


CCET130 — Aula
UFAC)
01a 2018 73 / 73

Potrebbero piacerti anche