Apostila C PET Informática UFPR

Apostila C PET Informática UFPR

(Parte 1 de 11)

Sumario

1 Historico 1

2.1 Estrutura basica de um programa em C2
2.2 Variaveis3
2.2.1 Nomes de Variaveis3
2.2.2 Tipos de Variaveis4
2.2.3 Declaracao/Inicializacao4
2.3 Constantes5
2.3.1 Literais5
2.3.2 Simbolicas5
2.3.3 Incluindo bibliotecas5
2.4 Exercıcio6

2 Conceitos basicos 2

3.1 Operador de Atribuicao7
3.2 Operadores Matematicos7
3.2.1 Unarios7
3.2.2 Binarios8
3.3 Atribuicao Composta9
3.4 Operadores Relacionais9
3.5 Operadores Logicos9
3.6 Operador Condicional10
3.7 Exercıcios10

3 Operadores 7

4.1 printf()1
4.2 scanf()12
4.3 getchar() e putchar()13
4.4 Exercıcios13
4.4.1 Convencoes13
4.4.2 Exercıcios13

4 Funcoes de entrada e saıda 1

5.1 Formatos15
5.2 Exercıcio16
5.3 Instrucao for16
5.4 Instrucao while17
5.5 Instrucao do...while18
5.6 Exercıcio18

5 Estrutura de condicao e loops 15 i

SUMARIO i

6.1 Instrucao break20
6.2 Instrucao continue20
6.3 Instrucao return20
6.4 Funcao exit()20
6.5 Instrucao switch21
6.6 Exercıcio2

6 Controle de fluxo do programa 20

7.1 Prototipo23
7.2 Definicao23
7.2.1 Tipo de retorno23
7.2.2 Nome da funcao24
7.2.3 Corpo da funcao24
7.3 Chamada de funcoes24
7.3.1 Chamadas por valor24
7.3.2 Chamadas por referencia24
7.4 Exemplo de funcao25
7.5 Exercıcios25
8.1 Matrizes Unidimensionais26
8.2 Matrizes Multidimensionais26
8.3 Inicializacao de Matrizes26
8.4 Referenciando um elemento na matriz27
8.5 Lendo um numero desconhecido de elementos27
8.6 Exercıcio27

8 Matrizes 26

9.1 Algumas funcoes de manipulacao de string29
9.1.1 strcpy()29
9.1.2 strlen()29
9.1.3 strcat()29
9.1.4 strcmp()29
9.2 Exercıcios30

9 STRINGS 29

10.1 A palavra-chave struct31
10.2 Definindo e declarando31
10.2.1 Acessando os membros de uma estrutura32
10.3 Exercıcio34

10 Estruturas 31

1.1 Casting35
1.2 Variaveis Static36
1.2.1 Exercıcio36
1.3 Variaveis Register36
1.4 typedef37
1.5 Campos de bit (bit fields)37
1.6 Exercıcios38

1 Especificadores e modificadores de tipos 35

12.1 O que e uma operacao bit-a-bit39
12.2 Representacao de numeros hexadecimais39
12.3 Operacoes bit-a-bit em C40
12.4 Operador & (AND)40
12.6 Operador (XOR)41
12.7 Operadores << e >>41
12.8 Operador (complemento)42
12.9 Exercıcios42

SUMARIO i

13.1 Retornando Valores da Funcao main()4
13.2 Exercıcio45

13 Argumentos ARGV e ARGC 4

14.1 O que sao ponteiros?46
14.2 Declarando ponteiros47
14.3 Utilizando ponteiros47
14.3.1 Exercıcio50
14.4 Passagem de parametros por referencia50
14.4.1 Exercıcio51
14.5 Aritmetica de ponteiros51
14.5.1 Exercıcio52
14.6 Ponteiros e matrizes52
14.6.1 Exercıcio53
14.7 Ponteiros para funcoes53
14.8 Problemas com ponteiros54
15.1 Alocacao estatica × alocacao dinamica5
15.2 sizeof56
15.3 Funcao malloc()56
15.4 Funcao free()57
15.5 Exercıcios57

15 Alocacao dinamica de memoria 5

16.1 Funcoes para manipulacao de arquivos59
16.2 EOF59
16.3 Funcao fopen()59
16.4 Funcao fclose()60
16.5 Funcao fputc()60
16.6 Funcao fgetc()61
16.6.1 Exercıcios61
16.7 Funcao feof()61
16.8 Funcao ferror()62
16.9 Funcao rewind()62
16.10Funcao remove()62
16.11Funcoes fgets() e fputs()62
16.1.1Exercıcios62
16.12Funcoes fread() e fwrite()62
16.12.1Exercıcios64
16.13Funcoes fprintf() e fscanf()64
16.13.1Exercıcio64
16.14Funcao fseek()64
16.15Exercıcios65

16 Arquivos 59 A Palavras-Chave ou reservadas 6

SUMARIO iv

B.1 Bibliotecas: Arquivo objeto × Arquivo header67
B.2 Bibliotecas: Lista de funcoes67
B.2.1 Funcoes padrao (stdlib.h)68
B.3 Funcoes de entrada e saıda padrao stdio.h68
B.3.1 Funcoes de manipulacao de strings (string.h)68
B.3.2 Funcoes matematicas (math.h)69

B Bibliotecas 67

C GCC - Compilacao em Linux 70

D.1 Modulando programas em C71
D.2 Make72

D Modulos 71

Capıtulo 1 Historico

A linguagem C foi criada por Dennis M. Ritchie e Ken Thompson nos laboratorios Bell em 1972, baseada na linguagem B de Thompson que era uma evolucao da antiga linguagem BCPL. Ela foi desenvolvida para o sistema operacional UNIX, que por sua vez foi totalmente desenvolvido em C .

A linguagem C (de agora em diante somente C ) tornou-se vitoriosa como ferramenta de programacao para qualquer tipo de sistema (sistemas operacionais, planilhas eletronicas etc.) pela sua portabilidade (capacidade de um programa poder rodar em qualquer plataforma, so sendo preciso recompila-lo), flexibilidade e por seu poder de expressao, alem da padronizacao dos compiladores existentes (um adendo a portabilidade). C foi desenvolvida para que o usuario pudessea planejar programas estruturados e modulares, resultando em programas mais legıveis e documentados. Os programas em C tendem a ser bastante compactos e de rapida execucao.

C e uma linguagem amigavel e suficientemente estruturada para encorajar bons habitos de programacao, possibilitando tambem o desenvolvimento de partes separadas de um programa por pessoas distintas. Essas partes podem ser reunidas finalmente em um produto final, o que significa que bibliotecas de funcoes podem ser criadas ou usadas sem realmente se conhecer o codigo de cada uma delas.

Existem muitas outras virtudes de C que voce conhecera ao longo de seu aprendizado. A referencia basica para o conhecimento de C e [RIT86].

Capıtulo 2 Conceitos basicos

2.1 Estrutura basica de um programa em C

Vamos comecar com um programa bem simples, mas que contem muitas das caracterısticas de um programa C , suficientes para comecarmos nossa discussao.

–Exemplo 1: hello.c – main()

O primeiro elemento que se pode observar e a funcao main(). Como o nome dela ja diz, ela e a funcao principal de todo programa C . E ela que recebe os (possıveis) parametros passados em linha de comando e e a que retorna o controle para o processo (ex. o shell) que o executou.

O segundo aspecto e a funcao printf(). Mais uma vez, o nome explica sua funcionalidade: esta funcao serve para imprimir texto na tela (print e imprimir em ingles). O f e de formatado: os dados sao impressos na tela de acordo com um formato especificado pelo usuario. Mais adiante veremos mais detalhes a respeito dessa funcao (vide Capıtulo 4).

Note que logo apos a chamada da funcao printf vem um ‘;’, que e o caracter separador de comandos.

Ao fim de cada comando deve-se colocar este caracter. Outro fator a ser observado sao os caracteres “{” e “}”, delimitando o escopo 1 da funcao main.

Em um segundo exemplo, temos um programa mais elaborado. Nele podemos observar uma estrutura um pouco mais complexa (sendo porem apenas uma extensao do exemplo acima).

1Escopo e o conjunto de definicoes de uma funcao. E a sua “area reservada”.

CAPITULO 2. CONCEITOS BASICOS 3

–Exemplo 2: Um exemplo mais elaborado – /∗ inclusao das b ib lio te c a s ∗/

#include<stdio .h>

#include<stdlib .h>

/∗ definicao de constantes ∗/ #define PI 3.14

/∗ declaracao de funcoes ( prototipos ) ∗/ float seno ( int angulo ) ;

/∗ declaracao de variaveis globais ∗/ float raio ;

/∗ corpo de comandos principal ∗/ int main() { /∗ comandos ∗/ }

/∗ definicao ( implementacao ) de funcoes ∗/ float seno ( int angulo ) { /∗ uma variavel local ∗/ int a ;

/∗ corpo da funcao ∗/ }

Neste exemplo vemos varias

Uma variavel e uma localizacao para armazenagem de dados na memoria do computador. Quando o nome de uma variavel aparece em um programa ele esta se referindo, na verdade, aos dados armazenados nessa localizacao.

2.2.1 Nomes de Variaveis

Para usar variaveis nos programas em C, devemos saber quais nomes podem ser utilizados. Para tanto, devemos seguir as seguintes regras:

• O nome pode conter letras, algarismos e o caractere ’ ’; • O primeiro caractere do nome sempre deve ser uma letra ou o caractere ’ ’;

(Parte 1 de 11)

Comentários