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
 
(7 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.
 
      
 
      
*2º Base superior, que é composta por:
+
*2º Topo, que é composta por:  
margem lateral + (caractere '#')* 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.
  
*4º Base inferior, composta por:
+
*4º Base, composta por:  
margem lateral + (caractere '#')* tamanho_da_base + margem lateral;
+
**margem lateral + (caractere '#')* tamanho_da_base + margem lateral.
 
      
 
      
 
*5º Margem Inferior.
 
*5º Margem Inferior.
Linha 30: Linha 31:
 
int desenhar_retang(int margem, int base, int altura) {
 
int desenhar_retang(int margem, int base, int altura) {
 
      
 
      
     // 1º Margem superior, um for para a quantidade de margens
+
      
     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 a linha
 
         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(" ");
 
     }
 
     }
Linha 51: Linha 50:
 
     //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 - Caractere '#'
+
         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 - Caractere "#"
+
         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 70: 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>
 +
 +
{{collapse bottom}}
 +
 +
{{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");
 +
  
     // 5º Margem superior
+
     //Aqui temos um for para a quantidade de linhas repetidas e dentro dele a construção de cada linha!
     for (int i = 0; i < margem; ++i) {
+
     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");
 
         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 96: 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