Programas de Padrão de Pirâmide em Java

Os programas de padrões são muito utilizados em entrevistas para entender as habilidades de pensamento lógico do entrevistado. Os padrões em forma de pirâmide são muito populares e, uma vez compreendida a lógica por trás de sua criação, escrever código para alcançar o mesmo resultado torna-se uma tarefa fácil.

Programas de Padrões de Pirâmide em Java

Aqui estão alguns exemplos para criar diferentes padrões de pirâmide com números, símbolos, etc. Também veremos alguns exemplos de como criar um padrão de pirâmide invertida em programas Java. Tentaremos manter o código simples para que seja facilmente compreendido.

Padrão de Pirâmide com Números

Se observarmos o primeiro padrão, veremos que cada linha contém o mesmo número impresso a mesma quantidade de vezes. No entanto, cada linha possui espaços em branco à frente, cuja contagem é “linhas-i”. Vamos analisar o programa para imprimir esse padrão.

package com.journaldev.patterns.pyramid;

import java.util.Scanner;

public class PyramidPattern {

	private static void printPattern1(int rows) {
		// para loop para as linhas
		for (int i = 1; i <= rows; i++) {
			// espaços em branco na frente dos números
			int numberOfWhiteSpaces = rows - i;

			// imprimir espaços em branco iniciais
			printString(" ", numberOfWhiteSpaces);

			// imprimir números
			printString(i + " ", i);

			// mover para próxima linha
			System.out.println("");
		}
	}

	// função de utilidade para imprimir string dada vezes
	private static void printString(String s, int times) {
		for (int j = 0; j < times; j++) {
			System.out.print(s);
		}
	}

	public static void main(String[] args) {

		Scanner scanner = new Scanner(System.in);
		System.out.println("Please enter the rows to print:");
		int rows = scanner.nextInt();
		// System.out.println("Linhas = "+linhas);
		scanner.close();

		System.out.println("Printing Pattern 1\n");
		printPattern1(rows);

	}

}

Observe que criei uma função de utilidade para tarefa comum de impressão de strings. Se você puder dividir seu programa em funções curtas e reutilizáveis, então mostra que você não está apenas procurando escrever o programa, mas também deseja garantir sua qualidade e reutilização. Quando executamos o programa acima, obtemos a seguinte saída.

Please enter the rows to print:
9
Printing Pattern 1

        1 
       2 2 
      3 3 3 
     4 4 4 4 
    5 5 5 5 5 
   6 6 6 6 6 6 
  7 7 7 7 7 7 7 
 8 8 8 8 8 8 8 8 
9 9 9 9 9 9 9 9 9 
Pyramid Pattern Java Program Output

Padrão de Pirâmide de Números Crescentes

Aqui está a função para imprimir o padrão 2. O ponto-chave a ser observado é o número de espaços em branco iniciais e depois os números são impressos em ordem crescente.

/**
 * 
 * Program to print below pyramid structure
 *      1         
       1 2        
      1 2 3       
     1 2 3 4      
    1 2 3 4 5     
   1 2 3 4 5 6    
  1 2 3 4 5 6 7   
 1 2 3 4 5 6 7 8  
1 2 3 4 5 6 7 8 9 
*/
private static void printPattern2(int rows) {
	// para loop para as linhas
	for (int i = 1; i <= rows; i++) {
		// espaços em branco na frente dos números
		int numberOfWhiteSpaces = rows - i;

		// imprimir espaços em branco iniciais
		printString(" ", numberOfWhiteSpaces);

		// imprimir números
		for(int x = 1; x<=i; x++) {
			System.out.print(x+" ");
		}

		// mover para próxima linha
		System.out.println("");
	}
}

Pirâmide de Caracteres

Este é realmente simples, só precisamos imprimir o caractere sem cálculos ou manipulações.

/**
 * Program to print following pyramid structure
        *         
       * *        
      * * *       
     * * * *      
    * * * * *     
   * * * * * *    
  * * * * * * *   
 * * * * * * * *  
* * * * * * * * * 

*/
private static void printPattern3(int rows) {
	// loop for para as linhas
	for (int i = 1; i <= rows; i++) {
		// espaços em branco na frente dos números
		int numberOfWhiteSpaces = rows - i;

		// imprimir espaços em branco iniciais
		printString(" ", numberOfWhiteSpaces);

		// imprimir caractere
		printString("* ", i);

		// ir para a próxima linha
		System.out.println("");
	}
}

Programa de Padrão de Pirâmide 4

/**
* 
*               1 
              1 2 1 
            1 2 3 2 1 
          1 2 3 4 3 2 1 
        1 2 3 4 5 4 3 2 1 
      1 2 3 4 5 6 5 4 3 2 1 
    1 2 3 4 5 6 7 6 5 4 3 2 1 
  1 2 3 4 5 6 7 8 7 6 5 4 3 2 1 
1 2 3 4 5 6 7 8 9 8 7 6 5 4 3 2 1 
*/

private static void printPattern4(int rows) {
	// loop for para as linhas
	for (int i = 1; i <= rows; i++) {
		// espaços em branco na frente dos números
		int numberOfWhiteSpaces = (rows-i)*2;

		// imprimir espaços em branco iniciais
		printString(" ", numberOfWhiteSpaces);

		// imprimir números
		for(int x=1; x0; j--) {
			System.out.print(j+" ");
		}

		// ir para a próxima linha
		System.out.println("");
	}
}

Observe que cada linha tem 2*r-1 números. Então teremos (linhas-i)*2 espaços em branco antes de imprimir qualquer número. Em seguida, os números começam de 1 até “i” e depois voltam para 1. Nossa lógica para imprimir os números exigiria dois loops for para alcançar isso.

Programa de Padrão de Pirâmide 5 em Java

/**
 * 
 *                9 
                8 9 8 
              7 8 9 8 7 
            6 7 8 9 8 7 6 
          5 6 7 8 9 8 7 6 5 
        4 5 6 7 8 9 8 7 6 5 4 
      3 4 5 6 7 8 9 8 7 6 5 4 3 
    2 3 4 5 6 7 8 9 8 7 6 5 4 3 2 
  1 2 3 4 5 6 7 8 9 8 7 6 5 4 3 2 1 
*/
private static void printPattern5(int rows) {
	// loop for para as linhas
	for (int i = rows; i >= 1; i--) {
		// espaços em branco na frente dos números
		int numberOfWhiteSpaces = i*2;

		// imprimir espaços em branco iniciais
		printString(" ", numberOfWhiteSpaces);

		// imprimir números
		for(int x=i; x=i; j--) {
			System.out.print(j+" ");
		}

		// ir para a próxima linha
		System.out.println("");
	}
}

Padrão de Pirâmide Invertida de Caracteres

Aqui está o trecho de código para o programa da pirâmide invertida.

/**
 * 
* * * * * * * * * 
 * * * * * * * * 
  * * * * * * * 
   * * * * * * 
    * * * * * 
     * * * * 
      * * * 
       * * 
        * 
 */
private static void printPattern6(int rows) {
	// loop for para as linhas
	for (int i = rows; i >= 1; i--) {
		// espaços em branco na frente dos números
		int numberOfWhiteSpaces = rows - i;

		// imprimir espaços em branco à frente
		printString(" ", numberOfWhiteSpaces);

		// imprimir caractere
		printString("* ", i);

		// mover para a próxima linha
		System.out.println("");
	}
}

Padrão de Pirâmide Invertida de Números

Vamos ver um exemplo de padrão de pirâmide invertida feito de números.

	/**
	 * 
9 9 9 9 9 9 9 9 9 
 8 8 8 8 8 8 8 8 
  7 7 7 7 7 7 7 
   6 6 6 6 6 6 
    5 5 5 5 5 
     4 4 4 4 
      3 3 3 
       2 2 
        1 
	 */
private static void printPattern7(int rows) {
	// loop for para as linhas
	for (int i = rows; i >= 1; i--) {
		// espaços em branco na frente dos números
		int numberOfWhiteSpaces = rows - i;

		// imprimir espaços em branco à frente
		printString(" ", numberOfWhiteSpaces);

		// imprimir caractere
		printString(i+" ", i);

		// mover para a próxima linha
		System.out.println("");
	}
}

Conclusão

Existem muitos tipos de padrões de pirâmide. O ponto mais importante é entender o padrão no qual os números e os espaços em branco estão organizados. Uma vez que você tem clareza sobre o padrão, pode escrever código facilmente em Java ou em qualquer outra linguagem de programação. Por favor, me avise se você está procurando por algum programa de padrão específico e tentarei ajudar você.

Leitura Adicional

Programas de String em Java e Perguntas de Entrevista de Programação em Java

Você pode conferir o código completo e mais exemplos de programação em nosso Repositório no GitHub.

Source:
https://www.digitalocean.com/community/tutorials/pyramid-pattern-programs-in-java