Académique Documents
Professionnel Documents
Culture Documents
Introdução à
linguagem C
2
Introdução à Programação C
Introdução
Exemplo de um Programa
// Exemplo de programa em C
// Isto é uma linha de comentário
main()
{
int a; // declara a variável "a"
a = 3 + 2; // soma 3 com 2
}
Identificadores
Exemplos:
Variáveis
Uma variável é uma posição de memória que pode ser identificada através de um nome.
3
Após a atribuição mudam de valor.
Tipos de Variáveis
Declaração de Variáveis
// Exemplo de programa em C
4
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.
Exemplos
5
Strings
Uma String é uma seqüência de caracteres entre aspas duplas: "exemplo de uma string
em C".
A função printf
A função printf exibe um ou mais dados na tela. Para tanto ele deve receber pelo
menos dois parâmetros, separados por vírgula:
um string 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. Este dado pode ser qualquer um dos dados visto anteriormente.
Por exemplo:
printf("%s","teste");
A string de formato define quais os tipos dos dados a serem impressos. 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.
Se for necessário, um 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.
Neste caso, os dados devem vir após a string de formato separados por vírgulas.
Por exemplo:
Isto irá imprimir o string teste1 deixar 1 espaço em branco e imprimir ao lado o
string outra string, assim :
6
}
Exercício
É possível incluir um texto dentro da string de formato. Este texto irá aparecer
exatamente como for digitado no programa-fonte.
O exemplo
printf("A aluna %s ficou doente","Maria");
geraria
como resultado.
Contador = 10;
printf("Valor da Variável: %d\n", Contador); // No momento da
execução sinal %d vai
// ser substituído pelo
7
valor da
// variável Contador
NroDeFilhos = 3;
printf("Maria tem %d filhos", NroDeFilhos); // o inteiro pode
ficar no meio da string
getch(); // espera que o usuário pressione uma tecla
}
NroDeAndares = 7;
AlturaPorAndar = 3;
No exemplo acima o resultado da média (7.4) foi impresso com 6 casas decimais
(7.400000).
8
Isto sempre acontece quando se manda imprimir um float da forma como foi feito no
exemplo acima. Isto acontece pois o padrão da função printf é completar o número com
zeros à direita, até que fique com seis casas decimais.
Por exemplo: %6.3f especifica que se quer imprimir um float com 3 casas decimais
e com um tamanho total de 6 caracteres no total.
#include <stdio.h>
#include <conio.h>
main()
{
float NotaDaP1, NotaDaP2;
float Media;
Por exemplo:
#include <stdio.h>
#include <conio.h>
main()
{
float Numero;
9
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);
getch();
}
// Resultados
1234567890
-2.500000
-2
-2.500
-2.500
-2.500
-2.5000
-2.5
-2.500000000000
printf("%-7.3f\n", Numero);
Uma variável capaz de arrmazenar uma string deve ser declarada informando-se qual o
número máximo de caracteres que ela poderá armazenar.
Exemplo:
10
#include <stdio.h>
#include <conio.h>
#include <string.h> // arquivo de cabeçalho para trabalhar com
strings
main()
{
char Nome[30]; // declara uma string que poderá armazenar até 29
caracteres !!
clsrscr();
strcpy(Nome, "Jose da Silva"); // atribui "Jose da Silva" para a
variável Nome
printf("O funcionário %s foi tranferido", Nome); // no lugar de %s
aparecerá o
// conteúdo da
variável Nome
getch();
}
Operadores Aritméticos
- sinal de menos (unário) Maior precedência (avaliado antes)
* , / multiplicação e divisão
% módulo (reto da divisão)
+ , - soma e subtração Menor precedência (avaliado depois)
Exercício
Crie um progama que organize os dados em uma tabela conforme o exemplo a seguir.
Os dados das células em amarelo deve ser informados através de atribuições dentro do
programa.
ao invés de
11
Condições ou Expressões Lógicas
A condição na linguagem C é definida como uma expressão que pode ser verdadeira ou falsa.
Por exemplo, (3 > 2) é uma expressão lógica que possui valor verdadeiro. Por outro lado,
(4 < 1) é uma expressão lógica que possui valor falso.
Os operadores (< e >) usados nos exemplos acima são chamados de operadores relacionais
pois possibilitam saber qual a relação existente entre seus dois operandos. Além destes dois
existem mais 4 operadores relacionais, que podem ser vistos na tabela seguir:
Operadores Relacionais
== Igual a
!= Diferente
>= Maior ou igual
> Maior que
< Menor que
<= Maior ou igual
Operadores Lógicos
|| OU lógico
&& E lógico
! Negação
Estes operadores OU e E devem ser sempre usados entre duas expressões relacionais, como
por exemplo:
O operador de Negação deve ser usado antes de uma expressão relacional, como por
exemplo:
Precedência de Operadores
! Operador de negação Executado
- menos unário (sinal) Antes
* / % Operadores Multiplicativos
12
+ - Operadores aditivos
< > <= >= == Relacionais
!=
&& AND lógico Executado
|| OR lógico Depois
Comando IF
Formato 1:
if (expr_log)
comando1; // executado se "expr_log" for verdadeira
comando2; // executado sempre independente da condição
Formato 2:
if (expr_log)
comando1; // executado se "expr_log" for verdadeira
else comando2; // executado se "expr_log" for falsa
comando3; // executado sempre, independente
// do resultado do teste
Formato 3:
if (expr_log)
{
comando1; // executados se "expr_log" for verdadeira
comando2;
comando3;
}
else
{
comando4; // executado se "expr_log" for falsa
comando5;
comando6;
}
comando7; // executado sempre independente da condição
comando8; // executado sempre independente da condição
13
Aninhamento de Ifs
if (expr_log)
if (expr_log2)
comando2; // executado se "expr_log" e
// "expr_log2" forem AMBAS verdadeiras
comando3; // executado sempre
if (expr_log)
if (expr_log2)
comando2; // executado se "expr_log" e
// "expr_log2" forem AMBAS verdadeiras
else comando3; // executado se "expr_log" for VERD
// e se "expr_log2" for FALSA
comando4; // executado sempre
if (expr_log)
{
if (expr_log2)
comando2;
}
else comando3; // executado se "expr_log" for FALSO
// pertence ao primeiro IF
comando4; // executado sempre
Exemplo 4:
if (expr_log)
{
comando1; // executado se expr_log for VERDADEIRA
comando11;
if (expr_log2)
{
comando2; // executado se expr_log e expr_log2
comando21; // forem ambas VERDADEIRAS
}
else
{
comando3; // executado se expr_log for VERDADEIRA
comando31; // e expr_log2 for FALSA
}
comando4; // executado se expr_log for VERDADEIRA
}
else
{
14
comando5; // executado se expr_log for FALSA
comando51;
if (expr_log3)
{
comando6; // executado se expr_log for FALSA
comando61; // e expr_log3 for VERDADEIRA
}
else
{
comando7; // executado se expr_log for FALSA
comando71; // e expr_log3 for FALSA
}
comando8; // executado sempre que expr_log for FALSA
}
comando9; // executado sempre
Comando SWITCH
int op;
case VALOR1:
comando1; // executa estes comandos se
comando11; // op for igual a VALOR1
comando111;
break;
case VALOR2:
comando2; // executa estes comandos se
comando22; // op for igual a VALOR2
comando222;
break;
default:
comando3; // executa estes comandos se
comando33; // op for diferente de VALOR1 e
comando333; // de VALOR2
Observações
15
Atribuição Condicional
a = (a>5)? 10 : 50;
if(a>5)
a = 10;
else a = 50;
16
Comando while
O comando while permite que um certo trecho de programa seja executado ENQUANTO uma
certa condição for verdadeira. A forma do comando while é a seguinte:
while (condição)
{
// comandos a serem repetidos
// comandos a serem repetidos
}
// comandos após o 'while'
Quando o programa chega na linha que contém o teste do comando while, ele verifica se a
expressão de teste é verdadeira. Se for, o programa executa o comando uma vez e torna a testar
a expressão, até que a expressão seja falsa. Somente quando isso ocorrer, o controle do
programa passa para a linha seguinte ao laço.
Se, na primeira vez que o programa testar a expressão, ela for falsa, o controle do programa
passa para a linha seguinte ao laço, sem executar o comando nenhuma vez.
O corpo de um laço while pode ter um único comando terminado por ponto-e-vírgula,vários
comandos entre chaves ou ainda nenhuma instrução, mantendo o ponto-e-vírgula.
1. Testa a condição;
2. Se a condição for falsa então pula todos os comandos do bloco subordinado ao while e
passa a executar os comandos após o bloco do while.
3. Se condição for verdadeira então executa cada um dos comandos do bloco
subordinado ao while.
4. Após executar o último comando do bloco do while volta ao passo 1.
17
Exemplos
main()
{
int contador;
char continua;
contador = 0;
continua = 's';
while (continua == 's') // enquanto for igual a 's'
{
// comandos a serem repetidos
printf("Repentindo....\n");
contador = contador + 1;
printf("Tecle 's' se deseja continuar\n");
continua = getch();
}
if (contador == 0)
printf("O bloco NAO foi repetido.");
else printf("O bloco foi repetido %d vezes", contador);
getch();
float media;
soma = 0;
quantidade = 0;
idade = 0;
if (idade >=0)
{
soma = soma + idade;
quantidade = quantidade + 1;
}
}
18
if (quantidade >0)
{
media = (float) soma / quantidade;
printf("A media de idade das %d pessoas eh: %5.2f", quantidade,
media);
}
else printf("Nenhum dado foi informado.");
Observação:
Tenha atenção especial com o teste do comando while. As variáveis usadas no teste devem ter
sido inicializadas antes do teste.
19
Comando do-while
O comando do-while permite que um certo trecho de programa seja executado ENQUANTO
uma certa condição for verdadeira. A forma do comando do-while é a seguinte:
do
{
// comandos a serem repetidos
// comandos a serem repetidos
} while (condição);
O laço do-while é bastante parecido com o laço while. A diferença é que no laço do-while o
teste da condição é executado somente depois do laço ser processado. Isso garante que o laço
será executado pelo menos uma vez.
que não soubermos exatamente quantas vezes o laço deve ser repetido;
o teste deva ser feito depois da execução de um bloco de comandos;
o bloco de comandos deve se executado pelo menos 1 vez;
Exemplos
20
// depois
do
{
// comandos a serem repetidos
printf("Repentindo....\n");
contador = contador + 1;
printf("Tecle 's' se deseja continuar\n");
continua = getch();
} while (continua == 's')
printf("O bloco foi repetido %d vezes", contador);
do {
printf("Idade da pessoa %d. (tecle -1 se quiser encerrar).\n",
quantidade+1);
scanf("%d", &idade);
if (idade >=0)
{
soma = soma + idade;
quantidade = quantidade + 1;
}
} while (idade != -1);
21
Comando for
O comando for permite que um certo trecho de programa seja executado um determinado
número de vezes.
A forma do comando for é a seguinte:
Observe a estrutura:
O funcionamento é o seguinte:
22
Exemplos
int contador;
int contador;
Observações:
Comandos de Desvios
Os laços em C possuem dois comandos de desvios: break e continue. Estes comandos
funcionam com todos os comandos de repetição.
#include <stdio.h>
#include <conio.h>
main()
{
int contador, numero;
for (contador = 1; contador <= 3; contador =
contador+1)
{
scanf("%d",&numero);
if (numero < 0)
break; // encerra o laço neste ponto !!!
23
}
printf ("Foram digitados %d numeros validos",
contador-1);
getch();
}
#include <stdio.h>
#include <conio.h>
main()
{
int contador, numero;
if ((contador % 2) == 0)
{
printf("Terminado antes do tempo....\n");
continue;
}
printf ("Final do Laco. Passo %d\n", contador);
}
getch();
}
RESULTADO:
24
Bibliografia
SCHILDT, Herbert. C Completo e Total. Makron Books, São Paulo, 1996. WIENER, Richard.
25