<?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 Estruturas de Dados - Bóson Treinamentos em Ciência e Tecnologia</title>
	<atom:link href="https://www.bosontreinamentos.com.br/tag/estruturas-de-dados/feed/" rel="self" type="application/rss+xml" />
	<link>https://www.bosontreinamentos.com.br/tag/estruturas-de-dados/</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>Tue, 11 Apr 2023 13:25:15 +0000</lastBuildDate>
	<language>pt-BR</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=7.1</generator>
	<item>
		<title>Como implementar uma pilha em linguagem C usando array</title>
		<link>https://www.bosontreinamentos.com.br/programacao-em-linguagem-c/como-implementar-uma-pilha-em-linguagem-c-usando-array/</link>
					<comments>https://www.bosontreinamentos.com.br/programacao-em-linguagem-c/como-implementar-uma-pilha-em-linguagem-c-usando-array/?noamp=mobile#respond</comments>
		
		<dc:creator><![CDATA[Fábio dos Reis]]></dc:creator>
		<pubDate>Tue, 11 Apr 2023 13:25:15 +0000</pubDate>
				<category><![CDATA[Programação em Linguagem C]]></category>
		<category><![CDATA[Estruturas de Dados]]></category>
		<category><![CDATA[Linguagem C]]></category>
		<category><![CDATA[Programação]]></category>
		<guid isPermaLink="false">http://www.bosontreinamentos.com.br/?p=12836</guid>

					<description><![CDATA[<p>Como implementar uma pilha em linguagem C usando array Pilha é uma estrutura de dados do tipo LIFO (Last In, First Out), muito importante e empregada na criação de algoritmos diversos, que funciona como uma coleção de elementos, permitindo acesso a somente um item de dados armazenado por vez &#8211; o último item inserido na estrutura (chamado de item do topo). Esse item pode ser lido (acessado) ou removido da pilha. É possível implementar pilhas de algumas formas, como por meio de arrays ou com o uso de ADTs (Abstract Data Types / Tipos de Dados Abstratos). Neste tutorial mostro como implementar uma pilha em C usando especificamente um array. Para a implementação desta aplicação, faremos uso de várias estruturas importantes da linguagem C, incluindo cabeçalhos especiais, structs, ponteiros e, claro, arrays. Uma pilha de livros. O último livro a ser colocado na pilha fica no topo, e é o primeiro a ser removido. Vamos ao código da implementação. Código: Pilha em C com Array A seguir temos um exemplo de código que implementa uma pilha em linguagem C usando um array: #include &#60;stdio.h&#62; #include &#60;stdlib.h&#62; // Definir o tamanho máximo da pilha #define TAM_MAX 100 // Definir a estrutura da pilha [...]</p>
<p>O post <a href="https://www.bosontreinamentos.com.br/programacao-em-linguagem-c/como-implementar-uma-pilha-em-linguagem-c-usando-array/">Como implementar uma pilha em linguagem C usando array</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>Como implementar uma pilha em linguagem C usando array</h2>
<p><a href="http://www.bosontreinamentos.com.br/estruturas-de-dados/estruturas-de-dados-pilhas/">Pilha</a> é uma <a href="http://www.bosontreinamentos.com.br/estruturas-de-dados/estruturas-de-dados/">estrutura de dados</a> do tipo LIFO (Last In, First Out), muito importante e empregada na criação de algoritmos diversos, que funciona como uma coleção de elementos, permitindo acesso a somente um item de dados armazenado por vez &#8211; o último item inserido na estrutura (chamado de item do <strong><em>topo</em></strong>).</p>
<p>Esse item pode ser lido (acessado) ou removido da pilha.</p>
<p>É possível implementar pilhas de algumas formas, como por meio de arrays ou com o uso de ADTs (<em>Abstract Data Types</em> / Tipos de Dados Abstratos). Neste tutorial mostro como implementar uma pilha em C usando especificamente um array.</p>
<p>Para a implementação desta aplicação, faremos uso de várias estruturas importantes da linguagem C, incluindo cabeçalhos especiais, <a href="http://www.bosontreinamentos.com.br/programacao-em-linguagem-c/estruturas-em-linguagem-c/">structs,</a> <a href="http://www.bosontreinamentos.com.br/programacao-em-linguagem-c/ponteiros-em-c-uma-introducao/">ponteiros</a> e, claro, <a href="http://www.bosontreinamentos.com.br/programacao-em-linguagem-c/arrays-em-c-declaracao-inicializacao-e-atribuicao-de-valores/">arrays</a>.</p>
<div id="attachment_19212-2" style="width: 509px" class="wp-caption aligncenter"><img decoding="async" aria-describedby="caption-attachment-19212-2" class="wp-image-19212" title="Uma pilha de livros." src="http://www.bosontreinamentos.com.br/wp-content/uploads/2023/04/pilha-livros-linguagem-C.jpg" alt="Uma pilha de livros." width="499" height="368" srcset="https://www.bosontreinamentos.com.br/wp-content/uploads/2023/04/pilha-livros-linguagem-C.jpg 996w, https://www.bosontreinamentos.com.br/wp-content/uploads/2023/04/pilha-livros-linguagem-C-420x310.jpg 420w, https://www.bosontreinamentos.com.br/wp-content/uploads/2023/04/pilha-livros-linguagem-C-768x566.jpg 768w" sizes="(max-width: 499px) 100vw, 499px" /><p id="caption-attachment-19212-2" class="wp-caption-text">Uma pilha de livros. O último livro a ser colocado na pilha fica no topo, e é o primeiro a ser removido.</p></div>
<p>Vamos ao código da implementação.</p>
<h3>Código: Pilha em C com Array</h3>
<p>A seguir temos um exemplo de código que implementa uma pilha em linguagem C usando um array:</p>
<pre><strong>#include &lt;stdio.h&gt;</strong>
<strong>#include &lt;stdlib.h&gt;

</strong><span style="color: #339966;"><strong>// Definir o tamanho máximo da pilha</strong></span>
<strong>#define TAM_MAX 100

</strong><span style="color: #339966;"><strong>// Definir a estrutura da pilha</strong></span>
<strong>struct pilha {</strong>
<strong>    int topo; <span style="color: #339966;">// índice do topo da pilha</span></strong>
<strong>    int items[TAM_MAX]; <span style="color: #339966;">// array para armazenar os itens da pilha</span></strong>
<strong>};

</strong><span style="color: #339966;"><strong>// Função que cria uma pilha vazia</strong></span>
<strong>struct pilha* criar_pilha() {</strong>
<strong>    struct pilha* nova_pilha = (struct pilha*) malloc(sizeof(struct pilha));</strong>
<strong>    nova_pilha-&gt;topo = -1;</strong>
<strong>    return nova_pilha;</strong>
<strong>}

</strong><span style="color: #339966;"><strong>// Função para verificar se a pilha está vazia</strong></span>
<strong>int is_empty(struct pilha* pilha) {</strong>
<strong>    return pilha-&gt;topo == -1;</strong>
<strong>}

</strong><span style="color: #339966;"><strong>// Função que verifica se a pilha está cheia</strong></span>
<strong>int is_full(struct pilha* pilha) {</strong>
<strong>    return pilha-&gt;topo == TAM_MAX - 1;</strong>
<strong>}

</strong><span style="color: #339966;"><strong>// Função para adicionar um item ao topo da pilha</strong></span>
<strong>void push(struct pilha* pilha, int item) {</strong>
<strong>    if (is_full(pilha)) {</strong>
<strong>        printf("Erro: a pilha está cheia.\n");</strong>
<strong>    }</strong>
<strong>    else {</strong>
<strong>        pilha-&gt;topo++;</strong>
<strong>        pilha-&gt;items[pilha-&gt;topo] = item;</strong>
<strong>    }</strong>
<strong>}

</strong><span style="color: #339966;"><strong>// Função para remover o item do topo da pilha</strong></span>
<strong>int pop(struct pilha* pilha) {</strong>
<strong>    if (is_empty(pilha)) {</strong>
<strong>        printf("Erro: a pilha está vazia.\n");</strong>
<strong>        return -1;</strong>
<strong>    }</strong>
<strong>    else {</strong>
<strong>        int item_removido = pilha-&gt;items[pilha-&gt;topo];</strong>
<strong>        pilha-&gt;topo--;</strong>
<strong>        return item_removido;</strong>
<strong>    }</strong>
<strong>}

</strong><span style="color: #339966;"><strong>// Função para retornar o item do topo da pilha sem removê-lo</strong></span>
<strong>int peek(struct pilha* pilha) {</strong>
<strong>    if (is_empty(pilha)) {</strong>
<strong>        printf("Erro: a pilha está vazia.\n");</strong>
<strong>        return -1;</strong>
<strong>    }</strong>
<strong>    else {</strong>
<strong>        return pilha-&gt;items[pilha-&gt;topo];</strong>
<strong>    }</strong>
<strong>}

</strong><strong>int main()</strong>
<strong>{</strong>
<strong>    struct pilha* minha_pilha = criar_pilha();

</strong><span style="color: #339966;"><strong>    // Adicionar alguns itens à pilha</strong></span>
<strong>    push(minha_pilha, 10);</strong>
<strong>    push(minha_pilha, 20);</strong>
<strong>    push(minha_pilha, 30);</strong>
<strong>    push(minha_pilha, 40);

</strong><span style="color: #339966;"><strong>    // Mostrar o item atual do topo da pilha</strong></span>
<strong>    printf("Item atual do topo: %d\n", peek(minha_pilha));

</strong><span style="color: #339966;"><strong>    // Remover e imprimir o item do topo da pilha</strong></span>
<strong>    printf("Item removido: %d\n", pop(minha_pilha));

</strong><span style="color: #339966;"><strong>    // Mostrar o novo item atual do topo da pilha</strong></span>
<strong>    printf("Item atual do topo: %d\n", peek(minha_pilha));

</strong><strong>    return 0;</strong>
<strong>}</strong></pre>
<h4>Funcionamento</h4>
<p>A estrutura de dados utilizada na implementação é definida através da estrutura pilha, que contém um inteiro topo que armazena o índice do elemento que está no topo da pilha e um array de nome <strong>items</strong> que armazena os elementos da pilha. A pilha tem um tamanho máximo definido pela constante <strong>TAM_MAX</strong>.</p>
<p>O código contém várias funções que operam na pilha. A função<em> criar_pilha()</em> aloca a memória necessária para a pilha e inicializa o topo da pilha com o valor -1. A função <em>is_empty()</em> verifica se a pilha está vazia, ou seja, se o topo da pilha é igual a -1.</p>
<p>A função <em>is_full()</em> verifica se a pilha está cheia, ou seja, se o topo da pilha é igual a TAM_MAX &#8211; 1. A função <em>push()</em> adiciona um elemento ao topo da pilha, verificando se a pilha está cheia antes de adicionar o elemento. A função <em>pop()</em> remove o elemento do topo da pilha, verificando se a pilha está vazia antes de remover o elemento.</p>
<p>A função <em>peek()</em> retorna o elemento atual do topo da pilha, mas sem removê-lo.</p>
<p>O programa principal começa alocando espaço para uma nova pilha chamada <strong>minha_pilha</strong>, utilizando a função criar_pilha(). Em seguida, o programa adiciona alguns elementos à pilha utilizando a função push().</p>
<p>Depois, o programa mostra o elemento atual do topo da pilha utilizando a função peek(). Então, o programa remove e imprime o elemento do topo da pilha utilizando a função pop().</p>
<p>Por fim, o programa mostra o novo elemento atual do topo da pilha utilizando a função peek().</p>
<p>Ao finalizar, o programa retorna o valor 0 para indicar que a execução foi concluída com sucesso.</p>
<p>Note que, para fins de simplicidade, neste exemplo eu usei um tamanho máximo fixo para a pilha (TAM_MAX), mas isso pode ser modificado para permitir pilhas de tamanho variável.</p>
<h3>Conclusão</h3>
<p>Neste artigo vimos como realizar uma implementação básica de pilha em linguagem C usando arrays. Nos próximos artigos estudaremos a implementação de outras estruturas de dados em C, empregando técnicas variadas, inclusive reaproveitando estruturas já criadas anteriormente &#8211; como as pilhas.</p>
<p>&nbsp;</p>
<p>O post <a href="https://www.bosontreinamentos.com.br/programacao-em-linguagem-c/como-implementar-uma-pilha-em-linguagem-c-usando-array/">Como implementar uma pilha em linguagem C usando array</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-linguagem-c/como-implementar-uma-pilha-em-linguagem-c-usando-array/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Como implementar uma pilha em Java usando Arrays</title>
		<link>https://www.bosontreinamentos.com.br/estruturas-de-dados/como-implementar-uma-pilha-em-java-usando-arrays/</link>
					<comments>https://www.bosontreinamentos.com.br/estruturas-de-dados/como-implementar-uma-pilha-em-java-usando-arrays/?noamp=mobile#comments</comments>
		
		<dc:creator><![CDATA[Fábio dos Reis]]></dc:creator>
		<pubDate>Mon, 30 Jul 2018 13:57:41 +0000</pubDate>
				<category><![CDATA[Estruturas de Dados]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[Programação]]></category>
		<guid isPermaLink="false">http://www.bosontreinamentos.com.br/?p=12834</guid>

					<description><![CDATA[<p>Como implementar&#160;uma pilha em Java usando um array Anteriormente nós estudamos o funcionamento e aplicações das pilhas em estruturas de dados. Vamos ver agora como implementar uma estrutura de pilha na linguagem Java, usando um array como base. Lembrando que também é possível implementar pilhas usando listas ligadas, assunto que abordaremos mais à frente em nosso curso de Estruturas de Dados. Criando a Pilha Primeiramente criaremos uma classe de nome Pilha para representar as pilhas no programa principal: /* Implementando operações com pilhas em Java Criando a Classe Pilha Implementamos as funções isEmpty, peek, push e pop */ public class Pilha { static final int MAX = 1000; int top; int a[] = new int[MAX]; // Define tamanho máximo da pilha // Construtor Pilha() { top = -1; } // Métodos da pilha boolean isEmpty() { return (top &#60; 0); } boolean push(int x) { if (top &#62;= (MAX-1)) { System.out.println("Estouro de Pilha!"); return false; } else { a[++top] = x; return true; } } int pop() { if (top &#60; 0) { System.out.println("Pilha Vazia!"); return 0; } else { int x = a[top--]; return x; } } int peek() { if (top &#60; 0) { System.out.println("Pilha Vazia!"); return 0; [...]</p>
<p>O post <a href="https://www.bosontreinamentos.com.br/estruturas-de-dados/como-implementar-uma-pilha-em-java-usando-arrays/">Como implementar uma pilha em Java usando Arrays</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>Como implementar&nbsp;uma pilha em Java usando um array</h2>
<p>Anteriormente nós estudamos o funcionamento e aplicações das <a href="http://www.bosontreinamentos.com.br/estruturas-de-dados/estruturas-de-dados-pilhas/" target="_blank" rel="noopener">pilhas em estruturas de dados</a>. Vamos ver agora como implementar uma estrutura de pilha na linguagem Java, usando um <a href="http://www.bosontreinamentos.com.br/java/como-usar-arrays-em-java/" target="_blank" rel="noopener">array</a> como base.</p>
<p>Lembrando que também é possível implementar pilhas usando listas ligadas, assunto que abordaremos mais à frente em nosso curso de Estruturas de Dados.</p>
<h3>Criando a Pilha</h3>
<p>Primeiramente criaremos uma classe de nome <strong>Pilha</strong> para representar as pilhas no programa principal:</p>
<pre><span style="color: #339966;"><strong>/*</strong></span>
<span style="color: #339966;"><strong>Implementando operações com pilhas em Java</strong></span>
<span style="color: #339966;"><strong>Criando a Classe Pilha</strong></span>
<span style="color: #339966;"><strong>Implementamos as funções isEmpty, peek, push e pop</strong></span>
<span style="color: #339966;"><strong>*/</strong></span>
<span style="color: #ff0000;"><strong>public class Pilha </strong></span><span style="color: #ff0000;"><strong>{</strong></span>
<span style="color: #ff0000;"><strong>   static final int MAX = 1000;</strong></span>
<span style="color: #ff0000;"><strong>   int top;</strong></span>
<span style="color: #ff0000;"><strong>   int a[] = new int[MAX]; <span style="color: #339966;">// Define tamanho máximo da pilha</span></strong></span>   
<span style="color: #ff0000;"><strong>
   <span style="color: #339966;">// Construtor</span>
   Pilha() </strong></span><span style="color: #ff0000;"><strong>{</strong></span>
<span style="color: #ff0000;"><strong>      top = -1;</strong></span>
<span style="color: #ff0000;"><strong>   }

</strong></span><span style="color: #339966;"><strong>   // Métodos da pilha
<span style="color: #ff0000;">   boolean isEmpty() </span><span style="color: #ff0000;">{
</span>    <span style="color: #ff0000;"> return (top &lt; 0);
</span><span style="color: #ff0000;">   }</span></strong></span>
<span style="color: #ff0000;"><strong>   boolean push(int x) </strong></span><span style="color: #ff0000;"><strong>{</strong></span>
<span style="color: #ff0000;"><strong>      if (top &gt;= (MAX-1)) </strong></span><span style="color: #ff0000;"><strong>{</strong></span>
<span style="color: #ff0000;"><strong>         System.out.println("Estouro de Pilha!");</strong></span>
<span style="color: #ff0000;"><strong>         return false;</strong></span>
<span style="color: #ff0000;"><strong>      }</strong></span>
<span style="color: #ff0000;"><strong>      else </strong></span><span style="color: #ff0000;"><strong>{</strong></span>
<span style="color: #ff0000;"><strong>         a[++top] = x;</strong></span>
<span style="color: #ff0000;"><strong>         return true;</strong></span>
<span style="color: #ff0000;"><strong>      }</strong></span>
<span style="color: #ff0000;"><strong>   }</strong></span>
<span style="color: #ff0000;"><strong>   int pop() </strong></span><span style="color: #ff0000;"><strong>{</strong></span>
<span style="color: #ff0000;"><strong>      if (top &lt; 0) </strong></span><span style="color: #ff0000;"><strong>{</strong></span>
<span style="color: #ff0000;"><strong>         System.out.println("Pilha Vazia!");</strong></span>
<span style="color: #ff0000;"><strong>         return 0;</strong></span>
<span style="color: #ff0000;"><strong>      }</strong></span>
<span style="color: #ff0000;"><strong>      else </strong></span><span style="color: #ff0000;"><strong>{</strong></span>
<span style="color: #ff0000;"><strong>         int x = a[top--];</strong></span>
<span style="color: #ff0000;"><strong>         return x;</strong></span>
<span style="color: #ff0000;"><strong>      }</strong></span>
<span style="color: #ff0000;"><strong>   }
   int peek() {
      if (top &lt; 0) {
         System.out.println("Pilha Vazia!");
         return 0;
      }
      else {
         return a[top];
      }
   }</strong></span>
<span style="color: #ff0000;"><strong>}</strong></span></pre>
<h3>Usando a pilha</h3>
<p>Para usar a nossa classe Pilha vamos instanciá-la no programa principal e realizar algumas operações push e pop para inserir e retirar itens na pilha:</p>
<pre><span style="color: #339966;"><strong>// Código do main</strong></span>
<span style="color: #ff0000;"><strong>import java.util.Scanner;
public class PilhaJava </strong></span><span style="color: #ff0000;"><strong>{</strong></span>
<span style="color: #ff0000;"><strong>
   public static void main(String args[]) </strong></span><span style="color: #ff0000;"><strong>{
      Scanner entrada = new Scanner(System.in);
      System.out.println("Entre com um número:");
      int valor = entrada.nextInt();
</strong></span>
<span style="color: #ff0000;"><strong>      Pilha novaPilha = new Pilha();
</strong></span>
<span style="color: #ff0000;"><strong>      novaPilha.push(valor);</strong></span>
<span style="color: #ff0000;"><strong>      novaPilha.push(70);</strong></span>
<span style="color: #ff0000;"><strong>      novaPilha.push(88);</strong></span>
<span style="color: #ff0000;"><strong>      System.out.println("Item de valor " + novaPilha.pop() + " retirado da pilha");
      System.out.println("Item restante: " + novaPilha.peek());
      System.out.println("Item de valor " + novaPilha.pop() + " retirado da pilha");
      System.out.println("Item restante: " + novaPilha.peek()); </strong></span>
<span style="color: #ff0000;"><strong>   }</strong></span>
<span style="color: #ff0000;"><strong>}</strong></span></pre>
<p>Resultado:</p>
<p><img loading="lazy" decoding="async" class="aligncenter wp-image-15089 size-full" title="Implementar pilha em java com array" src="http://www.bosontreinamentos.com.br/wp-content/uploads/2018/07/pilha-java-array.jpg" alt="Implementar pilha em java com array" width="542" height="207" srcset="https://www.bosontreinamentos.com.br/wp-content/uploads/2018/07/pilha-java-array.jpg 542w, https://www.bosontreinamentos.com.br/wp-content/uploads/2018/07/pilha-java-array-420x160.jpg 420w" sizes="auto, (max-width: 542px) 100vw, 542px" /></p>
<p>É isso aí! No próximo tutorial veremos como criar e utilizar pilhas em linguagem C.</p>
<p>Até lá!</p>
<p>&nbsp;</p>
<p>O post <a href="https://www.bosontreinamentos.com.br/estruturas-de-dados/como-implementar-uma-pilha-em-java-usando-arrays/">Como implementar uma pilha em Java usando Arrays</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/estruturas-de-dados/como-implementar-uma-pilha-em-java-usando-arrays/feed/</wfw:commentRss>
			<slash:comments>2</slash:comments>
		
		
			</item>
		<item>
		<title>Lógica de Programação &#8211; Exercícios resolvidos de Vetores</title>
		<link>https://www.bosontreinamentos.com.br/logica-de-programacao/logica-de-programacao-exercicios-resolvidos-de-vetores/</link>
					<comments>https://www.bosontreinamentos.com.br/logica-de-programacao/logica-de-programacao-exercicios-resolvidos-de-vetores/?noamp=mobile#comments</comments>
		
		<dc:creator><![CDATA[Fábio dos Reis]]></dc:creator>
		<pubDate>Fri, 20 Jul 2018 18:47:36 +0000</pubDate>
				<category><![CDATA[Lógica de Programação]]></category>
		<category><![CDATA[Estruturas de Dados]]></category>
		<guid isPermaLink="false">http://www.bosontreinamentos.com.br/?p=12825</guid>

					<description><![CDATA[<p>Lógica de Programação &#8211; Exercícios resolvidos de vetores no VisualG Neste artigo trazemos alguns exercícios resolvidos de vetores (arrays unidimensionais) para estudo em lógica de programação, com as resoluções em português estruturado, e que podem ser rodados e testados no VisualG. Exercícios 1. Escreva um algoritmo que solicite ao usuário a entrada de 5 números, e que exiba o somatório desses números na tela. Após exibir a soma, o programa deve mostrar também os números que o usuário digitou, um por linha. Var numeros : vetor [0..4] de inteiro cont, soma : inteiro Inicio para cont de 0 ate 4 faca escreval("Entre com um número:") leia(numeros[cont]) soma &#60;- soma + numeros[cont]) fimpara escreval("A soma dos números é", soma) escreval() escreval("Os números digitados foram:") para cont de 0 ate 4 faca escreval(numeros[cont]) fimpara Fimalgoritmo 2. Escreva um algoritmo que solicite ao usuário a entrada de 5 nomes, e que exiba a lista desses nomes na tela. Após exibir essa lista, o programa deve mostrar também os nomes na ordem inversa em que o usuário os digitou, um por linha. Var nomes : vetor [0..4] de caractere cont : inteiro Inicio para cont de 0 ate 4 faca escreval("Entre com um nome:") [...]</p>
<p>O post <a href="https://www.bosontreinamentos.com.br/logica-de-programacao/logica-de-programacao-exercicios-resolvidos-de-vetores/">Lógica de Programação &#8211; Exercícios resolvidos de Vetores</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>Lógica de Programação &#8211; Exercícios resolvidos de vetores no VisualG</h2>
<p>Neste artigo trazemos alguns exercícios resolvidos de vetores (arrays unidimensionais) para estudo em lógica de programação, com as resoluções em português estruturado, e que podem ser rodados e testados no VisualG.</p>
<h3>Exercícios</h3>
<p>1. Escreva um algoritmo que solicite ao usuário a entrada de 5 números, e que exiba o somatório desses números na tela.<br />
Após exibir a soma, o programa deve mostrar também os números que o usuário digitou, um por linha.</p>
<pre><span style="color: #ff0000;"><strong>Var</strong></span>
<span style="color: #ff0000;"><strong>numeros : vetor [0..4] de inteiro</strong></span>
<span style="color: #ff0000;"><strong>cont, soma : inteiro
</strong></span>
<span style="color: #ff0000;"><strong>Inicio</strong></span>
<span style="color: #ff0000;"><strong>para cont de 0 ate 4 faca</strong></span>
<span style="color: #ff0000;"><strong>   escreval("Entre com um número:")</strong></span>
<span style="color: #ff0000;"><strong>   leia(numeros[cont])</strong></span>
<span style="color: #ff0000;"><strong>   soma &lt;- soma + numeros[cont])</strong></span>
<span style="color: #ff0000;"><strong>fimpara</strong></span>
<span style="color: #ff0000;"><strong>
escreval("A soma dos números é", soma)</strong></span>
<span style="color: #ff0000;"><strong>escreval()</strong></span>
<span style="color: #ff0000;"><strong>
escreval("Os números digitados foram:")</strong></span>
<span style="color: #ff0000;"><strong>para cont de 0 ate 4 faca</strong></span>
<span style="color: #ff0000;"><strong>   escreval(numeros[cont])</strong></span>
<span style="color: #ff0000;"><strong>fimpara</strong></span>
<span style="color: #ff0000;"><strong>Fimalgoritmo</strong></span></pre>
<p>2. Escreva um algoritmo que solicite ao usuário a entrada de 5 nomes, e que exiba a lista desses nomes na tela.<br />
Após exibir essa lista, o programa deve mostrar também os nomes na ordem inversa em que o usuário os digitou, um por linha.</p>
<pre><span style="color: #ff0000;"><strong>Var</strong></span>
<span style="color: #ff0000;"><strong>nomes : vetor [0..4] de caractere</strong></span>
<span style="color: #ff0000;"><strong>cont : inteiro
</strong></span>
<span style="color: #ff0000;"><strong>Inicio</strong></span>
<span style="color: #ff0000;"><strong>para cont de 0 ate 4 faca</strong></span>
<span style="color: #ff0000;"><strong>   escreval("Entre com um nome:")</strong></span>
<span style="color: #ff0000;"><strong>   leia(nomes[cont])</strong></span>
<span style="color: #ff0000;"><strong>fimpara</strong></span>
<span style="color: #ff0000;"><strong>
escreval()</strong></span>
<span style="color: #ff0000;"><strong>escreval("Os nomes digitados foram:")</strong></span>
<span style="color: #ff0000;"><strong>
para cont de 0 ate 4 faca</strong></span>
<span style="color: #ff0000;"><strong>   escreval(nomes[cont])</strong></span>
<span style="color: #ff0000;"><strong>fimpara</strong></span>
<span style="color: #ff0000;"><strong>escreval()</strong></span>
<span style="color: #ff0000;"><strong>
escreval("Os nomes digitados em ordem inversa foram:")</strong></span>
<span style="color: #ff0000;"><strong>para cont de 4 ate 0 passo - 1 faca</strong></span>
<span style="color: #ff0000;"><strong>   escreval(nomes[cont])</strong></span>
<span style="color: #ff0000;"><strong>fimpara</strong></span>
<span style="color: #ff0000;"><strong>Fimalgoritmo</strong></span></pre>
<p>3. Crie um programa que solicite a entrada de 10 números pelo usuário, armazenando-os em um vetor, e então monte outro vetor com os valores do primeiro multiplicados por 5. <br />
Exiba os valores dos dois vetores na tela, simultaneamente, em duas colunas (um em cada coluna), uma posição por linha.</p>
<pre><span style="color: #ff0000;"><strong>Var</strong></span>
<span style="color: #ff0000;"><strong>nums1 : vetor [0..5] de inteiro</strong></span>
<span style="color: #ff0000;"><strong>nums2 : vetor [0..5] de inteiro</strong></span>
<span style="color: #ff0000;"><strong>cont : inteiro</strong></span>
<span style="color: #ff0000;"><strong>Inicio
</strong></span>
<span style="color: #ff0000;"><strong>para cont de 0 ate 5 faca</strong></span>
<span style="color: #ff0000;"><strong>   escreval("Digite um número:")</strong></span>
<span style="color: #ff0000;"><strong>   leia(nums1[cont])</strong></span>
<span style="color: #ff0000;"><strong>   nums2[cont] &lt;- nums1[cont] * 5</strong></span>
<span style="color: #ff0000;"><strong>fimpara</strong></span>
<span style="color: #ff0000;"><strong>escreval()</strong></span>
<span style="color: #ff0000;"><strong>escreval("Resultado:")</strong></span>
<span style="color: #ff0000;"><strong>para cont de 0 ate 5 faca</strong></span>
<span style="color: #ff0000;"><strong>   escreval(nums1[cont], " ", nums2[cont])</strong></span>
<span style="color: #ff0000;"><strong>fimpara</strong></span>
<span style="color: #ff0000;"><strong>escreval()</strong></span>
<span style="color: #ff0000;"><strong>Fimalgoritmo</strong></span></pre>
<p>4. Crie um programa que armazene 10 números digitados pelo usuário em dois vetores: um somente para números pares, e outro somente para números ímpares.<br />
Após, exiba os valores dos dois vetores na tela, em sequência.<br />
Obs.: As posições que não receberem valores exibirão o número zero. Não se preocupe com isso por enquanto.</p>
<pre><span style="color: #ff0000;"><strong>Var</strong></span>
<span style="color: #ff0000;"><strong>numPar : vetor [0..9] de inteiro</strong></span>
<span style="color: #ff0000;"><strong>numImpar : vetor [0..9] de inteiro</strong></span>
<span style="color: #ff0000;"><strong>num, cont : inteiro</strong></span>
<span style="color: #ff0000;"><strong>Inicio
</strong></span>
<span style="color: #ff0000;"><strong>para cont de 0 ate 9 faca</strong></span>
<span style="color: #ff0000;"><strong>   escreval("Digite um número:")</strong></span>
<span style="color: #ff0000;"><strong>   leia(num)</strong></span>
<span style="color: #ff0000;"><strong>   se (num % 2 = 0 ) entao</strong></span>
<span style="color: #ff0000;"><strong>      numPar[cont] &lt;- num</strong></span>
<span style="color: #ff0000;"><strong>   senao</strong></span>
<span style="color: #ff0000;"><strong>      numImpar[cont] &lt;- num</strong></span>
<span style="color: #ff0000;"><strong>   fimse</strong></span>
<span style="color: #ff0000;"><strong>fimpara</strong></span>
<span style="color: #ff0000;"><strong>escreval()</strong></span>
<span style="color: #ff0000;"><strong>escreval("Resultados:")</strong></span>
<span style="color: #ff0000;"><strong>escreval("Array de Pares:")</strong></span>
<span style="color: #ff0000;"><strong>para cont de 0 ate 9 faca</strong></span>
<span style="color: #ff0000;"><strong>   escreval(numPar[cont])</strong></span>
<span style="color: #ff0000;"><strong>fimpara</strong></span>
<span style="color: #ff0000;"><strong>escreval()</strong></span>
<span style="color: #ff0000;"><strong>escreval("Array de Ímpares:")</strong></span>
<span style="color: #ff0000;"><strong>para cont de 0 ate 9 faca</strong></span>
<span style="color: #ff0000;"><strong>   escreval(numImpar[cont])</strong></span>
<span style="color: #ff0000;"><strong>fimpara</strong></span>
<span style="color: #ff0000;"><strong>Fimalgoritmo</strong></span></pre>
<p>5. Modifique o programa anterior para não aceitar a entrada do número zero, e requisitar a digitação de outro número neste caso.</p>
<pre><span style="color: #ff0000;"><strong>Var</strong></span>
<span style="color: #ff0000;"><strong>numPar : vetor [0..9] de inteiro</strong></span>
<span style="color: #ff0000;"><strong>numImpar : vetor [0..9] de inteiro</strong></span>
<span style="color: #ff0000;"><strong>num, cont : inteiro</strong></span>
<span style="color: #ff0000;"><strong>Inicio
</strong></span>
<span style="color: #ff0000;"><strong>para cont de 0 ate 9 faca</strong></span>
<span style="color: #ff0000;"><strong>   escreval("Digite um número:")</strong></span>
<span style="color: #ff0000;"><strong>   leia(num)</strong></span>
<span style="color: #ff0000;"><strong>   enquanto (num = 0) faca</strong></span>
<span style="color: #ff0000;"><strong>      escreval("Zero é número inválido. Digite outro número:")</strong></span>
<span style="color: #ff0000;"><strong>      leia(num)</strong></span>
<span style="color: #ff0000;"><strong>   fimenquanto</strong></span>
<span style="color: #ff0000;"><strong>   se (num % 2 = 0 ) entao</strong></span>
<span style="color: #ff0000;"><strong>      numPar[cont] &lt;- num</strong></span>
<span style="color: #ff0000;"><strong>   senao</strong></span>
<span style="color: #ff0000;"><strong>      numImpar[cont] &lt;- num</strong></span>
<span style="color: #ff0000;"><strong>   fimse</strong></span>
<span style="color: #ff0000;"><strong>fimpara</strong></span>
<span style="color: #ff0000;"><strong>escreval()</strong></span>
<span style="color: #ff0000;"><strong>escreval("Resultados:")</strong></span>
<span style="color: #ff0000;"><strong>escreval("Array de Pares:")</strong></span>
<span style="color: #ff0000;"><strong>para cont de 0 ate 9 faca</strong></span>
<span style="color: #ff0000;"><strong>   escreval(numPar[cont])</strong></span>
<span style="color: #ff0000;"><strong>fimpara</strong></span>
<span style="color: #ff0000;"><strong>escreval()</strong></span>
<span style="color: #ff0000;"><strong>escreval("Array de Ímpares:")</strong></span>
<span style="color: #ff0000;"><strong>para cont de 0 ate 9 faca</strong></span>
<span style="color: #ff0000;"><strong>   escreval(numImpar[cont])</strong></span>
<span style="color: #ff0000;"><strong>fimpara</strong></span>
<span style="color: #ff0000;"><strong>Fimalgoritmo</strong></span></pre>
<p>6. Modifique novamente o programa anterior, de modo a não exibir na saída os números zero que são mostrados para todas as posições que não receberam nenhum valor durante a atribuição (e portanto estão vazias).</p>
<pre><span style="color: #ff0000;"><strong>Var</strong></span>
<span style="color: #ff0000;"><strong>numPar : vetor [0..5] de inteiro</strong></span>
<span style="color: #ff0000;"><strong>numImpar : vetor [0..5] de inteiro</strong></span>
<span style="color: #ff0000;"><strong>num, cont : inteiro</strong></span>
<span style="color: #ff0000;"><strong>Inicio
</strong></span>
<span style="color: #ff0000;"><strong>para cont de 0 ate 5 faca</strong></span>
<span style="color: #ff0000;"><strong>   escreval("Digite um número:")</strong></span>
<span style="color: #ff0000;"><strong>   leia(num)</strong></span>
<span style="color: #ff0000;"><strong>   enquanto (num = 0) faca</strong></span>
<span style="color: #ff0000;"><strong>      escreval("Zero é número inválido. Digite outro número:")</strong></span>
<span style="color: #ff0000;"><strong>      leia(num)</strong></span>
<span style="color: #ff0000;"><strong>   fimenquanto</strong></span>
<span style="color: #ff0000;"><strong>   se (num % 2 = 0 ) entao</strong></span>
<span style="color: #ff0000;"><strong>      numPar[cont] &lt;- num</strong></span>
<span style="color: #ff0000;"><strong>   senao</strong></span>
<span style="color: #ff0000;"><strong>      numImpar[cont] &lt;- num</strong></span>
<span style="color: #ff0000;"><strong>   fimse</strong></span>
<span style="color: #ff0000;"><strong>fimpara</strong></span>
<span style="color: #ff0000;"><strong>escreval()</strong></span>
<span style="color: #ff0000;"><strong>escreval("Resultados:")</strong></span>
<span style="color: #ff0000;"><strong>escreval("Array de Pares:")</strong></span>
<span style="color: #ff0000;"><strong>para cont de 0 ate 5 faca</strong></span>
<span style="color: #ff0000;"><strong>   se (numPar[cont] &lt;&gt; 0) entao</strong></span>
<span style="color: #ff0000;"><strong>      escreval(numPar[cont])</strong></span>
<span style="color: #ff0000;"><strong>   fimse</strong></span>
<span style="color: #ff0000;"><strong>fimpara</strong></span>
<span style="color: #ff0000;"><strong>escreval()</strong></span>
<span style="color: #ff0000;"><strong>escreval("Array de Ímpares:")</strong></span>
<span style="color: #ff0000;"><strong>para cont de 0 ate 5 faca</strong></span>
<span style="color: #ff0000;"><strong>   se (numImpar[cont] &lt;&gt; 0) entao</strong></span>
<span style="color: #ff0000;"><strong>      escreval(numImpar[cont])</strong></span>
<span style="color: #ff0000;"><strong>   fimse</strong></span>
<span style="color: #ff0000;"><strong>fimpara</strong></span>
<span style="color: #ff0000;"><strong>Fimalgoritmo</strong></span></pre>
<p>É isso aí! Em nossa próxima lição vamos mostrar uma técnica simples que permite intercambiar os valores armazenados em duas variáveis, sem que haja perda de dados.</p>
<p>Anterior: <a href="http://www.bosontreinamentos.com.br/logica-de-programacao/18-logica-de-programacao-vetores-atribuicao-de-valores-e-leitura-de-dados/">Atribuição de Valores e Leitura de Dados em Vetores</a></p>
<p style="text-align: right;">Próximo: <a href="http://www.bosontreinamentos.com.br/logica-de-programacao/20-logica-de-programacao-transferir-valores-de-variaveis/">Técnica para trocar valores entre duas Variáveis</a></p>
<p>&nbsp;</p>
<p>O post <a href="https://www.bosontreinamentos.com.br/logica-de-programacao/logica-de-programacao-exercicios-resolvidos-de-vetores/">Lógica de Programação &#8211; Exercícios resolvidos de Vetores</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/logica-de-programacao/logica-de-programacao-exercicios-resolvidos-de-vetores/feed/</wfw:commentRss>
			<slash:comments>12</slash:comments>
		
		
			</item>
		<item>
		<title>Estruturas de Dados: o Registro</title>
		<link>https://www.bosontreinamentos.com.br/estruturas-de-dados/estruturas-de-dados-o-registro/</link>
					<comments>https://www.bosontreinamentos.com.br/estruturas-de-dados/estruturas-de-dados-o-registro/?noamp=mobile#respond</comments>
		
		<dc:creator><![CDATA[Fábio dos Reis]]></dc:creator>
		<pubDate>Fri, 01 Dec 2017 10:55:01 +0000</pubDate>
				<category><![CDATA[Estruturas de Dados]]></category>
		<category><![CDATA[Programação]]></category>
		<guid isPermaLink="false">http://www.bosontreinamentos.com.br/?p=9047</guid>

					<description><![CDATA[<p>Conceito de Registro Um Registro é uma estrutura que fornece um formato especializado para armazenar informações em memória. Ele inclui as informações sobre uma entidade específica, podendo, por exemplo, corresponder às informações pertinentes a um cliente em um arquivo de clientes ou a um automóvel em um arquivo de controle de uma concessionária, entre outros. Um registro é dividido em unidades de dados chamadas de Campos. Cada campo é utilizado para armazenar um dado específico, de um tipo determinado. Por exemplo, em um registro de clientes podemos ter um campo para armazenar o nome do cliente, outro para seu sobrenome, e um outro campo para armazenar seu CPF. Representando os registros Os registros podem ser representados de formas distintas, dependendo da linguagem de programação adotada para a criação do algoritmo no qual eles serão empregados. Em linguagem C, por exemplo, os registros podem ser representados por estruturas (structures), ao passo que em C++ e Java, por objetos de uma classe. Os membros de dados dentro desses objetos equivalem aos campos no registro. Exemplo de um registro Tomemos como exemplo os dados de um cliente de uma loja qualquer. Para representar esses dados na memória do computador, e posteriormente armazená-los em [...]</p>
<p>O post <a href="https://www.bosontreinamentos.com.br/estruturas-de-dados/estruturas-de-dados-o-registro/">Estruturas de Dados: o Registro</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>Conceito de Registro</h2>
<p>Um Registro é uma estrutura que fornece um formato especializado para armazenar informações em memória.</p>
<p>Ele inclui as informações sobre uma entidade específica, podendo, por exemplo, corresponder às informações pertinentes a um cliente em um arquivo de clientes ou a um automóvel em um arquivo de controle de uma concessionária, entre outros.</p>
<p>Um registro é dividido em unidades de dados chamadas de Campos. Cada campo é utilizado para armazenar um dado específico, de um tipo determinado. Por exemplo, em um registro de clientes podemos ter um campo para armazenar o nome do cliente, outro para seu sobrenome, e um outro campo para armazenar seu CPF.</p>
<h3>Representando os registros</h3>
<p>Os registros podem ser representados de formas distintas, dependendo da linguagem de programação adotada para a criação do algoritmo no qual eles serão empregados. Em linguagem C, por exemplo, os registros podem ser representados por estruturas (structures), ao passo que em C++ e Java, por objetos de uma classe.</p>
<p>Os membros de dados dentro desses objetos equivalem aos campos no registro.</p>
<h3>Exemplo de um registro</h3>
<p>Tomemos como exemplo os dados de um cliente de uma loja qualquer. Para representar esses dados na memória do computador, e posteriormente armazená-los em disco, podemos lançar mão do uso de um registro.</p>
<p>Abaixo podemos ver alguns campos de exemplo que constituem o registro de um cliente:</p>
<table>
<tbody>
<tr>
<td>CPF</td>
</tr>
<tr>
<td>Nome</td>
</tr>
<tr>
<td>Sobrenome</td>
</tr>
<tr>
<td>Rua</td>
</tr>
<tr>
<td>Telefone</td>
</tr>
</tbody>
</table>
<p>O registro é identificado por um nome, como por exemplo &#8220;Cliente&#8221;, e seus membros (campos) podem ser acessados por meio do uso do operador ponto (.). Por exemplo, para acessar o CPF do cliente poderíamos utilizar a seguinte declaração:</p>
<pre><span style="color: #ff0000;"><strong>Cliente.CPF</strong></span></pre>
<p>Além disso, um campo qualquer pode conter um outro registro, caso seja um campo de dados composto. Em nosso exemplo, o campo Rua poderia ser subdividido em mais campos, como Nome_Rua e Número_Rua, para diferenciar esses dois dados.</p>
<h3>O conceito de Chave</h3>
<p>Geralmente um dos campos de um registro é denominado Chave, ou ainda Campo-Chave. Usamos esse campo em particular para nos auxiliar na procura de um conjunto específico de dados dentro de um arquivo de dados (ou seja, na busca de um registro).</p>
<p>Em nosso exemplo, poderíamos pesquisar um cliente específico a partir de seu número de CPF, armazenado em um campo homônimo, que pode ser considerado o campo-chave.</p>
<h3>Exemplos</h3>
<p>A seguir temos um exemplo de implementação desse registro de clientes em C, usando uma estrutura:</p>
<pre><span style="color: #ff0000;"><strong>struct cliente</strong></span>
<span style="color: #ff0000;"><strong>{</strong></span>
<span style="color: #ff0000;"><strong>  char CPF[11];</strong></span>
<span style="color: #ff0000;"><strong>  char nome[30];</strong></span>
<span style="color: #ff0000;"><strong>  char sobrenome[50];</strong></span>
<span style="color: #ff0000;"><strong>  char rua[60];</strong></span>
<span style="color: #ff0000;"><strong>  int numero;</strong></span>
<span style="color: #ff0000;"><strong>  char telefone[11];</strong></span>
<span style="color: #ff0000;"><strong>};</strong></span></pre>
<p>&nbsp;</p>
<p>Note que na linguagem, além de definirmos os nomes de cada campo, também precisamos definir o tipo de dados de cada um, para que sejam realizadas as alocações de memória adequadas quando o registro for devidamente criado em tempo de execução do programa.</p>
<p>Essas estruturas são usadas para definir os <em><strong>registros </strong></em>que são armazenados em arquivos, e, juntamente com outras técnicas de programação, como os<strong> <a href="http://www.bosontreinamentos.com.br/programacao-em-linguagem-c/ponteiros-em-c-uma-introducao/" target="_blank" rel="noopener noreferrer">ponteiros</a></strong>, permitem e simplificam a criação de estruturas de dados mais complexas, como por exemplo as pilhas, listas ligadas, filas e árvores, entre outras.</p>
<p>(<a href="http://www.bosontreinamentos.com.br/programacao-em-linguagem-c/estruturas-em-linguagem-c/" target="_blank" rel="noopener noreferrer">Clique aqui para saber mais sobre estruturas em linguagem C</a>).</p>
<p>Nos próximos artigos vamos explorar essas e outras estruturas de dados. Até!</p>
<p>&nbsp;</p>
<p>O post <a href="https://www.bosontreinamentos.com.br/estruturas-de-dados/estruturas-de-dados-o-registro/">Estruturas de Dados: o Registro</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/estruturas-de-dados/estruturas-de-dados-o-registro/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Estruturas de Dados: O que são Pilhas</title>
		<link>https://www.bosontreinamentos.com.br/estruturas-de-dados/estruturas-de-dados-pilhas/</link>
					<comments>https://www.bosontreinamentos.com.br/estruturas-de-dados/estruturas-de-dados-pilhas/?noamp=mobile#comments</comments>
		
		<dc:creator><![CDATA[Fábio dos Reis]]></dc:creator>
		<pubDate>Thu, 10 Aug 2017 13:50:56 +0000</pubDate>
				<category><![CDATA[Estruturas de Dados]]></category>
		<category><![CDATA[Lógica de Programação]]></category>
		<category><![CDATA[Programação]]></category>
		<guid isPermaLink="false">http://www.bosontreinamentos.com.br/?p=9049</guid>

					<description><![CDATA[<p>O que são Pilhas (Stacks) Uma Pilha é uma estrutura de dados que serve como uma coleção de elementos,  e permite o acesso a somente um item de dados armazenado &#8211; o último item que foi inserido na estrutura (item do topo). Esse item pode ser lido ou removido. Caso seja removido, teremos acesso ao item imediatamente anterior a ele que se torna automaticamente o último item da pilha (topo), e assim sucessivamente, até que a estrutura esteja vazia. Uma pilha difere de um array, que é outra estrutura que permite o armazenamento de itens (dados) pois o acesso aos itens de uma pilha é restrito &#8211; somente um item pode ser lido ou removido por vez, na ordem inversa em que foram colocado na pilha, ao contrário de um array (vetor), onde podemos acessar qualquer elemento em qualquer posição diretamente, sem a necessidade de acessar itens anteriores primeiro (desde que conhecida a posição do elemento que se deseja acessar). Podemos implementar pilhas de algumas formas, como por meio de arrays ou com o uso de ADTs (Abstract Data Types / Tipos de Dados Abstratos). Estudaremos ambas as formas nestas lições. Aplicações das pilhas As pilhas encontram inúmeras aplicações em [...]</p>
<p>O post <a href="https://www.bosontreinamentos.com.br/estruturas-de-dados/estruturas-de-dados-pilhas/">Estruturas de Dados: O que são Pilhas</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>O que são Pilhas (Stacks)</h2>
<p>Uma <strong>Pilha</strong> é uma estrutura de dados que serve como uma coleção de elementos,  e permite o acesso a somente um item de dados armazenado &#8211; o último item que foi inserido na estrutura (item do topo). Esse item pode ser lido ou removido.</p>
<p>Caso seja removido, teremos acesso ao item imediatamente anterior a ele que se torna automaticamente o último item da pilha (topo), e assim sucessivamente, até que a estrutura esteja vazia.</p>
<p>Uma pilha difere de um array, que é outra estrutura que permite o armazenamento de itens (dados) pois o acesso aos itens de uma pilha é restrito &#8211; somente um item pode ser lido ou removido por vez, na ordem inversa em que foram colocado na pilha, ao contrário de um array (vetor), onde podemos acessar qualquer elemento em qualquer posição diretamente, sem a necessidade de acessar itens anteriores primeiro (desde que conhecida a posição do elemento que se deseja acessar).</p>
<p>Podemos implementar pilhas de algumas formas, como por meio de arrays ou com o uso de <strong>ADTs</strong> (Abstract Data Types / Tipos de Dados Abstratos). Estudaremos ambas as formas nestas lições.</p>
<h3>Aplicações das pilhas</h3>
<p>As pilhas encontram inúmeras aplicações em programação e desenvolvimento de algoritmos, como por exemplo:</p>
<ul>
<li>Avaliação de Expressões e Parsing Sintático</li>
<li>Algoritmos de Backtracking</li>
<li>Gerenciamento de Memória em Tempo de Compilação</li>
<li>Implementação de diversos algoritmos, como Grahan scan e SMAWK</li>
<li>Operações como desfazer e refazer em aplicações</li>
<li>Controle de navegação em browsers</li>
<li>Endereçamento de instruções em microprocessadores</li>
<li>Análise de expressões aritméticas</li>
</ul>
<p>e muitas outras.</p>
<h3>Como funciona um Pilha</h3>
<p>Para entender como uma pilha funciona, faremos uma analogia com o mundo real.</p>
<p>Imagine uma pilha de pratos na cozinha. Se quisermos utilizar um prato, pegamos um do topo desta pilha (último prato). Se necessitarmos de outro, pegamos o próximo da pilha (que agora é o último), e assim por diante.</p>
<p>Quando um prato é lavado, após seu uso, pode ser recolocado novamente na pilha de pratos, sempre no topo. Esse prato recém-colocado na pilha passa a ser o último, e o primeiro que será retirado quando precisarmos usar um prato novamente.</p>
<p>Essa é a ideia geral de uma estrutura de dados do tipo pilha. Nela, os dados são inseridos na pilha (empilhados), e acessados em ordem inversa (o último a ser inserido é sempre o primeiro a ser utilizado). Colocar um elemento no topo de uma pilha é uma operação que recebe um nome especial: <strong>push</strong>. Já a remoção de um elemento do topo da pilha é uma operação denominada <strong>pop</strong>.</p>
<p>Por conta deste modo de operação, as pilhas são classificadas como estruturas de dados de armazenamento <strong>Last-In, First-Out</strong> &#8211; <strong>LIFO</strong>, &#8220;o último a entrar é o primeiro a sair&#8221;, pois o último item inserido na pilha é sempre o primeiro a ser removido (ou lido).</p>
<p>A figura a seguir ilustra uma pilha contendo valores numéricos, e seu topo assinalado:</p>
<p><img loading="lazy" decoding="async" class="aligncenter wp-image-10395" title="Pilha em estruturas de dados" src="http://www.bosontreinamentos.com.br/wp-content/uploads/2017/08/pilha-estrutura-de-dados.png" alt="Pilha em estruturas de dados" width="400" height="362" srcset="https://www.bosontreinamentos.com.br/wp-content/uploads/2017/08/pilha-estrutura-de-dados.png 488w, https://www.bosontreinamentos.com.br/wp-content/uploads/2017/08/pilha-estrutura-de-dados-420x380.png 420w" sizes="auto, (max-width: 400px) 100vw, 400px" /></p>
<h3>Operações Push e Pop</h3>
<p>Uma pilha permite o acesso somente ao último item de dados inserido. Ao ser removido esse item, é possível acessar o item anterior a ele, e assim por diante. Para tal, lançamos mão de algumas operações específicas, tanto para inserir quanto para retirar itens da pilha.</p>
<p>As duas principais operações realizadas sobre uma pilha são as operações básicas <strong>push</strong> e <strong>pop</strong>.</p>
<p>A operação push é executada para adicionar um elemento ao topo de uma pilha.</p>
<p>A operação pop é executada para retirar um elemento do topo de uma pilha. O elemento retirado é sempre o último que foi adicionado com a operação push.</p>
<p>A figura a seguir ilustra a operação push em uma pilha, sendo executada duas vezes para permitir a inserção de dois novos valores em uma pilha já existente:</p>
<div id="attachment_10397-2" style="width: 811px" class="wp-caption aligncenter"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-10397-2" class="wp-image-10397" title="Operação push() em uma pilha" src="http://www.bosontreinamentos.com.br/wp-content/uploads/2017/08/operação-push-pilha-estruturas-dados.png" alt="Operação push() em uma pilha" width="801" height="362" srcset="https://www.bosontreinamentos.com.br/wp-content/uploads/2017/08/operação-push-pilha-estruturas-dados.png 1029w, https://www.bosontreinamentos.com.br/wp-content/uploads/2017/08/operação-push-pilha-estruturas-dados-420x190.png 420w, https://www.bosontreinamentos.com.br/wp-content/uploads/2017/08/operação-push-pilha-estruturas-dados-768x347.png 768w, https://www.bosontreinamentos.com.br/wp-content/uploads/2017/08/operação-push-pilha-estruturas-dados-1024x463.png 1024w" sizes="auto, (max-width: 801px) 100vw, 801px" /><p id="caption-attachment-10397-2" class="wp-caption-text">Operação push em uma pilha</p></div>
<p>Já a figura a seguir ilustra a operação pop sendo efetuada sobre a pilha, de modo a remover elementos. Note que se trata de uma operação exatamente inversa à operação push:</p>
<div id="attachment_10398-2" style="width: 1024px" class="wp-caption aligncenter"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-10398-2" class="wp-image-10398 size-full" title="Operação pop em uma pilha" src="http://www.bosontreinamentos.com.br/wp-content/uploads/2017/08/operação-pop-pilha-estruturas-dados-e1525887438393.png" alt="Operação pop em uma pilha" width="1014" height="486" srcset="https://www.bosontreinamentos.com.br/wp-content/uploads/2017/08/operação-pop-pilha-estruturas-dados-e1525887438393.png 1014w, https://www.bosontreinamentos.com.br/wp-content/uploads/2017/08/operação-pop-pilha-estruturas-dados-e1525887438393-420x201.png 420w, https://www.bosontreinamentos.com.br/wp-content/uploads/2017/08/operação-pop-pilha-estruturas-dados-e1525887438393-768x368.png 768w" sizes="auto, (max-width: 1014px) 100vw, 1014px" /><p id="caption-attachment-10398-2" class="wp-caption-text">Operação pop em uma pilha</p></div>
<h3>Mais sobre pilhas</h3>
<p>As pilhas, no geral, são estruturas de dados de tamanho pequeno. Com apenas alguns itens de dados, uma pilha pode ser útil na realização de diversas tarefas computacionais.</p>
<p>Além das operações push e pop, existem algumas outras operações comuns implementadas em pilhas, como <strong>peek</strong>, <strong>isFull</strong> e <strong>isEmpty</strong>. A seguir temos uma breve descrição de cada uma:</p>
<ul>
<li>peek &#8211; Consiste na leitura do valor armazenado no topo da pilha, sem no entanto removê-lo. Às vezes chamada de <em>top</em>.</li>
<li>isFull &#8211; Função utilizada para verificar se uma pilha está cheia (ou seja, se não é mais possível armazenar itens)</li>
<li>isEmpty &#8211; Função que verifica se uma pilha está vazia &#8211; ou seja, se não é possível continuar a remover itens.</li>
</ul>
<p>As pilhas podem ser implementadas de duas formas principais: usando arrays ou usando listas encadeadas (<em>linked lists</em>). Na próxima lição veremos como implementar uma pilha usando arrays em linguagem C, e posteriormente <a href="http://www.bosontreinamentos.com.br/estruturas-de-dados/como-implementar-uma-pilha-em-java-usando-arrays/">como implementar pilhas em Java</a>.</p>
<p>Anterior: <a href="http://www.bosontreinamentos.com.br/estruturas-de-dados/estruturas-de-dados/">O que são Estruturas de Dados</a></p>
<p style="text-align: right;">Próximo: Como implementar uma pilha em linguagem C usando array.</p>
<p>O post <a href="https://www.bosontreinamentos.com.br/estruturas-de-dados/estruturas-de-dados-pilhas/">Estruturas de Dados: O que são Pilhas</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/estruturas-de-dados/estruturas-de-dados-pilhas/feed/</wfw:commentRss>
			<slash:comments>1</slash:comments>
		
		
			</item>
		<item>
		<title>O que são Estruturas de Dados</title>
		<link>https://www.bosontreinamentos.com.br/estruturas-de-dados/estruturas-de-dados/</link>
					<comments>https://www.bosontreinamentos.com.br/estruturas-de-dados/estruturas-de-dados/?noamp=mobile#comments</comments>
		
		<dc:creator><![CDATA[Fábio dos Reis]]></dc:creator>
		<pubDate>Sat, 04 Mar 2017 13:24:04 +0000</pubDate>
				<category><![CDATA[Estruturas de Dados]]></category>
		<category><![CDATA[Lógica]]></category>
		<category><![CDATA[Programação]]></category>
		<guid isPermaLink="false">http://www.bosontreinamentos.com.br/?p=9045</guid>

					<description><![CDATA[<p>Estruturas de Dados e Algoritmos Uma Estrutura de Dados consiste em uma organização de dados na memória de um computador ou em um dispositivo de armazenamento, de modo que esses dados possam ser utilizados de forma eficiente. Estruturas de dados diversas encontram muitas aplicações em desenvolvimento de sistemas, sendo que algumas são altamente especializadas e utilizadas em tarefas específicas. Usando estruturas de dados adequadas, podemos administrar uma grande quantidade de dados de forma eficiente, com aplicações em bancos de dados ou serviços de busca e indexação de dados, e no desenvolvimento de algoritmos eficientes. Figura 1: Estrutura de Dados básica &#8211; Array Um Algoritmo é um conjunto de instruções detalhadas e ordenadas, cujo propósito é realizar uma tarefa ou operação específica. Os algoritmos são utilizados para manipular dados nestas estruturas de várias formas, como por exemplo, inserindo dados, procurando itens específicos ou ainda ordenando seus elementos. Neste tutorial vamos tratar exclusivamente da definição de Estrutura de Dados. Operações básicas em Estruturas de Dados No geral, em uma estrutura de dados precisamos saber como realizar um determinado conjunto de operações básicas, como por exemplo: Inserir um novo item Excluir um item existente Localizar (procurar) um elemento específico Varrer (percorrer) todos os [...]</p>
<p>O post <a href="https://www.bosontreinamentos.com.br/estruturas-de-dados/estruturas-de-dados/">O que são Estruturas de Dados</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>Estruturas de Dados e Algoritmos</h2>
<p>Uma Estrutura de Dados consiste em uma organização de dados na memória de um computador ou em um dispositivo de armazenamento, de modo que esses dados possam ser utilizados de forma eficiente.</p>
<p>Estruturas de dados diversas encontram muitas aplicações em desenvolvimento de sistemas, sendo que algumas são altamente especializadas e utilizadas em tarefas específicas. Usando estruturas de dados adequadas, podemos administrar uma grande quantidade de dados de forma eficiente, com aplicações em bancos de dados ou serviços de busca e indexação de dados, e no desenvolvimento de algoritmos eficientes.</p>
<div id="attachment_9074-2" style="width: 810px" class="wp-caption aligncenter"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-9074-2" class="wp-image-9074" title="Estrutura de Dados básica: Array" src="http://www.bosontreinamentos.com.br/wp-content/uploads/2017/03/array-estrutura-dados.png" alt="Estrutura de Dados básica: Array" width="800" height="230" srcset="https://www.bosontreinamentos.com.br/wp-content/uploads/2017/03/array-estrutura-dados.png 919w, https://www.bosontreinamentos.com.br/wp-content/uploads/2017/03/array-estrutura-dados-420x121.png 420w, https://www.bosontreinamentos.com.br/wp-content/uploads/2017/03/array-estrutura-dados-768x221.png 768w" sizes="auto, (max-width: 800px) 100vw, 800px" /><p id="caption-attachment-9074-2" class="wp-caption-text">Figura 1: Estrutura de Dados básica &#8211; Array</p></div>
<p>Um Algoritmo é um conjunto de instruções detalhadas e ordenadas, cujo propósito é realizar uma tarefa ou operação específica.</p>
<p>Os algoritmos são utilizados para manipular dados nestas estruturas de várias formas, como por exemplo, inserindo dados, procurando itens específicos ou ainda ordenando seus elementos.</p>
<p>Neste tutorial vamos tratar exclusivamente da definição de Estrutura de Dados.</p>
<h3>Operações básicas em Estruturas de Dados</h3>
<p>No geral, em uma estrutura de dados precisamos saber como realizar um determinado conjunto de operações básicas, como por exemplo:</p>
<ul>
<li>Inserir um novo item</li>
<li>Excluir um item existente</li>
<li>Localizar (procurar) um elemento específico</li>
<li>Varrer (percorrer) todos os itens constituintes da estrutura para visualização</li>
<li>Classificar (ordenar), o que consiste em colocar os itens de dados em uma determinada ordem (numérica, alfabética, etc.)</li>
</ul>
<p>Entre outras que estudaremos nas pŕoximas lições.</p>
<h3>Estruturas de Dados principais</h3>
<p>As principais estruturas de dados que estudaremos neste curso da Bóson Treinamentos em Tecnologia são as seguintes:</p>
<ul>
<li>Array (vetores e matrizes)</li>
<li>Registro</li>
<li>Union</li>
<li>Lista encadeada</li>
<li>Pilha</li>
<li>Fila</li>
<li>Fila de prioridades</li>
<li>Árvore binária</li>
<li>Tabela Hash</li>
<li>Heap</li>
<li>Grafo</li>
</ul>
<p>As estruturas de dados podem implementar um ou mais tipos de dados abstratos (ADT / Abstract Data Types), os quais especificam operações que podem ser executadas em uma estrutura de dados, além da complexidade dessas operações.</p>
<p>A seguir, discutiremos o conceito de Registro, estrutura amplamente utilizada na construção de estruturas de dados.</p>
<p>Próximo: O Conceito de <a href="http://www.bosontreinamentos.com.br/estruturas-de-dados/estruturas-de-dados-o-registro/">Registro em Estruturas de Dados</a></p>
<p>&nbsp;</p>
<p>O post <a href="https://www.bosontreinamentos.com.br/estruturas-de-dados/estruturas-de-dados/">O que são Estruturas de Dados</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/estruturas-de-dados/estruturas-de-dados/feed/</wfw:commentRss>
			<slash:comments>3</slash:comments>
		
		
			</item>
	</channel>
</rss>
