Baixe o app para aproveitar ainda mais
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
Compartilhar