Escolar Documentos
Profissional Documentos
Cultura Documentos
O objetivo deste trabalho é introduzir os conceitos básicos essenciais para um bom hábito de
programar, utilizando como ferramenta de programação a linguagem de programação C. Criada por
Dennis M. Ritchie e Ken Thompson no laboratório Bell em 1972, baseada na linguagem B de Ken
Thompson, que era uma evolução da antiga linguagem BCPL. “B” foi nomeada como a primeira letra de
BCPL e C como a segunda.
Embora o termo linguagem estruturada em blocos não seja rigorosamente aplicável a C, ele é
normalmente referida simplesmente como linguagem estruturada. A razão pela qual C não é,
tecnicamente, uma linguagem estruturada em blocos, é que essas linguagens permitem que
procedimentos e funções sejam declarados dentro de procedimentos e funções. No entanto, como C
não permite a criação de funções dentro de funções, não pode ser chamada formalmente de uma
linguagem estruturada em blocos. (Schildt )
O tipo de um dado determina o conjunto de valores a que uma constante pertence, ou que podem ser
assumidos por uma variável, uma expressão ou gerados por uma função.
Tipo Abstrato de Dados é um modelo matemático com um conjunto de operações definidas sobre o
modelo.
Analisar um algoritmo significa predizer quais recursos o algoritmo vai demandar quando executar.
Programas são ‘traduzidos’ através de outros programas “especiais”: para a Linguagem de máquina
“binário” (compiladores e interpretadores.).
{ // início da função
} // fim da função
Figura 1.1 Função principal
As interpretações abaixo são as mesmas, porém, para uma melhor legibilidade vamos adotar a
primeira definição para a estrutura de uma função.
main ( )
{ }
main ( )
{ }
main()
{
}
Blocos de Comandos
Blocos de comandos são simplesmente grupos de comandos relacionados que são tratados como uma
unidade. Os comandos que constituem um bloco estão logicamente conectados. Um bloco começa e
termina com uma chave ( { } ). Um bloco de comando geralmente pode ser interpretado como um
programa completo, uma função completa, a parte verdadeira ou falsa de uma condição if-else ou o
conteúdo de um laço de repetição.
A FUNÇÃO main ( )
A função main() deve existir em algum lugar do programa e marca o ponto de início da execução do
programa. As chaves limitam o corpo da função.
Toda instrução deve ser encerrada por ponto e vírgula ( ; ).
Comentários
Comandos ( “ /* */ ” , “ // “ ).
Informação acrescentada ao código para facilitar sua compreensão. É ignorado pelo compilador (não
faz parte do código objeto).
Comentário de Bloco, começa com ( /* ) e terminando com ( */ ).
main ( )
{
int x = 2; // declaração de variável local a função
printf (" O número %d",x); //printf recebe a informação x e
imprime-a na tela como forma de saída.
}
Figura 1.3 Utilização da função 'printf'
OBS.: ( %d ) código de formatação utilizado pela função printf() na impressão dos dados.
main ( )
{
printf ("\r %s está a %d km de Caratinga \n \r ou a %d metros”,
“Ipatinga”, 98, 98000);
}
Figura 1.4 Utilização dos comandos '\r' e '\n'
Saída:
Ipatinga está a 98 km de Caratinga
ou a 98000 metros.
\ n : é um caractere de controle que indica uma mudança de linha.
\ r : é um caractere de controle que indica retorno do cursor ( <enter> ).
main ( )
{
printf("a letra %c",’a’ ); //a letra a será interpretada como char.
Printf (" vem antes de %c", ‘b’);
}
Figura 1.5 Outra utilização da função 'printf'
Saída:
a letra a vem antes de b
Caracteres de controle
Código Descrição
\n nova linha
\r retorno do cursor (enter)
\t tabulação(tab)
\b retrocesso(backspace)
\" aspas
\\ barra
\0 nulo
Código de formatação
Código Descrição
%c char caracter
%x hexadecimal
%d decimal
%e notação científica
%f ponto flutuante
%o octal
%s cadeia de caracteres(string)
%u decimal sem sinal
Tamanho de campos:
main ( )
{
printf (" os alunos são %2d \n", 350);
printf (" os alunos são %4d \n", 350);
printf (" os alunos são %5d \n", 350);
}
Figura 1.6 Estabelecendo espaço na função 'printf'
Saída:
os alunos são 350
os alunos são 350
os alunos são 350
3 5 0
3 5 0
3 5 0
main ( )
{
printf (" %3.1f \n", 3456.78);
printf (" %10.3f \n", 3456.78);
}
Figura 1.7 Utilização e formatação de variáveis 'float'
Saída:
3456.8
3456.780
CONSTANTES E VARIÁVEIS
Constantes
Constantes referem-se a valores fixos que o programa não pode alterar.
• “Objeto” que tem valor fixo e inalterável. Ex: ‘c’, 8, “primeiro programa”.
Variáveis
Uma variável é uma posição nomeada de memória, que é usada para guardar um valor que pode ser
modificado pelo programa.
• um “objeto” que pode assumir diferentes valores.
• espaço de memória de um certo tipo de dado associado a um nome para referenciar seu
conteúdo.
INICIALIZANDO VARIÁVEIS
• A combinação de uma declaração de variável com o operador de atribuição.
/* O programa abaixo faz a demonstração de alguns
códigos de formatação.
*/
main ( )
{
int evento = 5;
char corrida = ‘A’;
float tempo = 27.25;
printf ("O melhor tempo da eliminatória %c",corrida);
Saída:
O melhor tempo da eliminatória A
do evento 5 foi 27.25
main ( )
{
int idade; // declaração da variável.
Idade = 30; // inicializando a variável
printf (" A idade mínima é : %d", idade);
}
Figura 1.9 Inicialização de variáveis
Saída:
A idade mínima é : 30
NOMES DE VARIÁVEIS
• Quantos caracteres quiser (até 32).
• Comece com letras ou sublinhado: seguidos de letras, números ou sublinhados.
• ‘'C'’ é sensível ao caso: => peso ¹ Peso ¹ PESO ¹ pESo.
• Não podemos definir um identificador com o mesmo nome que uma palavra chave.
Ex.: int char, int while,int for, int int.
A FUNÇÃO scanf( )
A função scanf() é uma das funções de I/O ( entrada e saída) que é usada em C. Ela não faz
parte da definição da linguagem, mas todos os ambientes de programação que suportam a linguagem
de programação C tem uma versão da função scanf() definida em suas bibliotecas.
Sintaxe:
scanf( “expressão de controle ”, lista de argumentos)
expressão de controle : %
lista de argumentos : &variável
main ( )
{
int num;
printf("Digite um número\n"); //o programa escreverá na tela
scanf("%d", &num);
printf(" numero digitado foi %d ",num); // saída do programa.
}
Figura 1.10 Utilização da função 'scanf'
OBS. : Logo que o usuário atender à mensagem o número será lido pela função scanf(), sendo que o
operador & indicará o endereço de memória da variável indicada.
/* A única diferença do programa abaixo é que uma letra será lida
pelo scanf().
*/
main ( )
{
char letra;
printf(" Digite uma letra\n");
scanf ("%c", &letra);
printf(" A letra digitada foi %c",letra);
}
Figura 1.11 Leitura de caracteres pelo 'scanf'
Quando usamos & precedendo uma variável, estamos falando do endereço da mesma na memória.
main ( )
{
int num;
num = 2;
printf (" valor = %d, endereço = %u", num, &num);
// %d valor decimal e %u é um endereço de memória da
variável.
}
Figura 1.12 Utilização do operador de endereço '&'
Saída: valor = 2,
endereço = 1230
Código Descrição
%c caracter
%d inteiro
número ou notação
%e
científica
%f ponto fluturante
%o octal
%x hexadecimal
decimal sem sinal (endereço
%u
de memória)
%s string(cadeia de caracteres)
%lf double
/* O programa abaixo relaciona um caracter com o seu valor decimal da tabela ASCII,
seu valor octal e hexadecimal.
*/
main ( )
{
char a ;
printf ( “digite um caracter” );
scanf ( “ % c”, &a );
printf (“ \n %c = %d em decimal”, a, a);
printf (“%o em octal, %x em hexadecimal”, a, a);
}
Figura 1.13 Utilização dos comandos de formatação '%c' e '%x'
getchar( )
• Lê um caracter do teclado, sem a obrigatoriedade de pressionar < enter >, ou seja, após a
digitação do caracter.
putchar()
#include <stdio.h>
OPERADORES ARITMÉTICOS
• binários: = + - * / %
• unário: -
main ( )
{
int resto, divisor, dividendo;
printf(“entre com 2 números:”);
scanf(“ %d %d” , ÷ndo, &divisor);
resto = dividendo % divisor; // % resto da divisão entre dois
num.
printf(“o resto da divisão inteira de %d”, dividendo);
printf(“por %d = %d”, divisor, resto);
}
Figura 1.15 Utilização do operador aritmético mod (%)
Saída:
entre com 2 números: 10 4
o resto da divisão inteira d 10 por 4 = 2
ex.: int n;
n = 0;
n++; >> n=0, inicialmente a variável terá valor zero e depois será pós-fixada em 1.
n = 0;
++n; >> Neste caso a variável será primeiramente incrementada. É como se fosse 1 + 0 = 1,
n = 1.
main( )
{
int num = 0;
printf (" %d \n", num);
printf (" %d \n", num++);
printf (" %d \n", num);
printf (" %d \n", ++num);
}
Figura 1.16 Utilização do operador de incremento
Saída: 0 0 1 2
main ( )
{
int num = 0;
printf (" %d \n",num);
printf (" %d \n", ++num);
printf (" %d \n", num++);
printf (" %d \n",num);
}
Figura 1.17 Outra utilização do operador de incremento
Saída: 0 1 1 2
PRECEDÊNCIA
++ --
* / %
+ - (binário)
=
Ou seja:
x = 3 * a++ - b = (3 * (a++)) - b
y = 3 * --a - b = (3 * (--a)) - b
z = a * b++ = a * (b ++)
Ex.: n = 5;
printf (“ %d %d %d \n”, n, n + 1, n++);
Exemplo:
main ( )
{
int n, i = 3;
n = i * (i + 1) + (++i);
printf ("n = %d", n);
}
Figura 1.18 Utilização da função 'printf'
OBS. : i tem valor 3 que somado com 1 no primeiro parêntese será 4 e incrementado no
segundo continuará com o valor 4, logo 3*(4) + (4) = 16.
Saída: n = 16
A sintaxe:
x op = exp é equivalente a x = (x) op (exp)
Exemplo:
i += 2 >> i = i + 2;
x *= y + 1 >> x = x * (y + 1)
t /= 4 >> t = t / 4
p %= 6 >> p = p % 6
h -= 3 >> h = h - 3;
OPERADORES RELACIONAIS
Operador Descrição
> maior
>= maior ou igual
< menor
<= menor ou igual
== igualdade
!= diferença
main ( )
{
int verdadeiro, falso;
verdadeiro = (15 < 20);
falso = (15 == 20);
printf (“Verd. = %d, falso = %d”, verdadeiro, falso);
}
Figura 1.19 Utilização dos operadores relacionais ' <' e '=='
#define true = 1
#define false = 0
main ( )
{
int verdadeiro, falso;
verdadeiro = true;
falso = false;
printf (“Verd. = %d, falso = %d”, verdadeiro, falso);
}
Figura 1.20 Declaração de constantes 'true' e 'false'
Precedência
! - ++ - -
* / % Aritméticos
+ -
< > <= >= Relacionais
== != && || Lógico
= += -= *= /= %= Atribuição