As funções têm a seguinte estrutura:
tipo nome_da_funcao(parâmetros)Assim, o programa:
{
variáveis locaisinstruções em C
}
void main(void)contém apenas uma função (a função main(), que é obrigatória), que não retorna nada (void) e que não tem parâmetros (outra vez void). Como instrução da função temos apenas a chamada a printf(), uma função da biblioteca standard que escreve no vídeo. Neste caso escreve uma cadeia de caracteres (string). A combinação \n no fim da string indica uma mudança de linha (o carácter new line ou line feed). Notar que no final de cada instrução existe sempre um terminador - ;
{
printf("Eu gosto do C\n");
}
Se a chamada a printf() fosse: printf(".\n.1\n..2\n...3\n"); o que apareceria escrito no vídeo seria:
.
.1
..2
...3
Tipo de dados | Tamanho (bytes) | Limite inferior | Limite superior |
---|---|---|---|
char | 1 | -128 | 127 |
unsigned char | 1 | 0 | 255 |
short int | 2 | -32768 | 32767 |
unsigned short int | 2 | 0 | 65535 |
int | 4 | -231 | +231 - 1 |
long int | 4 | -231 | +231 - 1 |
float | 4 | -3.2×10±38 | +3.2×10±38 |
double | 8 | -1.7×10±308 | +1.7×10±308 |
Para declarar variáveis em C, de um dado tipo, usa-se a seguinte regra:
tipo_das_variáveis lista_de_variáveis ;Por exemplo:
int i, j, k;
float x, y, z;
char ch;
short number, sum;É também possível inicializar as variáveis globais no momento da declaração. Usa-se para isso o operador de atribuição = (equivalente ao := do Pascal). Por exemplo:
int bignumber, bigsum;
char letter;void main(void)
{}
float sum = 0.0;Poderíamos ter feito a mesma coisa de outra forma (mas mais ineficiente):
int bigsum = 0;
char ch = 'A';void main(void)
{}
float sum;O C também permite múltiplas atribuições (colocar o mesmo valor em várias variáveis ao mesmo tempo):
int bigsum;
char ch;void main(void)
{
sum = 0.0;
bigsum = 0;
ch = 'A';
}
a = b = c = d = 3;O C tem uma palavra chave que permite a definição de novos tipos - typedef. Esses novos tipos declaram-se utilizando a regra:
typedef tipo_já_definido novo_tipo;Um exemplo muito sismples:
typedef float real;
typedef char letter;real sum = 0.0; /* o mesmo que float */
letter ch = 'A'; /* o mesmo que char */
A modificação de formatos, pode ocorrer para especificar largura e numero de casas decimais. Assim o modificador é colocado entre o sinal % e o código do formato. Se tivermos %10f informa que o campo terá 10 posições incluindo a parte inteira o ponto e a parte decimal. Se tivermos %12.3f informa que terá 12 posições no total com 3 casas decimais.
#include <stdio.h>
void main(void)
{
double item;
item = 10.12304;
printf("%f\n", item);
printf("%5.2f\n", item);
}
Produz o resultado:
10.123040
10.12
Notas: As strings em C definem-se entre aspas ". . .", os caracteres simples aparecem entre plicas '.'; o texto normal da string de formatação aparece tal e qual no vídeo, os valores das variáveis aparecem nos locais indicados pelo carácter %; seguem-se as próprias variáveis que deverão aparecer pela mesma ordem e com os tipos indicados na string de formatação.
Um possível resultado da chamada anterior seria: Os
valores das três var veremos mais tarde porquê.
A atribuição é representada no C pelo operador =. (No C a atribuição é considerada uma operação aritmética). Exemplos: i = 4; ch = 'y';
Outros operadores aritméticos são os operadores de incremento e decremento, representados respectivamente por ++ e --. Em geral geram código mais eficiente do que a soma ou subtracção de 1 unidade. Assim a atribuição x = x + 1; pode ser substituída simplesmente por x++; Os operadores ++ e -- podem ser pósfixos (colocam-se após a variável a incrementar ou decrementar) ou podem ser préfixos (colocando-se antes da variável a incrementar ou decrementar. Quando o operador é pósfixo a expressão x++ tem como valor o conteúdo de x antes deste ser incrementado, enquanto que com o operador préfixo a expressão ++x representa já o valor de x depois de incrementado (em ambos os casos x é incrementado, o que muda é o valor que a combinação x++ ou ++x representa como conjunto). Vejamos o exemplo:
int x, y, w;Este programa seria equivalente a:void main(void)
{
x = ((++z) - (w--)) % 100;
}
int x, y, w;Um outro operador aritmético do C é o operador módulo - %. Este operador é equivalente ao operador mod do Pascal e tem como resultado o resto da divisão inteira. Só pode ser utilizado com valores inteiros. (Ver os exemplos anteriores).void main(void)
{
z = z + 1;
x = (z - w) % 100;
w = w - 1;
}
O operador de divisão /, pode ser usado com inteiros e reais. No entando, se ambos os operandos forem inteiros o resultado é a divisão inteira. Assim a atribuição x = 3 / 2; coloca em x o valor 1, mesmo que x seja float ou double. Se quisermos colocar em x o resultado correcto da divisão real (se x for float ou double) deveremos escrever x = 3.0 / 2; ou x = 3 / 2.0; ou melhor ainda x = 3.0 / 2.0; (sem conversões de um inteiro para real).
O C suporta também alguns modos expeditos
de escrever atribuições. É comum termos de escrever
nos programas expressões como i = i + 3;
ou x = x * (y + 2); Expressões deste tipo
podem ser abreviadas para qualquer coisa como variável
op= expressão;
e que é equivalente a variável
=
variável op (expressão);
Assim podemos reescrever as duas expressões anteriores como
i += 3; e x *= y + 2; Note-se que esta
última expressão vale sempre x = x * (y + 2);
e nunca x = x * y + 2;
O operador de teste de desigualdade é
em C !=. Os outros quatro operadores de comparação são
iguais ao Pascal: <, <=, > e >=.
Na tabela seguinte podem ver-se todos os operadores
do C pela ordem decrescente do nível de prioridade, e também
a sua associatividade.
Operadores | Associatividade |
---|---|
() [] -> . | esquerda para a direita |
! - ++ -- * & (cast) sizeof | direita para a esquerda |
* / % | esquerda para a direita |
+ - | esquerda para a direita |
<< >> | esquerda para a direita |
< <= > >= | esquerda para a direita |
== != | esquerda para a direita |
& | esquerda para a direita |
^ | esquerda para a direita |
| | esquerda para a direita |
&& | esquerda para a direita |
|| | esquerda para a direita |
?: | direita para a esquerda |
= += -= *= /= %= &= ^= |= <<= >>= | direita para a esquerda |
, | esquerda para a direita |
1. A partir de n numeros lidos escrever como resultado a soma destes n números, a média e a soma dos quadrados destes n números lidos. O primeiro numeroi a ser lido será o "n" para que o programa saiba quantos números vai ler em seguida..
2. Leia 10 valores e escreva o mínimo e o máximo entre estes valores lidos.
3. Leia um valor real, representando graus
Celsius e escreva o seu equivalente em Fahrenheit na seguinte forma:
100.0 graus Celsius equivalem a 212.0 graus Fahrenheit
0.0 graus Celsius equivalem a 32.0 graus
Fahrenheit
Assim Tc/100 = (Tf-32)/180 ou TF = (180Tc/100)+32
4. Leia um valor real representando o raio
de um círculo e escreva a sua área, na forma:
A área de um círculo de raio ... vale ...
No caso do usuário fornecer
um valor negativo deverá escrever:
Erro: O raio deve ser > 0.
5. Dado um valor representando um número
de segundos convertê-los para horas, minutos e segundos na forma:
7322 segundos são 2 horas 2 minutos e 2 segundos
6. Ler uma hora e uma duração
(números inteiros), na forma horas-minutos (ou seja o valor 1230
representa 12 h 30 m) e produzir a soma no mesmo formato:
Hora inicial: 1415
Duração: 50
Hora final: 1505
Cuidado com casos como o seguinte:
Hora inicial: 2300
Duração: 200
Hora final: 100
Aluno
Alan Domingues Altair Auricelia Carlos Garcia Cristiano Ribeiro Edson Takahashi Elenice M Marcondes Gerson Mota Jefferson Jose Luiz da Silva Luis Gustavo Paulo Campoy Raul Reinaldo Ribeiro Rodolfo Rodrigo Tavares Sidney dos Santos Taila Teresa Mendes Tiago Caldas
|
Exercicio 3 (Celsius-Fahr)
calgrau temperatura.c CelsustoFire Celsius Fahrenhe Celsius exerc_3 celsius Celsius Graus Converte Graus Ex3 Celsius P3 convert celsius Calc_grau Temper celsius-fahr convert
|
Exercicio 5 (Seg->HMS) calsegungo horac segtohoraminseg segundos -------- Horas exerc_5 conv_num -------- Segundos -------- Ex5 Tempo P5 convseg ------- Calc_seg Tempo segparahor Hms
|
Exercicio 6 (Hora+Duracao)
calduracao valorc somavalordura somaformato Tempo Soma_hor exerc_6 duracao hora final Playtime Hora ???????? Ex6 ---------- P6 ----------- duracao -------- -------- exec6lis Dura
|
[Rev. 8/98]