Escolar Documentos
Profissional Documentos
Cultura Documentos
1
1
SUMÁRIO
• Estrutura de um programa em C
– Função main ().
– Estrutura de um programa.
• Função printf()
2
2
ESTRUTURA DE UM PROGRAMA EM C
3
3
ESTRUTURA DE UM PROGRAMA EM C
• O código a executar pela função main() é escrito entre {}.
A linha #include<stdio.h> significa “adiciona o
ficheiro stdio.h ao meu programa”.
Como não é uma instrução de C não é seguida de ;.
Estes ficheiros têm sempre a extensão .h pois não
têm código mas apenas os cabeçalhos (header) das
funções que representam.
O ficheiro stdio.h permite o acesso a todas as
funções de input e output normais.
stdio quer dizer standard input/output
• Uma das funções que permite a escrita no ecrã e a função printf = print +
formatado.
4
4
CARÁCTER ESPECIAL \
5
5
CARACTERE ESPECIAL \
6
6
COMENTÁRIOS
Comentários – notas que o programador utiliza para melhor compreender o
programa. O conjunto de caracteres compreendidos entre os sinais /* e */
não têm qualquer interferência do programa.
7
7
EXERCÍCIOS
1.Escreva um programa que apresente o seguinte output:
2.Escreva um programa que apresente uma linha com a string “Aqui vai um
apito”, ouvindo-se no final um sinal sonoro.
8
8
EXERCÍCIOS - RESOLUÇÃO
1.Escreva um programa que
apresente o seguinte output:
9
9
EXERCÍCIOS
10
10
SUMÁRIO
• Dados em C/C++
– Variáveis e constantes
– Declaração de variáveis
– Tipos de dados: inteiros
• Função scanf()
11
11
EXERCÍCIOS
12
12
VARIÁVEIS
• Sempre que desejarmos guardar um valor, que por qualquer razão não
tenha um valor fixo, devemos fazê-lo utilizando variáveis.
Uma VARIÁVEL é o nome que atribuímos a uma
determinada posição de memória para conter um
valor de determinado tipo.
• As variáveis são definidas antes de serem utilizadas.
13
13
VARIÁVEIS
• As variáveis são sempre armazenadas em memória, e são uma forma
simples de referenciar posições de memória. O tipo que lhes está associado
indica o número de bytes que irão ser utilizados para guardar o valor nessa
variável.
14
14
VARIÁVEIS
Nome de uma variável
– Caso o nome de uma variável use mais do que uma palavras, utilize o
carácter underscore ou a diferença entre minúscula e maiúscula para as
separar facilitando a leitura.
15
15
ATRIBUIÇÃO
Sempre que uma variável é declarada, estamos a solicitar ao compilador para
reservar espaço em memória para a armazenar. Esse espaço passará a ser
referenciado através do nome da variável.
16
16
ATRIBUIÇÃO
17
17
TIPOS DE DADOS BÁSICOS | Inteiros - int
• Números naturais positivos e negativos sem parte fracionária
(Ex: 2, -36, 45)
• Exemplo da declaração:
– int num;
18
18
TIPOS DE DADOS BÁSICOS | Inteiros - int
NOTA: Qualquer operação com inteiros, devolve um valor inteiro
19
19
TIPOS DE DADOS BÁSICOS | Inteiros - int
O formato de escrita de um inteiro na função printf é %d
20
20
TIPOS DE DADOS BÁSICOS | Inteiros - int
2.O primeiro parâmetro desta função é uma string com os formatos de leitura
Como só queremos ler uma variável, conterá apenas um formato de leitura
scanf(“%d”)
Em seguida, temos que indicar qual a variável que irá receber o valor inteiro
a ler. Esta variável, como é do tipo inteiro, tem que levar um & antes do seu
nome
scanf(“%d”,&num);
22
22
TIPOS DE DADOS BÁSICOS | Inteiros - int
E assim se obtém a linha 8, que permite realizar a leitura de um inteiro e
armazená-lo numa variável.
O inteiro depois de lido é guardado numa variável num e o seu valor é em
seguida escrito no ecrã através da função printf.
23
23
EXERCÍCIOS
1. O que faz os seguinte programa?
24
24
EXERCÍCIOS - RESOLUÇÃO
1. O que faz os seguinte programa?
25
25
EXERCÍCIOS
26
26
SUMÁRIO
• Dados em C/C++
– Tipos de dados: inteiros
• Função scanf()
27
27
TIPOS DE DADOS BÁSICOS | Inteiros e variações
• O tamanho em Bytes de um inteiro varia de arquitetura para arquitetura:
2, 4 ou 8 bytes.
28
28
TIPOS DE DADOS BÁSICOS | Inteiros e variações
• Como podemos garantir que um programa escrito por nós, usa sempre 2
ou 4 bytes para armazenar um inteiro, se o tamanho de um inteiro varia
de máquina para máquina?
29
29
TIPOS DE DADOS BÁSICOS | Inteiros e variações
short e long
Para garantirmos que o inteiro n usa apenas 2 bytes de memória,
independentemente da arquitetura utilizada devemos declarar as variáveis
como
30
30
TIPOS DE DADOS BÁSICOS | Inteiros e variações
O prefixo short garante o tamanho mínimo do inteiro e o prefixo long garante
o tamanho máximo, independente da dimensão do inteiro utilizada.
Assim:
short int int long int
2 2 4
2 4 4
NOTA: O formato de leitura e escrita de variáveis inteiros short e long nas funções scanf e printf deve ser
precedida dos prefixo h (short) e l (long)
31
31
TIPOS DE DADOS BÁSICOS | Inteiros e variações
signed e unsigned
Por defeito uma variável do tipo inteiro admite valores inteiros positivos e
negativos. Caso se deseje que a variável contenha apenas valores positivos,
deverá ser declarada com o prefixo unsigned.
NOTA: O prefixo signed, antes de um inteiro, não é necessário pois por defeito todo os inteiros quando
são criados são sinalizados (signed).
NOTA: O formato de leitura e escrita de variáveis inteiras sem sinal (unsigned int), utilizando as funções
scanf e printf é %u em vez de %d.
32
32
TIPOS DE DADOS BÁSICOS | Inteiros e variações
33
33
EXERCÍCIOS
34
34
SUMÁRIO
• Dados em C/C++
– Tipos de dados: float e double.
35
35
TIPOS DE DADOS BÁSICOS|Reais- float e double
• As variáveis declaradas do tipo float ou double são utilizadas para
armazenar valores numéricos com parte fracionária. São também
frequentemente denominadas reais ou de vírgula flutuante. (Ex: 3.14)
• A diferença entre uma variável do tipo float e uma outra do tipo double é
o número de bytes que reserva para armazenar o valor.
– float – 4 bytes
– double – 8 bytes
36
36
TIPOS DE DADOS BÁSICOS| Reais- float e double
• Um float é representado por uma parte inteira e por outra decimal,
separadas por um ponto
– E não por uma vírgula – como é habitual nós usarmos no dia a dia.
37
37
TIPOS DE DADOS BÁSICOS|Reais- float e double
O formato de escrita e leitura para números reais é %f
1. Escreva um programa que calcule o perímetro e a área de uma
circunferência.
38
38
TIPOS DE DADOS BÁSICOS|Reais- float e double
2. Escreva um programa que realize a conversão de toneladas para quilos e
gramas, escrevendo o resultado em notação tradicional (aaaa.b) e
científica (aaa E±bb).
39
39
TIPOS DE DADOS BÁSICOS|Reais- float e double
A notação científica é uma forma de escrever números usando potência de
10. Um número em notação científica apresenta o seguinte formato: N . 10n
Sendo,
n um número inteiro.
Exemplo:
0, 000000000016 = 1,6 . 10 - 11
40
40
TIPOS DE DADOS BÁSICOS|Reais- float e double
NOTA: Os valores quando são armazenados em números de vírgula flutuante
podem comportar algum erro mínimo, resultante de arredondamentos ou do
formato interno de representação do mesmo.
41
41
TIPOS DE DADOS BÁSICOS|Reais- float e double
• Operações sobre reais
Operação Descrição Exemplo Resultado
+ Soma 21.3 + 4.1 25.4
- Subtração 21.7 – 4.8 16.9
* Multiplicação 21.2 * 4.7 99.64
/ Divisão Real 21.0 / 4.0 5.25
% Não faz sentido aplicar a reais n.a. n.a.
42
42
TIPOS DE DADOS BÁSICOS|Reais- float e double
NOTA: Qualquer operação em que pelos menos um dos operandos seja real,
produz um resultado do tipo real. Se algum dos operandos for, por exemplo,
inteiro e outro real, o inteiro é promovido ao tipo real (4 4.0), para que se
possa realizar a operação entre os dois reais.
43
43
EXERCÍCIOS
44
44
SUMÁRIO
• Dados em C/C++
– Tipos de dados: char.
• Função getchar() vs scanf()
45
45
TIPOS DE DADOS BÁSICOS|char
O tipo char permite armazenar UM ÚNICO CARÁCTER.
NOTA: Um char é sempre armazenado num
byte.
46
46
TIPOS DE DADOS BÁSICOS|char
A declaração de uma variável do tipo char segue a sintaxe
char var1, ch, var2;
47
47
TIPOS DE DADOS BÁSICOS|char
O formato de escrita e leitura para caracteres é %c
Hello World
48
48
TIPOS DE DADOS BÁSICOS|char
Repare-se que cada um dos %c é substituído pelo caracter correspondente,
escrevendo no final a frase Hello World.
49
49
TIPOS DE DADOS BÁSICOS|char
1. Escreva um programa no ecrã que leia um caracter e a seguir o escreva
no ecrã.
50
50
TIPOS DE DADOS BÁSICOS|char
A leitura de caracteres pode ser realizada sem ter que recorrer à função
scanf. Pode-se utilizar uma outra função desenhada unicamente para a leitura
de um carácter – a função getchar().
51
51
TIPOS DE DADOS BÁSICOS|char
O programa anterior poderia ser escrito da seguinte forma:
52
52
TIPOS DE DADOS BÁSICOS|char
getchar() vs scanf()
53
53
TIPOS DE DADOS BÁSICOS|char
1. Escreva um programa que solicite, um carácter ao utilizador e em seguida
solicite outro. Depois de introduzidos ambos os caracteres deverá
apresentar no ecrã ambos.
54
54
TIPOS DE DADOS BÁSICOS|char
OUTPUT
Introduza um carácter: a
Introduza um carácter: a
55
55
SUMÁRIO
• Caracteres e inteiros
56
56
TIPOS DE DADOS BÁSICOS|catacteres e inteiros
Os caracteres em C não são mais que valor inteiros guardados num único
byte. Desta forma, todas as operações anteriormente realizadas sobre os
inteiros também são aplicadas ao tipo char.
57
57
TIPOS DE DADOS BÁSICOS|catacteres e inteiros
58
58
TIPOS DE DADOS BÁSICOS|catacteres e inteiros
Repare-se que declaramos uma única variável do tipo char.
Fazemos a sua leitura através da função scanf (podia-se ter feito ch = getchar();)
Em seguida vamos escrever o carácter lido (%c) e também o seu código ASCII,
que é armazenado internamente como se de um inteiro se tratasse, embora
ocupe só um Byte.
59
59
TIPOS DE DADOS BÁSICOS|catacteres e inteiros
Como se pode observar, o valor contido na variável ch, é escrito um vez com o
formato %c mostrando o desenho do carácter e na outra vez com o formato
inteiro %d mostrando o inteiro armazenado na variável ch (o seu código
ASCII).
Embora este programa funcione bem, não está corretamente escrito, pois o
printf está a espera de dois valores,
um valor do tipo char para colocar em %c e outro do tipo int para colocar em
%d
60
60
(Casting)
NOTA: Sempre que temos numa variável ou expressão um valor de um determinado tipo e queremos
modificar o tipo desse valor, promovendo-o a tipo maior ou despromovendo-o a um tipo mais baixo,
podemos indicar qual o tipo a queremos “promover” esse valor colocando o tipo pretendido entre
parêntesis antes do valor.
No exemplo anterior, o que nós queríamos era que o 2.º parâmetro passado
à função printf fosse do tipo int e não do tipo char. Para tal, devemos enviar
não um carácter, mas antes o seu valor armazenado num inteiro, colocando
antes da variável o prefixo (int), promovendo o valor da variável
temporariamente a inteiro antes de ser enviado para o printf.
61
61
TIPOS DE DADOS BÁSICOS|catacteres e inteiros
EXEMPLO: Escreva um programa que solicite um inteiro (entre 0 e 255) ao
utilizador e mostre o inteiro seguinte e o carácter correspondente.
62
62
TIPOS DE DADOS BÁSICOS|catacteres e variações
Tal como o tipo int, também o tipo char permite uma pequena variante na
declaração de uma variável deste tipo.
Como foi referido, um carácter ocupa 1 byte e não é mais do que um pequeno
inteiro guardado num único byte que representa o código ASCII de um
carácter.
Tal como o inteiro, um carácter também pode ser declarado com sinal
(signed) ou sem sinal (unsigned).
63
63
FORMATOS DE LEITURA E ESCRITA (RESUMO)
64
64
EXERCÍCIOS
65
65
SUMÁRIO
• Constantes
• Cadeia de caracteres (string)
66
66
CONSTANTES
Uma constante é um objecto que se mantém inalterado durante a execução
de um programa.
67
67
CONSTANTES
68
68
CADEIA DE CARACTERES (STRING)
Uma string é uma cadeia de caracteres armazenados num vetor.
Em C, as strings são representadas utilizando aspas (‚) enquanto os
caracteres são representados entre plicas (‘).
Exemplos de strings:
‚Luís‛
‚Bolo de chocolate com 1.2 Kg de peso‛
‚A‛
Exemplos de caracteres:
‘L’
NOTA: ‘A’ é o caracter A (1 byte). A string “A” é um vector de caracteres
‘>’ que internamente ocupa, não 1 mas 2 bytes, e cujo o primeiro
‘A’ elemento é o caracter ‘A’.
69
69
CADEIA DE CARACTERES (STRING)
Como em C as strings não são um tipo básico, a única forma de representar um conjunto de
caracteres é recorrendo a um vector (de caracteres).
Este é um caracter de controlo (ou seja, não exibível) que indica o fim de uma
cadeia de caracteres. Assim, um conjunto de n elementos será, na realidade,
um vetor de n + 1 elementos do tipo char.
70
70
CADEIA DE CARACTERES (STRING)
Leitura e escrita de strings
Função printf
A função printf recebe como formato uma string, que pode ser escrita
diretamente.
printf("Hello World\n");
No entanto, uma string pode ser escrita tal como qualquer outra variável,
utilizando um formato próprio %s dentro da função printf.
71
71
CADEIA DE CARACTERES (STRING)
char NomeProprio[100]="Carla Marina";
char Apelido[50]="Silva";
72
72
CADEIA DE CARACTERES (STRING)
Função scanf
A função scanf permite realizar a leitura de strings utilizando o formato %s.
No entanto, a variável que recebe a string NÃO É PRECEDIDA de um &, ao
contrário do que acontece com todos os outros tipos de variáveis que são
enviadas para o scanf.
73
73
CADEIA DE CARACTERES (STRING)
A função scanf lê todos os caracteres até encontrar um <ESPAÇO>, <TAB>, ou
<ENTER>. Quando isso acontece, termina a leitura e coloca todos os
caracteres lidos até essa altura na variável que lhe foi passada. Em seguida
coloca o caracter terminador.
74
74
CADEIA DE CARACTERES (STRING)
Função gets
A função gets permite colocar, na variável que recebe por parâmetro, todos
os caracteres introduzidos pelo utilizador. Ao contrário do scanf, esta função
não está limitada à leitura de uma única palavra.
75
75