Linguagem C - Conceitos Avançados

3.1. Ponteiros

Para que servem

Ponteiros ou apontadores, são variáveis que armazenam o endereço de memória de outras variáveis. Dizemos que um ponteiro “aponta” para uma variável quando contém o endereço da mesma. Os ponteiros podem apontar para qualquer tipo de variável. Portanto temos ponteiros para int, float, double, etc. Ponteiros são muito úteis quando uma variável tem que ser acessada em diferentes partes de um programa. Neste caso, o código pode ter vários ponteiros espalhados por diversas partes do programa, “apontando” para a variável que contém o dado desejado. Caso este dado seja alterado, não há problema algum, pois todas as partes do programa tem um ponteiro que aponta para o endereço onde reside o dado atualizado.
Sintaxe de declaração de ponteiro:

3.2. Manipulação de String

Strings

Para Manipular strings e preciso usar uma biblioteca chamada <"string.h">, a principal função dessa biblioteca é: strcpy().

3.3. Manipulação de arquivos

Manipulando arquivos em C

Em C trabalhamos com dois tipos de arquivos:
1) Arquivo de texto: Armazena caractéres que podem ser mostrados diretamente na tela ou modificados por um editor de texto.
2) Arquivo binário: é uma sequência de bits que obedece regras do programa que o gerou.

Manipulação dos arquivos :

Em C, o arquivo é manipulado através de um ponteiro especial para o arquivo. A função deste ponteiro é “apontar” a localização de um registro.

Sintaxe:


Tipos de abertura de arquivos:

r: Permissão de abertura somente para leitura. É necessário que o arquivo já esteja presente no disco.

w: Permissão de abertura para escrita (gravação). Este código cria o arquivo caso ele não exista, e caso o mesmo exista ele recria o arquivo novamente fazendo com que o conteúdo seja perdido. Portanto devemos tomar muito cuidado ao usar esse tipo de abertura.

a: Permissão para abrir um arquivo texto para escrita(gravação), permite acrescentar novos dados ao final do arquivo. Caso não exista, ele será criado.

Outras funções para manipulação de arquivos:

3.4. Struct

Novos tipos de variáveis

Uma struct é uma variável especial que contém diversas outras variáveis de qualquer tipo. As variáveis internas contidas pela struct são denominadas membros da struct.

Sintaxe:


Exemplo:

3.5. Funções

Uma função nada mais é do que uma subrotina usada em um programa.

Na linguagem C, denominamos função a um conjunto de comandos que realiza uma tarefa específica em um módulo dependente de código. A função é referenciada pelo programa principal através do nome atribuído a ela. A utilização de funções visa modularizar um programa, o que é muito comum em programação estruturada. Desta forma podemos dividir um programa em várias partes, no qual cada função realiza uma tarefa bem definida.

Sintaxe:



Exemplo de função em C:

Funções recusivas

Função recursiva é aquela função que chama a si mesma. Em uma função recursiva, a cada chamada é criada na memória uma nova ocorrência da função com comandos e variáveis “isolados” das ocorrências anteriores. A função é executada até que todas as ocorrências tenham sido resolvidas.
Toda recursividade é composta por um caso base e pelas chamadas recursivas.

Caso base: é o caso mais simples. É usada uma condição em que se resolve o problema com facilidade.
Chamadas Recursivas: procuram simplificar o problema de tal forma que convergem para o caso base.

Exemplo clássico de recursividade fatorial:

Questões

Strings

- Implemente um programa denominado combinador, que recebe duas strings e deve combiná-las, alternando as letras de cada string, começando com a primeira letra da primeira string, seguido pela primeira letra da segunda string, em seguida pela segunda letra da primeira string, e assim sucessivamente. As letras restantes da cadeia mais longa devem ser adicionadas ao fim da string resultante e retornada.



- Faça um programa que leia um vetor X[10]. Substitua a seguir, todos os valores nulos e negativos do vetor X por 1. Em seguida mostre o vetor X.



- Neste problema você deve ler um número, indicando uma linha da matriz na qual uma operação deve ser realizada, um caractere maiúsculo, indicando a operação que será realizada, e todos os elementos de uma matriz M[12][12]. Em seguida, calcule e mostre a soma ou a média dos elementos que estão na área verde da matriz, conforme for o caso. A imagem abaixo ilustra o caso da entrada do valor 2 para a linha da matriz, demonstrando os elementos que deverão ser considerados na operação.