<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Arquivo para Programação em C++ - Bóson Treinamentos em Ciência e Tecnologia</title>
	<atom:link href="https://www.bosontreinamentos.com.br/category/programacao-em-c/feed/" rel="self" type="application/rss+xml" />
	<link>https://www.bosontreinamentos.com.br/category/programacao-em-c/</link>
	<description>Artigos e Tutoriais sobre Desenvolvimento de Software, Bancos de Dados SQL, Linux, Lógica de Programação, Inteligência Artificial, Hardware, Eletrônica, Arduino, Técnicas e Teorias de Estudo e Aprendizagem, Carreira em TI, Ciências Cognitivas, e muito mais!</description>
	<lastBuildDate>Wed, 25 Jun 2025 20:09:36 +0000</lastBuildDate>
	<language>pt-BR</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.8.6</generator>
	<item>
		<title>Programa que converte um número de binário para decimal em C++</title>
		<link>https://www.bosontreinamentos.com.br/programacao-em-c/programa-que-converte-um-numero-de-binario-para-decimal-em-c/</link>
					<comments>https://www.bosontreinamentos.com.br/programacao-em-c/programa-que-converte-um-numero-de-binario-para-decimal-em-c/?noamp=mobile#respond</comments>
		
		<dc:creator><![CDATA[Fábio dos Reis]]></dc:creator>
		<pubDate>Wed, 20 Sep 2023 12:59:17 +0000</pubDate>
				<category><![CDATA[Programação em C++]]></category>
		<category><![CDATA[C#]]></category>
		<category><![CDATA[Matemática]]></category>
		<category><![CDATA[Programação]]></category>
		<guid isPermaLink="false">http://www.bosontreinamentos.com.br/?p=19702</guid>

					<description><![CDATA[<p>Conversão de um número binário para decimal em C++ Fala pessoal! No artigo passado escrevemos um programa que permitia converter um número decimal em binário, usando C++. Agora vamos criar um pequeno programa que permite realizar o processo inverso &#8211; a conversão de um número binário, fornecido pelo usuário, em seu equivalente decimal, também usando a linguagem C++. Vamos ao código. Código &#8211; Converter binário em decimal com C++ #include&#60;iostream&#62; #include&#60;cmath&#62; using namespace std; int main() { int num, resto, base = 2, soma = 0, i = 0; // Solicita ao usuário que digite o número binário a ser convertido cout &#60;&#60; "CONVERSÃO DE BINÁRIO PARA DECIMAL \n"; cout &#60;&#60; "Digite o número em binário e pressione ENTER: "; cin &#62;&#62; num; // Laço onde é realizada a conversão do número binário em decimal while (num &#62; 0) { resto = num % 10; // Calcula o dígito binário menos significativo soma = soma + (resto * pow(base, i)); // Converte e acumula o dígito binário em decimal num = num / 10; // Remove o dígito binário processado i += 1; // Incrementa o expoente da base (2) } // Exibe o número decimal resultante cout &#60;&#60; "\nNúmero [...]</p>
<p>O post <a href="https://www.bosontreinamentos.com.br/programacao-em-c/programa-que-converte-um-numero-de-binario-para-decimal-em-c/">Programa que converte um número de binário para decimal em C++</a> apareceu primeiro em <a href="https://www.bosontreinamentos.com.br">Bóson Treinamentos em Ciência e Tecnologia</a>.</p>
]]></description>
										<content:encoded><![CDATA[<h2>Conversão de um número binário para decimal em C++</h2>
<p>Fala pessoal! No artigo passado escrevemos um programa que permitia<a href="http://www.bosontreinamentos.com.br/programacao-em-c/programa-que-converte-um-numero-de-decimal-para-binario-em-c/"> converter um número decimal em binário, usando C++</a>. Agora vamos criar um pequeno programa que permite realizar o processo inverso &#8211; a conversão de um número binário, fornecido pelo usuário, em seu equivalente decimal, também usando a linguagem C++.</p>
<p>Vamos ao código.</p>
<h3>Código &#8211; Converter binário em decimal com C++</h3>
<pre><strong>#include&lt;iostream&gt;</strong>
<strong>#include&lt;cmath&gt;

</strong><strong>using namespace std;

</strong><strong>int main() {</strong>
<strong>  int num, resto, base = 2, soma = 0, i = 0;

</strong><span style="color: #339966;"><strong>  // Solicita ao usuário que digite o número binário a ser convertido</strong></span>
<strong>  cout &lt;&lt; "CONVERSÃO DE BINÁRIO PARA DECIMAL \n"; </strong>
<strong>  cout &lt;&lt; "Digite o número em binário e pressione ENTER: ";</strong>
<strong>  cin &gt;&gt; num;

</strong><span style="color: #339966;"><strong>  // Laço onde é realizada a conversão do número binário em decimal</strong></span>
<strong>  while (num &gt; 0) {</strong>
<strong>    resto = num % 10; <span style="color: #339966;">// Calcula o dígito binário menos significativo</span></strong>
<strong>    soma = soma + (resto * pow(base, i)); <span style="color: #339966;">// Converte e acumula o dígito binário em decimal</span></strong>
<strong>    num = num / 10; <span style="color: #339966;">// Remove o dígito binário processado</span></strong>
<strong>    i += 1; <span style="color: #339966;">// Incrementa o expoente da base (2)</span></strong>
<strong>  }

</strong><span style="color: #339966;"><strong>  // Exibe o número decimal resultante</strong></span>
<strong>  cout &lt;&lt; "\nNúmero convertido para decimal: " &lt;&lt; soma;</strong>
<strong>  return 0;</strong>
<strong>}</strong></pre>
<h4>Resultado</h4>
<pre><span style="color: #000000;"><strong>CONVERSÃO DE BINÁRIO PARA DECIMAL </strong></span>
<span style="color: #000000;"><strong>Digite o número em binário e pressione ENTER: 1001111</strong></span>
<span style="color: #000000;"><strong>Número convertido para decimal: 79</strong></span></pre>
<h3>Funcionamento do Código</h3>
<p>O programa inicia incluindo as bibliotecas <strong><em>iostream</em></strong> e <strong><em>cmath</em></strong> para permitir entrada/saída de dados e realizar cálculos matemáticos, respectivamente. Também usa <strong><em>using namespace std</em></strong> para evitar a necessidade de usar std:: antes de funções como cin e cout.</p>
<p>O programa então declara algumas variáveis, incluindo <strong>num</strong> para armazenar o número binário inserido pelo usuário, <strong>resto</strong> para armazenar o dígito binário atualmente sendo processado, <strong>base,</strong> que é 2 (pois estamos convertendo de binário para decimal), <strong>soma</strong> para acumular o valor decimal resultante e <strong>i</strong> para controlar o expoente da base.</p>
<p>Na sequência é solicitado que o usuário insira o número binário que deseja converter.</p>
<p>O programa entra então em um laço <strong>while</strong> que continuará até que o número binário (num) seja maior que zero.</p>
<p>Dentro esse laço, ele calcula o dígito binário menos significativo usando a operação <strong>num % 10</strong>. Isso resulta em 0 ou 1, que é o dígito binário atual.</p>
<p>O dígito binário é convertido em decimal e adicionado à variável soma usando a fórmula <em><strong>soma = soma + (resto * pow(base, i))</strong></em>. Aqui, <em>resto</em> é o dígito binário, <em>base</em> é 2 (base binária) e<em> i</em> é o expoente que começa em 0 e aumenta a cada iteração.</p>
<p>Logo após o número binário (num) é dividido por 10 (num = num / 10) para remover o dígito binário que foi processado.</p>
<p>Então, o expoente da base (i) é incrementado em 1 (i += 1) para lidar com o próximo dígito binário.</p>
<p>Após a conclusão do laço de repetição, o programa exibe o número decimal resultante.</p>
<p>Finalmente, o programa retorna 0, indicando que a execução foi bem-sucedida.</p>
<p>É isso aí! Nos próximos tutoriais veremos outros tipos de conversões de bases numéricas usando a linguagem C++, como a conversão de hexadecimal em decimal e binário e vice-versa.</p>
<p>Até!</p>
<p>O post <a href="https://www.bosontreinamentos.com.br/programacao-em-c/programa-que-converte-um-numero-de-binario-para-decimal-em-c/">Programa que converte um número de binário para decimal em C++</a> apareceu primeiro em <a href="https://www.bosontreinamentos.com.br">Bóson Treinamentos em Ciência e Tecnologia</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.bosontreinamentos.com.br/programacao-em-c/programa-que-converte-um-numero-de-binario-para-decimal-em-c/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Programa que converte um número de decimal para binário em C++</title>
		<link>https://www.bosontreinamentos.com.br/programacao-em-c/programa-que-converte-um-numero-de-decimal-para-binario-em-c/</link>
					<comments>https://www.bosontreinamentos.com.br/programacao-em-c/programa-que-converte-um-numero-de-decimal-para-binario-em-c/?noamp=mobile#respond</comments>
		
		<dc:creator><![CDATA[Fábio dos Reis]]></dc:creator>
		<pubDate>Wed, 20 Sep 2023 12:39:40 +0000</pubDate>
				<category><![CDATA[Programação em C++]]></category>
		<category><![CDATA[C#]]></category>
		<category><![CDATA[Programação]]></category>
		<guid isPermaLink="false">http://www.bosontreinamentos.com.br/?p=19696</guid>

					<description><![CDATA[<p>Conversão de decimal para binário em C++ Fala pessoal! Neste tutorial vamos criar um pequeno programa que permite realizar a conversão de um número decimal, fornecido pelo usuário, em seu equivalente binário, usando a linguagem C++. Usaremos o método das divisões sucessivas por 2, com o emprego da operação aritmética de módulo (resto da divisão inteira) para realizar essa conversão de bases numéricas. Vamos ao código. Código: Converter decimal em binário em C++ #include&#60;iostream&#62; using namespace std; int main() { int num, soma[100], i=0; // Solicita ao usuário que o número decimal a ser convertido cout&#60;&#60; "CONVERSÃO DE UM NÚMERO DECIMAL EM BINÁRIO \n"; cout&#60;&#60;"Digite o número a converter e pressione ENTER: \n"; cin&#62;&#62;num; // Exibe o número decimal que será convertido cout&#60;&#60;"Número a converter: "; cout&#60;&#60;num; // O loop a seguir realiza a conversão do número decimal em binário while (num &#62; 0) { soma[i] = num % 2; // Calcula o resto da divisão por 2 (que é 0 ou 1) i = i + 1; // Incrementa o índice para armazenar o próximo dígito binário num = num / 2; // Divide o número decimal por 2 para continuar a conversão } // Exibe o número binário convertido [...]</p>
<p>O post <a href="https://www.bosontreinamentos.com.br/programacao-em-c/programa-que-converte-um-numero-de-decimal-para-binario-em-c/">Programa que converte um número de decimal para binário em C++</a> apareceu primeiro em <a href="https://www.bosontreinamentos.com.br">Bóson Treinamentos em Ciência e Tecnologia</a>.</p>
]]></description>
										<content:encoded><![CDATA[<h2>Conversão de decimal para binário em C++</h2>
<p>Fala pessoal! Neste tutorial vamos criar um pequeno programa que permite realizar a conversão de um número decimal, fornecido pelo usuário, em seu equivalente binário, usando a linguagem C++.</p>
<p>Usaremos o método das divisões sucessivas por 2, com o emprego da operação aritmética de módulo (resto da divisão inteira) para realizar essa conversão de bases numéricas.</p>
<p>Vamos ao código.</p>
<h3>Código: Converter decimal em binário em C++</h3>
<pre><strong>#include&lt;iostream&gt;</strong>
<strong>using namespace std;</strong>
<strong>int main()</strong>
<strong>{</strong>
<strong>  int num, soma[100], i=0;

</strong><span style="color: #339966;"><strong>  // Solicita ao usuário que o número decimal a ser convertido</strong></span>
<strong>  cout&lt;&lt; "CONVERSÃO DE UM NÚMERO DECIMAL EM BINÁRIO \n"; </strong>
<strong>  cout&lt;&lt;"Digite o número a converter e pressione ENTER: \n";</strong>
<strong>  cin&gt;&gt;num;

</strong><span style="color: #339966;"><strong>  // Exibe o número decimal que será convertido</strong></span>
<strong>  cout&lt;&lt;"Número a converter: "; </strong>
<strong>  cout&lt;&lt;num;

</strong><span style="color: #339966;"><strong>  // O loop a seguir realiza a conversão do número decimal em binário</strong></span>
<strong>  while (num &gt; 0) {</strong>
<strong>    soma[i] = num % 2; <span style="color: #339966;">// Calcula o resto da divisão por 2 (que é 0 ou 1)</span></strong>
<strong>    i = i + 1; <span style="color: #339966;">// Incrementa o índice para armazenar o próximo dígito binário</span></strong>
<strong>    num = num / 2; <span style="color: #339966;">// Divide o número decimal por 2 para continuar a conversão</span></strong>
<strong>  }

</strong><span style="color: #339966;"><strong>  // Exibe o número binário convertido</strong></span>
<strong>  cout&lt;&lt;"\nNúmero convertido em binário: "; </strong>
<strong>  for(int j=i-1;j&gt;=0;j--)</strong>
<strong>  {</strong>
<strong>    cout&lt;&lt;soma[j]; <span style="color: #339966;">// Mostra os dígitos binários na ordem correta</span></strong>
<strong>  }</strong>
<strong>  return 0;</strong>
<strong>}</strong></pre>
<h4>Teste</h4>
<pre><span style="color: #000000;"><strong>CONVERSÃO DE UM NÚMERO DECIMAL EM BINÁRIO </strong></span>
<span style="color: #000000;"><strong>Digite o número a converter e pressione ENTER: </strong></span>
<span style="color: #000000;"><strong>1650</strong></span>
<span style="color: #000000;"><strong>Número a converter: 1650</strong></span>
<span style="color: #000000;"><strong>Número convertido em binário: 11001110010</strong></span></pre>
<h3>Funcionamento do Código</h3>
<ol>
<li>O programa inicia com a inclusão da biblioteca <strong><em>iostream</em></strong> para permitir entrada e saída no console (cin e cout), usando o namespace <strong>std</strong> para evitar a necessidade de usar std:: antes das funções cin e cout.</li>
<li>Na sequência declaramos algumas variáveis, incluindo <strong>num</strong> para armazenar o número decimal inserido pelo usuário, um vetor (array)  <strong>soma</strong> para armazenar os dígitos binários e<strong> i</strong> para controlar o índice de soma.</li>
<li>O programa então solicita que o usuário insira o número decimal que deseja converter.</li>
<li>O programa entra em um laço while que continuará iterando até que o número decimal (num) seja maior que zero.</li>
<li>Dentro desse laço, é calculado o resto da divisão (módulo) do número decimal por 2 usando <strong>num % 2</strong>. Isso resulta em 0 ou 1, que é o dígito binário correspondente ao dígito menos significativo do número decimal.</li>
<li>O dígito binário calculado é armazenado no array soma[i], onde i é o índice atual do array. O índice é então incrementado para armazenar o próximo dígito binário.</li>
<li>O número decimal (num) é dividido por 2 (<strong>num = num / 2</strong>) para continuar a conversão, removendo o dígito menos significativo.</li>
<li>Após a conclusão do loop, o programa exibe o número binário resultante. Ele faz isso percorrendo o array <strong>soma</strong> na ordem reversa (do dígito mais significativo para o menos significativo) e exibindo cada dígito binário.</li>
<li>O programa finalmente retorna 0, indicando que a execução foi bem-sucedida.</li>
</ol>
<p>É isso aí! No próximo artigo faremos o processo inverso: faremos a <a href="http://www.bosontreinamentos.com.br/programacao-em-c/programa-que-converte-um-numero-de-binario-para-decimal-em-c/">conversão de um valor binário fornecido pelo usuário em sua representação decimal com C++</a>.</p>
<p>Até!</p>
<p>O post <a href="https://www.bosontreinamentos.com.br/programacao-em-c/programa-que-converte-um-numero-de-decimal-para-binario-em-c/">Programa que converte um número de decimal para binário em C++</a> apareceu primeiro em <a href="https://www.bosontreinamentos.com.br">Bóson Treinamentos em Ciência e Tecnologia</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.bosontreinamentos.com.br/programacao-em-c/programa-que-converte-um-numero-de-decimal-para-binario-em-c/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Operadores Aritméticos em C++</title>
		<link>https://www.bosontreinamentos.com.br/programacao-em-c/operadores-aritmeticos-em-c/</link>
					<comments>https://www.bosontreinamentos.com.br/programacao-em-c/operadores-aritmeticos-em-c/?noamp=mobile#respond</comments>
		
		<dc:creator><![CDATA[Fábio dos Reis]]></dc:creator>
		<pubDate>Fri, 12 Mar 2021 13:22:05 +0000</pubDate>
				<category><![CDATA[Programação em C++]]></category>
		<category><![CDATA[C#]]></category>
		<category><![CDATA[Cpp]]></category>
		<category><![CDATA[Programação]]></category>
		<guid isPermaLink="false">http://www.bosontreinamentos.com.br/?p=17499</guid>

					<description><![CDATA[<p>Operadores Aritméticos em C++ Um operador aritmético, como o nome sugere, é um operador que permite criar expressões aritméticas para a realização de cálculos matemáticos em u programa, geralmente com a elaboração e aplicação de fórmulas matemáticas comuns. A linguagem C++ possui suporte aos tipos básicos de operadores aritméticos, que cobrem as quatro operações fundamentais da matemática (soma, subtração, multiplicação e divisão), mais um operador para o cálculo do módulo, entendido em programação como o resto de uma divisão inteira (não confundir com módulo matemático, que se refere ao valor absoluto de um número, que é, basicamente, o número sem sinal). A tabela a seguir mostra os operadores aritméticos em C++, suas operações relacionadas e um exemplo de expressão aritmética: Operação Operador Expressão de Exemplo Adição + a + b Subtração &#8211; a &#8211; b Multiplicação * a * b Divisão / a / b Módulo % a % b Esses operadores são todos operadores binários, ou seja, que recebem e processam dois operandos, com associatividade da esquerda para a direita. O operador de divisão / realiza uma operação de divisão inteira caso ambos os operadores sejam números inteiros, e uma operação de divisão comum (de números reais) se ao [...]</p>
<p>O post <a href="https://www.bosontreinamentos.com.br/programacao-em-c/operadores-aritmeticos-em-c/">Operadores Aritméticos em C++</a> apareceu primeiro em <a href="https://www.bosontreinamentos.com.br">Bóson Treinamentos em Ciência e Tecnologia</a>.</p>
]]></description>
										<content:encoded><![CDATA[<h2>Operadores Aritméticos em C++</h2>
<p>Um operador aritmético, como o nome sugere, é um operador que permite criar expressões aritméticas para a realização de cálculos matemáticos em u programa, geralmente com a elaboração e aplicação de fórmulas matemáticas comuns.</p>
<p>A linguagem C++ possui suporte aos tipos básicos de operadores aritméticos, que cobrem as quatro operações fundamentais da matemática (soma, subtração, multiplicação e divisão), mais um operador para o cálculo do módulo, entendido em programação como o resto de uma divisão inteira (não confundir com <em>módulo matemático</em>, que se refere ao <em>valor absoluto</em> de um número, que é, basicamente, o número sem sinal).</p>
<p>A tabela a seguir mostra os operadores aritméticos em C++, suas operações relacionadas e um exemplo de expressão aritmética:</p>
<table style="border-collapse: collapse; width: 100%;" border="1">
<tbody>
<tr>
<td style="width: 33.3333%;">Operação</td>
<td style="width: 33.3333%;">Operador</td>
<td style="width: 33.3333%;">Expressão de Exemplo</td>
</tr>
<tr>
<td style="width: 33.3333%;">Adição</td>
<td style="width: 33.3333%;">+</td>
<td style="width: 33.3333%;">a + b</td>
</tr>
<tr>
<td style="width: 33.3333%;">Subtração</td>
<td style="width: 33.3333%;">&#8211;</td>
<td style="width: 33.3333%;">a &#8211; b</td>
</tr>
<tr>
<td style="width: 33.3333%;">Multiplicação</td>
<td style="width: 33.3333%;">*</td>
<td style="width: 33.3333%;">a * b</td>
</tr>
<tr>
<td style="width: 33.3333%;">Divisão</td>
<td style="width: 33.3333%;">/</td>
<td style="width: 33.3333%;">a / b</td>
</tr>
<tr>
<td style="width: 33.3333%;">Módulo</td>
<td style="width: 33.3333%;">%</td>
<td style="width: 33.3333%;">a % b</td>
</tr>
</tbody>
</table>
<p>Esses operadores são todos operadores binários, ou seja, que recebem e processam dois operandos, com <a href="http://www.bosontreinamentos.com.br/programacao-em-c/associatividade-e-precedencia-de-operadores-em-c/">associatividade</a> da esquerda para a direita.</p>
<p>O operador de divisão / realiza uma operação de divisão inteira caso ambos os operadores sejam números inteiros, e uma operação de divisão comum (de números reais) se ao menos um dos operadores for um número de ponto flutuante (com casas decimais). Veja o exemplo a seguir:</p>
<pre><strong>int a = 9;</strong>
<strong>int b = 2;</strong>
<strong>float c = 2.0;</strong>
<strong>cout &lt;&lt; a / b &lt;&lt; endl;</strong>
<strong>cout &lt;&lt; a / c &lt;&lt; endl;</strong></pre>
<p>Resultado:</p>
<pre><span style="color: #800000;"><strong>4</strong></span>
<span style="color: #800000;"><strong>4.5</strong></span></pre>
<p>No primeiro exemplo o resultado foi um numero inteiro, pois a divisão foi realizada entre dois inteiros, a e b. Já a segunda divisão retornou o número 4,5, um valor de ponto flutuante, pois um dos operandos envolvidos (variável c) era do tipo float.</p>
<p>É importante sempre levar em consideração a <a href="http://www.bosontreinamentos.com.br/programacao-em-c/associatividade-e-precedencia-de-operadores-em-c/">ordem de precedência dos operadores</a>, que determina como uma expressão com mais de um operador será avaliada. Este é o assunto da lição seguinte, que pode ser acessada clicando no link acima.</p>
<p>&nbsp;</p>
<p>O post <a href="https://www.bosontreinamentos.com.br/programacao-em-c/operadores-aritmeticos-em-c/">Operadores Aritméticos em C++</a> apareceu primeiro em <a href="https://www.bosontreinamentos.com.br">Bóson Treinamentos em Ciência e Tecnologia</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.bosontreinamentos.com.br/programacao-em-c/operadores-aritmeticos-em-c/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Associatividade e Precedência de Operadores em C++</title>
		<link>https://www.bosontreinamentos.com.br/programacao-em-c/associatividade-e-precedencia-de-operadores-em-c/</link>
					<comments>https://www.bosontreinamentos.com.br/programacao-em-c/associatividade-e-precedencia-de-operadores-em-c/?noamp=mobile#respond</comments>
		
		<dc:creator><![CDATA[Fábio dos Reis]]></dc:creator>
		<pubDate>Fri, 12 Mar 2021 12:49:47 +0000</pubDate>
				<category><![CDATA[Programação em C++]]></category>
		<category><![CDATA[Cpp]]></category>
		<category><![CDATA[Programação]]></category>
		<guid isPermaLink="false">http://www.bosontreinamentos.com.br/?p=17460</guid>

					<description><![CDATA[<p>Associatividade e Precedência de Operadores em C++ A linguagem C++ avalia expressões aritméticas em uma sequência precisa, que é determinada pelas regras de precedência matemáticas e associatividade de operadores. A tabela a seguir mostra os operadores em ordem decrescente de precedência: Operadores Tipo Associatividade ( ) Parênteses De dentro para fora *&#160; /&#160; % Multiplicativo Da esquerda para a direita +&#160; &#8211; Aditivo Da esquerda para a direita &#60;&#60;&#160; &#160;&#62;&#62; Inserção / Extração Da esquerda para a direita &#60;&#160; &#60;=&#160; &#62;&#160; &#62;= Relacional Da esquerda para a direita ==&#160; != Igualdade Da esquerda para a direita = Atribuição Da direita para a esquerda Os parênteses ( ) podem ser usados para agrupar expressões e alterar a ordem de execução (precedência) dos operadores em uma expressão. Desta forma, uma expressão como: x = 5 * 2 + 3 a qual resulta em 13, é avaliada de forma diferente da expressão x = 5 * (2 + 3) que resulta no valor 25, pois neste segundo caso os parênteses alteram a ordem de execução dos operadores, efetuando a soma primeiro e depois a multiplicação com o resultado desta soma. Associatividade em C++ A associatividade diz respeito à forma como a expressão é [...]</p>
<p>O post <a href="https://www.bosontreinamentos.com.br/programacao-em-c/associatividade-e-precedencia-de-operadores-em-c/">Associatividade e Precedência de Operadores em C++</a> apareceu primeiro em <a href="https://www.bosontreinamentos.com.br">Bóson Treinamentos em Ciência e Tecnologia</a>.</p>
]]></description>
										<content:encoded><![CDATA[<h2>Associatividade e Precedência de Operadores em C++</h2>
<p>A linguagem C++ avalia expressões aritméticas em uma sequência precisa, que é determinada pelas regras de precedência matemáticas e associatividade de operadores.</p>
<p>A tabela a seguir mostra os operadores em ordem decrescente de precedência:</p>
<table style="border-collapse: collapse; width: 92.6854%; height: 210px;" border="1">
<thead>
<tr style="height: 23px;">
<td style="width: 33.3333%; text-align: center; height: 23px;"><strong>Operadores</strong></td>
<td style="width: 33.3333%; text-align: center; height: 23px;"><strong>Tipo</strong></td>
<td style="width: 33.3333%; text-align: center; height: 23px;"><strong>Associatividade</strong></td>
</tr>
</thead>
<tbody>
<tr style="height: 23px;">
<td style="width: 33.3333%; height: 23px; text-align: center;">( )</td>
<td style="width: 33.3333%; height: 23px; text-align: center;">Parênteses</td>
<td style="width: 33.3333%; height: 23px; text-align: center;">De dentro para fora</td>
</tr>
<tr style="height: 23px;">
<td style="width: 33.3333%; height: 23px; text-align: center;">*&nbsp; /&nbsp; %</td>
<td style="width: 33.3333%; height: 23px; text-align: center;">Multiplicativo</td>
<td style="width: 33.3333%; height: 23px; text-align: center;">Da esquerda para a direita</td>
</tr>
<tr style="height: 23px;">
<td style="width: 33.3333%; height: 23px; text-align: center;">+&nbsp; &#8211;</td>
<td style="width: 33.3333%; height: 23px; text-align: center;">Aditivo</td>
<td style="width: 33.3333%; height: 23px; text-align: center;">Da esquerda para a direita</td>
</tr>
<tr style="height: 23px;">
<td style="width: 33.3333%; text-align: center; height: 23px;">&lt;&lt;&nbsp; &nbsp;&gt;&gt;</td>
<td style="width: 33.3333%; text-align: center; height: 23px;">Inserção / Extração</td>
<td style="width: 33.3333%; text-align: center; height: 23px;">Da esquerda para a direita</td>
</tr>
<tr style="height: 23px;">
<td style="width: 33.3333%; text-align: center; height: 23px;">&lt;&nbsp; &lt;=&nbsp; &gt;&nbsp; &gt;=</td>
<td style="width: 33.3333%; text-align: center; height: 23px;">Relacional</td>
<td style="width: 33.3333%; text-align: center; height: 23px;">Da esquerda para a direita</td>
</tr>
<tr style="height: 23px;">
<td style="width: 33.3333%; text-align: center; height: 23px;">==&nbsp; !=</td>
<td style="width: 33.3333%; text-align: center; height: 23px;">Igualdade</td>
<td style="width: 33.3333%; text-align: center; height: 23px;">Da esquerda para a direita</td>
</tr>
<tr style="height: 23px;">
<td style="width: 33.3333%; text-align: center; height: 23px;">=</td>
<td style="width: 33.3333%; text-align: center; height: 23px;">Atribuição</td>
<td style="width: 33.3333%; text-align: center; height: 23px;">Da direita para a esquerda</td>
</tr>
</tbody>
</table>
<p>Os parênteses ( ) podem ser usados para agrupar expressões e alterar a ordem de execução (precedência) dos operadores em uma expressão.</p>
<p>Desta forma, uma expressão como:</p>
<p style="text-align: center;"><span style="font-size: 14pt;"><strong>x = 5 * 2 + 3</strong></span></p>
<p>a qual resulta em 13, é avaliada de forma diferente da expressão</p>
<p style="text-align: center;"><strong><span style="font-size: 14pt;">x = 5 * (2 + 3)</span></strong></p>
<p>que resulta no valor 25, pois neste segundo caso os parênteses alteram a ordem de execução dos operadores, efetuando a soma primeiro e depois a multiplicação com o resultado desta soma.</p>
<h3><strong>Associatividade em C++</strong></h3>
<p>A associatividade diz respeito à forma como a expressão é avaliada. Por exemplo, a expressão <span style="color: #0000ff;"><strong>a + b + c</strong></span> é avaliada como se tivesse sido escrita <strong><span style="color: #800000;">(a + b)</span><span style="color: #0000ff;"> + c</span></strong>, pois os operadores aditivos (e aritméticos em geral) são associativos da esquerda para a direita &#8211; então, os operandos da esquerda são avaliados primeiro.</p>
<p>Já o operador de atribuição <strong>=</strong> é associativo da direita para a esquerda, de modo que a expressão <strong><span style="color: #0000ff;">a = b = 10</span></strong> é avaliada como se tivesse sido escrita<strong><span style="color: #0000ff;"> a =</span> <span style="color: #800000;">(b = 10)</span></strong>, ou seja, como se fossem duas instruções separadas e sequenciais sendo executadas:</p>
<pre><strong>b = 10;</strong>
<strong>a = b;</strong></pre>
<p>Primeiramente o valor 10 é atribuído à <a href="http://www.bosontreinamentos.com.br/programacao-em-c/declaracao-de-variaveis-em-c/">variável</a> b, e então o conteúdo da variável b é atribuído à variável a.</p>
<p>No exemplo a seguir combinamos regras de precedência com associatividade:</p>
<pre><strong>b = 10;</strong>
<strong>a = 3;</strong>
<strong>c = a * 3 + (b + 10) / 2</strong></pre>
<p>No exemplo, o ramos do lado direito será avaliado primeiro, e depois seu resultado atribuído à variável c (associatividade da atribuição). Porém, o ramo direito é em si uma expressão aritmética, e será avaliado da esquerda para a direita, respeitando a ordem de precedência dos operadores, exceto quando houver parênteses alterando-a.</p>
<p>Assim, teremos:</p>
<ul>
<li>o valor da variável a é multiplicado por 3, resultando em 9</li>
<li>o valor de b somado a 10, resultando em 20 (parênteses em ação aqui)</li>
<li>o resultado anterior é dividido por 2, resultando em 10 (ordem de precedência de operadores em c++)</li>
<li>o resultado da multiplicação de a com as operações sobre b é a soma desses valores, resultando em 19</li>
<li>e então&nbsp; o resultado da expressão é atribuído à variável c.</li>
</ul>
<p>É isso aí! Nas próximas lições vamos explorar mais a fundo os diversos tipos de operadores disponíveis em linguagem C++.</p>
<p>Até!</p>
<p>O post <a href="https://www.bosontreinamentos.com.br/programacao-em-c/associatividade-e-precedencia-de-operadores-em-c/">Associatividade e Precedência de Operadores em C++</a> apareceu primeiro em <a href="https://www.bosontreinamentos.com.br">Bóson Treinamentos em Ciência e Tecnologia</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.bosontreinamentos.com.br/programacao-em-c/associatividade-e-precedencia-de-operadores-em-c/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Declaração de Variáveis em C++</title>
		<link>https://www.bosontreinamentos.com.br/programacao-em-c/declaracao-de-variaveis-em-c/</link>
					<comments>https://www.bosontreinamentos.com.br/programacao-em-c/declaracao-de-variaveis-em-c/?noamp=mobile#respond</comments>
		
		<dc:creator><![CDATA[Fábio dos Reis]]></dc:creator>
		<pubDate>Thu, 11 Mar 2021 12:01:46 +0000</pubDate>
				<category><![CDATA[Programação em C++]]></category>
		<category><![CDATA[C#]]></category>
		<category><![CDATA[Programação]]></category>
		<guid isPermaLink="false">http://www.bosontreinamentos.com.br/?p=17456</guid>

					<description><![CDATA[<p>Variáveis em C++ As Variáveis, em programação, são identificadores que criamos para armazenar valores ou referências a objetos no código. Na prática, uma variável é um local nomeado na memória RAM do computador, onde valores são armazenados para processamento. Quando criamos uma variável em C++, devemos informar o tipo de dado que ela armazenará. Podemos atribuir um valor à variável na hora em que a criamos (na sua declaração) ou posteriormente, em outro ponto do código. Chamamos a esse processo de&#160; “inicializar a variável”. Mesmo sendo possível inicializar uma variável em um momento posterior à sua declaração, o tipo de dado deve ser sempre atribuído quando a definimos. O C++ não permite que utilizemos uma variável não inicializada para ajudar a impedir que dados não desejados (lixo de memória) sejam usados indevidamente na aplicação. Como declarar uma variável em C++ O trecho de código a seguir demonstra a declaração de uma variável e a atribuição de um valor a ela. Em C++ temos duas formas de inicializar uma variável: int var1 = 0; int var2{1}; Basicamente, a sintaxe é a seguinte: tipo identificador [= valor_inicialização] Onde: tipo é o tipo de dado que será armazenado na variável identificador é o [...]</p>
<p>O post <a href="https://www.bosontreinamentos.com.br/programacao-em-c/declaracao-de-variaveis-em-c/">Declaração de Variáveis em C++</a> apareceu primeiro em <a href="https://www.bosontreinamentos.com.br">Bóson Treinamentos em Ciência e Tecnologia</a>.</p>
]]></description>
										<content:encoded><![CDATA[<h2>Variáveis em C++</h2>
<p><span style="font-weight: 400;">As Variáveis, em programação, são identificadores que criamos para armazenar valores ou referências a objetos no código. Na prática, uma variável é um local nomeado na memória RAM do computador, onde valores são armazenados para processamento.</span></p>
<p><span style="font-weight: 400;">Quando criamos uma variável em C++, devemos informar o tipo de dado que ela armazenará. Podemos atribuir um valor à variável na hora em que a criamos (na sua declaração) ou posteriormente, em outro ponto do código.</span></p>
<p><span style="font-weight: 400;">Chamamos a esse processo de&nbsp; “<em>inicializar a variável</em>”. Mesmo sendo possível inicializar uma variável em um momento posterior à sua declaração, o tipo de dado deve ser sempre atribuído quando a definimos.</span></p>
<p><span style="font-weight: 400;">O C++ não permite que utilizemos uma variável não inicializada para ajudar a impedir que dados não desejados (lixo de memória) sejam usados indevidamente na aplicação.</span></p>
<h3><strong>Como declarar uma variável em C++</strong></h3>
<p><span style="font-weight: 400;">O trecho de código a seguir demonstra a declaração de uma variável e a atribuição de um valor a ela. Em C++ temos duas formas de inicializar uma variável:</span></p>
<pre><span style="font-weight: 400;">int var1 = 0;</span>
<span style="font-weight: 400;">int var2{1};</span></pre>
<p>Basicamente, a sintaxe é a seguinte:</p>
<pre><strong><span style="color: #800080;">tipo identificador [= valor_inicialização]</span></strong></pre>
<p>Onde:</p>
<ul>
<li><strong>tipo</strong> é o <a href="http://www.bosontreinamentos.com.br/programacao-em-c/tipos-de-dados-em-c/">tipo de dado</a> que será armazenado na variável</li>
<li><strong>identificador</strong> é o nome da variável</li>
<li><strong>valor_inicialização</strong> é o valor a ser atribuído à variável (os colchetes denotam que o valor é opcional na declaração da variável, pois pode ser atribuído posteriormente).</li>
</ul>
<h3><strong>Regras para identificadores</strong></h3>
<p><span style="font-weight: 400;">O C++ possui algumas restrições com relação a identificadores (nomes das variáveis e outros elementos) que é importante conhecer.</span></p>
<p><span style="font-weight: 400;">Primeiramente, os identificadores são case-sensitive porque a linguagem C++ é case-sensitive. Isso significa que identificadores como var1, Var1, e VAR1, são considerados identificadores diferentes (variáveis distintas).</span></p>
<p><span style="font-weight: 400;">Os identificadores somente podem ter letras (maiúsculas ou minúsculas), dígitos numéricos e o caractere underline. O identificador somente pode começar com uma letra ou um caractere underline _, não podendo começar com um número.<br />
Assim, <strong>var1</strong> e <strong>_var1</strong> são nomes de variáveis válidos, mas <strong>1var</strong> não é, pois começa com um dígito numérico.</span></p>
<p><span style="font-weight: 400;">A linguagem C++ possui também um conjunto de palavras reservadas que são usadas pela linguagem. Não podemos usar essas palavras reservadas como identificadores no código. É até possível empregar palavras reservadas em caso distinto (em maiúsculas, por exemplo), pois o C++ é case-sensitive, mas essa não é uma abordagem recomendada.</span></p>
<p><span style="font-weight: 400;">A lista a seguir mostra as palavras reservadas que você não deve usar para criar identificadores de nenhum tipo em C++.</span></p>
<h4><em><span style="font-weight: 400;">Lista de palavras reservadas em C++</span></em></h4>
<pre><span style="font-weight: 400;">alignas continue friend register true alignof decltype goto reinterpret_cast tryasm default if return typedef auto delete inline short typeid bool do int signed typename break double long sizeof union case dynamic_cast mutable static unsignedcatch else namespace static_assert usingchar enum new static_cast virtualchar16_t explicit noexcept struct voidchar32_t export nullptr switch volatile class extern operator template wchar_tconst false private this while constexpr float protected thread_localconst_cast for public throw</span></pre>
<p><span style="font-weight: 400;">A lista de palavras reservadas pode ser alterada ao longo do tempo, conforma a linguagem vai evoluindo e novos padrões são publicados. Para se manter atualizado com relação às palavras reservadas em C++, sempre verifique a documentação mais atual padrão do C++, que pode ser acessada aqui: </span><a href="https://isocpp.org/files/papers/N3690.pdf" target="_blank" rel="noopener"><span style="font-weight: 400;">https://isocpp.org/files/papers/N3690.pdf</span></a></p>
<h3>Exemplos de declaração de variáveis em C++</h3>
<p>Vejamos alguns exemplos de declaração e atribuição de variáveis em C++ agora.</p>
<pre><span style="color: #008000;">#include &lt;iostream&gt;</span>

using namespace std;

int main() {
  int a;
  int b;
  a = 10;
  b = 20;
  cout &lt;&lt; "Valor de a: " &lt;&lt; a;
  cout &lt;&lt; "\n";
  cout &lt;&lt; "Valor de b: " &lt;&lt; b &lt;&lt; endl;

  int res;
  res = a + b;
  cout &lt;&lt; "Valor de res: " &lt;&lt; res &lt;&lt; endl;

  int c(15);
  int d(30);
  int result {c + d};
  cout &lt;&lt; "Valor de result: " &lt;&lt; result &lt;&lt; endl;

  return 0;
}</pre>
<p>Resultado:</p>
<p><img decoding="async" class="aligncenter wp-image-17457 size-full" title="Declaração de variáveis em C++" src="http://www.bosontreinamentos.com.br/wp-content/uploads/2021/01/variaveis-c-boson.png" alt="Declaração de variáveis em C++" width="492" height="152" srcset="https://www.bosontreinamentos.com.br/wp-content/uploads/2021/01/variaveis-c-boson.png 492w, https://www.bosontreinamentos.com.br/wp-content/uploads/2021/01/variaveis-c-boson-420x130.png 420w" sizes="(max-width: 492px) 100vw, 492px" /></p>
<p>É isso aí! Nas próximas lições veremos como usar funções de entrada e saída de dados em C++ (como a função cout mostrada no exemplo), além de empregar operadores diversos para manipular valores armazenados em variáveis.</p>
<p>&nbsp;</p>
<p>O post <a href="https://www.bosontreinamentos.com.br/programacao-em-c/declaracao-de-variaveis-em-c/">Declaração de Variáveis em C++</a> apareceu primeiro em <a href="https://www.bosontreinamentos.com.br">Bóson Treinamentos em Ciência e Tecnologia</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.bosontreinamentos.com.br/programacao-em-c/declaracao-de-variaveis-em-c/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Tipos de Dados em C++</title>
		<link>https://www.bosontreinamentos.com.br/programacao-em-c/tipos-de-dados-em-c/</link>
					<comments>https://www.bosontreinamentos.com.br/programacao-em-c/tipos-de-dados-em-c/?noamp=mobile#comments</comments>
		
		<dc:creator><![CDATA[Fábio dos Reis]]></dc:creator>
		<pubDate>Thu, 04 Feb 2021 15:37:03 +0000</pubDate>
				<category><![CDATA[Programação em C++]]></category>
		<category><![CDATA[Cpp]]></category>
		<category><![CDATA[Programação]]></category>
		<guid isPermaLink="false">http://www.bosontreinamentos.com.br/?p=17452</guid>

					<description><![CDATA[<p>Introdução ao Tipos de Dados em C++ Por Fábio dos Reis A linguagem C++ é uma linguagem fortemente tipada. Isso significa que cada variável no programa possui um tipo associado a ela, que define o que ela pode armazenar. O compilador realiza verificação rígida dos tipos ao compilar um programa em C++ para assegurar que o tipo correto esteja sendo usado e que os tipos sejam compatíveis quando combinados entre si (por exemplo, em cálculos). Existem sete tipos de dados básicos ou fundamentais em C++, chamados de Tipos Primitivos. A tabela a seguir mostra os tipos básicos primitivos em C++, com a palavra-chave usada em sua declaração e o tamanho em bytes ocupado por cada elemento do tipo na memória RAM: Tipo Descrição Faixa de valores Tamanho (bytes) int Inteiro -2.147.483.648 a&#160;-2.147.483.647 2 ou 4 float Ponto Flutuante, 7 dígitos de precisão -3,4 x 1038 a&#160;3,4 x 1038 4 double Ponto Flutuante Duplo, 15 dígitos de precisão -1,7 x 10308 a 1,7 x 10308 8 char Caractere caracteres 1 wchar_t Caractere Ampliado &#8211; &#8211; bool Lógico true &#124; false 1 void Sem Valor (usado em funções que não retornam valores) &#8211; &#8211; Os tipos numéricos ou aritméticos que usamos em [...]</p>
<p>O post <a href="https://www.bosontreinamentos.com.br/programacao-em-c/tipos-de-dados-em-c/">Tipos de Dados em C++</a> apareceu primeiro em <a href="https://www.bosontreinamentos.com.br">Bóson Treinamentos em Ciência e Tecnologia</a>.</p>
]]></description>
										<content:encoded><![CDATA[<h2>Introdução ao Tipos de Dados em C++</h2>
<p><em>Por Fábio dos Reis</em></p>
<p>A linguagem C++ é uma linguagem fortemente tipada. Isso significa que cada variável no programa possui um tipo associado a ela, que define o que ela pode armazenar. O compilador realiza verificação rígida dos tipos ao compilar um programa em C++ para assegurar que o tipo correto esteja sendo usado e que os tipos sejam compatíveis quando combinados entre si (por exemplo, em cálculos).</p>
<p>Existem sete tipos de dados básicos ou fundamentais em C++, chamados de <strong><em>Tipos Primitivos</em></strong>. A tabela a seguir mostra os tipos básicos primitivos em C++, com a palavra-chave usada em sua declaração e o tamanho em bytes ocupado por cada elemento do tipo na memória RAM:</p>
<table style="border-collapse: collapse; width: 95.469%; height: 257px;" border="1">
<thead>
<tr style="height: 23px;">
<td style="width: 11.4318%; text-align: center; height: 24px;"><strong>Tipo</strong></td>
<td style="width: 26.7301%; text-align: center; height: 24px;"><strong>Descrição</strong></td>
<td style="width: 24.329%; text-align: center; height: 24px;"><strong>Faixa de valores</strong></td>
<td style="width: 17.9941%; text-align: center; height: 24px;"><strong>Tamanho (bytes)</strong></td>
</tr>
</thead>
<tbody>
<tr style="height: 23px;">
<td style="width: 11.4318%; height: 36px;">int</td>
<td style="width: 26.7301%; height: 36px;">Inteiro</td>
<td style="width: 24.329%; height: 36px; text-align: center;">-2.147.483.648 a&nbsp;-2.147.483.647</td>
<td style="width: 17.9941%; height: 36px; text-align: center;">2 ou 4</td>
</tr>
<tr style="height: 23px;">
<td style="width: 11.4318%; height: 42px;">float</td>
<td style="width: 26.7301%; height: 42px;">Ponto Flutuante, 7 dígitos de precisão</td>
<td style="width: 24.329%; height: 42px; text-align: center;">-3,4 x 10<sup>38</sup> a&nbsp;3,4 x 10<sup>38</sup></td>
<td style="width: 17.9941%; height: 42px; text-align: center;">4</td>
</tr>
<tr style="height: 23px;">
<td style="width: 11.4318%; height: 33px;">double</td>
<td style="width: 26.7301%; height: 33px;">Ponto Flutuante Duplo, 15 dígitos de precisão</td>
<td style="width: 24.329%; height: 33px; text-align: center;">-1,7 x 10<sup>308</sup> a 1,7 x 10<sup>308</sup></td>
<td style="width: 17.9941%; height: 33px; text-align: center;">8</td>
</tr>
<tr style="height: 23px;">
<td style="width: 11.4318%; height: 25px;">char</td>
<td style="width: 26.7301%; height: 25px;">Caractere</td>
<td style="width: 24.329%; height: 25px; text-align: center;">caracteres</td>
<td style="width: 17.9941%; height: 25px; text-align: center;">1</td>
</tr>
<tr style="height: 23px;">
<td style="width: 11.4318%; height: 34px;">wchar_t</td>
<td style="width: 26.7301%; height: 34px;">Caractere Ampliado</td>
<td style="width: 24.329%; height: 34px; text-align: center;">&#8211;</td>
<td style="width: 17.9941%; height: 34px; text-align: center;">&#8211;</td>
</tr>
<tr style="height: 23px;">
<td style="width: 11.4318%; height: 30px;">bool</td>
<td style="width: 26.7301%; height: 30px;">Lógico</td>
<td style="width: 24.329%; height: 30px; text-align: center;">true | false</td>
<td style="width: 17.9941%; height: 30px; text-align: center;">1</td>
</tr>
<tr style="height: 23px;">
<td style="width: 11.4318%; height: 33px;">void</td>
<td style="width: 26.7301%; height: 33px;">Sem Valor (usado em funções que não retornam valores)</td>
<td style="width: 24.329%; height: 33px; text-align: center;">&#8211;</td>
<td style="width: 17.9941%; height: 33px; text-align: center;">&#8211;</td>
</tr>
</tbody>
</table>
<p>Os tipos numéricos ou aritméticos que usamos em C++ são divididos em duas grandes categorias: <strong>tipos inteiros</strong> (números inteiros) e <strong>tipos de ponto flutuante</strong> (números fracionários). Existem diversos tipos de dados em cada uma dessas categorias, cada um com uma faixa de valores permitida (quantidade de valores possíveis) que o tipo pode armazenar.</p>
<h3>Modificadores de Tipo</h3>
<p>Um modificador é uma palavra-chave acrescentada ao nome de um tipo em sua declaração, que permite modificar seu comportamento de duas formas:</p>
<ul>
<li>Estendendo a faixa de valores suportada pelo tipo</li>
<li>Permitindo ou não o emprego de números negativos (com sinal).</li>
</ul>
<p>Alguns dos tipos básicos podem ser estendidos usando os seguintes modificadores e suas combinações:</p>
<ul>
<li>Long</li>
<li>Short</li>
<li>Unsigned</li>
<li>Signed</li>
</ul>
<p>Basicamente, esses modificadores expandem os valores mínimo e máximo da faixa de valores de cada tipo e determinam se os valores podem ser negativos ou somente positivos.</p>
<h4>Tipos com sinal &#8211; signed</h4>
<p>Um tipo com sinal (&#8220;signed&#8221;) é um tipo que permite a representação de valores positivos e negativos. É empregado quando precisamos armazenar valores negativos em um programa.</p>
<p>Um exemplo é o armazenamento de temperaturas &#8211; podemos armazenar tanto valores positivos como +32°C (temperatura real no momento em que escrevo esse artigo!) quanto temperaturas negativas como -15°C.</p>
<p>Por exemplo, o tipo int permite a faixa de valores de –2.147.483.648 a +2.147.483.647. A tabela a seguir mostra os tipos inteiros disponíveis em C++ incluindo a aplicação dos modificadores:</p>
<table style="border-collapse: collapse; width: 94.2886%; height: 227px;" border="1">
<thead>
<tr style="height: 23px;">
<td style="width: 33.3333%; text-align: center; height: 23px;"><strong>Tipo</strong></td>
<td style="width: 33.3333%; text-align: center; height: 23px;"><strong>Faixa de Valores</strong></td>
<td style="width: 33.3333%; text-align: center; height: 23px;"><strong>Tamanho em bytes (típico)</strong></td>
</tr>
</thead>
<tbody>
<tr>
<td style="width: 33.3333%;">
<p>char</p>
</td>
<td style="width: 33.3333%; text-align: center;">-128 a +127</td>
<td style="width: 33.3333%; text-align: center;">1</td>
</tr>
<tr style="height: 62px;">
<td style="width: 33.3333%; height: 62px;">
<p>short<br />
short int<br />
signed short<br />
signed short int</p>
</td>
<td style="width: 33.3333%; height: 62px; text-align: center;">-32768 a +32767</td>
<td style="width: 33.3333%; text-align: center; height: 62px;">2</td>
</tr>
<tr style="height: 79px;">
<td style="width: 33.3333%; height: 79px;">
<p>int<br />
signed int</p>
</td>
<td style="width: 33.3333%; height: 79px; text-align: center;">-2.147.483.648 a +2.147.483.647</td>
<td style="width: 33.3333%; text-align: center; height: 79px;">4</td>
</tr>
<tr style="height: 63px;">
<td style="width: 33.3333%; height: 63px;">long<br />
long int<br />
signed long<br />
signed long int</td>
<td style="width: 33.3333%; height: 63px; text-align: center;">igual a int ou long long<br />
(depende da implementação)</td>
<td style="width: 33.3333%; text-align: center; height: 63px;">4 ou 8</td>
</tr>
<tr>
<td style="width: 33.3333%;">(<em>a partir do C++11</em>)<br />
long long<br />
long long int<br />
signed long long<br />
signed long long int</td>
<td style="width: 33.3333%; text-align: center;">-9223372036854775808 a +9223372036854775807</td>
<td style="width: 33.3333%; text-align: center;">8</td>
</tr>
</tbody>
</table>
<p>Na tabela acima, temos os nomes de tipos na coluna à esquerda e, como podemos ver, alguns nomes são compostos por mais de uma palavra. Sempre que possível usamos o nome mais curto disponível para o tipo em questão.</p>
<p>Assim, é muito comum usar, por exemplo, &#8220;long&#8221; do que &#8220;signed long int&#8221;, que representa o mesmo tipo (porém de forma mais explícita e melhor documentada).</p>
<p>O modificador signed para números inteiros é, na verdade, opcional. Se for omitido, o valor terá sinal por padrão.</p>
<h4>Tipos sem sinal &#8211; unsigned</h4>
<p>Já um tipo sem sinal (&#8220;unsigned&#8221;) somente permite a representação de números positivos, no mesmo espaço de armazenamento, tendo portanto uma faixa de valores positivos estendida. É usado, como podemos imaginar, quando não há a necessidade de armazenar números negativos no programa.</p>
<p>Um exemplo é o armazenamento da idade de uma pessoa &#8211; as idades são sempre números positivos; você pode ter 30 anos de idade, mas nunca -30 anos!</p>
<p>A tabela a seguir mostra os tipos inteiros em C++ sem sinal:</p>
<table style="border-collapse: collapse; width: 100%;" border="1">
<thead>
<tr>
<td style="width: 33.3333%; text-align: center;"><strong>Tipo</strong></td>
<td style="width: 33.3333%; text-align: center;"><strong>Faixa de Valores</strong></td>
<td style="width: 33.3333%; text-align: center;"><strong>Tamanho em bytes (típico)</strong></td>
</tr>
</thead>
<tbody>
<tr>
<td style="width: 33.3333%;">unsigned char</td>
<td style="width: 33.3333%; text-align: center;">0 a 255</td>
<td style="width: 33.3333%; text-align: center;">1</td>
</tr>
<tr>
<td style="width: 33.3333%;">unsigned short</td>
<td style="width: 33.3333%; text-align: center;">0 a 65535</td>
<td style="width: 33.3333%; text-align: center;">2</td>
</tr>
<tr>
<td style="width: 33.3333%;">unsigned int</td>
<td style="width: 33.3333%; text-align: center;">0 a 4294967295</td>
<td style="width: 33.3333%; text-align: center;">4</td>
</tr>
<tr>
<td style="width: 33.3333%;">unsigned long<br />
unsigned long int</td>
<td style="width: 33.3333%; text-align: center;">igual a unsigned int ou unsigned long long<br />
(depende da implementação)</td>
<td style="width: 33.3333%; text-align: center;">4 ou 8</td>
</tr>
<tr>
<td style="width: 33.3333%;">unsigned long long<br />
unsigned long long int</td>
<td style="width: 33.3333%; text-align: center;">0 a 18446744073709551615</td>
<td style="width: 33.3333%; text-align: center;">8</td>
</tr>
</tbody>
</table>
<p>Para criar um tipo sem sinal devemos obrigatoriamente usar a palavra-chave unsigned antes do nome do tipo em si, como no exemplo a seguir:</p>
<pre><strong>unsigned short int <span style="color: #339966;">// Tipo inteiro curto sem sinal</span></strong></pre>
<h3>Números de Ponto Flutuante</h3>
<p>Números de ponto flutuante permitem representar valores fracionários, positivos e negativos, como 3.1415 ou -9.345464576, além de permitirem o armazenamento de valores muito grandes (ou muito pequenos), em faixas de valores bem maiores que as possíveis com números inteiros.</p>
<p>Um número de ponto flutuante normalizado consiste em duas partes: uma mantissa e um expoente. A magnitude de um número é o valor da mantissa multiplicado por 10 elevado à potência do expoente.</p>
<p>Por exemplo, o número de dias em um ano típico, 365, pode ser escrito como um valor de ponto flutuante de precisão fixa em notação E (<a href="https://youtu.be/mytKd-fCv4Q" target="_blank" rel="noopener">exponencial / científica</a>) da seguinte forma:</p>
<p style="text-align: center;"><strong>3.650000E02</strong></p>
<p>Aqui, a mantissa tem sete valores decimais (float &#8211; precisão fixa) e o expoente possui dois. A letra &#8216;<strong>E</strong>&#8216; significa &#8220;<em>vezes dez elevado a</em>&#8220;, significando que o valor 3.650000 multiplica 10 elevado a 02 (10<sup>2</sup>). Ou seja:</p>
<p style="text-align: center;"><strong>3.650000 x 10 x 10 = 3.650000 x 100 = 365 (ignorando os zeros).</strong></p>
<p>Note que o valor do expoente &#8211; 02 &#8211;&nbsp; é um valor positivo. Por padrão, não precisamos especificar o sinal do expoente se for positivo, como fizemos no exemplo. Mas se o valor for negativo, é obrigatório indicar seu sinal &#8211; e podemos indicar se for positivo também, para maior clareza de representação. Veja os exemplos do mundo real:</p>
<p style="text-align: center;"><strong>Carga elementar (elétron): 1.602 × 10<sup>-19</sup>&nbsp; = <span style="color: #800000;">1.602E-19</span></strong></p>
<p style="text-align: center;"><strong>Constante de Avogadro: 6.022 x 10<sup>23</sup> = <span style="color: #800000;">6.022E23</span></strong></p>
<p>Podemos usar essa notação ao definir constantes de ponto flutuante ou ainda valores literais em um programa (diretamente no código-fonte). A letra E pode ser maiúscula ou minúscula, não importando seu caso.</p>
<p>Os tipos de ponto flutuante disponíveis em C++ são:</p>
<table style="border-collapse: collapse; width: 93.5872%; height: 82px;" border="1">
<thead>
<tr>
<td style="width: 18.5581%; text-align: center;"><strong>Tipo</strong></td>
<td style="width: 56.4597%; text-align: center;"><strong>Faixa de Valores</strong></td>
<td style="width: 24.9821%; text-align: center;"><strong>Tamanho em bytes</strong></td>
</tr>
</thead>
<tbody>
<tr>
<td style="width: 18.5581%;">float</td>
<td style="width: 56.4597%; text-align: center;">1.17549 x 10<sup>-38</sup> a 3.40282 x 10<sup>38</sup></td>
<td style="width: 24.9821%; text-align: center;">4</td>
</tr>
<tr>
<td style="width: 18.5581%;">double</td>
<td style="width: 56.4597%; text-align: center;">2.22507 x 10<sup>-308</sup> a 1.79769 x 10<sup>308</sup></td>
<td style="width: 24.9821%; text-align: center;">8</td>
</tr>
<tr>
<td style="width: 18.5581%;">long double</td>
<td style="width: 56.4597%; text-align: center;">Depende da implementação. Em meu sistema (Win 10 64 bits), por exemplo, os limites são:<br />
3.3621 x 10<sup>-4932</sup> a 1.18973 x 10<sup>4932</sup></td>
<td style="width: 24.9821%; text-align: center;">10, 12 ou 16</td>
</tr>
</tbody>
</table>
<p>O tipo float possui 7 dígitos de precisão (tamanho da mantissa), ao passo que o tipo double possui 15 dígitos de precisão (ou seja, precisão dupla). O arquivo de cabeçalho <em><strong>float.h</strong></em> informa os valores de bytes, expoente e precisão para os tipos de ponto flutuante do sistema em particular que você está usando.</p>
<p>Para descobrir os limites das faixas de valores dos tipos float, double e long double em seu sistema, você pode rodar o seguinte programa C++:</p>
<pre><strong>#include &lt;iostream&gt;</strong>
<strong>#include &lt;limits&gt;</strong>
<strong>using namespace std;</strong>
<strong>int main()</strong>
<strong>{</strong>
<strong>cout &lt;&lt; "Tipo\t\tValor Min\tValor Max\n\n"</strong>
<strong> &lt;&lt; "Float" &lt;&lt; '\t' &lt;&lt; '\t' &lt;&lt; std::numeric_limits&lt;float&gt;::min() &lt;&lt; '\t'</strong>
<strong>   &lt;&lt; std::numeric_limits&lt;float&gt;::max() &lt;&lt; '\n'</strong>
<strong> &lt;&lt; "Double" &lt;&lt; '\t' &lt;&lt; '\t' &lt;&lt; std::numeric_limits&lt;double&gt;::min() &lt;&lt; '\t'</strong>
<strong>   &lt;&lt; std::numeric_limits&lt;double&gt;::max() &lt;&lt; '\n'</strong>
<strong> &lt;&lt; "Long Double" &lt;&lt; '\t'&lt;&lt; std::numeric_limits&lt;long double&gt;::min() &lt;&lt; '\t'</strong>
<strong>   &lt;&lt; std::numeric_limits&lt;long double&gt;::max() &lt;&lt; '\n';</strong>
<strong>return 0;</strong>
<strong>}</strong></pre>
<p>Veja o resultado do código anterior em meu sistema:</p>
<p><img loading="lazy" decoding="async" class="aligncenter wp-image-17573 size-full" title="Tipos de ponto flutuante em C++" src="http://www.bosontreinamentos.com.br/wp-content/uploads/2021/02/tipos-ponto-flutuante-c-boson.jpg" alt="Tipos de ponto flutuante em C++" width="433" height="139" srcset="https://www.bosontreinamentos.com.br/wp-content/uploads/2021/02/tipos-ponto-flutuante-c-boson.jpg 433w, https://www.bosontreinamentos.com.br/wp-content/uploads/2021/02/tipos-ponto-flutuante-c-boson-420x135.jpg 420w" sizes="auto, (max-width: 433px) 100vw, 433px" /></p>
<p>A escolha do tipo correto de dados é importante em seus programas para garantir que seja possível representar os dados de maneira eficiente e correta. Alguns exemplos disso incluem:</p>
<ul>
<li>usar o tipo short em vez de int se o intervalo de dados permitir</li>
<li>usar double em vez de float para obter maior precisão para valores monetários (que representam dinheiro)</li>
<li>usar um wchar_t para dados de caractere que não estão incluídos no conjunto de caracteres ASCII padrão, como por exemplo o Kanji japonês</li>
</ul>
<p>Outros tipos de dados em C++ incluem os tipos de dados definidos pelo usuário (enum, structure, union e class) e tipos de dados derivados (array, ponteiro, referência), entre outros, que estudaremos em um momento oportuno.</p>
<p>Nas próximas lições vamos abordar de forma mais aprofundada conceitos como valores literais, os tipos char, wchar_t e bool, constantes, variáveis e outros.</p>
<h3>Referências</h3>
<ul>
<li>HORTON, I.; VAN WEERT, P. <em><strong>Beginning C++ 17 From Novice to Professional</strong></em>. 5ª edição. 2018. Editora Apress.</li>
<li>PRATA, S. <em><strong>C++ Primer Plus</strong></em>. 6ª edição. 2012. Editora Addison-Wesley.</li>
</ul>
<p>&nbsp;</p>
<p>O post <a href="https://www.bosontreinamentos.com.br/programacao-em-c/tipos-de-dados-em-c/">Tipos de Dados em C++</a> apareceu primeiro em <a href="https://www.bosontreinamentos.com.br">Bóson Treinamentos em Ciência e Tecnologia</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.bosontreinamentos.com.br/programacao-em-c/tipos-de-dados-em-c/feed/</wfw:commentRss>
			<slash:comments>1</slash:comments>
		
		
			</item>
		<item>
		<title>Operadores Relacionais e de Igualdade em C++</title>
		<link>https://www.bosontreinamentos.com.br/programacao-em-c/operadores-relacionais-e-de-igualdade-em-c/</link>
					<comments>https://www.bosontreinamentos.com.br/programacao-em-c/operadores-relacionais-e-de-igualdade-em-c/?noamp=mobile#respond</comments>
		
		<dc:creator><![CDATA[Fábio dos Reis]]></dc:creator>
		<pubDate>Fri, 29 Jan 2021 14:14:26 +0000</pubDate>
				<category><![CDATA[Programação em C++]]></category>
		<category><![CDATA[C#]]></category>
		<category><![CDATA[Cpp]]></category>
		<category><![CDATA[Programação]]></category>
		<guid isPermaLink="false">http://www.bosontreinamentos.com.br/?p=17501</guid>

					<description><![CDATA[<p>Operadores Relacionais e de Igualdade em C++ Usamos os operadores relacionais para estabelecer uma relação entre dois valores (operandos). Por exemplo, com um operador relacional podemos verificar se dois valores (contidos ou não em variáveis) são iguais ou diferentes entre si. As expressões construídas com operadores relacionais sempre retornam um valor lógico (verdadeiro ou falso) Operador de atribuição Não confunda o operador de igualdade com um operador de atribuição, que possui função distinta &#8211; atribuir valores a variáveis &#8211; apesar de ambos empregarem o sinal de igual (=) A tabela a seguir lista os operadores relacionais e de igualdade usados em programação com linguagem C++, com exemplos. Operadores Relacionais Operação Operador Exemplo Maior que &#62; x &#62; y Menor que &#60; x &#60; y Maior ou igual a &#62;= x &#62;= y Menor ou igual a &#60;= x &#60;= y Operadores de Igualdade Operação Operador Exemplo Igual a == x == y Diferente de != x != y Precedência e associatividade dos operadores Os operadores relacionais tem maior precedência que os de igualdade, mas tem precedência igual entre si. A associatividade de todos esses operadores é sempre da esquerda para a direita. Exemplos Os operadores relacionais e de igualdade são [...]</p>
<p>O post <a href="https://www.bosontreinamentos.com.br/programacao-em-c/operadores-relacionais-e-de-igualdade-em-c/">Operadores Relacionais e de Igualdade em C++</a> apareceu primeiro em <a href="https://www.bosontreinamentos.com.br">Bóson Treinamentos em Ciência e Tecnologia</a>.</p>
]]></description>
										<content:encoded><![CDATA[<h2>Operadores Relacionais e de Igualdade em C++</h2>
<p>Usamos os operadores relacionais para estabelecer uma relação entre dois valores (operandos). Por exemplo, com um operador relacional podemos verificar se dois valores (contidos ou não em variáveis) são iguais ou diferentes entre si.</p>
<p>As expressões construídas com operadores relacionais sempre retornam um valor lógico (verdadeiro ou falso)</p>
<h4>Operador de atribuição</h4>
<p>Não confunda o operador de igualdade com um operador de atribuição, que possui função distinta &#8211; atribuir valores a variáveis &#8211; apesar de ambos empregarem o sinal de igual (=)</p>
<p>A tabela a seguir lista os operadores relacionais e de igualdade usados em programação com linguagem C++, com exemplos.</p>
<table style="border-collapse: collapse; width: 100%;" border="1">
<tbody>
<tr>
<td style="width: 33.3333%; text-align: center;" colspan="3"><span style="font-size: 14pt;"><strong>Operadores Relacionais</strong></span></td>
</tr>
<tr>
<td style="width: 33.3333%; text-align: center;"><strong>Operação</strong></td>
<td style="width: 33.3333%; text-align: center;"><strong>Operador</strong></td>
<td style="width: 33.3333%; text-align: center;"><strong>Exemplo</strong></td>
</tr>
<tr>
<td style="width: 33.3333%;">Maior que</td>
<td style="width: 33.3333%; text-align: center;">&gt;</td>
<td style="width: 33.3333%; text-align: center;">x &gt; y</td>
</tr>
<tr>
<td style="width: 33.3333%;">Menor que</td>
<td style="width: 33.3333%; text-align: center;">&lt;</td>
<td style="width: 33.3333%; text-align: center;">x &lt; y</td>
</tr>
<tr>
<td style="width: 33.3333%;">Maior ou igual a</td>
<td style="width: 33.3333%; text-align: center;">&gt;=</td>
<td style="width: 33.3333%; text-align: center;">x &gt;= y</td>
</tr>
<tr>
<td style="width: 33.3333%;">Menor ou igual a</td>
<td style="width: 33.3333%; text-align: center;">&lt;=</td>
<td style="width: 33.3333%; text-align: center;">x &lt;= y</td>
</tr>
<tr>
<td style="width: 33.3333%; text-align: center;" colspan="3"><span style="font-size: 14pt;"><strong>Operadores de Igualdade</strong></span></td>
</tr>
<tr>
<td style="width: 33.3333%; text-align: center;"><strong>Operação</strong></td>
<td style="width: 33.3333%; text-align: center;"><strong>Operador</strong></td>
<td style="width: 33.3333%; text-align: center;"><strong>Exemplo</strong></td>
</tr>
<tr>
<td style="width: 33.3333%;">Igual a</td>
<td style="width: 33.3333%; text-align: center;">==</td>
<td style="width: 33.3333%; text-align: center;">x == y</td>
</tr>
<tr>
<td style="width: 33.3333%;">Diferente de</td>
<td style="width: 33.3333%; text-align: center;">!=</td>
<td style="width: 33.3333%; text-align: center;">x != y</td>
</tr>
</tbody>
</table>
<h3>Precedência e associatividade dos operadores</h3>
<p>Os operadores relacionais tem maior precedência que os de igualdade, mas tem precedência igual entre si.</p>
<p>A associatividade de todos esses operadores é sempre da esquerda para a direita.</p>
<h4>Exemplos</h4>
<p>Os operadores relacionais e de igualdade são operadores binários que retornam um valor lógico, verdadeiro ou falso, representados respectivamente pelos valores numéricos 1 ou 0. Veja o exemplo a seguir:</p>
<pre><strong>int d = 15;</strong>
<strong>int e = 15;</strong>
<strong>cout &lt;&lt; "d &gt; e? " &lt;&lt; (d &gt; e) &lt;&lt; endl;</strong>
<strong>cout &lt;&lt; "d &gt;= e? " &lt;&lt; (d &gt;= e) &lt;&lt; endl;</strong>
<strong>cout &lt;&lt; "d &lt; e? " &lt;&lt; (d &lt; e) &lt;&lt; endl;</strong>
<strong>cout &lt;&lt; "d &lt;= e? " &lt;&lt; (d &lt;= e) &lt;&lt; endl;</strong>
<strong>cout &lt;&lt; "d == e? " &lt;&lt; (d == e) &lt;&lt; endl;</strong>
<strong>cout &lt;&lt; "d != e? " &lt;&lt; (d != e) &lt;&lt; endl;</strong></pre>
<p>Resultado:</p>
<pre><span style="color: #800000;"><strong>d &gt; e? 0</strong></span>
<span style="color: #800000;"><strong>d &gt;= e? 1</strong></span>
<span style="color: #800000;"><strong>d &lt; e? 0</strong></span>
<span style="color: #800000;"><strong>d &lt;= e? 1</strong></span>
<span style="color: #800000;"><strong>d == e? 1</strong></span>
<span style="color: #800000;"><strong>d != e? 0</strong></span></pre>
<p>Os valores 0 e 1 retornados nos exemplos indicam, respectivamente, os valores lógicos False (falso) e True (verdadeiro). Com isso, é possível tomar decisões baseadas no resultado das comparações realizadas, principalmente quando associamos esses operadores com estruturas de decisão condicional e estruturas de repetição, que estudaremos nas próximas lições.</p>
<p>É isso aí! Vimos nessa lição os operadores relacionais e os operadores de igualdade em C++. Vamos estudar operadores lógicos e aritméticos nas próximas lições.</p>
<p>Até!</p>
<p>O post <a href="https://www.bosontreinamentos.com.br/programacao-em-c/operadores-relacionais-e-de-igualdade-em-c/">Operadores Relacionais e de Igualdade em C++</a> apareceu primeiro em <a href="https://www.bosontreinamentos.com.br">Bóson Treinamentos em Ciência e Tecnologia</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.bosontreinamentos.com.br/programacao-em-c/operadores-relacionais-e-de-igualdade-em-c/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Diretivas de pré-processamento e namespaces em C++</title>
		<link>https://www.bosontreinamentos.com.br/programacao-em-c/diretivas-de-pre-processamento-e-namespaces-em-c/</link>
					<comments>https://www.bosontreinamentos.com.br/programacao-em-c/diretivas-de-pre-processamento-e-namespaces-em-c/?noamp=mobile#respond</comments>
		
		<dc:creator><![CDATA[Fábio dos Reis]]></dc:creator>
		<pubDate>Wed, 06 Jan 2021 12:50:54 +0000</pubDate>
				<category><![CDATA[Programação em C++]]></category>
		<category><![CDATA[C#]]></category>
		<category><![CDATA[Programação]]></category>
		<guid isPermaLink="false">http://www.bosontreinamentos.com.br/?p=17449</guid>

					<description><![CDATA[<p>Diretivas de pré-processamento e namespaces em C++ Tarefas de pré-processamento são tarefas que ocorrem antes que um programa seja efetivamente compilado. No pré-processamento, as principais operações realizadas antes da compilação incluem: Definição de Constantes Simbólicas Inclusão de outros arquivos no arquivo a ser compilado Definição de Macros Compilação condicional de código Execução condicional de diretivas As tarefas de pré-processamento são definidas por diretivas de pré-processamento no C++. Todas as diretivas de pré-processador se iniciam com o símbolo #, e não podemos ter nenhum caractere antes de uma diretiva em uma linha, exceto espaços em branco. Como as diretivas de pré-processamento não são declarações do C++ (comandos), elas não terminam com ponto-e-vírgula ;. Colocar o símbolo ; no final de uma diretiva de pré-processamento é, na verdade, um erro de programação comum. Diretivas de pré-processador em C++ São instruções direcionadas ao compilador. podemos fornecer algumas instruções ao compilador de modo que antes de iniciar o processo de compilação essas instruções são executadas. Alguns exemplos de diretivas de pré-processador incluem: #define &#8211; define constantes simbólicas (que não ocupam espaço na memória RAM do sistema) #ifndef &#8211; define um item se ele não tiver sido definido anteriormente #include &#8211; inclusão de cabeçalhos &#8211; [...]</p>
<p>O post <a href="https://www.bosontreinamentos.com.br/programacao-em-c/diretivas-de-pre-processamento-e-namespaces-em-c/">Diretivas de pré-processamento e namespaces em C++</a> apareceu primeiro em <a href="https://www.bosontreinamentos.com.br">Bóson Treinamentos em Ciência e Tecnologia</a>.</p>
]]></description>
										<content:encoded><![CDATA[<h2>Diretivas de pré-processamento e namespaces em C++</h2>
<p>Tarefas de pré-processamento são tarefas que ocorrem antes que um programa seja efetivamente compilado. No pré-processamento, as principais operações realizadas antes da compilação incluem:</p>
<ul>
<li>Definição de Constantes Simbólicas</li>
<li>Inclusão de outros arquivos no arquivo a ser compilado</li>
<li>Definição de Macros</li>
<li>Compilação condicional de código</li>
<li>Execução condicional de diretivas</li>
</ul>
<p>As tarefas de pré-processamento são definidas por diretivas de pré-processamento no C++. Todas as diretivas de pré-processador se iniciam com o símbolo <strong>#</strong>, e não podemos ter nenhum caractere antes de uma diretiva em uma linha, exceto espaços em branco.</p>
<p>Como as diretivas de pré-processamento não são declarações do C++ (comandos), elas não terminam com ponto-e-vírgula <strong>;</strong>. Colocar o símbolo ; no final de uma diretiva de pré-processamento é, na verdade, um erro de programação comum.</p>
<h3>Diretivas de pré-processador em C++</h3>
<p>São instruções direcionadas ao compilador. podemos fornecer algumas instruções ao compilador de modo que antes de iniciar o processo de compilação essas instruções são executadas.</p>
<p>Alguns exemplos de diretivas de pré-processador incluem:</p>
<ul>
<li>#define &#8211; define constantes simbólicas (que não ocupam espaço na memória RAM do sistema)</li>
<li>#ifndef &#8211; define um item se ele não tiver sido definido anteriormente</li>
<li>#include &#8211; inclusão de cabeçalhos &#8211; ver a seguir.</li>
</ul>
<p>Todo código em C++ inicia com a diretiva <strong>#include&lt;&gt;</strong>. A diretiva instrui o pré-processador a incluir uma parte do código padrão do C++ ou outro código pronto no programa atual. Vejamos algumas dessas diretivas com mais detalhes agora.</p>
<h3>Diretiva de pré-processamento #include</h3>
<p>A diretiva de pré-processamento #include faz com que uma cópia de um arquivo específico seja incluído no código, no lugar da diretiva. É empregada geralmente para incluir arquivos de cabeçalho padrão como por exemplo o <strong>&lt;iostream&gt;</strong>.</p>
<p>Há duas formas de se escrever uma diretiva #include:</p>
<pre><strong>#include &lt;arquivo&gt;</strong>
<strong>#include "arquivo"</strong></pre>
<p>A primeira forma, com &lt;&gt;, é empregada para a inclusão de arquivos de cabeçalho da biblioteca padrão C++. O pré-processador procura o arquivo especificado em pastas pré-definidas no computador.</p>
<p>Já na segunda forma, com o nome do arquivo entre aspas &#8220;&#8221;, o pré-processador procura o arquivo primeiramente na mesma pasta (diretório) onde se encontra o arquivo a ser compilado, e então nos diretórios pré-definidos pela implementação do sistema. No geral, usamos essa forma quando queremos incluir arquivos de cabeçalho definidos pelo usuário (criados por nós mesmos).</p>
<p>Por exemplo, a diretiva</p>
<pre><strong>#include&lt;iostream&gt;</strong></pre>
<p>inclui o cabeçalho de nome <strong><em>iostream</em></strong> para dar suporte a operações de entrada e saída de dados, por exemplo disponibilizando funções para ler dados da tela e escrever no console.</p>
<h3>Diretivas de pré-processamento #define</h3>
<p>Com uma diretiva #define criamos Constantes Simbólicas, que são constantes representadas como símbolos, e Macros, que são pequenas operações funcionais. Escrevemos uma diretiva #define da seguinte forma:</p>
<pre><span style="color: #800080;"><strong>#define identificador valor_substituto</strong></span></pre>
<p>Com esta declaração, todas as ocorrências do identificador no código são substituídas pelo <em>valor_substituto</em> informado. Por exemplo, considere a constante simbólica a seguir:</p>
<pre><strong>#define distancia 150</strong></pre>
<p>Toda vez que aparecer o identificador distância no código (exceto se estiver entre aspas), ele será substituído pelo valor 150. Note que NÃO usamos o operador de atribuição = aqui, pois não se trata de uma atribuição de valores, e sim de uma substituição de nomes.</p>
<p>Uma constante simbólica não aloca espaço na memória RAM do sistema e não armazena dado nenhum. No geral, é preferível criar constantes &#8220;comuns&#8221; em C++ com a palavra-chave <em>const</em>, em vez de usar constantes simbólicas, pois isso facilita o <em>debugging</em> do código &#8211; mas as constantes comuns ocupam espaço na memória, o que também deve ser levado em consideração.</p>
<p>Vejamos outro exemplo da diretiva #define, desta vez criando uma <strong>macro</strong>.</p>
<p>Uma macro é uma operação (pequena função) definida em uma diretiva de pré-processamento, e que podem ou não receber argumentos. O exemplo a seguir mostra a definição de uma macro que realiza o cálculo da área de um triângulo retângulo, dada por <strong>A = 1/2 * b * h</strong> (base * altura / 2):</p>
<pre><strong>#define AREA_TRIAN(b, h) ((b * h)/2)</strong></pre>
<p>Toda vez que AREA_TRIAN(b, h) aparecer no código, os valores de b e h serão substituídos pelos valores fornecidos como argumentos, e será retornado o valor calculado da área do triângulo retângulo. Assim, se em algum ponto do código tivermos:</p>
<pre><strong>area = AREA_TRIAN(10,15)</strong></pre>
<p>a variável area receberá o retorno da execução da macro, ou seja: 10 * 15 / 2 = 75.</p>
<p>Uma vantagem do uso de macros em relação à declaração de funções comuns no código é que o código é inserido diretamente no programa, diminuindo a sobrecarga associada à criação de funções. Porém, em C++ é muito comum que as macros sejam substituídas por outras formas de declaração de funções, como <em>templates</em> e funções <em>inline</em> ou funções lambda. As macros são empregadas mais extensivamente em linguagem C.</p>
<h3>Compilação Condicional</h3>
<p>Com uma estrutura de compilação condicional podemos controlar a execução das diretivas de pré-processamento e, assim, a compilação do código-fonte como um todo. Com uma diretiva de pré-processamento condicional, as expressões são avaliadas e será determinado se o código associado será compilado ou não. O exemplo mais comum de diretiva condicional é a diretiva #ifndef (&#8220;IF NOT DEFINED&#8221;). Veja o exemplo a seguir:</p>
<pre><strong>#ifndef NULL</strong>
<strong>  #define NULL 0</strong>
<strong>#endif</strong></pre>
<p>Esta diretiva verifica se uma constante simbólica NULL não está definida. Se estiver definida, nada ocorre, mas se ainda não estiver definida, a constante simbólica será criada com o valor 0.</p>
<p>Note que a diretiva <strong>#ifndef</strong> deve ser fechada (terminada) com <strong>#endif</strong>. Também existe uma diretiva que verifica se uma constante já está definida, que é a constante <strong>#ifdef</strong> (&#8220;IF DEFINED&#8221;), a qual, como se espera, funciona de forma inversa à #ifndef.</p>
<p><img loading="lazy" decoding="async" class="aligncenter wp-image-17381" title="Linguagem C++" src="http://www.bosontreinamentos.com.br/wp-content/uploads/2020/12/linguagem-c-programacao-1024x1024.png" alt="Linguagem de Programação C++" width="250" height="250" srcset="https://www.bosontreinamentos.com.br/wp-content/uploads/2020/12/linguagem-c-programacao-1024x1024.png 1024w, https://www.bosontreinamentos.com.br/wp-content/uploads/2020/12/linguagem-c-programacao-170x170.png 170w, https://www.bosontreinamentos.com.br/wp-content/uploads/2020/12/linguagem-c-programacao-420x420.png 420w, https://www.bosontreinamentos.com.br/wp-content/uploads/2020/12/linguagem-c-programacao-768x768.png 768w, https://www.bosontreinamentos.com.br/wp-content/uploads/2020/12/linguagem-c-programacao.png 1600w" sizes="auto, (max-width: 250px) 100vw, 250px" /></p>
<h3>Namespaces e diretivas using</h3>
<p>Todos os programas em C++ iniciam sua execução a partir de uma função especial chamada de <strong><em>main()</em></strong>, independente de onde ela esteja declarada no código do programa. Seu formato é o seguinte:</p>
<pre><strong>int main() {</strong>
<span style="color: #339966;"><strong>    // Código principal do programa</strong></span>
<strong>}</strong></pre>
<p>As chaves indicam onde inicia e onde termina o bloco de código que é executado pela função.</p>
<h3>Diretivas using</h3>
<p>As diretivas using habilitam um programa a usar todos os nomes em qualquer cabeçalho C++ padrão, como por exemplo o cabeçalho &lt;iostream&gt;. Assim, podemos incluir em um programa o namespace std da seguinte forma:</p>
<pre><strong>using namespace std;</strong></pre>
<p>E desta forma iremos poupar digitação de código posteriormente quando precisarmos utilizar as funções e métodos deste namespace, pois não será necessário referenciá-lo a todo instante.&nbsp;</p>
<p>Por conta disso, em vez de escrevermos:</p>
<pre><strong>std::cout &lt;&lt; "Mensagem"</strong></pre>
<p>podemos escrever simplesmente:</p>
<pre><strong>cout &lt;&lt; "Mensagem"</strong></pre>
<p>Pois o compilador já saberá que a função cout pertence ao namespace std, declarado por meio da diretiva using.</p>
<h3>Namespaces em C++</h3>
<p>Um namespace (espaço de nomes) é uma forma de organização de funções e outros elementos de um programa. São úteis para remover conflitos de nomes entre recursos distintos, como arquivos de cabeçalho que possuam funções ou métodos de mesmo nome, mas com funcionalidades distintas.</p>
<h4>Exemplo de namespaces em C++</h4>
<p>No exemplo a seguir</p>
<pre><strong>#include &lt;iostream&gt;
#include &lt;locale&gt;
</strong>
<strong>namespace ex1 {</strong>
<strong>    void func() {</strong>
<strong>        std::cout &lt;&lt; "Bóson ";
</strong>    }
<strong>}</strong>
<strong>namespace ex2 {</strong>
<strong>    void func() {</strong>
<strong>        using namespace std;
        cout &lt;&lt; "Treinamentos" &lt;&lt; endl;
</strong>    }
<strong>}
</strong>
<strong>using namespace ex1;</strong>
<strong>using namespace std;
</strong>
<strong>int main() {</strong>
<strong>    setlocale(LC_ALL, "");    
    func();</strong>
<strong>    ex2::func();</strong>
<strong>}</strong></pre>
<p><em>Saída obtida:</em></p>
<pre><span style="color: #800000;"><strong>Bóson Treinamentos</strong></span></pre>
<p>A palavra &#8220;Bóson&#8221; vem do retorno da função <strong>func()</strong> definida no namespace <strong>ex1</strong>, e apalavra &#8220;Treinamentos&#8221; vem da função de mesmo nome, <strong>func()</strong>, porém do namespace <strong>ex2</strong>. Incluímos o cabeçalho<strong> locale</strong> e a declaração <strong>setlocale(LC_ALL, &#8220;&#8221;);</strong> para termos suporte aos caracteres especiais da língua portuguesa (e outros) no console, como a letra <strong>o</strong> acentuada da palavra &#8220;Bóson&#8221;.</p>
<p>Podemos manter os namespaces em arquivos de cabeçalho separados, e incluir esses cabeçalhos no código para ter acesso às suas funções quando necessário, a partir de outra parte do programa.</p>
<p><strong>std</strong>: Biblioteca Padrão (standard). Indica o namespace padrão da linguagem, que trata de uma série de comandos, funções e declarações distintas.<br />
Pode ser declarado no início do código, logo após as diretivas #include, com o uso da declaração <strong><em>using</em></strong>:</p>
<pre><strong>#include&lt;iostream&gt;</strong>
<strong>using namespace std;</strong></pre>
<p>Ou ainda usado diretamente no código do programa, precedendo os nomes das funções a serem invocadas (método mais trabalhoso):</p>
<pre><strong>std::cout &lt;&lt; "Olá\n";</strong></pre>
<ul>
<li>O símbolo <strong>::</strong> é o operador de resolução de escopo.</li>
<li><strong>cout</strong> é uma função que pertence ao namespace padrão (std). significa <em><strong>C</strong>haracter <strong>OUT</strong>put</em> (saída de caracteres), e permite escrever dados na saída padrão do computador (tela).</li>
<li><strong>&lt;&lt;</strong> é o operador de inserção, que permite inserir o que é colocado à sua direita no elemento que está à sua esquerda. No caso, a palavra Olá é &#8220;<em>inserida</em>&#8221; no objeto cout &#8211; ou seja, enviada para a tela.</li>
</ul>
<h3>Conclusão</h3>
<p>Estudamos nesta lição as diretivas de pré-processamento principais do C++, como as diretivas <strong>#include</strong>, <strong>#define</strong> e <strong>#ifndef</strong>, e aprendemos os conceitos de <strong>constante simbólica</strong>, <strong>macro</strong> e <strong>arquivo de cabeçalho</strong>.</p>
<p>Também vimos o que é um <strong>namespace</strong> e a diretiva <strong>using</strong>, e entendemos que um programa em C++ sempre inicia com a função <strong>main()</strong>.</p>
<p>É isso aí! A partir da próxima lição vamos iniciar os estudos da sintaxe do C++, aprendendo sobre tipos de dados e declaração e atribuição de variáveis. Até!</p>
<p>O post <a href="https://www.bosontreinamentos.com.br/programacao-em-c/diretivas-de-pre-processamento-e-namespaces-em-c/">Diretivas de pré-processamento e namespaces em C++</a> apareceu primeiro em <a href="https://www.bosontreinamentos.com.br">Bóson Treinamentos em Ciência e Tecnologia</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.bosontreinamentos.com.br/programacao-em-c/diretivas-de-pre-processamento-e-namespaces-em-c/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Introdução à Linguagem de Programação C++</title>
		<link>https://www.bosontreinamentos.com.br/programacao-em-c/introducao-a-linguagem-de-programacao-c/</link>
					<comments>https://www.bosontreinamentos.com.br/programacao-em-c/introducao-a-linguagem-de-programacao-c/?noamp=mobile#respond</comments>
		
		<dc:creator><![CDATA[Fábio dos Reis]]></dc:creator>
		<pubDate>Sat, 26 Dec 2020 21:50:59 +0000</pubDate>
				<category><![CDATA[Programação em C++]]></category>
		<category><![CDATA[C#]]></category>
		<category><![CDATA[Programação]]></category>
		<guid isPermaLink="false">http://www.bosontreinamentos.com.br/?p=17397</guid>

					<description><![CDATA[<p>Linguagem de Programação C++ Uma das linguagens de programação mais importantes e utilizadas no mundo, a linguagem C++ evoluiu a partir da linguagem C, a qual foi desenvolvida por Dennis Ritchie nos laboratórios Bell, no final dos anos 60. Sendo uma extensão do C, de acordo com Bjarne Stroustrup, que é o criador do C++, ela pode ser definida de forma sucinta como: &#8220;&#8230; uma linguagem de programação de propósito geral com uma tendência para programação de sistemas que é um C melhorado suporta abstração de dados suporta programação orientada a objetos suporta programação genérica&#8221; A linguagem C++ começou a ser desenvolvida em 1979 e era originalmente conhecida como C com Classes. Essencialmente, isso significava que os arquivos de classe (usados na programação orientada a objetos), foram simplesmente adicionados à linguagem C. Em 1983 ela foi renomeada para C++. O C++ existe sob a tutela de um comitê de padrões e se tornou um padrão ISO em 1998 com uma revisão em 2011 e outras revisões em 2014, 2017 e 2020, que é a mais atual (C++20). Ela continua a ser atualizada como parte do trabalho do comitê de padrões, sendo que a próxima revisão está prevista para 2023 (C++23). [...]</p>
<p>O post <a href="https://www.bosontreinamentos.com.br/programacao-em-c/introducao-a-linguagem-de-programacao-c/">Introdução à Linguagem de Programação C++</a> apareceu primeiro em <a href="https://www.bosontreinamentos.com.br">Bóson Treinamentos em Ciência e Tecnologia</a>.</p>
]]></description>
										<content:encoded><![CDATA[<h2>Linguagem de Programação C++</h2>
<p><span style="font-weight: 400;">Uma das linguagens de programação mais importantes e utilizadas no mundo, a linguagem C++ evoluiu a partir da <a href="http://www.bosontreinamentos.com.br/category/programacao-em-linguagem-c/">linguagem C</a>, a qual foi desenvolvida por Dennis Ritchie nos laboratórios Bell, no final dos anos 60.</span></p>
<p><span style="font-weight: 400;">Sendo uma extensão do C, de acordo com Bjarne Stroustrup, que é o criador do C++, ela pode ser definida de forma sucinta como:</span></p>
<blockquote>
<p><span style="font-weight: 400;">&#8220;&#8230; uma linguagem de programação de propósito geral com uma tendência para programação de sistemas que</span></p>
<ul>
<li>é um C melhorado</li>
<li>suporta abstração de dados</li>
<li>suporta programação orientada a objetos</li>
<li>suporta programação genérica&#8221;</li>
</ul>
</blockquote>
<p><span style="font-weight: 400;">A linguagem C++ começou a ser desenvolvida em 1979 e era originalmente conhecida como C com Classes. Essencialmente, isso significava que os arquivos de classe (usados na programação orientada a objetos), foram simplesmente adicionados à linguagem C. Em 1983 ela foi renomeada para C++.</span></p>
<p><span style="font-weight: 400;">O C++ existe sob a tutela de um comitê de padrões e se tornou um padrão ISO em 1998 com uma revisão em 2011 e outras revisões em 2014, 2017 e 2020, que é a mais atual (C++20). Ela continua a ser atualizada como parte do trabalho do comitê de padrões, sendo que a próxima revisão está prevista para 2023 (C++23).</span></p>
<p><img loading="lazy" decoding="async" class="aligncenter wp-image-17381" title="Linguagem de Programação C++" src="http://www.bosontreinamentos.com.br/wp-content/uploads/2020/12/linguagem-c-programacao-1024x1024.png" alt="Linguagem de Programação C++" width="200" height="200" srcset="https://www.bosontreinamentos.com.br/wp-content/uploads/2020/12/linguagem-c-programacao-1024x1024.png 1024w, https://www.bosontreinamentos.com.br/wp-content/uploads/2020/12/linguagem-c-programacao-170x170.png 170w, https://www.bosontreinamentos.com.br/wp-content/uploads/2020/12/linguagem-c-programacao-420x420.png 420w, https://www.bosontreinamentos.com.br/wp-content/uploads/2020/12/linguagem-c-programacao-768x768.png 768w, https://www.bosontreinamentos.com.br/wp-content/uploads/2020/12/linguagem-c-programacao.png 1600w" sizes="auto, (max-width: 200px) 100vw, 200px" /></p>
<h3>Algumas características do C++</h3>
<p><span style="font-weight: 400;">O C++ é uma linguagem que diferencia maiúsculas de minúsculas (é case-sensitive). Isso significa que suas palavras-chave e declarações de variáveis devem corresponder a maiúsculas e minúsculas. Por exemplo, uma palavra-chave C++ para um tipo de constante é const. Se digitarmos Const ou CONST, o compilador não saberá que sua intenção é usar a palavra-chave const.</span></p>
<p><span style="font-weight: 400;">Além da distinção entre maiúsculas e minúsculas, C++ também tem um esboço definido para o código do programa e &#8220;elementos&#8221; específicos encontrados em uma aplicação C++ típica. Esses elementos consistem em:</span></p>
<ul>
<li style="font-weight: 400;" aria-level="1"><span style="font-weight: 400;">Diretivas de pré-processador que são usadas para fazer com que o compilador execute tarefas antes de compilar o código-fonte</span></li>
<li style="font-weight: 400;" aria-level="1"><span style="font-weight: 400;">Diretivas <em>using &#8211;</em> diretivas que são utilizadas para indicar quais <em>namespaces</em> incluir em um arquivo de código-fonte</span></li>
<li style="font-weight: 400;" aria-level="1"><span style="font-weight: 400;">um cabeçalho de função que consiste em um tipo de retorno, nome de função e parâmetros</span></li>
<li style="font-weight: 400;" aria-level="1"><span style="font-weight: 400;">um corpo de função contendo o código que executa as ações exigidas dessa função</span></li>
<li style="font-weight: 400;" aria-level="1"><span style="font-weight: 400;">declarações que estão contidas no arquivo de código-fonte C ++</span></li>
<li style="font-weight: 400;" aria-level="1"><span style="font-weight: 400;">comentários para documentar o código-fonte para que os programadores entendam o que o código pretende fazer</span></li>
<li style="font-weight: 400;" aria-level="1"><span style="font-weight: 400;">uma instrução de retorno que envia dados de volta ao chamador da função</span></li>
<li style="font-weight: 400;" aria-level="1"><span style="font-weight: 400;">chaves para incluir o corpo das declarações. Normalmente usados para denotar o corpo de uma função ou uma instrução de controle de fluxo, como um loop for</span></li>
</ul>
<p><span style="font-weight: 400;">O código-fonte C ++ também permite o uso criterioso de espaços em branco (tabulações, espaços, novas linhas) para criar um código mais fácil de ler. O compilador ignora completamente o espaço em branco, com uma pequena exceção em relação às instruções if que vamos abordar posteriormente. É altamente recomendável usar o espaço em branco para identar e separar as linhas de código para ajudar na legibilidade dos arquivos de código-fonte.</span></p>
<p><span style="font-weight: 400;">Um programa em C++ é composto de vários componentes, como funções, métodos, classes, etc. As instruções que fazem parte de um programa C++ normalmente residem dentro de funções ou métodos. Essas funções são compostas de instruções C++. Você se verá usando vários tipos de instruções em seu código C++, conforme listadas a seguir:</span></p>
<ul>
<li style="font-weight: 400;" aria-level="1"><span style="font-weight: 400;">declarações &#8211; são usadas para declarar variáveis e constantes que serão usadas no programa</span></li>
<li style="font-weight: 400;" aria-level="1"><span style="font-weight: 400;">atribuições &#8211; são usadas para atribuir valores a variáveis em seu código de aplicativo</span></li>
<li style="font-weight: 400;" aria-level="1"><span style="font-weight: 400;">diretivas de pré-processador &#8211; abordadas no tópico sobre formatação de código</span></li>
<li style="font-weight: 400;" aria-level="1"><span style="font-weight: 400;">comentários &#8211; usados para documentar seu código</span></li>
<li style="font-weight: 400;" aria-level="1"><span style="font-weight: 400;">declarações de função &#8211; abordado no tópico sobre formatação de código</span></li>
<li style="font-weight: 400;" aria-level="1"><span style="font-weight: 400;">instruções executáveis &#8211; são usadas para realizar operações e executar instruções. Um exemplo seria&nbsp;<strong>cout &lt;&lt; &#8220;Olá Bóson!&#8221;</strong>; que produz a frase <em>Olá Bóson!</em> na saída do console.</span></li>
</ul>
<p><span style="font-weight: 400;">Vamos usar esses tipos de instrução durante todo nosso curso de C++.</span></p>
<h3><span style="font-weight: 400;">Estrutura de um programa em C++</span></h3>
<p><span style="font-weight: 400;">Um programa C++ tem uma estrutura muito específica em termos de como o código é escrito e alguns elementos-chave que usamos nos programas em C++.&nbsp;</span></p>
<p><span style="font-weight: 400;">Os programas em C++ consistem de partes modulares chamadas de </span><b><i>classes</i></b><span style="font-weight: 400;"> e </span><b><i>funções</i></b><span style="font-weight: 400;">. Podemos criar nossas próprias classes e funções, quando necessário, e também fazemos uso extensivo de uma rica coleção de classes e funções existente, chamada de </span><b>Biblioteca Padrão do C++</b><span style="font-weight: 400;">.</span></p>
<p><span style="font-weight: 400;">Desta forma, aprender a programar em C++ consiste em aprender duas partes coligadas: a linguagem em si, com suas estruturas e sintaxe, e aprender a usar o conteúdo da <a href="https://en.cppreference.com/w/" target="_blank" rel="noopener">biblioteca padrão C++</a>.</span></p>
<p><span style="font-weight: 400;">O código-fonte de um programa extremamente simples em C++ é mostrado a seguir.</span></p>
<pre><span style="font-weight: 400;">1 #include &lt;iostream&gt;
</span><span style="font-weight: 400;">2 <span style="color: #339966;">// Função principal que inicia a execução do programa</span>
</span><span style="font-weight: 400;">3 int main()
</span><span style="font-weight: 400;">4 {
</span><span style="font-weight: 400;">5  &nbsp; std::cout &lt;&lt; "Ola Boson!\n";
</span><span style="font-weight: 400;">6  &nbsp; return 0;
</span><span style="font-weight: 400;">7 }</span></pre>
<p><span style="font-weight: 400;">Neste programa simples, notamos alguns elementos importantes. Os números das linhas são usados apenas para referência e não fazem parte do código do programa.</span></p>
<p><span style="font-weight: 400;">Vejamos o que faz cada linha.</span></p>
<p><span style="font-weight: 400;"><strong>Linha 1</strong>: Iniciada com o caractere <strong>#</strong>, é uma diretiva de pré-processador. Processada antes do programa ser efetivamente compilado. No exemplo, ela instrui o compilador a localizar e</span><i><span style="font-weight: 400;"> incluir </span></i><span style="font-weight: 400;">o arquivo que contém o código de uma biblioteca conhecida como <em><strong>iostream</strong></em>. Esta biblioteca contém código que permite a entrada e saída para fluxos de dados, como a janela do console.</span></p>
<p><span style="font-weight: 400;"><strong>Linha 2</strong>: Linha de comentário. Toda linha iniciada com os caracteres <strong>//</strong> é uma linha destinada a comentários, usados para documentar os programas e ajudar outros programadores a entendê-los. Os comentários são ignorados quando o programa é compilado ou executado.</span></p>
<pre><span style="color: #339966;">// Esta linha é um comentário!</span></pre>
<p><span style="font-weight: 400;">Também temos comentários de múltiplas linhas, ou de bloco, que iniciam com os caracteres /* e finalizam com */.</span></p>
<pre><span style="color: #339966;">/*</span>
<span style="color: #339966;">Este bloco de texto inteiro</span>
<span style="color: #339966;">é um bloco de comentários, que ocupa várias linhas</span>
<span style="color: #339966;">*/</span></pre>
<p><span style="font-weight: 400;"><strong>Linha 3</strong>: Todo programa escrito em C++ deve ter uma função principal chamada de <strong>main()</strong>. É o ponto de entrada da aplicação quando iniciamos a execução do programa no computador, mesmo que não seja a primeira função presente no código. A palavra <strong>int</strong> indica o tipo de retorno do método u função &#8211; no caso, um número inteiro.</span></p>
<p><span style="font-weight: 400;">Os parênteses vazios () após o nome do método indicam que esta é uma função e que não leva argumentos, ou seja, não há parâmetros para a passagem de valores.</span></p>
<p><span style="font-weight: 400;">Os programas em C++ são constituídos de diversas funções e classes, e uma delas é sempre a função main.</span></p>
<p><span style="font-weight: 400;"><strong>Linha 4</strong>: Os corpos dos métodos e funções em C++ começam com a abertura de um par de chaves <strong>{</strong>. Ao finalizar o código do método ou função, a chave é fechada <strong>}</strong>.</span></p>
<p><span style="font-weight: 400;"><strong>Linha 5</strong>: Este código usa um método conhecido como <strong>cout</strong> (pronuncia-se &#8220;sí áut&#8221;) para enviar o texto <em>Ola Boson!</em> para o console de saída e exibição na tela. O prefixo <strong>std::</strong> para este comando é uma forma de indicar que cout faz parte de um namespace conhecido como <strong>std</strong>.</span></p>
<p><span style="font-weight: 400;">Outras funções pertencentes ao namespace std incluem <strong>cerr</strong> e <strong>cin</strong>, que estudaremos posteriormente.</span></p>
<p><span style="font-weight: 400;">Assim, o símbolo :: é usado para indicar que cout faz parte do namespace <em><strong>std</strong></em>. Nem sempre usaremos essa notação &#8211; veremos como empregar as diretivas using para declarar os namespaces empregados em um programa em breve.</span></p>
<p><span style="font-weight: 400;">Note também que essa linha termina com um ponto e vírgula, e a linha toda constitui uma </span><b>declaração</b><span style="font-weight: 400;"> em C++. Assim, as declarações em C++ são terminadas com ponto e vírgula, conhecido como &#8220;terminador de declarações&#8221;.</span></p>
<p><span style="font-weight: 400;">Erro comum em programação: Esquecer de inserir os ponto-e-vírgula no final de uma declaração é um erro extremamente comum em programação, não apenas em linguagem C++, mas em várias outras linguagens que utilizam essa sintaxe, como C e Java.</span></p>
<p><span style="font-weight: 400;">O símbolo <strong>&lt;&lt;</strong> é o <em>operador de inserção (de fluxo)</em>. Ao executar um programa, o valor que está à direita desse operador (operando direito) é inserido ou enviado ao elemento que está à esquerda do operador &#8211; no caso, a frase &#8220;<em>Ola Boson!</em>&#8221; é enviada para cout. O operador aponta na direção para onde vão os dados.</span></p>
<p><span style="font-weight: 400;"><strong>\n</strong> é uma sequência de escape &#8211; um caractere especial, que não é especificamente impresso na tela, mas produz algum efeito, como por exemplo mudar o cursor para o início da próxima linha (que é o caso). Outras sequências de escape existem, e as veremos em breve.</span></p>
<p><span style="font-weight: 400;"><strong>Linha 6</strong>: A instrução <strong>return</strong> é usada para encerrar ou sair de uma função ou método, e se espera que um valor seja enviado de volta a um processo chamador (que “chama” a instrução). Nesse caso, o chamador é o sistema operacional e o valor retornado é um valor inteiro 0. Se o programa chegar a essa instrução sem apresentar erros, o retorno de um valor 0 indica ao sistema operacional que o código foi executado com êxito.</span></p>
<p><span style="font-weight: 400;">Antigamente, os programadores retornavam 0 para indicar uma execução bem-sucedida e valores diferentes de zero para indicar que ocorreu um erro em algum lugar do programa.</span></p>
<p><span style="font-weight: 400;"><strong>Linha 7</strong>: Esta linha fecha o corpo da função main() (fechando a chave aberta no início) e é necessária para que o compilador saiba onde a função ou método termina, mas também é usada para outros propósitos que serão cobertos posteriormente no curso, como escopo e visibilidade de variáveis.</span></p>
<p><span style="font-weight: 400;">É isso aí! Neste tutorial apresentamos o que é o C++&nbsp; e os principais elementos da linguagem, com um exemplo bem simples de código, explicando linha por linha as declarações.</span></p>
<p><span style="font-weight: 400;">Na próxima lição vamos abordar mais algumas características importantes da linguagem C++, tais como a Portabilidade e o processo de Compilação de Código.</span></p>
<p>&nbsp;</p>
<p>O post <a href="https://www.bosontreinamentos.com.br/programacao-em-c/introducao-a-linguagem-de-programacao-c/">Introdução à Linguagem de Programação C++</a> apareceu primeiro em <a href="https://www.bosontreinamentos.com.br">Bóson Treinamentos em Ciência e Tecnologia</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.bosontreinamentos.com.br/programacao-em-c/introducao-a-linguagem-de-programacao-c/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
