Mudanças entre as edições de "Mike Igor Camilo Domingues"

De MediaWiki do Campus São José
Ir para navegação Ir para pesquisar
(Criou página com '= Desenhando um retângulo no terminal utilizando C = Como estamos trabalhando com o terminal temos que programar a construção do retângulo pensando em linha por linha!...')
 
 
(11 revisões intermediárias pelo mesmo usuário não estão sendo mostradas)
Linha 5: Linha 5:
 
Exemplo de desenho
 
Exemplo de desenho
 
      
 
      
   #####
+
   #####
   #  #
+
  #  #  
   #####
+
   #  #  
 +
   #####  
 
      
 
      
 
Olhando para o exemplo acima e analisando linha por linha podemos desenhar ele em 5 etapas.
 
Olhando para o exemplo acima e analisando linha por linha podemos desenhar ele em 5 etapas.
 
      
 
      
1º Margem superior
+
*1º Margem superior.
 
      
 
      
A base superior, que é composta por:
+
*Topo, que é composta por:  
margem lateral + (caractere '#')vezes o tamanho da base + margem lateral.
+
**margem lateral + (caractere '#')* tamanho_da_base + margem lateral.
 
      
 
      
3º Meio do desenho, composto por:
+
*3º Meio do desenho, composto por:  
margem lateral + caractere '#' + espaços em branco + caractere '#' + margem lateral
+
**margem lateral + caractere '#' + (espaços em branco)*(tamanho_da_base - 2) + caractere '#' + margem lateral.
Fazemos a multiplicação desse passo pela (altura) -2, esse -2 aparece porque separamos o desenho em
+
 
algumas partes, ele fica completo com a base superior e inferior.
+
*4º Base, composta por:
 +
**margem lateral + (caractere '#')* tamanho_da_base + margem lateral.
 
      
 
      
4º Base inferior, que é igual a base superior;
+
*5º Margem Inferior.
   
 
5º Margem Inferior
 
  
 
{{collapse top | Código simples}}
 
{{collapse top | Código simples}}
Linha 31: Linha 31:
 
int desenhar_retang(int margem, int base, int altura) {
 
int desenhar_retang(int margem, int base, int altura) {
 
      
 
      
     // 1º Margem superior
+
      
     for (int i = 0; i < margem; ++i) {
+
     for (int i = 0; i < margem; ++i) {       // 1º Margem superior, um for para desenhar a margem
         printf("\n"); // Um simples \n para quebrar base!
+
         printf("\n"); // Um simples "\n" para quebrar a linha
 
     }
 
     }
  
     // 2.1º Base superior - Margem lateral
+
      
     for (int i = 0; i < margem; ++i) {
+
     for (int i = 0; i < margem; ++i) {       // 2.1º Topo - Margem lateral
 
         printf(" ");
 
         printf(" ");
     }
+
     }  
    // 2.2º Base superior - Linha de caracteres '#'
+
     for (int i = 0; i < base; ++i) {         // 2.2º Topo - Linha de caracteres '#'
     for (int i = 0; i < base; ++i) {
 
 
         printf("#");
 
         printf("#");
     }
+
     }  
    // 2.3º Base superior - Margem Lateral
+
     for (int i = 0; i < base; ++i) {         // 2.3º Topo - Margem Lateral
     for (int i = 0; i < base; ++i) {
 
 
         printf(" ");
 
         printf(" ");
 
     }
 
     }
     printf("\n");
+
     printf("\n");//
  
 
     //Aqui temos um for para a quantidade de linhas repetidas e dentro dele a construção de cada linha!
 
     //Aqui temos um for para a quantidade de linhas repetidas e dentro dele a construção de cada linha!
 
     for (int k = 0; k < altura - 2; ++k) {
 
     for (int k = 0; k < altura - 2; ++k) {
         // 3.1° Meio do desenho - Margem lateral
+
          
         for (int i = 0; i < margem; ++i) {
+
         for (int i = 0; i < margem; ++i) {         // 3.1° Meio do desenho - Margem lateral
 
             printf(" ");
 
             printf(" ");
         }
+
         }      
        // 3.2° Meio do desenho - Caractér '#'
+
         printf("#");                               // 3.Meio do desenho - Caractere '#'       
         printf("#");
+
         for (int i = 0; i < base - 2; ++i) {       // 3.3° Meio do desenho - Espaços em branco
        // 3.Meio do desenho - Espaços em branco
 
         for (int i = 0; i < base - 2; ++i) {
 
 
             printf(" ");
 
             printf(" ");
         }
+
         }      
        // 3.4° Meio do desenho - Caractér "#"
+
         printf("#");                               // 3.Meio do desenho - Caractere "#"       
         printf("#");
+
         for (int i = 0; i < margem; ++i) {         // 3.5° Meio do desenho - Margem lateral
        // 3.Meio do desenho - Margem lateral
 
         for (int i = 0; i < margem; ++i) {
 
 
             printf(" ");
 
             printf(" ");
 
         }
 
         }
Linha 71: Linha 65:
 
     }
 
     }
  
     // 4.1º Linha superior - Margem lateral
+
      
     for (int i = 0; i < margem; ++i) {
+
    for (int i = 0; i < margem; ++i) {            // 4.1º Base - Margem lateral
 +
        printf(" ");
 +
    } 
 +
    for (int i = 0; i < base; ++i) {              // 4.2º Base - Linha de caracteres
 +
        printf("#");
 +
    }   
 +
     for (int i = 0; i < margem; ++i) {             // 4.3º Base - Margem Lateral
 
         printf(" ");
 
         printf(" ");
 
     }
 
     }
     // 4.2º Linha superior - Linha de caracteres
+
      
     for (int i = 0; i < base; ++i) {
+
     for (int i = 0; i < margem; ++i) {             // 5º Margem superior
         printf("#");
+
         printf("\n");
 
     }
 
     }
     // 4.3º Linha superior - Margem Lateral
+
 
 +
}
 +
 
 +
 
 +
int main()
 +
{
 +
     desenhar_retang(2,30,10);
 +
    return 0;
 +
}
 +
 
 +
</syntaxhighlight>
 +
 
 +
{{collapse bottom}}
 +
 
 +
==Podemos melhorar esse código criando algumas funções: ==
 +
 
 +
Função para desenhar a margem lateral que se repete durante o código todo, ela recebe como parâmetro o tamanho da margem.
 +
{{collapse top | Função margem Lateral}}
 +
<syntaxhighlight lang=c>
 +
int margemLateral(int margem){
 
     for (int i = 0; i < margem; ++i) {
 
     for (int i = 0; i < margem; ++i) {
 
         printf(" ");
 
         printf(" ");
 
     }
 
     }
 +
}
 +
</syntaxhighlight>
 +
 +
{{collapse bottom}}
 +
 +
Ou podemos criar uma função que receba o caractere e a quantidade de vezes que ele deve aparecer:
 +
 +
{{collapse top | Função desenha caractere}}
 +
<syntaxhighlight lang=c>
 +
int desenhaCaractere(char caractere, int quantidade){
 +
    for (int i = 0; i < quantidade; ++i) {
 +
        printf(caractere);
 +
    }
 +
}
 +
</syntaxhighlight>
  
    // 5º Margem superior
+
{{collapse bottom}}
     for (int i = 0; i < margem; ++i) {
+
 
         printf("\n"); // Um simples \n para quebrar base!
+
{{collapse top | Código utilizando a função desenhaCaractere}}
 +
<syntaxhighlight lang=c>
 +
#include <stdio.h>
 +
 
 +
int desenhaCaractere(char caractere, int quantidade){
 +
     for (int i = 0; i < quantidade; ++i) {             //Loop para desenhar a quantidade de caracteres.
 +
         printf("%c", caractere);                        //Printa o caractere.
 +
    }
 +
    return 0;
 +
}
 +
 
 +
int desenhar_retang(int margem, int base, int altura) {
 +
 
 +
 
 +
    desenhaCaractere('\n',margem);              // 1º Margem superior
 +
 
 +
    desenhaCaractere(' ',margem);              // 2.1º Topo - Margem lateral
 +
    desenhaCaractere('#',base);                // 2.2º Topo - Linha de caracteres '#'
 +
    desenhaCaractere(' ',margem);               // 2.3º Topo - Margem Lateral
 +
    printf("\n");
 +
 
 +
 
 +
    //Aqui temos um for para a quantidade de linhas repetidas e dentro dele a construção de cada linha!
 +
    for (int k = 0; k < altura - 2; ++k) {
 +
        desenhaCaractere(' ',margem);          // 3.1º Meio do desenho - Margem lateral
 +
        printf("#");                            // 3.2º Meio do desenho - Caractér '#'
 +
        desenhaCaractere(' ',base-2);          // 3.3º Meio do desenho - Espaços em branco
 +
        printf("#");                            // 3.4º Meio do desenho - Caractér "#"
 +
        desenhaCaractere(' ',margem);          // 3.5º Meio do desenho - Margem lateral
 +
        printf("\n");
 
     }
 
     }
  
 +
    desenhaCaractere(' ',margem);              // 4.1º Base - Margem lateral
 +
    desenhaCaractere('#',base);                // 4.2º Base - Linha de caracteres
 +
    desenhaCaractere(' ',margem);              // 4.3º Base - Margem Lateral
 +
 +
    desenhaCaractere('\n',margem);              // 5º Margem superior
 
}
 
}
  
Linha 97: Linha 165:
 
     return 0;
 
     return 0;
 
}
 
}
 
 
</syntaxhighlight>
 
</syntaxhighlight>
  
 
{{collapse bottom}}
 
{{collapse bottom}}
 +
 +
= Desafio: Calcular desvio padrão utilizando C =
 +
Fiz um video simples de 15 minutos da resolução do desafio.
 +
 +
Link: https://www.youtube.com/watch?v=ubFc30sC31M

Edição atual tal como às 11h10min de 8 de outubro de 2021

Desenhando um retângulo no terminal utilizando C

Como estamos trabalhando com o terminal temos que programar a construção do retângulo pensando em linha por linha!

Exemplo de desenho

 ##### 
 #   # 
 #   # 
 ##### 
    

Olhando para o exemplo acima e analisando linha por linha podemos desenhar ele em 5 etapas.

  • 1º Margem superior.
  • 2º Topo, que é composta por:
    • margem lateral + (caractere '#')* tamanho_da_base + margem lateral.
  • 3º Meio do desenho, composto por:
    • margem lateral + caractere '#' + (espaços em branco)*(tamanho_da_base - 2) + caractere '#' + margem lateral.
  • 4º Base, composta por:
    • margem lateral + (caractere '#')* tamanho_da_base + margem lateral.
  • 5º Margem Inferior.
Código simples
#include <stdio.h>

int desenhar_retang(int margem, int base, int altura) {
    
    
    for (int i = 0; i < margem; ++i) {        // 1º Margem superior, um for para desenhar a margem
        printf("\n"); // Um simples "\n" para quebrar a linha
    }

    
    for (int i = 0; i < margem; ++i) {        // 2.1º Topo - Margem lateral
        printf(" ");
    }    
    for (int i = 0; i < base; ++i) {          // 2.2º Topo - Linha de caracteres '#'
        printf("#");
    }    
    for (int i = 0; i < base; ++i) {          // 2.3º Topo - Margem Lateral
        printf(" ");
    }
    printf("\n");//

    //Aqui temos um for para a quantidade de linhas repetidas e dentro dele a construção de cada linha!
    for (int k = 0; k < altura - 2; ++k) {
        
        for (int i = 0; i < margem; ++i) {         // 3.1° Meio do desenho - Margem lateral
            printf(" ");
        }        
        printf("#");                               // 3.2° Meio do desenho - Caractere '#'        
        for (int i = 0; i < base - 2; ++i) {       // 3.3° Meio do desenho - Espaços em branco
            printf(" ");
        }       
        printf("#");                               // 3.4° Meio do desenho - Caractere "#"        
        for (int i = 0; i < margem; ++i) {         // 3.5° Meio do desenho - Margem lateral
            printf(" ");
        }
        printf("\n");
    }

    
    for (int i = 0; i < margem; ++i) {             // 4.1º Base - Margem lateral
        printf(" ");
    }   
    for (int i = 0; i < base; ++i) {               // 4.2º Base - Linha de caracteres
        printf("#");
    }    
    for (int i = 0; i < margem; ++i) {             // 4.3º Base - Margem Lateral
        printf(" ");
    }
    
    for (int i = 0; i < margem; ++i) {             // 5º Margem superior
        printf("\n");
    }

}


int main()
{
    desenhar_retang(2,30,10);
    return 0;
}

Podemos melhorar esse código criando algumas funções:

Função para desenhar a margem lateral que se repete durante o código todo, ela recebe como parâmetro o tamanho da margem.

Função margem Lateral
int margemLateral(int margem){
    for (int i = 0; i < margem; ++i) {
        printf(" ");
    }
}

Ou podemos criar uma função que receba o caractere e a quantidade de vezes que ele deve aparecer:

Função desenha caractere
int desenhaCaractere(char caractere, int quantidade){
    for (int i = 0; i < quantidade; ++i) {
        printf(caractere);
    }
}
Código utilizando a função desenhaCaractere
#include <stdio.h>

int desenhaCaractere(char caractere, int quantidade){
    for (int i = 0; i < quantidade; ++i) {              //Loop para desenhar a quantidade de caracteres.
        printf("%c", caractere);                        //Printa o caractere.
    }
    return 0;
}

int desenhar_retang(int margem, int base, int altura) {


    desenhaCaractere('\n',margem);              // 1º Margem superior

    desenhaCaractere(' ',margem);               // 2.1º Topo - Margem lateral
    desenhaCaractere('#',base);                 // 2.2º Topo - Linha de caracteres '#'
    desenhaCaractere(' ',margem);               // 2.3º Topo - Margem Lateral
    printf("\n");


    //Aqui temos um for para a quantidade de linhas repetidas e dentro dele a construção de cada linha!
    for (int k = 0; k < altura - 2; ++k) {
        desenhaCaractere(' ',margem);           // 3.1º Meio do desenho - Margem lateral
        printf("#");                            // 3.2º Meio do desenho - Caractér '#'
        desenhaCaractere(' ',base-2);           // 3.3º Meio do desenho - Espaços em branco
        printf("#");                            // 3.4º Meio do desenho - Caractér "#"
        desenhaCaractere(' ',margem);           // 3.5º Meio do desenho - Margem lateral
        printf("\n");
    }

    desenhaCaractere(' ',margem);               // 4.1º Base - Margem lateral
    desenhaCaractere('#',base);                 // 4.2º Base - Linha de caracteres
    desenhaCaractere(' ',margem);               // 4.3º Base - Margem Lateral

    desenhaCaractere('\n',margem);              // 5º Margem superior
}


int main()
{
    desenhar_retang(2,30,10);
    return 0;
}

Desafio: Calcular desvio padrão utilizando C

Fiz um video simples de 15 minutos da resolução do desafio.

Link: https://www.youtube.com/watch?v=ubFc30sC31M