Buscar

Linguagem C_ recursos básicos

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 75 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 75 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 75 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

Linguagem C: recursos básicos
Prof. Paulo Vidal
Descrição
Tipos básicos de dados, operadores aritméticos, lógicos e relacionais.
Estruturas de decisão (if e switch) e estruturas de repetição (for, while e
do-while). Estruturas de dados homogêneas com vetores e strings.
Estrutura de dados heterogênea tipo struct.
Propósito
A linguagem C é muito utilizada no desenvolvimento de jogos, editores
de imagem e vídeo, sistemas de automação, na robótica e na
programação total ou parcial de sistemas operacionais. O aprendizado
da linguagem C permite atuar em diversas áreas, abrindo um leque de
possibilidades de emprego no mercado.
Preparação
Você poderá executar os códigos diretamente na página, utilizando as
ferramentas disponibilizadas ao longo do conteúdo, ou no seu próprio
computador utilizando um compilador ou um ambiente de
desenvolvimento integrado (IDE). Para o sistema operacional Windows,
pode ser utilizado o CodeBlocks, DevC++ e Genny. Para Linux, pode ser
utilizado o GCC.
Objetivos
Módulo 1
Tipos básicos de dados
02/05/24, 11:37 Linguagem C: recursos básicos
https://stecine.azureedge.net/repositorio/00212ti/02576/index.html?brand=estacio# 1/75
Identificar os tipos básicos de dados e os tipos de operadores em um
programa.
Módulo 2
Operadores e controle de �uxo
Aplicar as técnicas básicas de controle de fluxo na resolução de
problemas.
Módulo 3
Estruturas de dados homogêneas e
heterogêneas
Aplicar as estruturas de dados homogêneas e heterogêneas.
Os recursos básicos da Linguagem C fornecem as ferramentas
iniciais de programação, permitindo que sejam elaborados
programas de baixa e média complexidade. Inicialmente, serão
apresentados os tipos básicos de dados, como int, char e float, que
podem ser empregados para armazenar variáveis. Também serão
apresentados os tipos de operadores definidos na linguagem C:
aritméticos, lógicos e relacionais.
Vamos aprender a elaborar programas por meio da aplicação de
técnicas básicas de controle de fluxo na resolução de problemas,
como estruturas de decisão (if e switch) e estruturas de repetição
(for, while e do-while).
Veremos também como utilizar algumas estruturas de dados
homogêneas, como vetores, strings e matrizes. E finalizaremos
nosso estudo conhecendo as estruturas de dados heterogêneas
tipo struct.
Introdução
02/05/24, 11:37 Linguagem C: recursos básicos
https://stecine.azureedge.net/repositorio/00212ti/02576/index.html?brand=estacio# 2/75
1 - Tipos básicos de dados
Ao �nal deste módulo, você será capaz de identi�car os tipos básicos de dados e os tipos de
operadores em um programa.
Variáveis
Para manipular dados dos mais diversos tipos, é necessário poder
armazená-los na memória e poder referenciá-los quando for preciso. É
por isso que foi criado o conceito de variável.
Uma variável é um espaço reservado na memória, que
possui um nome (identificador) para facilitar a
referência, onde seu conteúdo pode ser alterado
durante a execução do programa.
As variáveis podem ser de diversos tipos, apresentados na tabela a
seguir, que contém todos os tipos básicos definidos no padrão ANSI
(American National Standards Institute), o espaço em bytes que o tipo
ocupa na memória e a faixa de valores que o tipo utiliza.
Tipo
Tamanho
em bytes
Tamanho em
bytes
char 1 -128 a 127
unsigned char 1 0 a 255
signed char 1 -128 a 127
02/05/24, 11:37 Linguagem C: recursos básicos
https://stecine.azureedge.net/repositorio/00212ti/02576/index.html?brand=estacio# 3/75
Tipo
Tamanho
em bytes
Tamanho em
bytes
int 4
-2.147.483.648 a
2.147.483.647 
unsigned int 4 0 a 4.294.967.295
signed int 4
-2.147.483.648 a
2.147.483.647 
short int 2 -32.768 a 32.767
unsigned short int   2 0 a 65.535
signed short int 2 -32.768 a 32.767
long int 4
-2.147.483.648 a
2.147.483.647 
signed long int 4
-2.147.483.648 a
2.147.483.647  
unsigned long int 4 0 a 4.294.967.295
float 4
Seis dígitos de
precisão
double 8
Dez dígitos de
precisão
long double 10
Dez dígitos de
precisão
Tabela: Tipos básicos de dados.
Elaborada por: Paulo Vidal.
Na tabela é possível observar que existem quatro tipos de variável: char,
int, float e double. A seguir, veremos mais detalhes sobre eles. Perceba
que, a seguir, os tipos float e double serão apresentados juntos. Isso
ocorre porque ambos possuem uma certa similaridade:
02/05/24, 11:37 Linguagem C: recursos básicos
https://stecine.azureedge.net/repositorio/00212ti/02576/index.html?brand=estacio# 4/75
O tipo char armazena um caractere de 1 byte de tamanho, bem
como valores positivos e negativos. Caracteres são
armazenados em códigos e, normalmente, é utilizado o código
ASCII (American Standard Code for Information Interchange).
O tipo char usa 8 bits para armazenar 256 valores, isto é, 28
valores. Como está definido na linguagem que o tipo char deve
ter números positivos e negativos, é necessário usar 1 bit para
representar o sinal, sobrando 7 bits para representar 128 (=27)
caracteres.
Como se calculam os valores mínimos e máximos de um tipo de
N bits com sinal (signed)?
São calculados pelas fórmulas (1) e (2).
(1) valor mínimo = 
(2) valor máximo = 
Assim, para o tipo char, o valor mínimo = 
e o valor máximo = .
O signed char possui as mesmas características do char.
O conceito de unsigned (sem sinal) é aplicado para caracteres e
inteiros. Como o tipo char precisa de 1 byte (N = 8 bits) de
armazenamento, usaremos as fórmulas (3) e (4) abaixo:
(3) valor mínimo = 0
(4) valor máximo = 
Então, o valor máximo = .
O tipo int armazena um número inteiro que ocupa 4 bytes (ou N =
32 bits) na memória e a faixa de valores está representada na
tabela de tipos básicos de dados, sendo bastante abrangente ao
compreender valores inteiros negativos e positivos, incluindo o
char 
−1 ∗ 2N−1
2N−1 − 1
−1 ∗ 28−1 = −128
28−1 = 127
2N − 1
28 − 1 = 255
int 
02/05/24, 11:37 Linguagem C: recursos básicos
https://stecine.azureedge.net/repositorio/00212ti/02576/index.html?brand=estacio# 5/75
número zero. Os valores mínimos e máximos são calculados
pelas fórmulas (1) e (2).
Os tipos signed int e unsigned int precisam de 4 bytes de
armazenamento e usam o conceito de inteiro com sinal e sem
sinal explicado acima.
Os tipos short int, signed short int e unsigned short int precisam
de 2 bytes de armazenamento e, também usam o conceito de
inteiro com sinal e sem sinal. Podem ser empregados para
armazenar valores pequenos, como a idade de uma pessoa.
Os três últimos tipos de inteiros são da classe com valores altos
(long), como: long int, signed long int e unsigned long int e
utilizam 32 bits de armazenamento. Devem ser usados, por
exemplo, em cálculos de projetos de engenharia que utilizam
maiores ordem de grandeza.
Quando você precisa fazer operações com números reais,
podem ser usados três tipos: float, double e long double.
As variáveis declaradas do tipo float, double e long double são
utilizadas para armazenar valores numéricos com parte
fracionária. São também frequentemente denominadas reais ou
de ponto flutuante (Exemplos: 2.12, 0.0000024573, 1.0).
A diferença entre uma variável do tipo float, tipo double ou long
double é o número de bytes que reserva para armazenar o valor.
A dimensão do float é normalmente de 4 bytes, do double é de 8
bytes, e do long double é de 10 bytes.
Pode-se dizer que esses três tipos armazenam números com
precisão simples (float) ou com dupla precisão (double ou long
double). Um float é representado por uma parte inteira e por
outra decimal, separadas por um ponto (e não por uma vírgula,
como é utilizado no Brasil).
Observando a tabela do tipos básicos de dados, os três tipos
para reais diferem também pelo grau de precisão por meio do
número de bits alocados para a parte decimal.
Declarações de variáveis
Uma das primeiras ações que o programador deve fazer na construção
de um programa é definir (ou declarar) as variáveis, de modo que o
compilador possa reservar espaço na memória para o valor a serarmazenado. A forma geral de uma declaração é:
tipo lista_de_variaveis;
Exemplo
int i;
float e double 
02/05/24, 11:37 Linguagem C: recursos básicos
https://stecine.azureedge.net/repositorio/00212ti/02576/index.html?brand=estacio# 6/75
unsigned int a, b, c;
char opcao;
char opcao;
char opcao;
double salario;
Todas as variáveis em C devem ser declaradas antes de serem usadas.
Ao declarar as variáveis em C, é importante seguir algumas regras:
Dica
É boa prática escolher um nome da variável que signifique o que ela
deve armazenar e indique a função da variável. Por exemplo: imposto,
valor, soma2nrs, total, nome, raio, salario_base. Veja que os nomes das
variáveis não possuem acento.
Atribuições de valores às variáveis
O nome da variável deve
conter somente letras e
dígitos.
O caractere "_" é contado
como uma letra.
O primeiro caractere do
nome deve sempre ser uma
letra.
Letras maiúsculas e
minúsculas são
consideradas caracteres
diferentes.
Palavras reservadas não
podem ser usadas como
nomes de variáveis.
02/05/24, 11:37 Linguagem C: recursos básicos
https://stecine.azureedge.net/repositorio/00212ti/02576/index.html?brand=estacio# 7/75
Depois que você declarou a variável, esta pode receber valores por meio
do operador de atribuição “=” que indica que o valor à direita será
atribuído à variável.
O valor inicial pode ser atribuído de duas formas. A primeira forma é
definir a variável e depois atribuir um valor a ela. A segunda é definir a
variável e atribuir um valor a ela em uma única instrução. Veja os
exemplos a seguir:
LINGUAGEM C 
Forma 1: Definir a variável e depois atribuir valor.
LINGUAGEM C 
Forma 2: Definir a variável atribuindo valor.
Lendo e imprimindo variáveis com
scanf() e printf()
Para seguirmos nas seções seguintes, é preciso entender como
funciona duas funções:
scanf()
Para leitura de variáveis
pelo teclado
(dispositivo de entrada
de dados).
printf()
Para exibição do
resultado do programa
na tela (dispositivo de
saída de dados), mais
especificamente pelo
prompt de comando do
sistema operacional.
As funções de entrada e saída estão inseridas na biblioteca stdio. Para
usá-las, precisamos inserir no programa a interface stdio.h, por meio da
diretiva #include < stdio.h >
A função printf()

02/05/24, 11:37 Linguagem C: recursos básicos
https://stecine.azureedge.net/repositorio/00212ti/02576/index.html?brand=estacio# 8/75
A função printf() (abreviatura de print formatted) permite imprimir
variáveis e strings com formatação por meio do uso de especificadores
de formato iniciados pelo símbolo %, localizados dentro da string a ser
impressa.
Vamos executar nosso primeiro código? O programa a seguir imprime a
frase “Salario = R$ 6500.46”. Clique no botão Executar e veja o
resultado.
Observe que no nosso primeiro programa existe uma numeração de 1 a
6 que representa cada linha do programa. Vamos à explicação de cada
uma.
Exemplo 1 dTUTORIAL COPIAR
C
null
null

 Linha 1
Inclusão da diretiva #include da biblioteca stdio.h
de funções de entrada e saída para que possamos
usar a função printf().
 Linha 2
Função principal main() na qual constam os
comandos do programa. Segue-se à função o
símbolo {, que indica o início do bloco de comandos
que serão executados dentro da função main().
 Linha 3
Definição da variável chamada salário (tipo float) e
atribuição inicial com o valor 6500.4567.
02/05/24, 11:37 Linguagem C: recursos básicos
https://stecine.azureedge.net/repositorio/00212ti/02576/index.html?brand=estacio# 9/75
A função scanf()
A função scanf() da biblioteca stdio permite ler a entrada do teclado
utilizando a seguinte sintaxe:
scanf("%X", &Y)
Onde:
"%X"
É o especificador de formato que define o tipo utilizado.
Y
É o nome da variável que armazenará o valor, devendo ser sempre
precedida de &.
 Linha 4
Comando printf() com três parâmetros: mensagem
a ser exibida no monitor; uma string a ser inserida
na mensagem; e valor da variável salário a ser
inserida na mensagem.
A mensagem "%s = R$ %.2f" é colocada entre aspas
duplas, composta de:
• especificador %s (s de string), (vereremos mais
detalhes adiante);
• string “= R$”;
• %.2f – o símbolo % seguido de .2f, indicando que o
valor tipo float terá duas casas decimais.
 Linha 5
As duas barras // significam início de comentário.
 Linha 6
O símbolo } significa fim da função main().
02/05/24, 11:37 Linguagem C: recursos básicos
https://stecine.azureedge.net/repositorio/00212ti/02576/index.html?brand=estacio# 10/75
Agora vamos ler os dados digitados? O programa a seguir mostra o uso
da função scanf() e imprime um número inteiro lido do teclado.
Uma observação: para executar o código diretamente no conteúdo, é
necessário que no campo entrada você coloque os valores a serem lidos
antes de iniciar a execução. Trata-se de uma pequena restrição, mas é
fácil contorná-la.
Vamos à explicação do código, focando os itens novos.
Exemplo 2 dTUTORIAL COPIAR
C
null
null

 Linha 3
Definição da variável nr (tipo int) para armazenar o
valor a ser lido e sua atribuição inicial com zero.
 Linha 4
O comando printf("Digite um valor inteiro: ")
imprime a mensagem "Digite um valor inteiro: " na
tela.
02/05/24, 11:37 Linguagem C: recursos básicos
https://stecine.azureedge.net/repositorio/00212ti/02576/index.html?brand=estacio# 11/75
Especi�cadores de formatos comuns
Especificadores são códigos de controle usados na formatação da
leitura e escrita indicando os tipos de valores usados nas funções
printf() e scanf().
O formato é composto do símbolo %, seguido de uma letra ou um
caractere especial, que indica o tipo a ser usado, apresentado na tabela
a seguir.
ESPECIFICAÇÃO TIPO
%c char
%d signed int
%i (signed) int
 Linha 5
O comando scanf("$d", &nr) tem dois parâmetros:
"%d" é o especificador de formato que define o tipo
inteiro utilizado e nr é o nome da variável que
armazenará o valor, devendo ser sempre precedida
de &.
 Linha 6
Comando printf() com três parâmetros: mensagem
a ser exibida no monitor; uma string a ser inserida
na mensagem; e valor da variável nr a ser inserida
na mensagem.
O formato da mensagem "%s = %d" é colocado
entre aspas duplas, composto de:
• especificador %s (s de string), (veremos mais
detalhes adiante);
• caractere “= ”;
• especificador %d – o símbolo % seguido do
caractere d, indicando que o valor a ser inserido é
tipo int.
02/05/24, 11:37 Linguagem C: recursos básicos
https://stecine.azureedge.net/repositorio/00212ti/02576/index.html?brand=estacio# 12/75
ESPECIFICAÇÃO TIPO
%u unsigned int
%hi short int
%hu unsigned short int
%l ou %ld ou %li long int
%lu unsigned long
%f float
%lf double
%e ou %E notação científica
%x ou %X hexadecimal
%s string
%p ponteiro
Tabela: Especificadores de formatos comuns.
Elaborada por: Paulo Vidal.
Antes de apresentar nosso próximo programa, vamos lembrar as
características de três tipos de dados que vimos no início do conteúdo
que serão usados no nosso próximo programa.
Tipo
Bytes
armazenados na
memória
Faixa de valores
int 4
-2.147.483.648 a
2.147.483.647 
02/05/24, 11:37 Linguagem C: recursos básicos
https://stecine.azureedge.net/repositorio/00212ti/02576/index.html?brand=estacio# 13/75
Tipo
Bytes
armazenados na
memória
Faixa de valores
short int  2 -32.768 a 32.767
long int  4
-2.147.483.648 a
2.147.483.647 
Tabela: Três tipos de dados inteiros.
Elaborada por: Paulo Vidal.
Agora, seguiremos para o programa. O objetivo é imprimir três valores
inteiros do tipo int, short int e long int, após serem lidos do teclado.
Lembre-se de colocar os valores a serem lidos no campo entrada, e
como serão três entradas, você precisará digitar três valores na mesma
linha separados por espaço. Sugerimos que, primeiramente, você utilize
o valor 10.000 e, em uma segunda execução, utilize 100.000.
Os valores a serem inseridos devem estar na mesma linha, separados
por espaço.
Novamente, vamos analisaras linhas do código:
Exemplo 3 dTUTORIAL COPIAR
C
null
null

 Linhas 4, 5 e 6
As linhas 4, 5 e 6 definem três variáveis chamadas
nr_int, nr_short_int e nr_long_int com as
características apresentadas na tabela Três tipos
de dados inteiros.
02/05/24, 11:37 Linguagem C: recursos básicos
https://stecine.azureedge.net/repositorio/00212ti/02576/index.html?brand=estacio# 14/75
 Linha 7
Após a definição, é impressa a frase “Digite um
valor tipo int:” na linha 7 usando o comando printf().
 Linha 8
É executado o comando scanf() para ler a variável.
A função scanf() recebe dois parâmetros separados
por uma vírgula. O primeiro parâmetro é o
especificador de formato "%d", indicando que o
valor a ser lido deve ser do tipo int. O segundo
parâmetro é o caractere & seguido da variável
nr_int, informando que a variável vai receber o valor.
 Linha 9
É impressa a frase “Digite um valor tipo short int: ”
usando o comando printf().
 Linha 10
É executado o comando scanf() para ler a variável.
A função scanf() recebe dois parâmetros separados
por uma vírgula. O primeiro parâmetro é o
especificador de formato "%hi", indicando que o
valor a ser lido deve ser do tipo short int. O segundo
parâmetro é o caractere & seguido da variável
nr_short_ int, informando que variável vai receber o
valor.
 Linha 11
É impressa a frase “Digite um valor tipo long int: ”
usando o comando printf().
 Linha 12
É t d d f() l iá l
02/05/24, 11:37 Linguagem C: recursos básicos
https://stecine.azureedge.net/repositorio/00212ti/02576/index.html?brand=estacio# 15/75
Na primeira execução, colocando o valor lido 10000 para cada variável, a
saída é 10000 para as três variáveis, pois esse valor está dentro da faixa
dos 3 tipos.
Como o valor lido é 100000, a saída será 100000 para as duas variáveis
do tipo int e long int, pois esse valor está dentro da faixa de valores de
cada tipo.
Na variável nr_short_int, o resultado foi -31072. Isso
porque, na tabela Três tipos de dados inteiros, o valor
100000 está fora da faixa de valores da variável short
int, em que o armazenamento usa apenas 2 bytes de
memória.
Especi�cadores de formatos especí�cos do
printf()
Além dos especificadores comuns, você pode usar outros
especificadores apenas para o comando printf(), descritos no quadro a
seguir.
É executado o comando scanf() para ler a variável.
A função scanf() recebe dois parâmetros separados
por uma vírgula. O primeiro parâmetro é o
especificador de formato "%ld", indicando que o
valor a ser lido deve ser do tipo long int. O segundo
parâmetro é o caractere & seguido da variável
nr_long_ int, informando que variável vai receber o
valor.
 Linhas 13, 14 e 15
As linhas 13, 14 e 15 imprimem as variáveis
definidas. Observe que os especificadores de
formato são os mesmos empregados no comando
scanf(), o "%d","%hi" e "%ld", adequados a cada tipo
de valor.
Nas linhas 13 e 14 aparece o caractere \n (new line)
depois do especificador, o que significa próxima
linha. O comando printf() imprime a frase Numero =,
o valor da variável e o cursor pula para a próxima
linha.
Na linha 15, existem dois caracteres \n seguidos. O
comando printf() imprime a frase Numero =, o valor
da variável e o cursor pula as duas próximas linhas.
02/05/24, 11:37 Linguagem C: recursos básicos
https://stecine.azureedge.net/repositorio/00212ti/02576/index.html?brand=estacio# 16/75
ESPECIFICADOR SAÍDA
%.Xf ou %.Xlf
Ponto flutuante com X
casas decimais
%.Xe ou %.XE
Número em notação
científica com X casas
decimais
%.Xs
Primeiros X caracteres
da string
%% Imprime %
Tabela: Especificadores para a função printf().}
Elaborada por: Paulo Vidal.
Agora, vamos executar um programa que mostra o emprego dos
formatos da tabela Especificadores para a função printf().
Vejamos a explicação do código!
Exemplo 4 dTUTORIAL COPIAR
C
null
null

 Linha 3
O formato %.2f especifica que o valor deve ter duas
casas decimais. Assim, o valor é aproximado para
123.57.
02/05/24, 11:37 Linguagem C: recursos básicos
https://stecine.azureedge.net/repositorio/00212ti/02576/index.html?brand=estacio# 17/75
A utilização de constantes
Constante é um nome (ou identificador) que assume um valor fixo
durante toda a execução de um programa. Existem duas formas de
declarar uma constante:
Neste caso, a constante é chamada de constante simbólica e é,
geralmente, declarada em letras maiúsculas para diferenciar-se
de variáveis. Por exemplo:
#define PI 3.1415
A diretiva #define informa ao pré-processador que o símbolo que
a segue deve ser substituído pelo valor que aparece depois dele.
O que ocorre na prática é que, ao compilar o código, o pré-
processador vai verificar no código as ocorrências da palavra PI
e substituí-las por 3.1415.
 Linha 4
O especificador %.3E denota que o número deve ser
exibido no formato de notação científica, seguindo
a fórmula , sendo M (Mantissa) e E
(Expoente).
O valor 1.236E+002 é igual a . O
número 3 no formato %.3E representa o número de
casas decimais da mantissa.
O terceiro resultado é a impressão da string
“Primeiro nome de Paulo Cesar: Paulo”, em que o
formato %.5s diz ao printf() para imprimir os cinco
primeiros caracteres da string “Paulo Cesar”.
N = Mx2E
1, 236x10+2
 Linha 6
Aparece o especificador 20%%, que resulta na string
20%.
Por meio da diretiva de pré-compilação #define 
02/05/24, 11:37 Linguagem C: recursos básicos
https://stecine.azureedge.net/repositorio/00212ti/02576/index.html?brand=estacio# 18/75
Neste caso, a variável pode apenas receber um valor inicial, não
podendo ser alterada durante a execução do programa. Por
exemplo:
const int PI = 3.1415;
const é um modificador de acesso. Assim, a constante declarada
dessa forma é realmente uma variável, existindo fisicamente na
memória.
Testaremos as duas formas, começando pela diretiva #define.
Agora, vamos executar com a palavra reservada const.
Por meio do modificador de acesso const. 
Exemplo 5 dTUTORIAL COPIAR
C
null
null

Exemplo 5 dTUTORIAL COPIAR
C
null
null

02/05/24, 11:37 Linguagem C: recursos básicos
https://stecine.azureedge.net/repositorio/00212ti/02576/index.html?brand=estacio# 19/75
Ao analisar os dois programas, você pode ficar na dúvida sobre o que
ocorreu de diferente. Quanto à execução do programa, neste caso, não
foi possível verificar nenhuma diferença. A mudança ocorre durante o
processo de compilação e execução. Entenda:
#de�ne
Quando utilizado o
#define, o que ocorre é
a mudança, durante a
compilação, da palavra
PI por 3.1415. Em
outras palavras, na
compilação, a linha
printf seria
transformada em:
“printf ("Valor de PI: %.2f
", 3.1415);”. Veja que a
palavra PI foi
substituída pelo valor
3.1415.
const
Com o uso da palavra
const, não houve a
substituição. Na
realidade, foi criada
uma área de memória
durante a execução
para a variável PI, e o
conteúdo dessa variável
vale 3.1415. O que o
modificador const faz é
bloquear qualquer
alteração nessa área de
memória.
E como definimos a constante do tipo char?
Uma constante do tipo char possui um único caractere escrito entre
aspas simples, como em 'a', podendo participar normalmente de
expressões aritméticas. O valor que entra na expressão é o do código
usado para representar o caractere, como mostra a tabela a seguir.
Caractere Descrição
'a' Caractere a.
'A' Caractere A.
'\0141'
Constante octal correspondente
ao caractere 'a'.
'\n'
Nova linha (New line). Posiciona
o cursor no início da nova linha.
'\r'
Retorno do cursor. Posiciona o
cursor no início da linha atual.

02/05/24, 11:37 Linguagem C: recursos básicos
https://stecine.azureedge.net/repositorio/00212ti/02576/index.html?brand=estacio# 20/75
Caractere Descrição
'\t'
Tabulação horizontal. Move o
cursor para a próxima parada de
tabulação. 
'\a'
Alerta; faz soar a campainha do
sistema.
'\0'
Null, caractere que, em C,
encerra um conjunto de
caracteres.
Tabela: Exemplos de constantescom caracteres e seu significado.
Elaborada por: Paulo Vidal.
Perceba que o caractere 'n' é diferente do caractere especial '\n' (New
Line). No próximo código, vamos utilizar constantes como caracteres.
Entradas e saídas na Linguagem C
No vídeo a seguir, abordaremos as funções scanf e printf, além dos
diversos tipos de dados.
Exemplo 5 dTUTORIAL COPIAR
C
null
null


02/05/24, 11:37 Linguagem C: recursos básicos
https://stecine.azureedge.net/repositorio/00212ti/02576/index.html?brand=estacio# 21/75
02/05/24, 11:37 Linguagem C: recursos básicos
https://stecine.azureedge.net/repositorio/00212ti/02576/index.html?brand=estacio# 22/75
Falta pouco para atingir seus objetivos.
Vamos praticar alguns conceitos?
Questão 1
Segundo as regras de definição de variáveis, indique qual das
variáveis abaixo tem nome incorreto.
Parabéns! A alternativa D está correta.
Pelas regras de criação de nomes de variáveis, o primeiro caractere
não pode ser um dígito, e sim uma letra ou um caractere
underscore.
Questão 2
A função scanf() tem a finalidade de fazer leitura de uma variável
pelo teclado. Considerando que a variável num seja do tipo inteiro
(int), qual opção abaixo é verdadeira?
A int idade;
B int num_cliente;
C float a1b2c3;
D float 7a2b3c;
E char letra1;
A scanf("%f", &num);
B scanf("%lf", &num);
C scanf("%d", &num);
02/05/24, 11:37 Linguagem C: recursos básicos
https://stecine.azureedge.net/repositorio/00212ti/02576/index.html?brand=estacio# 23/75
Parabéns! A alternativa C está correta.
O especificador de formato indica o tipo de dado que será
carregado na variável. Para que sejam lidos números inteiros, deve
ser utilizado o especificado %d.
2 - Operadores e controle de �uxo
Ao �nal deste módulo, você será capaz de aplicar as técnicas básicas de controle de �uxo na
resolução de problemas.
Operadores
Um operador em uma linguagem de programação é um símbolo que diz
ao compilador ou interpretador para executar operações matemáticas,
relacionais ou lógicas e produzir o resultado final. Operadores são
usados para compor uma expressão. Uma expressão é uma fórmula na
qual operandos são vinculados uns aos outros pelo uso de operadores
para calcular determinado valor.
Neste módulo, explicaremos o conceito de vários tipos de operadores
da linguagem C:
aritméticos e de atribuição;
de incremento e decremento;
atribuição múltipla;
lógicos e relacionais.
D scanf("%c", &num);
E scanf("%p", &num);
02/05/24, 11:37 Linguagem C: recursos básicos
https://stecine.azureedge.net/repositorio/00212ti/02576/index.html?brand=estacio# 24/75
Operadores aritméticos
Operadores aritméticos são usados para operações matemáticas. O
quadro a seguir descreve cada um deles usados na linguagem C.
Operador Descrição Exemplo
= Atribuição
a = 10 (variável
recebe valor
10); b = 5;
+ Adição
soma = a +
b; (soma = 15)
- Subtração
sub = a – b; (sub
= 5)
* Multiplicação
mult =
a*b; (mult = 50)
/ Divisão div = a/b; (div = 2)
% Resto da divisão
resto
= a%b; (resto = 0)
Tabela: Operadores aritméticos.
Elaborada por: Paulo Vidal.
Quando dois ou mais operadores se encontram em uma expressão, as
operações são efetuadas uma de cada vez respeitando algumas regras
de precedência. No caso dos operadores aritméticos, as regras são as
mesmas da matemática, como exemplificado na próxima tabela.
Expressão Valor Ordem
1 + 2 - 3 0 + -
24 - 3 * 5 9 * -
4 - 2 * 6 / 4 +
1
2 * / - +
02/05/24, 11:37 Linguagem C: recursos básicos
https://stecine.azureedge.net/repositorio/00212ti/02576/index.html?brand=estacio# 25/75
Expressão Valor Ordem
6 / 2 + 11 %
3 * 4 
11 / % * + 
Tabela: Exemplos de expressões aritméticas.
Elaborada por: Paulo Vidal.
A ordem de precedência dos operadores pode ser quebrada utilizando-
se os parênteses, que possuem a mais alta precedência, apresentada na
tabela a seguir.
Expressão Valor Ordem
1 + (2 - 3) 0 - +
(24 - 3) * 5 105 - *
(4 - 2 * 6) / 4
+ 1
-1 * - / +
6 / ((2 + 11)
% 3) * 4
24 + % / *
Tabela: Precedência de operadores aritméticos.
Elaborada por: Paulo Vidal.
Vamos mostrar alguns exemplos de programas usando operadores
aritméticos, começando por um programa que lê um valor de uma
distância em metros e imprime seu correspondente em centímetros.
Exemplo 1 dTUTORIAL COPIAR
C
null
null
02/05/24, 11:37 Linguagem C: recursos básicos
https://stecine.azureedge.net/repositorio/00212ti/02576/index.html?brand=estacio# 26/75
Na linha 6, é usado o operador de multiplicação “*” na expressão nr*100.
A expressão é o segundo parâmetro da função printf().
O próximo programa lê 3 números reais e imprime a média aritmética
deles. Obs.: a média deve conter 3 casas decimais. Você vai precisar
digitar três valores na mesma linha separados por espaço.
A linha 10 mostra a expressão da média e a linha 11, sua impressão.
No terceiro exemplo, o programa calcula a área de um círculo e usa o
conceito de constante.
Observe que o valor da área possui duas casas decimais e é
arredondado para 314.16.
A área do círculo é igual a π (PI) x raio2, assim, é necessário definir duas
variáveis (raio e área) na linha 4 e a constante PI na linha 2.

Exemplo 2 dTUTORIAL COPIAR
C
null
null

Exemplo 3 dTUTORIAL COPIAR
C
null
null

02/05/24, 11:37 Linguagem C: recursos básicos
https://stecine.azureedge.net/repositorio/00212ti/02576/index.html?brand=estacio# 27/75
A linha 7 mostra a codificação da fórmula da área e a linha 8, a instrução
printf() para sua exibição na tela.
Operadores de atribuição aritmética
Muitas vezes, deseja-se alterar o valor de uma variável realizando
alguma operação aritmética com ela. Por exemplo:
Linguagem C 
Para realizar tais operações, são utilizados operadores de atribuição
aritmética. São instruções da linguagem C para aperfeiçoar a atribuição
aritmética. Os operadores são:
A tabela a seguir apresenta alguns exemplos e a sua expressão
equivalente.
+=
Atribuição por adição
-=
Atribuição por subtração
*=
Atribuição por multiplicação
/=
Atribuição por divisão
%=
Atribuição por módulo (resto)
02/05/24, 11:37 Linguagem C: recursos básicos
https://stecine.azureedge.net/repositorio/00212ti/02576/index.html?brand=estacio# 28/75
Atribuição
aritmética
Instrução equivalente
i += 1; i = i + 1;
j -= valor; j = j - valor;
val *= 2; val = val * 2;
num *= 1 + k; num = num * (1 + k);
div10 /= 10; div10 = div10 / 10;
resto %= 4; resto = resto % 4;
Tabela: Exemplos de atribuição aritmética.
Elaborada por: Paulo Vidal.
O próximo programa mostra a impressão na tela dos exemplos de
atribuição aritmética da tabela anterior.
As expressões com atribuições aritméticas estão inseridas no comando
printf() como segundo parâmetro, pois a execução de cada expressão
resulta em um valor a ser impresso.
Operadores de incremento e decremento
Exemplo 4 dTUTORIAL COPIAR
C
null
null

02/05/24, 11:37 Linguagem C: recursos básicos
https://stecine.azureedge.net/repositorio/00212ti/02576/index.html?brand=estacio# 29/75
O operador que incrementa (++) ou decrementa (--) uma variável em 1
(uma) unidade. Existem duas variações para este operador:
PRÉ (++nome_variavel ou - - nome_variavel)
O valor será incrementado ou decrementado na instrução em que a
variável estiver contida.
PÓS (nome_variavel++ ou nome_variavel- -)
O valor será incrementado ou decrementado na próxima instrução.
Nosso próximo programa mostra o uso dos operadores. Ao lado de
cada comando printf(), existe um comentário mostrando o valor
impresso da variável.
Perceba que, quando o operador é utilizado após a variável (j++), o valor
original é impresso e, em seguida, a operação é realizada.
Operador de atribuição múltipla
O operador de atribuição “=” pode ser utilizado para atribuir um valor a
múltiplas variáveis em uma única instrução. A sintaxe do operador é:
var_1 = [ var_2 = … ] expressão;
Os identificadores var_1, var_2, … são variáveis e a expressão é válida.
No programa do exemplo 4, foram declaradas as seguintesvariáveis, em
que todas receberam o valor inicial 1 (um).
Linguagem C 
Exemplo 5 dTUTORIAL COPIAR
C
null
null

02/05/24, 11:37 Linguagem C: recursos básicos
https://stecine.azureedge.net/repositorio/00212ti/02576/index.html?brand=estacio# 30/75
Entretanto, podemos substituir por:
Linguagem C 
As atribuições múltiplas ocorrem da direita para a esquerda. No trecho
de código acima, o valor 1 é atribuído primeiro a k, depois a num, depois
a val, depois a j e, por último, a i.
O operador de atribuição possui a mesma precedência dos operadores
de atribuição aritmética.
Operadores lógicos
A linguagem C possui quatro tipos de dados (int, float, char e double),
não existindo nenhum tipo que permita representar os valores lógicos
(verdadeiro e falso). Existem, contudo, linguagens que disponibilizam
um tipo específico para representar valores lógicos (Ex.: tipo boolean,
em PASCAL, o qual pode receber os valores TRUE e FALSE).
&&
e (and)
||
ou (or)
!
não (not)
A tabela a seguir mostra um exemplo de uso de cada operador.
A B !A
A
&&
B
A ||
B
0 0 1 0 0
0 1 1 0 1
1 0 0 0 1
02/05/24, 11:37 Linguagem C: recursos básicos
https://stecine.azureedge.net/repositorio/00212ti/02576/index.html?brand=estacio# 31/75
A B !A
A
&&
B
A ||
B
1 1> 0 1 1
Tabela: Operadores lógicos.
Elaborada por: Paulo Vidal.
A tabela apresenta o uso de apenas dois operandos, A e B, mas
podemos construir expressões maiores.
Verifique quais são as saídas do programa a seguir.
A tabela Operadores lógicos apresenta valores 0 e 1 aplicados aos
operadores. Entretanto, observe que nas linhas 3 e 4, as variáveis B e D
receberam valores diferentes de zero, com tipos diferentes, isto é, você
pode colocar valores diferentes de 1 que, na linguagem C, correspondem
a verdadeiro.
Na linha 6, temos a operação !A é igual a um, pois o operador inverte o
valor de A. No caso de !B será igual 0, pois como B é diferente de zero
(verdadeiro), então !0.1 = 0.
A linha 7 apresenta expressões com os operadores && e ||. Colocando
os valores nas variáveis B, C e D, e realizando passo a passo cada
expressão, temos:
B && C = 0.1 && 0 = 0;
C || D = 0 || 123 = 1.
Atividade discursiva
Exemplo 6 dTUTORIAL COPIAR
C
null
null

02/05/24, 11:37 Linguagem C: recursos básicos
https://stecine.azureedge.net/repositorio/00212ti/02576/index.html?brand=estacio# 32/75
Considerando M = 1, N = 0 e K = 1, qual é o valor das expressões abaixo?
Em dúvida? Então, que tal você escrever um programa em C que realize
o cálculo?
a) !M && N || K;
b) (K && M) || (!M).
Digite sua resposta aqui
Chave de resposta
O resultado é:
a) 1
b) 1
Sugestão de programa para resolver os itens acima:
#include < stdio.h >
   int main(void){
      int M = 0, N = 0, K =1;
      char C = 0; int D = 123;
      printf("%d \n", !M && N || K);
      printf("%d \n", (K && M) || (!M) );
}
Operadores relacionais
A linguagem C possui um conjunto de seis operadores relacionais, os
quais podem ser usados na avaliação de expressões. Sua finalidade
consiste no estabelecimento de relações entre os operandos. O quadro
a seguir apresenta os operadores relacionais:
Operador Nome Exemplo Significado
== Igualdade X == Y
X é igual a
Y?
02/05/24, 11:37 Linguagem C: recursos básicos
https://stecine.azureedge.net/repositorio/00212ti/02576/index.html?brand=estacio# 33/75
Operador Nome Exemplo Significado
> Maior que X > Y
X é maior
que Y?
>=
Maior ou
igual que
X >= Y
X é maior ou
igual a Y?
< Menor que X < Y
X é menor
que Y?
<=
Menor ou
igual que
X <= Y
X é menor
ou igual a Y?
!= Diferente X != Y
X é diferente
de Y?
Tabela: Operadores relacionais.
Elaborada por: Paulo Vidal.
O resultado de uma comparação (ou operação lógica) será:
0
Se a condição testada
for falsa.
1
Se a condição testada
for verdadeira.
A precedência dos operadores lógicos e relacionais é apresentada a
seguir.
> >= < <=
== !=
&&
||
Os operadores relacionais podem ser aplicados a expressões simples
ou complexas.
Exemplo
5 > 2, resultado 1.
6 ! 6, resultado 0.
A >= B, resultado depende dos valores de A e B.
(x + y) < (a*b-c), resultado depende dos valores dos operandos.

02/05/24, 11:37 Linguagem C: recursos básicos
https://stecine.azureedge.net/repositorio/00212ti/02576/index.html?brand=estacio# 34/75
Chegou a hora de executarmos mais um programa.
Vamos entender o que aconteceu?
Comandos de controle de �uxo
Vimos anteriormente os operadores lógicos e relacionais. Esses
operadores são bastante utilizados nos comandos de controle de fluxo
Exemplo 7 dTUTORIAL COPIAR
C
null
null

 Linha 7
A expressão A >= B é verdadeira, pois os valores de
A e B são iguais, portanto, a saída é 1.
 Linha 8
A expressão A != B é falsa, pois os valores de A e B
são iguais, portanto, a saída é 0.
 Linha 9
A expressão C > D é verdadeira, pois o valor de ‘a’ é
97 no código ASCII, portanto, a saída é 1.
02/05/24, 11:37 Linguagem C: recursos básicos
https://stecine.azureedge.net/repositorio/00212ti/02576/index.html?brand=estacio# 35/75
da linguagem C que estudaremos agora. Os comandos de controle de
fluxo são divididos em:

Estruturas de decisão

Estruturas de repetição
Estruturas de decisão
Estruturas que permitem direcionar o fluxo lógico para blocos distintos
de instruções conforme uma condição de controle. Veremos os
comandos:
if-else;
switch-case;
operador ? (operador interrogação).
Comando if-else
A instrução if-else permite indicar em que circunstâncias deve ser
executada determinada instrução ou determinado conjunto de
instruções, ou seja, você executa um trecho selecionado do código de
acordo com o resultado do teste de uma condição. A sua sintaxe é:
Pseudocódigo 
Sintaxe da instrução if-else.
A instrução if-else funciona da seguinte maneira:
Funcionamento da instrução if-else
02/05/24, 11:37 Linguagem C: recursos básicos
https://stecine.azureedge.net/repositorio/00212ti/02576/index.html?brand=estacio# 36/75
Observe que, na sintaxe apresentada, a componente else está entre
colchetes ([]) porque é opcional. Essa instrução permite que um bloco
de instruções não seja executado em um programa, bastando que a
condição necessária para a sua execução nunca se verifique.
Vamos ver como a instrução if funciona na prática com um programa
que lê um número inteiro e verifica se é um número par.
O objetivo do programa é dizer se um número inteiro lido é um número
par. Para saber, precisamos dividir o número por 2 e verificar o valor do
resto. Se o resto é zero, o número é par. Essa condição está codificada
na linha 7 pelo comando if.
Nessa linha, a condição (num % 2) == 0 retorna um valor, que será 1, se
ela for verdadeira (número par) ou 0, se for falsa (número ímpar). Caso
seja verdadeira, o teste da condição será executado na linha 8 do
programa que contém o printf.
Nosso último exemplo está incompleto. Podemos melhorá-lo e imprimir
uma mensagem caso o valor lido seja ímpar. Para isso, devemos
acrescentar na linha 9 a alternativa de usar o else. O comando if-else
fica assim:
Exemplo 8 dTUTORIAL COPIAR
C
null
null

Exemplo 8 com else dTUTORIAL COPIAR
C
null
02/05/24, 11:37 Linguagem C: recursos básicos
https://stecine.azureedge.net/repositorio/00212ti/02576/index.html?brand=estacio# 37/75
Lembre-se de que você deve apenas incluir o código na linha 9. Observe
que o else termina com um ponto e vírgula.
Nosso próximo exemplo é de um programa que verifique se um número
lido é divisível por 2 e por 5.
A linha 6 mostra a condição do if, onde é calculado o resto da divisão do
número por 2 e, também, por 5 empregando o operador &&. Se os dois
valores forem verdadeiros, então a condição será verdadeira e o
comando na linha 7 será executado; senão, o printf() será executado na
linha 9. Como se pode observar nos exemplos acima, pela sintaxe da
instrução if-else, apenas uma instrução pode seguir o if ou o else.
Caso se deseje que um conjunto de instruções seja realizado,quer no if
quer no else, estas devem ser escritas entre { } de modo que esse
conjunto de instruções forme apenas um único bloco de instruções.
Assim, um bloco é um conjunto de duas ou mais instruções delimitadas
por chaves.
Uso de comandos if aninhados
Existem situações em que o teste de uma condição não é suficiente
para tomar uma decisão. Pode ser necessário testar mais do que uma
condição. Assim, a linguagem C padrão também permite o uso de
comandos if aninhados, conforme a sintaxe a seguir.
Linguagem C 
null

Exemplo 9 dTUTORIAL COPIAR
C
null
null

02/05/24, 11:37 Linguagem C: recursos básicos
https://stecine.azureedge.net/repositorio/00212ti/02576/index.html?brand=estacio# 38/75
Sintaxe da instrução if-else.
No último exemplo, o teste era feito para testar se o número era divisível
por 2 e por 5. Entretanto, podemos ter situações em que queremos
verificar outras situações. Por exemplo:
1. Se o número é divisível por 2 e 5;
2. Se o número é divisível por 2, e não por 5;
3. Se o número não é divisível por 2, mas é por 5;
4. Se o número não é divisível por 2 e nem por 5.
Podemos testar todas essas situações utilizando o conceito de if
aninhados. O próximo exemplo mostra esse conceito. Usaremos o
conceito de if aninhados para lermos um número e verificarmos as
quatro situações apresentadas.
Comando switch-case
O segundo comando de decisão é o switch-case. A instrução switch-
case adapta-se particularmente à tomada de decisões em que o número
de possibilidades é elevado (em geral maior que 2, se não usamos if-
Exemplo 10 dTUTORIAL COPIAR
C
null
null

02/05/24, 11:37 Linguagem C: recursos básicos
https://stecine.azureedge.net/repositorio/00212ti/02576/index.html?brand=estacio# 39/75
else), de forma a reduzir a complexidade de if-else consecutivos e
encadeados. Veja a sintaxe do switch-case:
Linguagem C 
Esta instrução compara a expressão com todas as constantes. Caso
seja verdadeira, ela executa as sequências de comandos daquela
constante. Caso todas as alternativas sejam falsas, o comando default
é executado, se existir, porque é opcional.
A instrução break é opcional, mas é importante, uma vez que interrompe
a execução da sequência de comandos daquela condição.
Caso não seja colocado o break, todas as instruções
seguintes serão executadas.
Você pode estar se perguntando: qual é a diferença entre o switch e o if?
Entenda:
switch
Compara apenas
igualdades.
if
Compara qualquer
expressão lógica ou
relacional.
Nosso próximo exemplo será um programa que lê dois números reais e
executa a soma ou multiplicação deles, de acordo com a opção
escolhida (digitar 1 – para soma ou 2 – para multiplicação). Os valores a
serem inseridos devem estar na mesma linha, separados por espaço.

Exemplo 11 dTUTORIAL COPIAR
C
02/05/24, 11:37 Linguagem C: recursos básicos
https://stecine.azureedge.net/repositorio/00212ti/02576/index.html?brand=estacio# 40/75
O operador ternário?
O operador ternário é uma alternativa para substituir o if…else, em
algumas situações, por ser um comando simples. Veja a sintaxe:
Pseudocódigo 
Sintaxe do operador ternário.
A condição é testada, e, se o resultado for verdadeiro, o resultado de
toda a expressão é o valor devolvido por expressão1. Se o resultado for
falso, o resultado de toda a expressão é o valor devolvido por
expressão2.
Vamos ao exemplo de uso do operador?
Observe a linha 8 que emprega o operador ?: numero >= 0 ? numero++ :
numero--;
Neste código, se o número for maior ou igual a zero (numero >= 0), a
variável numero será incrementada (numero++), caso contrário, será
null
null

Exemplo 12 dTUTORIAL COPIAR
C
null
null

02/05/24, 11:37 Linguagem C: recursos básicos
https://stecine.azureedge.net/repositorio/00212ti/02576/index.html?brand=estacio# 41/75
decrementada de uma unidade (numero--).
Poderíamos fazer o mesmo teste empregando o if-else, como no código
a seguir:
Estruturas de repetição
As estruturas de repetição, também chamadas de laço (loop, em inglês),
são utilizadas para que um conjunto de instruções seja executado até
que ocorra uma condição de parada, isto é, haverá uma repetição de
instruções até que seja atingida determinada condição.
As estruturas de repetição usadas na linguagem C são: for, while e do-
while. Normalmente, o comando for diferencia-se dos restantes (while e
do-while) por ter condições predefinidas, ou seja, o número de vezes a
ser executado já é conhecido.
Nesta seção, também abordaremos os desvios incondicionais.
Comando for
O comando for permite que determinada instrução, ou conjunto de
instruções, seja repetida por um número conhecido de repetições. A
sintaxe é:
Pseudocódigo 
Sintaxe do for.
Na inicialização é atribuído um valor inicial para a variável que irá
controlar o laço. A condição determina quando o laço deve ser
encerrado. Incremento indica o quanto a variável controladora é
Exemplo 13 dTUTORIAL COPIAR
C
null
null

02/05/24, 11:37 Linguagem C: recursos básicos
https://stecine.azureedge.net/repositorio/00212ti/02576/index.html?brand=estacio# 42/75
incrementada. Vamos testar? Execute o código a seguir que imprime
números inteiros de 1 a 5.
Recomendação
Altere o programa do exemplo 13 e faça com que imprima um número
diferente de linhas.
Vamos a outro exemplo? Execute o código abaixo que imprime os
números pares entre 1 e 20.
Observe que os números são impressos um ao lado do outro. No
comando printf() existe um espaço após o especificador %d e não tem o
\n.
Comando while
Exemplo 14 dTUTORIAL COPIAR
C
null
null

Exemplo 15 dTUTORIAL COPIAR
C
null
null

02/05/24, 11:37 Linguagem C: recursos básicos
https://stecine.azureedge.net/repositorio/00212ti/02576/index.html?brand=estacio# 43/75
O comando while executa uma instrução ou um bloco de instruções
enquanto determinada condição for verdadeira. Veja sua sintaxe:
Pseudocódigo 
Sintaxe do while.
Como é seu funcionamento?
Funcionamento da instrução while.
Note que quando o while possui várias instruções, temos que colocar o
símbolo { no início e o símbolo } no final do bloco de comando.
Vamos executar o exemplo anterior, que imprime números inteiros de 1
a 5, usando o comando while? Veja a seguir.
Exemplo 16 dTUTORIAL COPIAR
C
null
null

02/05/24, 11:37 Linguagem C: recursos básicos
https://stecine.azureedge.net/repositorio/00212ti/02576/index.html?brand=estacio# 44/75
Os dois comandos dentro do while formam um bloco, iniciado e
finalizado por {...}. Estes comandos serão executados enquanto a
condição (n <=5) for verdadeira.
Agora, vamos executar um programa que soma dois números inteiros
lidos pelo teclado. Após imprimir a soma, existe uma opção de
permanecer ou sair do programa usando o comando while. Lembre-se
de colocar no campo de entrada os valores que devem ser carregados
nas variáveis.
Os valores a serem inseridos devem estar na mesma linha, separados
por espaço. A última sequência de valores deve finalizar com o valor 2,
que corresponde a situação de não desejar continuar.
Comando do-while
A instrução ou o laço do-while difere dos laços anteriores porque o teste
da condição é realizado no fim do bloco de instruções do laço e não
antes, como acontece com os laços while e for. O laço termina quando
a condição se torna falsa. A sintaxe do comando é:
Pseudocódigo 
Sintaxe do do-while.
Agora, vamos alterar o programa anterior para realizar a soma de dois
números inteiros, lidos pelo teclado, utilizando do-while. Após imprimir a
soma, criar uma opção de permanecer ou sair do programa.
Os valores a serem inseridos devem estar na mesma linha, separados
por espaço. A última sequência de valores deve finalizar com o valor 2,
Exemplo 17 dTUTORIAL COPIAR
C
null
null

02/05/24, 11:37 Linguagem C: recursos básicos
https://stecine.azureedge.net/repositorio/00212ti/02576/index.html?brand=estacio# 45/75
que corresponde a situação de não desejar continuar.
Vamos analisaralgumas linhas do programa para entender melhor
como a instrução funciona:
Exemplo 18 dTUTORIAL COPIAR
C
null
null

 Linha 4
O comando do-while é iniciado.
 Linhas 12 e 13
Permitem ao usuário escolher uma das duas
opções.
 Linhas 14 a 18
Como o usuário pode digitar qualquer caractere
além do 1 ou 2, faz-se necessário avisar com a
mensagem de alerta "Opção inválida!!!”. Assim, o
usuário digita novamente a opção desejada. Esse
cenário está codificado no loop while. A condição
((resposta != 1) && (resposta != 2)) tem o operador
diferente != e o operador && (e). O valor digitado na
variável resposta é comparado. Se for diferente de 1
e de 2, a mensagem de alerta é emitida. Enquanto
não for digitado o 1 ou o 2, permanece dentro do
loop while.
02/05/24, 11:37 Linguagem C: recursos básicos
https://stecine.azureedge.net/repositorio/00212ti/02576/index.html?brand=estacio# 46/75
Atividade discursiva
Vamos praticar? Escreva um programa que conte o número de dígitos
de um número inteiro positivo. Você pode utilizar o emulador do
exemplo 17 para testar seu código. Para isso, basta apagar o exemplo e
inserir o novo código.
Digite sua resposta aqui
Chave de resposta
#include
int main(){
   int n, num;
   int contador = 0;
   printf("Digite um número inteiro positivo: ");
   scanf("%d", &num);
   n = num;
   do {
      n = n / 10;
      contador ++;
   } while (n>0);
   printf("O número %d tem %d dígitos\n", num, contador);
}
 Linha 19
Termina o comando do-while. Foi criada a condição
(resposta == 1), isso significa que, enquanto o
usuário digitar a opção 1, a execução do programa
continua.
02/05/24, 11:37 Linguagem C: recursos básicos
https://stecine.azureedge.net/repositorio/00212ti/02576/index.html?brand=estacio# 47/75
Loop in�nito
O loop infinito é uma situação de exceção, pois, como o próprio nome
diz, o programa roda infinitamente, devido ao laço executar sem parar.
Se quiser testar os programas citados a seguir, tome cuidado, pois eles
vão ficar rodando até serem forçados externamente a parar. A forma
para fazer isso depende do software de desenvolvimento e do sistema
operacional, bastando, na maioria dos casos, fechar a janela do
terminal/prompt. Caso não consiga pará-lo, é preciso reiniciar o
computador. Veja os exemplos:
Linguagem C 
Exemplo com o for.
Linguagem C 
Exemplo com while.
Desvios incondicionais
02/05/24, 11:37 Linguagem C: recursos básicos
https://stecine.azureedge.net/repositorio/00212ti/02576/index.html?brand=estacio# 48/75
Os desvios incondicionais permitem o desvio do fluxo lógico de
execução das instruções sem a utilização de uma condição de controle.
São eles:
Esta instrução é muito pouco utilizada, pois torna os códigos
difíceis de compreender à medida que aumenta a complexidade
do programa. O exemplo abaixo faz o mesmo que o exemplo do
laço for mostrado anteriormente. O programa que utiliza o for é
mais fácil de entender.
Execute o código abaixo e analise!
Observando a instrução goto acima, verifica-se que se n<=10,
volta para o rótulo (chamado loop1) acima, executando as
instruções outra vez até que a condição do if seja falsa.
A instrução break pode ser tanto usada para terminar um teste
case dentro de um bloco switch, quanto para interromper a
execução de um laço.
Quando esta instrução é utilizada dentro de um laço for, ele é
imediatamente interrompido e o programa continua a execução
na instrução seguinte ao comando for.
No trecho de programa abaixo, o laço for deve ler 50 números
inteiros positivos. No entanto, se for digitado um número
negativo, o laço for é interrompido imediatamente sem que o
número seja impresso.
A instrução continue é parecida com a instrução break. A
diferença é que a instrução continue simplesmente interrompe a
execução da iteração corrente, passando para a próxima
iteração do laço, se houver uma.
No trecho do programa abaixo, o laço for lê 50 números inteiros;
caso o número seja negativo, um novo número é lido. Veja o
exemplo:
Controlando o �uxo em um programa
Comando goto 
Comando break 
Comando continue 

02/05/24, 11:37 Linguagem C: recursos básicos
https://stecine.azureedge.net/repositorio/00212ti/02576/index.html?brand=estacio# 49/75
No vídeo a seguir, apresentaremos programas que empregam as
estruturas de controle de fluxo: decisão e repetição.
02/05/24, 11:37 Linguagem C: recursos básicos
https://stecine.azureedge.net/repositorio/00212ti/02576/index.html?brand=estacio# 50/75
Falta pouco para atingir seus objetivos.
Vamos praticar alguns conceitos?
Questão 1
Considerando o funcionamento das estruturas de repetição, qual
das opções abaixo é falsa?
Parabéns! A alternativa B está correta.
A sintaxe do comando (ou laço) while é: while (condição)
comando;. E a sintaxe do comando for é: for (condição) comando;.
Logo que se inicia a execução do comando é feito um teste da
condição. Se a condição for falsa, não executa o corpo do
comando. Portanto, os laços nem sempre executam o corpo uma
vez.
Questão 2
Analise o programa abaixo e considere que o valor lido para a
variável num seja 5. Qual das opções apresenta a saída correta
após a execução do comando for?
A
A condição dentro de um laço while e do...while tem
que ser colocada sempre dentro de parênteses.
B
Os laços while e for executam sempre, pelo menos
uma vez, o corpo do laço.
C
O laço do...while executa sempre, pelo menos uma
vez, o corpo do laço.
D
Os laços do.. while e while necessitam de uma
instrução de parada para serem interrompidos.
E
Em todos os laços, a condição é sempre testada
pelo menos uma vez.
02/05/24, 11:37 Linguagem C: recursos básicos
https://stecine.azureedge.net/repositorio/00212ti/02576/index.html?brand=estacio# 51/75
#include
int main(){
 int num;
 printf("Entre com um número inteiro: ");
 scanf("%d", &num);
 for(int i = num; i > 0; i--){
    printf("%d ", i);
 }
}
Parabéns! A alternativa D está correta.
Observe que no comando for a variável i inicia com um valor inicial
(i = num), pelo enunciado o valor 5, e depois vai sendo
decrementada (i--), portanto, imprimindo os valores 5 4 3 2 1.
3 - Estruturas de dados homogêneas e heterogêneas
A 1 2 3 4 5
B 5 3 1
C 4 2 1 0
D 5 4 3 2 1
E 1 2 3 5 4
02/05/24, 11:37 Linguagem C: recursos básicos
https://stecine.azureedge.net/repositorio/00212ti/02576/index.html?brand=estacio# 52/75
Ao �nal deste módulo, você será capaz de aplicar as estruturas de dados homogêneas e
heterogêneas.
Estruturas de dados homogêneas
Depois de você ter conhecido quais são os tipos básicos de dados em C
(char, int, float, double, entre outros), onde apenas um valor é
armazenado em uma variável ou constante, mostraremos agora como
processar conjuntos de dados ou valores do mesmo tipo.
Um conjunto de dados do mesmo tipo é chamado de
estrutura de dados homogênea.
A seguir, vamos descrever três tipos: vetor (ou array), matrizes e strings.
Vetores unidimensionais
Conjunto de elementos consecutivos do mesmo tipo, que podem ser
acessados individualmente a partir de um único nome e um índice. A
forma geral da declaração de vetores unidimensionais é:
Linguagem C 
Sintaxe vetores unidimensionais.
Onde:
tipo
É um tipo básico de dados.
nome
É o nome pelo qual o vetor será referenciado.
tamanho
É o número de elementos que o vetor contém. Obs.: O tamanho do vetor
é constante.
Uma coisa importante que deve ser notada é que o tamanho do vetor é
constante. A seguir, veja alguns exemplos de como devemos declarar
vetores:
Linguagem C 
02/05/24, 11:37 Linguagem C: recursos básicos
https://stecine.azureedge.net/repositorio/00212ti/02576/index.html?brand=estacio# 53/75
Vetores unidimensionais.
Como um vetor é armazenado na memória?
bytes, ocupado por um vetor de tipo qualquer é igual a: espaço total do
vetor = tamanho * sizeof(tipo_do_vetor) ou espaço total do vetor =
sizeof(nome_do_vetor).
A função sizeof(nome da variável ou tipo do vetor) retorna o tamanho
em bytes.Atenção
Em C, não há verificação de limites em vetores. O programador deverá
ter cuidado para que não ultrapasse o fim de um vetor.
O que acontece na memória quando criamos
um vetor?
Observe o exemplo:
Linguagem C 
Criação de um vetor.
O que a instrução do exemplo significa? A instrução criou uma variável
vetor que pode armazenar até 6 valores do tipo inteiro, como ilustrado a
seguir:
Vetor.
Como houve apenas a definição do vetor, ele não contém valores
armazenados. O primeiro índice do vetor começa com 0 (endereço de
memória é 1000) e o último é 5 (endereço de memória é 1020).
A cada atribuição descrita a seguir, será modificado o valor interno do
vetor.
02/05/24, 11:37 Linguagem C: recursos básicos
https://stecine.azureedge.net/repositorio/00212ti/02576/index.html?brand=estacio# 54/75
vetor[0] = 120;
vetor[5] = vetor[0]*3;
vetor[2] = vetor[0] + vetor[5];
Atribuição inicial de valores no vetor
A atribuição inicial de valores pode ser feita colocando valores dentro de
um conjunto entre chaves. Dessa forma, temos a seguinte sintaxe: tipo
nome[n] = {valor_1, valor_2, …, valor_n};
Veja um exemplo:
Linguagem C 
Atribuição de valores em vetor.
Como é um vetor do tipo char, a inicialização do conjunto é entre
chaves, cada caractere é separado por vírgula e fica entre aspas
simples.
A segunda forma de atribuição inicial de valores pode ser feita usando
estrutura de repetição, como, por exemplo, o comando for. No exemplo
a seguir, o vetor é inicializado com o valor 0 para todos os n elementos
de x.
Linguagem C 
02/05/24, 11:37 Linguagem C: recursos básicos
https://stecine.azureedge.net/repositorio/00212ti/02576/index.html?brand=estacio# 55/75
Atribuição de valores com o for.
Na atribuição usando chaves, se forem colocados k < n valores, então
somente os k primeiros elementos receberão algum valor.
Se o tipo for int, float ou double, os restantes receberão 0. Por exemplo,
a instrução int x[5] = {1,2}; resultará em:
Vetor da instrução int x[5] = {1,2};.
Se o tipo for char, os restantes receberão valores vazios (corresponde a
0).
O programa a seguir lê um número inteiro e gera um vetor de cinco
valores consecutivos a partir do número lido.
Vamos analisar as linhas:
Exemplo 1 dTUTORIAL COPIAR
C
null
null

 Linha 2
Define a constante DIM (dimensão do vetor) com
valor 5.
 Linha 5
Define a variável vetor com tamanho da constante
DIM.
02/05/24, 11:37 Linguagem C: recursos básicos
https://stecine.azureedge.net/repositorio/00212ti/02576/index.html?brand=estacio# 56/75
Strings
String é um conjunto de caracteres terminado por um caractere nulo e
armazenado em um vetor. O caractere nulo é representado como ’\0’
(código ASCII = 0).
String
“Paulo”, “torta”
Caracteres
‘A’, ‘b’, ‘1’
Para armazenar uma string, é necessário declarar um vetor de
caracteres, reservando um espaço para o caractere delimitador. A
sintaxe de declaração e atribuição inicial é igual às regras de vetor.
Existem três formas de inicializar o vetor com uma string:
Sem chaves
char vetor[6] = “aluno”;
Com chaves
 Linha 9
Faz a leitura da variável num.
 Linha 12
Atribui ao vetor os valores consecutivos de num.
 Linha 14
O laço for executa a repetição de printf().
Observe que o índice i do vetor[i] inicia com 0 (zero)
até o valor de DIM-1.
 Linha 15
Imprime os valores do vetor na tela.

02/05/24, 11:37 Linguagem C: recursos básicos
https://stecine.azureedge.net/repositorio/00212ti/02576/index.html?brand=estacio# 57/75
char vetor[6] = {‘a’, ‘l’, ‘u’, ‘n’, ‘o’};
Sem tamanho
char vetor[ ] = “aluno”;
Atenção
A terceira forma não precisa colocar o tamanho do vetor, pois o
compilador vai armazenar com o tamanho da palavra mais o caractere
/0 na última posição. A string está armazenada como: vetor[0] = ‘a’,
vetor[1] = ‘l’ , vetor[2] = ‘u’ , vetor[3] = ‘n’, vetor[4] = ‘o’, vetor[5] = ‘\0’.
Vamos praticar? O programa a seguir imprime o tamanho do vetor e o
conteúdo de cada posição do vetor.
O programa a seguir imprime a frase “Bom dia” com as funções printf()
e puts().
Exemplo 2 dTUTORIAL COPIAR
C
null
null

Exemplo 3 dTUTORIAL COPIAR
C
null
null
02/05/24, 11:37 Linguagem C: recursos básicos
https://stecine.azureedge.net/repositorio/00212ti/02576/index.html?brand=estacio# 58/75
Apesar de o vetor ter a dimensão muito maior do que o número de
caracteres úteis, a função printf() escreve somente os caracteres não
nulos. A função puts pula linha automaticamente.
Matrizes
Até o momento, vimos como podíamos trabalhar com vetores com uma
única dimensão. Vamos agora aprender como usar vetores com mais de
uma dimensão.
A declaração de vetores unidimensionais não é mais do que um caso
particular da declaração de vetores com qualquer número de
dimensões. A declaração de um vetor com n dimensões é realizada por
meio da seguinte sintaxe:
Linguagem C 
Sintaxe de vetor com n dimensões.
Onde dimN é o tamanho da dimensão N.
Deve-se tomar cuidado com armazenamento de matrizes
multidimensionais porque a memória necessária para guardar esses
dados é igual a:
Fórmula 1
sizeof(tipo)*dim1*dim2*dim3*...*dimN
Por exemplo, a declaração int matriz[3][5]; define uma matriz de 3 linhas
por 5 colunas. Usando a Fórmula 1, o espaço ocupado na memória pela
matriz é de sizeof(int) * 3 * 5. Considerando que o tipo inteiro ocupe 4
bytes: (4 bytes) * 3 * 5 = 60 bytes. A matriz é armazenada na memória
linha a linha.
A tabela a seguir ilustra o armazenamento da matriz declarada,
assumindo que cada número inteiro ocupa 4 bytes e que a matriz está
armazenada a partir do endereço 1000.
Endereço de
memória
Valor armazenado
1000 m[0][0]
1004 m[0][1]

02/05/24, 11:37 Linguagem C: recursos básicos
https://stecine.azureedge.net/repositorio/00212ti/02576/index.html?brand=estacio# 59/75
Endereço de
memória
Valor armazenado
1008 m[0][2]
1012 m[1][0]
1016 m[1][1]
1020 m[1][2]
1024 m[2][0]
1028 m[2][1]
1032 m[2][2]
Tabela: Matriz m.
Elaborada por: Paulo Vidal.
Cada elemento é acessado por meio dos índices correspondentes para
cada dimensão. Sintaxe de acesso a um elemento:
Linguagem C 
Sintaxe de índices.
Para facilitar o entendimento, veja o exemplo:
Exemplo de índice.
Então, no exemplo exposto, temos o elemento na linha 0 e coluna 1 da
matriz m.
02/05/24, 11:37 Linguagem C: recursos básicos
https://stecine.azureedge.net/repositorio/00212ti/02576/index.html?brand=estacio# 60/75
Atribuição inicial de valores
A atribuição inicial de valores pode ser feita entre chaves ou com o laço
for:
C 
Exemplos usando chaves.
C 
Exemplos usando comando for para inicializar o valor 0 em todos os elementos de m[2]
[3].
Observe novamente o exemplo com for e note que o segundo for e o
comando de atribuição “m[i][j]=0;” estão dentro do for externo.
Leitura e escrita de uma matriz
Vamos iniciar com um exemplo. Nele, temos um programa que faz a
leitura e escrita de uma matriz.
02/05/24, 11:37 Linguagem C: recursos básicos
https://stecine.azureedge.net/repositorio/00212ti/02576/index.html?brand=estacio# 61/75
Os elementos da matriz devem ser digitados na mesma linha, separados
por espaço.
Agora, vamos analisar a lógica do programa.
Existem 15 iterações quando o programa é executado e estão descritas
abaixo:
Iteração 1: i = 0 e j = 0 (lê M[0][0])
Iteração 2: i = 0 e j = 1 (lê M[0][1])
Exemplo 4 dTUTORIAL COPIAR
C
null
null

 Linhas 2 e 3
Definem as constantes: NRLINHAS(número de
linhas) e NRCOLUNAS(número de colunas) da
matriz.
 Linha 6
Define a variável matriz de inteiros com três linhas
e cinco colunas.
 Linhas 9 a 13
Fazem a inserção dos elementos da matriz pelo
usuário por meio de 15 iterações, sendo i o índice
da linha e j o índice da coluna.
02/05/24, 11:37 Linguagem C: recursos básicos
https://stecine.azureedge.net/repositorio/00212ti/02576/index.html?brand=estacio# 62/75
Iteração 3: i = 0 e j = 2 (lê M[0][2])
Iteração 4: i = 0 e j = 3 (lê M[0][3])
Iteração 5: i = 0 e j = 4 (lê M[0][4])Iteração 6: i = 1 e j = 0 (lê M[1][0])
Iteração 7: i = 1 e j = 1 (lê M[1][1])
Iteração 8: i = 1 e j = 2 (lê M[1][2])
Iteração 9: i = 1 e j = 3 (lê M[1][3])
Iteração 10: i = 1 e j = 4 (lê M[1][4])
Iteração 11: i = 2 e j = 0 (lê M[2][0])
Iteração 12: i = 2 e j = 1 (lê M[2][1])
Iteração 13: i = 2 e j = 2 (lê M[2][2])
Iteração 14: i = 2 e j = 3 (lê M[2][3])
Iteração 15: i = 2 e j = 4 (lê M[2][4])
As linhas 15 a 18 fazem a impressão dos elementos da matriz pelo
usuário por meio de 15 iterações, sendo i o índice da linha e j o índice da
coluna.
Utilizando vetores e matrizes
No vídeo a seguir, apresentaremos exemplos do emprego de vetores e
matrizes.
Estruturas de dados heterogêneas
Até aqui estudamos sobre as variáveis simples, isto é, variáveis dos
tipos char, int, float ou double e como armazenar conjuntos de valores
relacionados em vetores que tinham a capacidade de conter vários
elementos do mesmo tipo. Agora, veremos como armazenar elementos
que contêm tipos diferentes de dados. As estruturas (structs) em C
permitem colocar, em uma única entidade, elementos de tipos
diferentes.
Uma estrutura pode conter elementos com qualquer
tipo de dados válidos em C. Trata-se de um conjunto de

02/05/24, 11:37 Linguagem C: recursos básicos
https://stecine.azureedge.net/repositorio/00212ti/02576/index.html?brand=estacio# 63/75
uma ou mais variáveis, também chamadas de campos
ou membros, agrupadas sob um único nome, de modo
a facilitar a sua referência.
Vamos supor que pretendamos representar em uma aplicação os
principais dados dos usuários. Uma possível solução seria a declaração
de variáveis individuais para cada uma das características a representar,
como os exemplos a seguir:
Linguagem C 
Declaração de variáveis individuais.
No entanto, essa solução não é a mais aconselhável, pois nada nos diz
que as variáveis estão relacionadas entre si. Para resolver isso,
podemos criar uma estrutura de dados para agregar esses dados. Ela é
chamada de registro (ou struct, em inglês). Vejamos sua sintaxe:
Linguagem C 
Sintaxe do struct.
Podemos, por exemplo, definir a estrutura de um aluno chamada Aluno
utilizando os mesmos valores apresentados anteriormente, mas, agora,
agrupados em uma struct.
Linguagem C 
02/05/24, 11:37 Linguagem C: recursos básicos
https://stecine.azureedge.net/repositorio/00212ti/02576/index.html?brand=estacio# 64/75
Sintaxe do struct.
A definição da estrutura Aluno (struct Aluno) indica simplesmente que, a
partir daquele momento, o compilador passa a conhecer outro tipo,
chamado struct Aluno, que é composto por um vetor com 60 caracteres,
variáveis inteiras e char.
Atenção
Aluno não é uma variável, mas sim o nome pelo qual é conhecida essa
nova definição de tipo de dados.
Declaração de variáveis do tipo estrutura
Para declarar uma variável do tipo struct Aluno, apresentada
anteriormente, basta indicar qual o tipo (struct Aluno) seguido do nome
das variáveis. Veja um exemplo:
Linguagem C 
Declaração de variável do tipo struct.
Em que:
aluno1 e aluno2
São variáveis do tipo struct Aluno.
Alunos
É um vetor de 100 elementos, sendo cada um deles uma estrutura do
tipo struct Aluno.
Também é possível declarar as variáveis junto da estrutura, como
apresentado na sintaxe abaixo:
Pseudocódigo 
Declaração de variável com struct.
02/05/24, 11:37 Linguagem C: recursos básicos
https://stecine.azureedge.net/repositorio/00212ti/02576/index.html?brand=estacio# 65/75
Em seguida, temos um exemplo de definição de uma estrutura e
declaração de variáveis.
Linguagem C 
Declaração de variável com struct.
Normalmente, os elementos da estrutura têm alguma relação
semântica. Por exemplo, uma estrutura com os elementos associados a
um aluno (nome, curso etc.).
De�nição de estrutura com typedef
O typedef é um recurso que permite definir um novo nome para um tipo
de dado já existente. A sintaxe é:
Pseudocódigo 
Sintaxe de typedef.
Vamos a um exemplo! No código a seguir, definimos aluno como:
Linguagem C 
Exemplo de uso do typedef.
02/05/24, 11:37 Linguagem C: recursos básicos
https://stecine.azureedge.net/repositorio/00212ti/02576/index.html?brand=estacio# 66/75
Agora é possível declarar a struct Aluno apenas referenciando o tipo
aluno.
Linguagem C 
Declaração de duas variáveis.
Inicialização dos campos de uma estrutura
Uma estrutura pode ser inicializada quando é declarada por meio da
seguinte sintaxe:
Sem typedef
struct nome_estrutura var = {valor1, valor2,..., valorN};
Com typedef
nome_estrutura var = {valor1, valor2,..., valorN};
No código a seguir, os vetores nome e curso são inicializados na
declaração.
Linguagem C 
Acessando elementos da estrutura
O acesso a um elemento de uma estrutura segue esta sintaxe:
Pseudocódigo 
02/05/24, 11:37 Linguagem C: recursos básicos
https://stecine.azureedge.net/repositorio/00212ti/02576/index.html?brand=estacio# 67/75
Sintaxe para acesso a um elemento de estrutura.
Vamos ver mais um exemplo, em que o programa nos permite imprimir
os elementos da struct.
Vamos analisar as linhas:
Agora é com você! Construa um programa que:
Exemplo 5 dTUTORIAL COPIAR
C
null
null

 Linhas 2 a 5
Define a estrutura aluno.
 Linha 7
Define a variável joao, do tipo aluno, e inicializa os
dois campos.
 Linha 8
Imprime os dois campos da estrutura.
02/05/24, 11:37 Linguagem C: recursos básicos
https://stecine.azureedge.net/repositorio/00212ti/02576/index.html?brand=estacio# 68/75
1. Por meio da instrução typedef, defina um tipo aluno a partir de uma
estrutura contendo os elementos nome (até 40 caracteres) e nota.
2. Na função main, receba os dados de 5 alunos, armazene-os em um
vetor e imprima-os na tela:
a. Os dados dos alunos devem estar no formato: Fulano tirou 7.3
b. A média da turma deve estar no formato: Média da turma = 6.2
c. Os valores reais são impressos com uma casa decimal.
Obs.: Você pode utilizar o emulador do último exemplo para testar seu
código. Para isso, basta apagar o exemplo e inserir o novo código.
Digite sua resposta aqui
Chave de resposta
#include
#define TAMANHO 5
typedef struct t_aluno {
      char nome[41];
      float nota;
} aluno;
int main()
{
      aluno alunos[TAMANHO];
      float soma = 0;
      for(int i = 0; i < TAMANHO; i++)
      {
         printf("Digite o nome do aluno %d: \n", i + 1);
         scanf(" %[^\n]", alunos[i].nome);
         printf("Digite a nota do aluno %d: \n", i + 1);
         scanf("%f", &alunos[i].nota);
      }
for(int i = 0; i < TAMANHO; i++)
{
         printf("%s tirou %.1f\n", alunos[i].nome, alunos[i].nota);
         soma += alunos[i].nota;
}
   printf("Media da turma = %.1f", soma / TAMANHO);
}

02/05/24, 11:37 Linguagem C: recursos básicos
https://stecine.azureedge.net/repositorio/00212ti/02576/index.html?brand=estacio# 69/75
Utilizando structs
No vídeo a seguir, apresentaremos exemplos de emprego das structs
em C, o uso do typedf e combinar os vetores com structs.
02/05/24, 11:37 Linguagem C: recursos básicos
https://stecine.azureedge.net/repositorio/00212ti/02576/index.html?brand=estacio# 70/75
Falta pouco para atingir seus objetivos.
Vamos praticar alguns conceitos?
Questão 1
Interprete o código abaixo e marque a opção que corresponde a que
o programa realiza.
#include <stdio.h>
#include <stdlib.h>
int main(){
      int i;
      char palavras[3][30];
      for(i=0; i<3; i++) {
         printf("Informe palavra %d: ",i+1);
         scanf("%s", &palavras[i]);
      }
      for(i=2; i>=0; i--)
         printf("%s ",palavras[i]);
}
Assinale a opção correta:
A O programa lê e imprime duas palavras.
B
O programa lê e imprime a concatenação das duas
palavras.
C O programa lê e imprime três palavras.
D
O programa lê três palavras e imprime em ordem
inversa às palavras.
E
O programa lê e imprime a concatenação de três
palavras.
02/05/24, 11:37 Linguagem C: recursos básicos
https://stecine.azureedge.net/repositorio/00212ti/02576/index.html?brand=estacio#71/75
Parabéns! A alternativa D está correta.
A variável palavras é uma matriz de char, ou seja, permite
armazenar strings em cada linha da matriz. Pelo tamanho da matriz,
temos 3 linhas com 30 caracteres cada. Para cada linha, é lida uma
string no primeiro for e impressa no segundo for. Observe que o
segundo for inicia a variável i com o valor dois e vai subtraindo. A
variável i é o índice do vetor. Então, as palavras são impressas em
ordem inversa.
Questão 2
Com relação ao tipo de dados estrutura (struct, na linguagem C),
podemos afirmar que
Parabéns! A alternativa C está correta.
As estruturas ou os registros permitem colocar, em uma única
entidade, elementos de tipos diferentes, ou seja, armazenam dados
heterogêneos. Em C, a estrutura se dá criando uma struct que
possuirá elementos de diversos tipos primitivos de dados, os quais,
normalmente, possuem relação semântica entre si, ou seja, eles
A
as estruturas em C são usadas para armazenar
tipos de dados homogêneos, empregando o tipo
matriz.
B
as estruturas em C são empregadas quando
precisamos armazenar dados que não têm relação
semântica, mas que são todos do mesmo tipo
primitivo de dados.
C
uma estrutura é um conjunto de uma ou mais
variáveis, que podem ser de tipos diferentes,
agrupadas sob um único nome, de forma a facilitar
a sua referência.
D
a definição de uma estrutura (struct) é baseada no
tipo de dado chamado vetor (array) e permite
armazenar dados heterogêneos.
E
quando precisamos definir a diagonal de uma matriz
quadrada, usamos o tipo de dados struct para
armazenar a matriz.
02/05/24, 11:37 Linguagem C: recursos básicos
https://stecine.azureedge.net/repositorio/00212ti/02576/index.html?brand=estacio# 72/75
referenciam informações ou características de uma pessoa, de um
objeto etc.
Considerações �nais
Neste conteúdo, vimos que a linguagem C apresenta quatro tipos de
dados básicos: char, int, float e double. Podemos declarar variáveis para
cada tipo, armazenando valores, de acordo com a finalidade do
programa. Os números inteiros são representados pelo tipo int e as
variáveis reais são representadas pelo float e double. As variáveis do
tipo char armazenam caracteres. A leitura e a escrita de valores podem
ser realizadas por meio das funções scanf() e printf(), respectivamente,
utilizando os formatos para cada tipo. Por exemplo: %d para int, e %f
para float.
O teste de condições pode ser realizado por meio das instruções if-else
e switch. Na instrução if-else, a condição é avaliada e, caso seja
verdadeira, é executada a instrução associada ao if. A componente else
é executada quando a condição devolve o valor lógico falso. A instrução
switch adapta-se particularmente à tomada de decisões em que o
número de possibilidades é elevado (em geral, maior que 2, se não
usamos o if-else), de modo a reduzir a complexidade de if-else
consecutivos e encadeados. Já as instruções de repetição while, for e
do-while executam uma ou mais instruções enquanto determinada
condição for verdadeira.
Os tipos de dados homogêneos são definidos pelos vetores, e os
elementos de um vetor são sempre armazenados em posições
contíguas de memória. O índice do primeiro elemento de um vetor é
sempre 0 e o último é n - 1. As matrizes são vetores que possuem mais
de uma dimensão. Por sua vez, o tipo de dados struct é uma coleção de
variáveis, de tipos diversos ou não, agrupadas sob um único nome. As
variáveis que compõem a estrutura são os seus membros, elementos ou
campos.
02/05/24, 11:37 Linguagem C: recursos básicos
https://stecine.azureedge.net/repositorio/00212ti/02576/index.html?brand=estacio# 73/75
Podcast
Ouça o podcast. Nele, falamos como os recursos básicos da linguagem
C podem ser utilizados para a resolução de problemas.

Explore +
Para saber mais sobre as estruturas empregadas neste estudo,
pesquise sobre Linguagem C Programação Descomplicada.
Referências
DAMAS, L. Linguagem C. 10. ed. Rio de Janeiro: LTC, 2007.
SCHILDT, H. C Completo e Total. 3. ed. revista e atualizada. São Paulo:
Makron Books, 1997.
Material para download
Clique no botão abaixo para fazer o download do
conteúdo completo em formato PDF.
Download material
02/05/24, 11:37 Linguagem C: recursos básicos
https://stecine.azureedge.net/repositorio/00212ti/02576/index.html?brand=estacio# 74/75
javascript:CriaPDF()
O que você achou do conteúdo?
Relatar problema
02/05/24, 11:37 Linguagem C: recursos básicos
https://stecine.azureedge.net/repositorio/00212ti/02576/index.html?brand=estacio# 75/75

Continue navegando

Outros materiais