Introdução a Lógica de Programação / Estrutura Sequencial (C)
Nesta guia você será introduzido à linguagem de programação C, dando um resumo e a tradução dos conceitos/comandos já estudados antes. Nas próximas guias teremos explicações mais longas e minuciosas.
1 - Introdução
Sobre a linguagem
A linguagem de programação C é uma das linguagens mais velhas, tendo sido criada na década de 70. Embora tenha os seus 50 anos de história e o seu uso simples, ela segue sendo uma das mais populares entre os programadores e a base para outras linguagens (Java, C++,C# e Python).
Usos de C
C é uma linguagem usada para a realização de tarefas que possuem um padrão, são imperativas, previsíveis e possuem uma estrutura. Portanto, softwares como Windows e Linux usam de C. Também é usado em robótica, telecomunicação e em jogos 3D.
Tipada ou não?
Essa linguagem é muito parecida com o portugol que utilizamos no VisualG, que precisa da declaração de explícita das variáveis, sendo portanto tipada.
Compiladores
Para conseguir escrever em C/C++ no Visual Studio Code, você precisará de um compilador.
Os computadores da escola já possuem um compilador:

Como saber se você tem um compilador ou não
No Visual Studio Code há compiladores compatíveis para as linguagens C/C++, que serão necessários para a realização dos exercícios.
Caso você não tenho certeza se o seu computador possui um compilador ou não, siga os passos abaixo para confirmar:
2 - Entre em um código qualquer e aperte Crtl+shift+’ — o que deve lhe mostrar isso:

3 - Em seguida, entre:
g++ -- versioneclang --version, respectivamente dando enter em cada um deles;
4 - Caso o abaixo apareça, isso significa que sua máquina não possui um compilador e você precisará instalar;
Como instalar seu próprio compilador
A instalação segue os comandos do site oficial do VisualStudioCode: https://code.visualstudio.com/docs/cpp/config-mingw
1 - Entre no Visual Studio Code, instalando a extensão de C/C++ da Microsoft e O Code Runner;
(A primeira para a configuração da linguagem C e a segunda para que o seu código apropriadamente execute. Caso a segunda não for instalada, o código não irá aparecer).
Esses daqui:2 - Em seguida, faça download do compilador MSYS2, disponível neste site: https://www.msys2.org
3 - Configure o compilador como quiser, finalizando a instalação.
Como utilizar/configurar o seu compilador
Sites utilizados: https://code.visualstudio.com/docs/cpp/config-mingw e https://www.msys2.org
1 - Para começar a utilizar seu compilador, inicie o programa “ucrt64” (o com o símbolo marrom-verde) e entre o seguinte comando:

pacman -S --needed base-devel mingw-w64-ucrt-x86_64-toolchain
Aperte
enterpara instalar os pacotes necessários.2 - Digite “
Y” para continuar a instalação (Essa parte pode demorar um pouco);
3 - Após terminada a instalação, digite esse comando:
gcc --versionQue deve mostrar isso (significando que a instalação foi um sucesso):
4 - Adicione a pasta de lixeira do compilador para o caminho do Windows;
4.1 - Digite “Configurações” na sua aba de pesquisa, a abra e digite: “Variáveis”. Isso deve aparecer:

4.2 - Selecione a segunda opção (Editar as variáveis [..] para sua conta), que deve abrir isso:

4.3 - Selecione a variável “Path” e clique em Editar.

4.4 - Você possui duas opções: Clicar no botão “Novo” e manualmente digitar o local onde está a pasta “bin” dentro da pasta “ucrt64”, ou clicar no botão de “Procurar…” e manualmente selecionar a pasta. Depois de qualquer uma das opções concluídas, clique “ok” na aba de Editar a variável e “ok” novamente na aba de Variáveis de Ambiente.
5 - Agora, para confirmar se a instalação foi ocorrida com sucesso e o “Path” está correto, acesse o prompt de comando do seu computador (acessado ao digitar “cmd” na barra de pesquisa) e digite os seguintes comandos (aqui eu digitei os comandos no mesmo diretório que instalei o compilador, mas não fará diferença):
gcc —versiong++ —versiongdb —version
6 - Teste: Os próximos passos são opcionais e podem ser realizados de uma maneira diferente!
Abra o painel de comando e digite os seguintes comandos:
mkdir projectsCria uma pasta chamada “projects” no diretório.cd projectsEntra dentro da pasta “projects”.mkdir helloworldCria uma pasta “helloworld” dentro da pasta “projects”.cd helloworldEntra dentro da pasta “helloworld”.code .Automaticamente entra no VisualStudioCode na pasta atual.

Clique no “Novo arquivo” e nomeie-o como quiser, adicionando .c no final do arquivo.
Em seguida, digite os seguintes comandos:
#include <stdio.h>int main(){printf(”Hello World!”);return 0;}
Clique no botão de executar o código (clique na setinha se o seu padrão está como “debugg and run code” e então selecione a opção de “run code”). Então, selecione essa opção:


Ela será automaticamente dada como padrão após essa primeira escolha e não será necessário fazê-la novamente.
Seu código deve executar assim:

Bugs encontrados
Essa parte será dedicada à resolução de bugs encontrados por vocês. Aqui está alguns que eu tive que resolver:
1 - Quando utilizando o comando
scanf(), o código não termina e executa infinitamente;Resolução: mudar a configuração do CodeRunner e da extensão Microsoft C;
Aperte ctrl+shift+p, digite “C Ui” e vá nas configurações do “compiler path”, colocando o mesmo path que colocamos na configuração do compilador.

Depois disso, vá nas configurações do VisualStudioCode (engrenagens próximo ao seu perfil), digite “Code runner”, ache essa configuração e a marque.

Lista dos exemplos
Todos os códigos mostrados aqui estão na pasta (compactada) abaixo. Caso você queria mexer no código e testar para compreender melhor a teoria lida aqui, sinta-se em casa!
2 - Sintaxe
2.1 - O básico
Como dito anteriormente, C possui uma sintaxe muito parecida com o Portugol. Para você entender melhor, aqui vai um exemplo:
#include <stdio.h>
int main() {
printf("Hello World!");
return 0;
}

Coisas que não mudaram do Visual G:
- Em comandos de “escreva” (printf), os caracteres precisam estar dentro de aspas para indicar que são caracteres, do contrário o computador irá ler como se fossem comandos/números;
- Os comandos precisam ter um “fimcomando” / “return 0” (como o “para” possui o “fimpara” ou o “se” possui o “fimse”);
- Aqui, a declaração de variável “inteiro” virou “int” do mesmo jeito que “escreva” virou “printf”;
Coisas que mudaram do Visual G:
- Agora cada comando dentro de um comando principal (int main()) precisa terminar em dois pontos e vírgula;
- A declaração de variável (inteiro, caracter, real) também funciona em comandos agora (int main()), embora seja opcional (aqui, o int main() diz para o computador que é esperado que ele receba/imprima valores inteiros);
- Nos comandos principais, os comandos que ficarem dentro precisam estar entre chaves {} (pense nos comandos de CSS);
- É preciso incluir o comando no “cabeçalho” do código
#include <stdio.h>sempre que utilizamos os comandos básicos (int, printf, etc) e é obrigatório em qualquer código de C.
Observação:
Assim como no VisualG, os algoritmos em linguagem C também pulam linhas em branco (ou espaços no geral). Portanto, o código acima pode ser escrito assim:
int main(){printf("Hello World!");return 0;}
No entanto, por razões de compreensão na leitura, é sempre bom dar espaços entre comandos para facilitar a decodificação de bugs futuros.
2.2 - Variáveis
As variáveis que conhecemos possuem nomes diferentes no C:
| Tipo de variável (Portugol/C) | O que realizam | Exemplo de comando |
|---|---|---|
Inteiro | Variável guarda números inteiros; | num: inteiro |
Int | Variável guarda números inteiros; | int num; |
Real | Variável guarda números reais (vírgula); | num_real: real |
Float ou Double (Há uma diferença) | Variável guarda números reais (vírgula); | float num_real; |
Caractere | Variável guarda caracteres; | nome: caracter |
Char | Variável guarda caractere; | char nome; |
String | Variável guarda caracteres; | char nome[] = “Maria”; |
Observação: O comando“Char”apenas suporta uma letra. Caso você tente colocar uma palavra maior que uma letra, ele apenas guardará a última letra. Por isso, temos a variável"String", que suporta mais do que uma letra.
Declaração de Variáveis
O sintaxe da declaração de variáveis é parecido;
C:
tipo NomeDaVariável;
int idade;
//Dar um valor para a variável:
idade = 15
————————————————
Portugol:
NomeDaVariável: tipo
nome: caracter
//Dar um valor para a variável:
nome ← “Maria”
Para declarar múltiplas variáveis também;
C:
int idade, peso; //Apenas declaração;int idade = 15, peso = 50; //Declaração e dar um valor ao mesmo tempo;
————————————————
Portugol:
nome, cidade: caracter
nome ← “Maria”cidade ← “Uberaba”
Imprimir variáveis
Porém, para imprimir as variáveis, há diferenças gritantes (Os comandos de Portugol “Início, Var, Fimalgoritmo” foram pulados para fins educativos, já que já o entendemos):
Portugol: nome: caracter //Declaraçãonome ← “Maria” //Dando valor para a variávelescreval(nome)
Resultado: Maria
//Apenas retiramos as aspas para indicar que o “nome” é um comando.
————————————————
C:
int main() {
char nome[] = "Maria"; //Declaração
printf(”%s”,nome); //O equivalente à escreva
return 0;
}
Resultado: Maria
//Além das diferenças de declaração e de dar o valor, para “imprimir” uma variável possuímos comandos e sintaxes específicas.
| Variável | Comando para imprimir | Exemplo |
|---|---|---|
Int | %d ou %i | printf(”%d”, num); |
Float | %f ou %F | printf(”%f”, dizima); |
Double | %lf | printf(”%lf”, dizima2); |
Char | %c | printf(”%c”, letra); |
String | %s | printf(”%s”, nome); |
Teste você mesmo: https://www.w3schools.com/c/tryc.php?filename=demo_data_types
Números reais (Float/Double)
Observe um exemplo de código C:
int main() {
float myFloatNum = 3.5;
double myDoubleNum = 19.99;
printf("%f\n", myFloatNum); //O comando \n é o equivalente à quebrar uma linha
printf("%lf", myDoubleNum);return 0;
}
Pergunta: Quantos dígitos depois da vírgula você acredita que serão imprimidos?
Provavelmente você pensou em um para o primeiro número e dois para o segundo; Entretanto, isso é o que irá ser imprimido:
3.500000
19.990000
Ao contrário do Portugol, em C as variáveis "float/double" imprimem e carregam 6 dígitos após a vírgula.
| Tipo de variável | Tamanho | Descrição |
|---|---|---|
Float | 4 bytes | Guarda números fracionados, contendo um ou mais decimais. Suficiente para armazenar 6-7 dígitos. |
Double | 8 bytes | Guarda números fracionados, contendo um ou mais decimais. Suficiente para armazenar 15 dígitos. |
Portanto, para encurtar a quantidade de números após a vírgula, usamos esses comandos:
float myFloatNum = 3.5;
printf("%f\n", myFloatNum); // Como padrão, 6 números aparecerão depois da vírgula
printf("%.1f\n", myFloatNum); // Mostrará apenas um digíto
printf("%.2f\n", myFloatNum); // Mostrará dois digítos
printf("%.4f", myFloatNum); // Mostrará quatro digítos
Resultado:
3.500000
3.5
3.50
3.5000
Constantes
Quando você não quer que outros (ou você mesmo) consigam mudar o valor de uma variável, usamos o comando de constante:
const int idade = 15
Fazendo isso, sua variável ficará permanente e apenas para leitura.
Para declarar uma variável constante, apenas a declaração em uma linha funcionará. Caso o contrário, dará erro:
const int idade = 15
const int idade
idade = 15 //ERRO! Declaração de variável constante
Tentar dar outro valor para a constante também dará erro:
const int idade = 15
idade = 17 //ERRO!
Dica: Para variáveis constantes, programadores normalmente declaram o nome em maiúsculo, para facilitar a leitura e o entendimento futuro da próprio programador ou de outros da mesma equipe.
Nomeação e escrita do C
Ao contrário do VisualG, que foi feito em portugol (ou seja, linguagem português-Brasil), o C foi escrito e feito em inglês. Portanto, palavras com acentuação e cedilha não serão aceitas pelo programa, fazendo-o dar erros de visualização não muito bonitos:


De acordo com vários sites, é possível retirar esse erros utilizando comandos e selecionando a nossa língua como português-Brasil. No entanto, não consegui seguir os tutoriais com sucesso e irei escrever sem os acentos ou cedilha. Caso você queira tentar você mesmo, aqui está os links:
https://programacaopratica.com.br/2019/09/17/acentuacao-de-caracteres-em-c-com-locale-h
2.3 Operadores Aritméticos e Relacionais
Aritméticos – O resultado da avaliação é do tipo numérico: inteiro ou real.
| Operação | Operador | Descrição | Exemplo |
|---|---|---|---|
| Soma | + | Soma os números; | x + y |
| Subtração | - | Subtrai os números; | x - y |
| Multiplicação | * | Multiplica os números; | x * y |
| Divisão | / | Divide os números; | x / y |
| Resto | % | Retorna o resto da divisão; | x % y |
| Incremento | ++ | Aumenta o valor por 1; | ++x |
| Decréscimo | - - | Diminui o valor por 1; | —x |
Relacionais – Comparação realizada entre dois valores do mesmo tipo básico.
| Operação | Operador | Descrição | Exemplo |
|---|---|---|---|
| Igual a | == | Retorna o valor 1 se as variáveis forem iguais; | x==y |
| Diferente de | != | Retorna o valor 1 se as variáveis forem diferentes; | x!=y |
| Maior que | > | Retorna o valor 1 se uma das variáveis for maior do que a outra | x>y |
| Menor que | < | Retorna o valor 1 se uma das variáveis for menor do que a outra | x<y |
| Maior ou igual a | >= | Retorna o valor 1 se uma das variáveis for maior ou igual a outra | x>=y |
| Menor ou igual a | <= | Retorna o valor 1 se uma das variáveis for menor ou igual a outra | x<=y |
2.4 - Operadores Lógicos e de Declaração
Utilizaremos três operadores básicos para a formação de novas proposições lógicas compostas a partir de outras proposições lógicas simples.
| Operação | Operador | Descrição | Exemplo |
|---|---|---|---|
| E | && | Retorna o valor 1 se ambas as afirmações forem verdadeiras; | x < 5 && x < 10 |
| Ou | || | Retorna o valor 1 se uma das afirmações forem verdadeiras; | x < 5 || x < 4 |
| Não | ! | Reverte o resultado da afirmação (se a afirmação der 1 o não reverte para 0, vice-versa) | !(x < 5 && x < 10) |
Utilizamos operadores de declaração como jeitos encurtados de declarar/mudar o valor de variáveis. É uma maneira mais rápida de escrever algo, mas não é obrigatória— apenas salva o seu tempo.
| Operador | O mesmo que | Exemplo |
|---|---|---|
| = | x = 5 | x = 5 |
| += | x = x + 3 | x += 3 |
| -= | x = x - 3 | x -= 3 |
| *= | x = x * 3 | x *= 3 |
| /= | x = x / 3 | x /= 3 |
| %= | x = x % 3 | x %= 3 |
| &= | x = x & 3 | x &= 3 |
| |= | x = x | 3 | x |= 3 |
| ^= | x = x ^ 3 | x ^= 3 |
| >>= | x = x >> 3 | x >>= 3 |
| <<= | x = x << 3 | x <<= 3 |
2.5 - Ordem de Operações
Quando há mais do que uma operação, a linguagem C segue a seguinte ordem de operações:
()- Parênteses;
*,/,%- Multiplicação, Divisão, Módulo;
+,-Adição, Subtração;
>,<,>=,<=- Comparação;
==,!=- Equidade;
&&- Lógico E
||- Lógico OU
=- Declaração
3 - Estrutura Condicional
Importante: Quando usamos as estruturas condicionais, precisamos usar #include <stdbool.h> no cabeçalho do C, caso contrário dará erro.3.1 - Se, se não, se senão: Sintaxe
if (condição) {
// bloco de código para ser executado caso a condição for verdadeira.
}
if (condição) {
// bloco de código para ser executado caso a condição for verdadeira.
} else {
// bloco de código para ser executado caso a condição for falsa.
}
if (condição1) {
// bloco de código para ser executado caso a condição1 for verdadeira.
} else if (condição2) {
// para ser executado caso a condição1 for falsa e condição 2 for verdadeira.
} else {
// para ser executado caso a condição1 for falsa e condição 2 for falsa.
}
if (condição) {
// bloco de código para ser executado caso a condição for verdadeira.
if (condição1) {
// bloco de código para ser executado caso a condição e condição1 for verdadeira.
}
}Tradução: “If” = “se”, “Else” = “se não” e “Else If” = “senão se”.
Exemplos:
if (x > 10) {
printf("X é maior do que 10.")
}
if (x > 10) {
printf("X é maior do que 10.")
} else {
printf("X é menor do que 10.")
}
if (x > 10) {
printf("X é maior do que 10.")
} else if (x = 10) {
printf("X é igual a 10.")
} else {
printf("X é menor do que 10.")
}
if (x > 10) {
printf("X é maior do que 10.");
// Se dentro de um se
if (y > 20) {
printf("X é maior que 20 também.");
}
}3.2 - Se e Operador lógico
Operador lógico E
int a = 200;
int b = 33;
int c = 500;
if (a > b && c > a) {
printf("Ambas as condições são verdadeiras\n");
}Operador lógico OU
int a = 200;
int b = 33;
int c = 500;
if (a > b || a > c) {
printf("Pelo menos uma condição é verdadeira\n");
}Operador lógico NÃO
int a = 33;
int b = 200;
if (!(a > b)) {
printf("A não é maior que B\n");
}3.3 - Caso: Sintaxe
switch (variável) {
case x:
// bloco de código
break;
case y:
// bloco de código
break;
default: //outro caso
// bloco de código
}O Comando Break
O comando break automaticamente acaba com o comando, salvando o tempo que a máquina precisaria para verificar se os outros casos são verdadeiros ou não.
Pense assim: “break”, em inglês, pode significar tanto quebra quanto intervalo — Break é um intervalo onde a máquina pode parar o comando e “relaxar” assim que o trabalho estiver pronto (ou seja, a condição seja encontrada).
Odefault(outrocaso) é opcional na estruturaswitch, e não precisa, obrigatoriamente, do comandobreak(falaremos mais sobre ele nos próximos tópicos).
Tradução: “Switch” = “Troca, trocar”, “Default” = “Padrão” e “Case” = “caso”.
Exemplo:
int day = 4;
switch (day) {
case 6:
printf("Hoje é Sábado");
break;
case 7:
printf("Hoje é Domingo");
break;
default:
printf("Esperando o final de semana de novo...");
}
//Nesse caso sairá o "Esperando o final de[..]";4 - Estruturas de Repetição
4.1 - Enquanto: Sintaxe
while (condição) {
// bloco de código a ser executado;
}A estrutura de repetição while repete um bloco de código enquanto uma condição for verdadeira.
int i = 0;
while (i < 5) {
printf("%d\n", i);
i++;
}
//Sairá os números: 1, 2, 3 e 4.Teste você mesmo aqui: https://www.w3schools.com/c/tryc.php?filename=demo_while_loop
Contagem regressiva:
Não se esqueça de mudar a variável na condição, porque se não o código nunca vai terminar.
int countdown = 3;
while (countdown > 0) {
printf("%d\n", countdown);
countdown--;
}
printf("Feliz Ano Novo!!\n");Se a condição do while começar falsa, o bloco de código nunca será realizado.4.2 - “Repita”: Sintaxe
do {
// bloco de código a ser executado;
}
while (condição);O comando do/while é uma variante do comando while, onde ele irá executar o bloco de comando uma vez e depois verificar se a condição é verdadeira ou não.
Tradução: “Do” = “faça” e “While” = “enquanto”.
Exemplo:
int i = 0;
do {
printf("%d\n", i);
i++;
}
while (i < 5);
//Sairá os números: 1, 2, 3 e 4.Mesmo que a condição em questão seja falsa desde o início, o código ainda será executado:
int i = 10;
do {
printf("i é %d\n", i);
i++;
} while (i < 5);
// Sairá "i é 10".Esse comando possui diferenças do comando “repita”, embora sejam parecidos em sintaxe e uso. Do/While é interessante de se usar quando você quer que uma coisa apareça pelo menos uma vez não importando a condição ser verdadeira ou falsa, como por exemplo um aviso ao usuário.
Um exemplo que estamos bem familiarizados com:
#include <stdio.h>
int main() {
int number;
do {
printf("Entre com um número positivo: ");
scanf("%d", &number);
} while (number > 0);
return 0;
}O código acima irá pedir para o usuário entrar com um número positivo até ser digitado o número 0.
Iremos aprender melhor sobre o comando “scanf” (o equivalente à leia) nos próximos tópicos.4.3 - Para: Sintaxe
for (expressão 1; expressão 2; expressão 3) {
// bloco de código a ser executado;
}Expressão 1 é executada (uma vez) antes da execução do bloco de código.
Expressão 2 é a condição para a execução do código.
Expressão 3 é executado (toda vez) depois que o código é considerado executado.
O exemplo abaixo irá contar os números até 4:
int i;
for (i = 0; i < 5; i++) {
printf("%d\n", i);
}
//Sairá: 1, 2, 3, 4Expressão 1 Dá um valor à variável antes do loop começar;
Expressão 2 Define a condição para a execução do código. O bloco de código será executado enquanto a condição for verdadeira.
Expressão 3 É executado (toda vez) depois do código, aumentando o valor da variável por um.
Porém, caso você ache melhor, a expressão 1 e 3 não precisar ser colocada dentro dos parênteses do for. Exemplo abaixo:
int i = 0;
for (; i < 5;) {
i++;
printf("%d\n", i);
}
//Sairá: 1, 2, 3, 4É necessário dos “;” antes e depois da expressão 2 do for.
Loop dentro de um Loop
int i, j;
// Loop de fora
for (i = 0; i <= 2; ++i) {
printf("Dentro: %d\n", i); // Executa 2 vezes
// Loop de dentro
for (j = 0; j <= 3; ++j) {
printf("Fora: %d\n", j); // Executa 6 vezes (2 * 3)
}
}
//ou
int i = 1, j = 1;
// Loop de fora
for (;i <= 2;) {
printf("Outer: %d\n", i); // Executa 2 vezes
++i
// Loop de dentro
for (;j <= 3;) {
printf(" Inner: %d\n", j); // Executa 6 vezes (2 * 3)
++j
}
}5 - Array/Vetor
Sintaxe
int myNumbers[] = {num, num, num, num};Quando criado um array, evite colocar variáveis de tipo diferente do especificado para o vetor, caso contrário dará erro.
For com Array com tamanho específico:
int myNumbers[] = {25, 50, 75, 100};
int i;
for (i = 0; i < 4; i++) {
printf("%d\n", myNumbers[i]);
}For com Array com tamanho variável:
int myNumbers[] = {25, 50, 75, 100};
int length = sizeof(myNumbers) / sizeof(myNumbers[0]);
int i;
for (i = 0; i < length; i++) {
printf("%d\n", myNumbers[i]);
}5.1 Multidimensional Array/Matriz
Uma matriz é um tipo de vetor, com colunas e linhas.
int matriz[2][2] = { {1, 4, 2}, {3, 6, 8} };O primeiro número entre colchetes ([]) significa o número de linhas e o segundo é o número de colunas. Os números entre chaves correspondem a linha 0 e linha 1:
| Coluna 0 | Coluna 1 | Coluna 2 | |
| Linha 0 | 1 | 4 | 2 |
| Linha 1 | 3 | 6 | 8 |
Lembre-se: A primeira coluna/linha na linguagem C é sempre a coluna/linha 0.
6 - Comandos específicos
Break
Você já viu o comando break quando utilizado para finalizar o comando switch (caso). Ele também pode ser usado em loops:
int i;
for (i = 0; i < 10; i++) {
if (i == 4) {
break;
}
printf("%d\n", i);
}
//Sairá: 1, 2, 3Continue
O comando continue quebra uma interação dentro do comando de repetição, assim que uma condição específica é verdadeira, para continuar o próximo loop:
int i;
for (i = 0; i < 10; i++) {
if (i == 4) {
continue;
}
printf("%d\n", i);
}
//Sairá: 1, 2, 3, 5, 6, 7, 8, 9Scanf() - Leia
Sabemos que usamos printf() para escrever coisas na tela do usuário.
Para recebermos valores do usuário, utilizamos o comando scanf():
int myNum;
printf("Escreva um numero: \n");
//Pegar e salvar o número que o usuário digitar;
scanf("%d", &myNum);
// Escrever o número digitado pelo usuário;
printf("Seu numero e: %d", myNum);
//Sairá:
//Escreva um numero:
//1
//Seu numero e: 1A função scanf() toma dois argumentos: o tipo da variável e a referência da operação, que armazena o endereço de memória da variável.
Nesse caso, o scanf() espera um número inteiro ser digitado pelo usuário. Caso qualquer coisa que não seja o que o computador espera seja inserida, isso acontece:

Curiosidade: O número “32758” aparece em vez de algo como “0” por causa do jeito que o tipo das variáveis é operado pela linguagem C: 32758 é o número máximo para uma variável do tipo int.Scanf() - Múltiplos Inputs
Ao contrário do comando “leia” do VisualG, a função scanf() consegue armazenar duas variáveis ao mesmo tempo:
int myNum;
char myChar;
printf("Digite um numero e uma letra e pressione enter: \n");
scanf("%d %c", &myNum, &myChar);
printf("Seu numero e: %d\n", myNum);
printf("Sua letra e: %c\n", myChar);
//Sairá:
//Digite um numero e uma letra e pressione enter:
//3 M
//Seu numero e: 3
//Sua letra e: MScanf() - Ler uma linha de texto
Em conjunto com as strings, a função scanf() também consegue ler grandes linhas de texto:
char firstName[30];
printf("Enter your first name: \n");
scanf("%s", firstName);
printf("Hello %s", firstName);Nota: o string não inclui palavras depois de um espaço, pois ele lê o espaço como o fim do comando.Para resolver esse problema, precisamos utilizar esses comandos: fgets() para ler uma linha de texto. A sintaxe deve seguir: variável, sizeof(string_name), e stdin:
char fullName[30];
printf("Digite seu nome inteiro: \n");
fgets(fullName, sizeof(fullName), stdin);
printf("Ola %s", fullName);
// Digite seu nome inteiro:
// Maria Cecília
// Ola Maria CecíliaStrings e String
Como já dito anteriormente, usamos string quando queremos guardar mais do que uma só letra (char).
char greetings[] = "Hello World!";
Ao contrário de várias linguagens de programação, o C não possui um tipo de variável específico para guardar texto- portanto, usamos um vetor (que é o string), podendo ser escrito dessa forma:
char greetings[] = "Hello World!";
printf("%c", greetings[0]);
//Sairá: HNota: estamos usando o especificador “%c" para imprimir apenas uma letra. Quando utilizamos o comandostringnormalmente, utilizamos o especificador próprio dele: “%s".
Sabendo que strings não são nada mais do que um vetor, podemos fazer todo tipo de coisa baseado nisso:
char greetings[] = "Hello World!";
greetings[0] = 'J';
printf("%s", greetings);
// Sairá Jello World! em vez de Hello World!//Loopagem de uma string
char carName[] = "Volvo";
int i;
for (i = 0; i < 5; ++i) {
printf("%c\n", carName[i]);
}
//Sairá: V o l v oStrings - Funções especiais
Utilizando do <string.h> no cabeçalho de seu código, temos acesso à diferentes comandos com o string:
Contagem de strings:
char alfabeto[] = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
printf("%zu", strlen(alfabeto));
//Sairá: 26Comando utilizados:strlene%zu
Combinação de strings:
char str1[20] = "Hello ";
char str2[] = "World!";
// Combinar str1 com str2, combinação armazenada na str1
strcat(str1, str2);
// Print str1
printf("%s", str1);
//Sairá: Hello World!Comando utilizado: strcatCopiar strings:
char str1[20] = "Hello World!";
char str2[20];
// Copy str1 to str2
strcpy(str2, str1);
// Print str2
printf("%s", str2);Comando utilizado: strcpyComparação de strings:
char str1[] = "Oi";
char str2[] = "Oi";
char str3[] = "Ola";
printf("%d\n", strcmp(str1, str2)); // Retorna 0 (as strings são iguais)
printf("%d\n", strcmp(str1, str3)); // Retorna -4 (as strings não são iguais)Comando utilizado: strcmp
7 - Prática
Faça todos os exercícios das listas 01 e 02 utilizando a linguagem C.
Copyleft 🄯 2025 - Professor Mauro Borges França.



