Você está na página 1de 12

Módulo 01: Introdução

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 )

Módulo 01: Introdução

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.

Uma linguagem de programação representa um computador abstrato capaz de interpretar os termos


utilizados nesta linguagem, os quais podem englobar um certo nível de abstração em relação aos
objetos utilizados pela máquina física (Niklaus Wirth).

Tipo Abstrato de Dados é um modelo matemático com um conjunto de operações definidas sobre o
modelo.

Algoritmo é um procedimento para resolver um problema matemático em um número finito de passos,


que freqüentemente envolve repetição de operações. Um algoritmo é um procedimento computacional
bem definido que toma alguns valores como entrada e produz alguns valores como saída.

Programar é estruturar dados e construir algoritmos.

Analisar um algoritmo significa predizer quais recursos o algoritmo vai demandar quando executar.

Programa: Forma de comunicação entre o programador e o computador.

Programas são ‘traduzidos’ através de outros programas “especiais”: para a Linguagem de máquina
“binário” (compiladores e interpretadores.).

Módulo 01: Estrutura Básica de um Programa em C

Consiste em uma coleção de funções;


Forma geral:
main ( ) // primeira função a ser executada

{ // 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()
{
}

Figura 1.2 Estrutura da função principal

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 ( */ ).

Comentários de linha, começa com ( // ) terminando no final da linha.


A FUNÇÃO printf ( )
A função printf() é 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 printf() definida em suas bibliotecas.
Função de E/S ( definida no cabeçalho padrão de entrada e saída stdio.h ).
Uma função pode receber uma informação (argumento).
Sintaxe:

printf (“expressão de controle”, lista de argumentos).

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.

Outras utilizações de printf

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

EXPLORANDO A FUNÇÃO printf

Tamanho de campos:

É possível estabelecer o tamanho mínimo para a impressão de um campo:

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);

printf ("\n do evento %d foi % f", evento, tempo);


}
Figura 1.8 Utilização de códigos de formatação

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.

Declaração de variáveis em um programa na sua forma mais simples:


• tipo nome-da-variável;
• tipo nome1, nome2, ... nomeN;
O Tipo é uma instrução utilizada para reservar uma quantidade de memória para um certo tipo
de dado, indicando o nome pelo qual a área será referenciada (int, char, float...).

Módulo 01: Tipos Básicos

• Determina um conjunto de valores e as possíveis operações realizadas sobre os mesmos.


• Informa a quantidade de memória (bytes).

tipo byte escala


char 1 -128 a 127
int 2 -32.768 a 32.767
float 4 3.4e-38 a 3.4e+38
double 8 1.7e-308 a 1.7e+308
void 0 sem valor
Modificadores de tipo
long int ( 4 bytes)
Unsigned char ( 0 a 255 )
Unsigned int ( 0 a 65.535 )

Obs.: int tem sempre o tamanho da palavra da máquina.

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.

• Função de E / S ( Biblioteca : stdio.h )


• Complemento de printf( )

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'

Módulo 01: Operadores


O OPERADOR DE ENDEREÇO (&)

• O nome da variável é associado a um endereço de memória pelo computador.


• Toda variável ocupa uma área de memória e seu endereço é identificado pelo primeiro byte
por ela ocupado com o deslocamento do tamanho da variável.

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 DE FORMATAÇÃO scanf( )

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'

Digitando m: m = 109 em decimal, 155 em octal, 6d em hexadecimal


LENDO E ESCREVENDO CARACTERES

getchar( )

• Lê um caracter do teclado, sem a obrigatoriedade de pressionar < enter >, ou seja, após a
digitação do caracter.

putchar()

• Escreve um caracter na tela a partir da posição atual do cursor.

#include <stdio.h>

/* Função usando getchar e putchar */

void main ( void )


{
char ch;
printf(" Digite um caracter: " ) ;
ch = getchar( ); // o caracter está sendo lido do teclado.

putchar(ch); // impressão do caracter na tela.


}
Figura 1.14 Utilização das funções getchar e putchar

OPERADORES ARITMÉTICOS

• binários: = + - * / %
• unário: -

main ( )
{
int resto, divisor, dividendo;
printf(“entre com 2 números:”);
scanf(“ %d %d” , &dividendo, &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

• O % como resto da divisão só aceita números inteiros.

OPERADORES DE INCREMENTO E DECREMENTO

Incrementam / decrementam uma unidade de seu operando.

• pré – fixado (--x)


• pós -fixado (x++)

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 ++)

Obs.: ++, – só podem ser usados com variáveis inteiras.

CUIDADO COM printf( )

Ex.: n = 5;
printf (“ %d %d %d \n”, n, n + 1, n++);

saída: 5 6 5 (avaliação feita à esquerda)

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

OPERADORES ARITMÉTICOS DE ATRIBUIÇÃO

• +=, -=, *=, /=, %=.


• Atribuir um novo valor à variável dependendo do operador e da expressão a direita.

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

• Usados para comparações

Operador Descrição
> maior
>= maior ou igual
< menor
<= menor ou igual
== igualdade
!= diferença

• Em C não existe o tipo "booleano".


• 0 >> falso.
• Valor diferente de zero (0) é verdadeiro.

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 '=='

Saída: Verd. = 1 falso = 0


/* Definição de verdadeiro ou falso para um programa.*/

#define true = 1

#define false = 0

/* Para que este programa funcione devemos usar a biblioteca stdio.h


Quando usamos o comando #define, estamos definindo que a variável
terá um valor que por sua vez será constante.
*/

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'

Saída: Verd. = 1 falso = 0

Precedência

! - ++ - -
* / % Aritméticos
+ -
< > <= >= Relacionais
== != && || Lógico
= += -= *= /= %= Atribuição

Você também pode gostar