Função
Atualizado
Atualizado
Na programação funções são blocos de código reutilizáveis que ajudam a organizar um programa e evitar repetição de código.
Ao invés de repetir o mesmo código várias vezes, você pode escrever uma função e simplesmente chamá-la sempre que precisar, Isso é o poder de funções.
A linguagem incorpora muitas funções que facilita a vida de programadores ao longo da sua leitura conheceras muitas outras funções
Uma função normalmente tem: 1️Nome – Para ser chamada dentro do código. 2️Parâmetros (opcionais) – Entrada de dados. 3️Código executável – O que a função faz. 4️Retorno (opcional) – O que a função devolve ao chamador.
As funções podem ser classificadas principalmente com base em dois critérios: tipo de retorno e presença de parâmetros. Veremos as principais razões para uma função ter retorno.
Comunicação de Resultados: O retorno permite que a função comunique o resultado de sua execução para o chamador. Isso é essencial para funções que realizam cálculos, verificações ou processamentos, onde o resultado precisa ser utilizado posteriormente.
Controle de Fluxo: O valor de retorno pode ser usado para indicar sucesso, falha ou diferentes estados de execução, permitindo que o programa tome decisões com base no que a função realizou. Por exemplo, muitas funções retornam 0
para indicar sucesso e valores diferentes de 0
para indicar erros.
Conformidade com Protótipos: Em C, o tipo de retorno da função é parte de sua assinatura. Se uma função é declarada para retornar um valor (por exemplo, int
, float
, char*
, etc.), ela deve retornar um valor compatível com esse tipo. Funções que não retornam nada devem ser declaradas com void
.
Função sem retorno e sem parâmetros
Função com retorno e sem parâmetros
Função sem retorno e com parâmetros
A função printf
é uma ferramenta essencial na linguagem C para exibir mensagens e dados na tela. Ela oferece flexibilidade para formatar a saída e apresentar informações.
Componentes:
format_string
: Uma string que define o layout da saída, incluindo texto e especificadores de formato.
argument1, argument2, ...
: Uma lista variável de argumentos que fornecem os dados a serem impressos.
Para explorar o poder da linguagem e como os nossos programas pode ser interesentes precisamos antes entender os especificadores de formato como determinar argumentos como serão formatados e exibidos na tela, alguns dos mais comuns incluem:
%d
: Inteiro decimal
%ld
: Longo inteiro decimal
%f
: Ponto flutuante (números com vírgula)
%lf
: Duplo ponto flutuante
%c
: Carácter
%s
: String
%x
ou %X
: Inteiro hexadecimal
%o
: Inteiro octal
%u
: Inteiro sem sinal
%p
: Ponteiro
%%
: carácter de percentagem (para imprimir um símbolo de percentagem)
A função printf
oferece opções avançadas para formatar a saída, como:
Especificar a largura e justificação dos campos de texto.
Definir a precisão de casas decimais para números de ponto flutuante.
Usar modificadores de tipo de dados para garantir a correspondência correta entre especificadores e argumentos.
As sequências de escape são combinações de caracteres que começam com uma barra invertida (\
) e são usadas para representar caracteres especiais ou ações específicas em strings e caracteres. Elas são úteis para incluir caracteres que não podem ser digitados diretamente ou para controlar a formatação de saída.
\n
: Nova linha
\t
: Tabulação horizontal
\r
: Retorno de carro (move o cursor para o início da linha)
\\
: Barra invertida (usada para representar uma barra invertida literal)
\"
: Aspas duplas (usada para representar aspas duplas literais dentro de uma string)
\'
: Apóstrofo (usado para representar um apóstrofo literal dentro de uma string)
\b
: Retrocesso (move o cursor uma posição para trás)
\f
: Avanço de página (usado para mover o cursor para a próxima página)
\v
: Tabulação vertical
\a
: Alerta sonoro (produz um som de alerta)
\0
: carácter nulo (termina uma string)
\ooo
- Caractere Octal
\xhh
- Caractere Hexadecimal
Estes são apenas alguns dos especificadores de formato básicos. Existem outros modificadores que podem ser usados com esses especificadores para controlar a precisão, largura do campo, preenchimento, alinhamento e muito mais.
scanf_s
scanf_s
é uma versão alternativa e mais segura da função scanf
introduzida no padrão C11 (2011) e em bibliotecas C seguras como Microsoft Secure CRT. Ela oferece recursos para mitigar os problemas de segurança associados ao scanf
tradicional, mas nem sempre está disponível em todos os ambientes de desenvolvimento.
Vantagens de segurança do scanf_s:
Verificação de tamanho: Ao especificar o tamanho máximo do buffer de destino como argumento adicional, scanf_s
ajuda a prevenir estouro de buffer.
Validação de tipo (opcional): Dependendo da implementação, scanf_s
pode realizar verificações de tipo opcionais para garantir que os dados lidos correspondam ao tipo de variável esperado.
Retorno de erro: scanf_s
retorna códigos de erro específicos para indicar problemas durante a leitura, auxiliando no tratamento de excepções.
Vamos fazer um conjunto de bricandeiras com a funções scanf
e print
scanf_s
, não está disponível em sistemas Linux porque faz parte de uma extensão de segurança usada no Microsoft Visual Studio, e não faz parte do padrão C.
Observações Scanf
scanf_s
é exclusivo do Microsoft Visual Studio e Windows, enquanto scanf
é amplamente suportado em qualquer compilador compatível com C (incluindo Linux, GCC, Clang, etc.).
Usar diretivas de pré-processador permite que o código se adapte automaticamente ao sistema onde está sendo compilado, tornando-o portável entre Windows e Linux.
_WIN32
funciona no Windows de 64 bits?Se você o seu computador for um 64 bit esta duvida pode surgir, entretanto saiba que o nome _WIN32
é um resquício histórico da época em que o Windows 32 bits era introduzido, mas foi mantido por razões de compatibilidade. Mesmo em ambientes de 64 bits, essa macro é definida para indicar que o sistema operacional é Windows, independentemente da arquitectura.
Se você quiser especificamente verificar se está em um sistema Windows de 64 bits, pode usar a macro _WIN64
, que apenas é definida em sistemas Windows de 64 bits. Assim, se você precisa distinguir entre sistemas de 32 bits e 64 bits no Windows, pode usar as duas macros: