Buscar

Introducao a Programacao Unidade 2 (rev1)

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 24 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 24 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 24 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

1
UNIDADE 2: 
PECULIARIDADES DA 
LINGUAGEM C
Operadores Aritméticos
• Operadores aritméticos: utilizados para a realização 
de cálculos matemáticos
Operador Função Exemplos
+ Adição 2 + 3, X + Y
- Subtração 4 - 2, N - M
* Multiplicação 3 * 4, A * B
/ Divisão 10 / 2, C / D
% Resto da divisão inteira (módulo) 9 % 4 resulta 1
++ Incremento (x=x+1) ++x
-- Decremento (x=x-1) x--
2
Prioridade das Operações para 
Operadores Aritméticos
1. Parênteses mais internos
2. ++, --
- (menos unário, i.e., sobre uma variável, ex. troca de 
valor do número)
*, /, %
3. +, -
Operadores Relacionais
• Operadores relacionais: utilizados para a estabelecer 
relação de comparação entre valores
Operador Função Exemplos
== Igual a valor == 10
> Maior que valor > 10
< Menor que valor < 10
>= Maior ou igual a valor >= 10
<= Menor ou igual a valor <= 10
!= Diferente de valor != 10
3
Operadores Lógicas
• Operadores lógicos: 
utilizados para a 
efetuar avaliações 
lógicas entre valores
Operador Função Exemplos
! “NOT” (Negação) !(10<9)
&& “AND” (Conjugação) (v>1) && (v<9)
|| “OR” (Disjunção) (v<10) || (v>20)
• Tabelas Verdade: 
Conjunto de todas as 
possibilidades de cada 
operador lógico, onde 
0=Falso e 1=Verdadeiro
A B A e B
0 0 0
0 1 0
1 0 0
1 1 1
A B A ou B
0 0 0
0 1 1
1 0 1
1 1 1
A não A
0 1
1 0
Prioridade de todas as operações
Maior ++, --, - (unário)
*, /, %
+, -
<, <=, >, >=
==, !=
!
&&
Menor ||
4
Palavras Reservadas
• Palavras reservadas são palavras que têm um significado 
especial para a linguagem, e não podem ser utilizadas pelo 
programador como identificadores (variável, função, etc)
auto double int struct
break else long switch 
case enum register typedef
char extern return union 
const float short unsigned 
continue for signed void 
default goto sizeof volatile 
do if static while
Exemplo de um programa
• Um programa em C é composto por um conjunto 
de funções
• A função pela qual o programa começa a ser executado 
chama-se main
• Após cada comando deve-se colocar um ; (ponto e 
vírgula)
• O programa deve ser indentado visando facilitar a 
leitura
5
Exemplo de um programa
// Exemplo de programa em C
// Isto é uma linha de comentário
void main()
{ 
int a; //declara a variável "a"
a = 3 + 2; //soma 3 com 2
}
Identificadores
• Identificadores: Nomes para variáveis e funções
• Exemplos: Idade, Contador, PesoDoCarro, 
Usuario_1, CorDaPagina, RaioDoCirculo
6
Identificadores
• Um identificador deve seguir algumas regras:
� Deve iniciar por uma letra ou por um "_" (underscore)
� A partir do segundo caractere, pode conter letras, números 
e underscore
� Deve-se usar nomes significativos dentro do contexto do programa
� C é case-sensitive, diferença entre nomes com letras maiúsculas e 
minúsculas, ex. Peso e peso são diferentes
� Costuma-se usar maiúsculas e minúsculas para separar palavras, 
ex. PesoDoCarro
� O nome deve ser diferente dos comandos da linguagem
� Pode conter números a partir do segundo caractere 
Variáveis
• Uma variável é uma 
posição de memória que 
pode ser identificada 
através de um nome
• Podem ter seu conteúdo 
alterado por 
um comando de 
atribuição
• Após a atribuição mudam 
de valor
int a,b, SomaGeral;
a = 3; //a recebe o valor 3
b = a * 2; //b recebe o 
dobro do valor de a 
c = a + b + 2; //c recebe 11
7
Tipos de Variáveis
• Todas as variáveis tem um tipo
‒Há 5 tipos básicos em C: caractere, inteiro, ponto flutuante, ponto 
flutuante com precisão dupla, sem valor
• Cada tipo define os valores que a variável pode armazenar, 
ocupando uma certa quantidade de memória
Tipo Valores Válidos
char letras e símbolos: 'a', 'b', 'H', '^', '*','1','0'
int de -32767 até 32767 (apenas números inteiros)
float de -3.4 x 1038 até +3.4 x 10+38 , com até 6 dígitos de precisão
double de -1.7 x 10308 até +1.7 x 10+308 , com até 10 dígitos de precisão
void não retorna valor ou cria ponteiros genéricos
Declaração de variáveis
• Todas as variáveis devem 
ser declaradas antes de 
serem usadas
‒Variáveis locais: Dentro 
das funções
‒Parâmetros formais: Na 
definição dos parâmetros 
das funções
‒Variáveis globais: Fora de 
todas as funções
#include <stdio.h> 
void main()
{ 
int contador
float PrecoDoQuilo;
double TaxaDeCambio;
char LetraDigitada;
int IdadeManoel, IdadeJoao, IdadeMaria; 
// Pode colocar mais de uma variável na 
mesma linha
double TaxaDoDolar,
TaxaDoMarco,
TaxaDoPeso, 
// Também pode trocar de linha no meio
TaxaDoFranco; 
}
8
Inicialização de variáveis na 
declaração
#include <stdio.h> 
void main()
{ 
int NroDeHoras = 0; // declara e inicializa com Zero
float PrecoDoQuilo = 10.53; // declara e inicializa com 10.53
double TaxaDoDolar = 1.8,
TaxaDoMarco = 1.956,
TaxaDoPeso = 1.75, 
TaxaDoFranco = 0.2; 
....... 
}
Constantes
• Constantes são identificadores que não podem ter 
seus valores alterados durante a execução do 
programa
• Para criar uma constante, existe o comando 
#define que, em geral é colocado no início do 
programa-fonte
9
Constantes
#define LARGURA_MAXIMA 50
// Não se coloca ponto-e-vírgula após o valor
#define NRO_DE_DIAS_DA_SEMANA 7
#define NRO_DE_HORAS_DO_DIA 24
#define VALOR_DE_PI 3.1415
void main ()
{
int TotalDeHoras;
TotalDeHoras = 10 * NRO_DE_DIAS_DA_SEMANA * 
NRO_DE_HORAS_DO_DIA;
printf("%d",TotalDeHoras);
}
String
• C suporta um tipo de constante chamado string, que é 
uma sequência (cadeia) ordenada de caracteres entre 
aspas duplas: "exemplo de uma string em C"
‒Não confundir com caractere, que não é uma sequencia
• Uma variável capaz de armazenar uma string deve ser 
declarada informando-se qual o número máximo de 
caracteres que ela poderá armazenar
10
String
• Exemplo:
char Nome[30]; // isto define que a variável 
poderá armazenar uma string de até 29 
caracteres (1 caractere é nulo)
• Ao trabalharmos com strings deve-se incluir o arquivo 
de cabeçalho string.h
Comandos de entrada e saída
Instruções de E/S
Entrada de 
Dados
Processamento de 
dados
Saída de 
Dados
11
Comando de saída – Função printf
• A função printf (“print formatted”) exibe um ou mais dados na tela
• Ela deve receber pelo menos DOIS PARÂMETROS, separados por 
vírgula:
– Um especificador de formato que define, através de caracteres 
especiais, os tipos dos dados a serem impressos e suas posições na 
linha de impressão
– Um dado a ser impresso, podendo ser qualquer um dos vistos 
anteriormente
• Exemplo: printf("%s","teste");
‒Onde: "%s" : é o especificador de formato, "teste" : é o dado a ser 
impresso
Comando de saída – Função printf
• O especificador de formato define quais os tipos dos 
dados a serem impressos
‒No exemplo visto, o símbolo %s será substituído pelo dado 
que vem após a vírgula
• Os dados definem quais os valores a serem impressos
12
Comando de saída – Função printf
• Se necessário, uma string de formato pode definir que mais de 
um dado será impresso
‒Para tanto, dentro da string de formato, deve haver mais de um
%, um para cada dado a ser impresso
‒Os dados devem vir após a string de formato separados por vírgulas
• Exemplo: 
printf("%s %s","teste1", "outra string");
‒ Irá imprimir o string teste1, deixar 1 espaço em branco, e imprimir ao 
lado o string outra string: teste1 outra string
Comando de saída – Função printf
#include <stdio.h> // Necessário para usar a função printf
// A função printf exibe um ou mais dados na tela
main ()
{
printf("%s","Isto é uma string ....\n"); // note o '\n' no 
final da string;
printf("%s","Outra string ...."); 
printf("%s","Terceira string\n"); 
}13
Comando de saída – Função printf
• Exercício: Coloque a sequência de escape '\n' entre 
os %s na string de formato
‒printf("%s\n%s","teste1", "outra string");
Comando de saída – Função printf
• É possível incluir um texto dentro da string de formato, que irá 
aparecer exatamente como for digitado no programa-fonte
• Exemplo:
#include <stdio.h> 
main ()
{
printf("A aluna %s ficou doente","Maria");
}
• Saída: A aluna Maria ficou doente
14
Constantes do tipo String
#define INSTITUICAO "UNICARIOCA" // deve-se colocar entre 
aspas
#include <stdio.h>
main()
{
printf("%s",INSTITUICAO);
// Imprime o nome representado pela constante
}
Impressão de inteiros
• Para imprimir um inteiro com printf usa-se o símbolo %d
// Impressão de Variáveis Inteiras
#include <stdio.h>
void main ()
{
int Contador;
int NroDeFilhos; 
Contador = 10;
printf("Valor da Variável: %d\n", Contador); 
// No momento da execução sinal %d vai ser substituído pelo valor da variável 
Contador
NroDeFilhos = 3;
printf("Maria tem %d filhos", NroDeFilhos); // o inteiro pode ficar no meio 
da string
}
15
Impressão de expressões aritméticas
// Impressão de Expressões aritméticas
#include <stdio.h>
void main ()
{
int NroDeAndares;
int AlturaPorAndar; 
NroDeAndares = 7;
AlturaPorAndar = 3;
printf("Altura Total do Prédio: %d metros",
NroDeAndares*AlturaPorAndar); 
// No momento da execução sinal %d vai ser substituído 
// pelo valor da multiplicação
}
Impressão de números reais
// Impressão de números reais
#include <stdio.h>
void main ()
{
float NotaDaP1, NotaDaP2;
float Media;
NotaDaP1 = 6.6; // Atribuição do Valores das médias
NotaDaP2 = 8.2;
Media = (NotaDaP1 + NotaDaP2) / 2.0;
printf("Média Final : %f", Media); 
// No momento da execução sinal %f vai ser substituído pelo valor da 
variável Media com SEIS casas decimais
// Média Final : 7.400000
}
16
Formato de números reais
• No exemplo anterior, o resultado da média (7.4) foi 
impresso com 6 casas decimais (7.400000)
• Isto sempre ocorre quando se manda imprimir 
um float da forma como foi feito no exemplo
‒O padrão da função printf é completar o número com 
zeros à direita, até que fique com seis casas decimais
Formato de números reais
• Para formatar de maneira diferente usa-se o 
especificador de formato %f, juntamente com:
‒Uma especificação de quantas casas decimais é desejável 
que o número tenha
‒O número total de caracteres do número a ser impresso
• Exemplo: %6.3f
‒ Irá imprimir um float com 3 casas decimais e com 
tamanho total de 6 caracteres no total
17
Formato de números reais
#include <stdio.h>
void main()
{
float NotaDaP1, NotaDaP2;
float Media;
NotaDaP1 = 6.6; // Atribuição do Valores das médias
NotaDaP2 = 8.2;
Media = (NotaDaP1 + NotaDaP2) / 2.0;
printf("Média Final : %6.3f", Media); 
// No momento da execução sinal %6.3f vai ser substituído 
// pelo valor da variável Media
// Média Final : 7.400
}
Regras para impressão de números 
reais
• O número de casas decimais sempre será respeitado
• Se for preciso, zeros serão acrescentados à direita do número
• O tamanho total significa o número de caracteres do 
número, incluindo o ponto decimal, e um eventual sinal de 
menos (-), se for o caso
‒Se a soma de todos esses elementos for:
* Menor do que o tamanho total especificado no formato: Espaços em 
branco serão acrescentados à esquerda da parte real do número
* Maior do que o tamanho total especificado no formato: Apenas o 
número de casas decimais é respeitado
18
• Alinhamento de números 
à direita:
– Nos exemplos anteriores 
os números ficavam 
sempre alinhados a 
partir da esquerda
– Experimente colocar um 
sinal de menos logo 
depois do sinal de % e 
veja o que acontece:
printf("%-7.3f\n", Numero);
#include <stdio.h>
void main()
{
float Numero;
Numero = -2.5;
printf("1234567890\n");
printf("%7f\n", Numero);
printf("%7.0f\n", Numero);
printf("%7.3f\n", Numero);
printf("%8.3f\n", Numero);
printf("%9.3f\n", Numero);
printf("\n");
printf("%8.4f\n", Numero);
printf("%8.1f\n", Numero);
printf("%6.12f\n", Numero);
}
Resultados:
1234567890
-2.500000
-2
-2.500
-2.500
-2.500
-2.5000
-2.5
-2.500000000000
Especificações de formato – printf
Código Conversão/Formato do argumento
%d Número decimal inteiro (int). Também pode ser usado %i como equivalente a %d.
%u Número decimal natural (unsigned int), ou seja, sem sinal.
%o Número inteiro representado na base octal. Exemplo: 41367 (corresponde ao decimal 17143).
%x Número inteiro representado na base hexadecimal. Exemplo: 42f7 (corresponde ao decimal 17143). Se usarmos %X, as letras serão maiúsculas: 42F7.
%X Hexadecimal com letras maiúsculas
%f Número decimal de ponto flutuante. No caso da função printf, devido às conversões implícitas da linguagem C, serve 
tanto para float como para double. No caso da função scanf, %f serve para float e %lf serve para double.
%e Número em notação científica, por exemplo 5.97e-12. Podemos usar %E para exibir o E maiúsculo (5.97E-12).
%E Número em notação científica com o “e” maiúsculo
%g Escolhe automaticamente o mais apropriado entre %f e %e. Novamente, podemos usar %G para escolher entre %f 
e %E.
%p Ponteiro: exibe o endereço de memória do ponteiro em notação hexadecimal.
%c Caractere: imprime o caractere que tem o código ASCII correspondente ao valor dado.
%s Sequência de caracteres (string, em inglês).
%% Imprime um %
https://pt.wikibooks.org/wiki/Programar_em_C/Entrada_e_sa%C3%ADda_simples
19
Sequências de escape – printf
Sequência Significado
\n Quebra de linha (line feed ou LF)
\t Tabulação horizontal
\b Retrocede o cursor em um caractere (backspace)
\r Retorno de carro (carriage return ou CR): volta o cursor para o começo da linha sem mudar de linha
\a Emite um sinal sonoro
\f Alimentação de formulário (form feed ou FF)
\v Tabulação vertical (em impressoras)
\" Aspa dupla
\' Aspa simples
\\ Barra invertida
\0 Caractere nulo (caractere de valor zero, usado como terminador de strings)
\N O caractere cuja representação octal é N (dígitos de 0 a 7)
\xN O caractere cuja representação hexadecimal é N (dígitos de 0 a 9 e de A a F)
https://pt.wikibooks.org/wiki/Programar_em_C/Entrada_e_sa%C3%ADda_simples
Comando de entrada – Função scanf
• A função scanf() lê dados da entrada padrão 
(teclado) e os guarda em variáveis do programa
• Assim como em printf(), usamos uma string de 
formatação para especificar como serão lidos os dados
• A sintaxe é:
scanf ("string de formatação", &arg1, &arg2, ...);
20
Comando de entrada – Função scanf
• A sintaxe é quase igual a de printf(), com exceção 
do E comercial (&), que é um operador que retorna o 
endereço de memória uma variável
• Isso é necessário pois a função scanf() DEVE 
MODIFICAR as variáveis, e quando não usamos o 
operador de endereço, passamos apenas o valor de 
uma variável para a função
Comando de entrada – Função scanf
int var1;
char var2;
float var3;
scanf ("%d %c %f", &var1,&var2,&var3);
• Entrada: 120 z 17.63
• Saída: var1 igual a 120, var2 igual ao caractere 'z' e 
var3 igual ao número 17,63
21
Comando de entrada – Função scanf
//programa para ler e escrever o seu nome e a sua idade
#include <stdio.h>
main( )
{
int idade;
char nome[30]; 
printf (“Digite o seu nome:\n”);
scanf(“%s”, nome);
printf (“Digite a sua idade:\n”);
scanf (“%d”, &idade);
printf(“A idade do(a) %s é %d”, nome, idade);
}
Especificações de formato – scanf
%i não é mais sinônimo de %d. O que %i faz é interpretar o valor digitado como 
hexadecimal, se iniciar-se por 0x ou 0X; como octal, se iniciar-se por 0; ou como 
decimal, caso nenhuma dessas condições seja verificada.
%a, %e/%E e %g são sinônimos de %f.
%lf deve ser usado para variáveis do tipodouble.
%s lê uma sequência de caracteres não-brancos (qualquer caractere exceto espaço, 
tabulação, quebra de linha etc.), ou seja, uma palavra.
%c lê uma sequência de caracteres, sem ignorar espaços. O padrão é ler um 
caractere, se não for especificada a largura do campo.
%[...] lê uma sequência de caracteres, sem ignorar espaços, especificando entre 
colchetes quais caracteres devem ser aceitos, ou, se o primeiro caractere dentro dos 
colchetes for um acento circunflexo (^), quais não devem ser aceitos.
https://pt.wikibooks.org/wiki/Programar_em_C/Entrada_e_sa%C3%ADda_simples
22
Modificadores – scanf
O modificador * (asterisco) especifica que o valor atual deve ser lido da maneira 
especificada, mas não será guardado em nenhuma variável, e portanto não deve haver 
um ponteiro correspondente a esse valor. 
Por exemplo, poderíamos ter um programa que espera ler uma palavra e depois um 
número, mas não importa qual palavra é. 
Nesse caso usaríamos o modificador *: scanf ("%*s %d", &numero). O programa 
leria a palavra e guardaria o número na variável numero.
Como na função printf(), existe o especificador de largura do campo, que deve 
aparecer antes do especificador de conversão, mas em scanf() ele especifica a 
largura máxima. 
Se a largura máxima foi definida como n, scanf() pulará para o próximo campo se já 
tiver lido n caracteres. Por exemplo, scanf("%4d", &num) lerá um número de até 
quatro algarismos. Se o usuário digitar mais, o excedente será não será lido por essa 
chamada, mas poderá ser lido por uma próxima chamada a scanf.
https://pt.wikibooks.org/wiki/Programar_em_C/Entrada_e_sa%C3%ADda_simples
Comparação de Caracteres e 
Impressão
#include <stdio.h>
void main(){
char *nome;
printf("%s", "Digite o pais: f para Franca ou i para Italia:");
scanf("%s", &nome);
if (nome == 'f'){
printf("%s", "pao frances");
}
if (nome == 'i'){
printf("%s", "presunto de parma");
}
}
23
Comparação de Caracteres e 
Impressão
#include <stdio.h>
void main(){
char *nome;
printf("%s", "Digite o pais: f para Franca ou i para Italia:");
scanf("%s", &nome);
if (nome == 'f'){
printf("%s", "pao frances");
}
if (nome == 'i'){
printf("%s", "presunto de parma");
}
}
Comparação de Strings e Impressão
#include <stdio.h>
#include <string.h>
void main(){
char *nome[10];
int compare1, compare2;
printf("%s", "Digite o pais franca ou italia:");
scanf("%s", &nome);
compare1 = strcmp(nome, "franca");
compare2 = strcmp(nome, "italia");
if (compare1 == 0){
printf("%s", "pao frances");
}
if (compare2 == 0){
printf("%s", "presunto de parma");
}
}
24
Comparação de Strings e Impressão
#include <stdio.h>
#include <string.h>
void main(){
char *nome[10];
int compare1, compare2;
printf("%s", "Digite o pais franca ou italia:");
scanf("%s", &nome);
compare1 = strcmp(nome, "franca");
compare2 = strcmp(nome, "italia");
if (compare1 == 0){
printf("%s", "pao frances");
}
if (compare2 == 0){
printf("%s", "presunto de parma");
}
}

Outros materiais