Laboratório 01
A documentação desta atividade de laboratório é complementar a documentação principal da disciplina.
Utilize como base a descrição apresentada no Moodle da disciplina.
| Tarefa | Template | Início | Fim | Conteúdo |
|---|---|---|---|---|
| LAB01 | TPL01 | 23-Mar-2026 | 30-Mar-2026 | Ambiente de desenvolvimento VS Code; Uso do git e GitHub; |
Conteúdo
Git e GitHub; Ambiente de desenvolvimento;
- Uso do Git;
- Uso do GitHub;
- Crie uma organização no GitHub;
- Adicione os membros do seu grupo;
- Promova o professor como owner;
- Ambiente de desenvolvimento;
- Comandos básicos, git e GitHub;
Verifique o seu ambiente de desenvolvimento
- Git SCM
- GitHub CLI
- VS Code
- STM32CubeIDE
- PlatformIO
Git is the most widely used source-code management tool among professional developers.
- Git is a free and open source distributed version control system designed to handle everything from small to very large projects with speed and efficiency.
winget install --id Git.Git -e --source winget
Configurações do git:
git config --list --show-origin
GitHub CLI brings GitHub to your terminal.
- GitHub CLI is a command line tool that allows you to interact with GitHub from the command line. It is available for Windows, macOS, and Linux.
winget install --id GitHub.cli -e --source winget
Status de login do GitHub CLI:
gh auth status
Visual Studio Code: IDE and Code Editor for Software Development.
- VS Code is a free source-code editor made by Microsoft for Windows, Linux and macOS. It includes support for debugging, embedded Git control, syntax highlighting, intelligent code completion, snippets, and code refactoring.
winget install --id Microsoft.VisualStudioCode -e --source winget
Extensões instaladas do Visual Studio Code para o perfil STM32:
code --list-extensions --profile "STM32"
STM32CubeIDE for Visual Studio Code: development experience for STM32 microcontrollers.
- STM32CubeIDE for Visual Studio Code is designed to enhance the development experience for STM32 microcontrollers by providing a comprehensive and updatable set of tools. The extension pack allow users to install one single pack bringing a full STM32 IDE experience into VS Code.
code --install-extension stmicroelectronics.stm32-vscode-extension --profile "STM32"
PlatformIO IDE for VSCode: Your Gateway to Embedded Software Development Excellence.
- PlatformIO IDE for VSCode Unlock the true potential of embedded software development with PlatformIO’s collaborative ecosystem, embracing declarative principles, test-driven methodologies, and modern toolchains for unrivaled success.
code --install-extension platformio.platformio-ide --profile "STM32IO"
You need to edit the system environment variable called Path and append %USERPROFILE%\.platformio\penv\Scripts\ path in the beginning of the list.
Configure a ferramenta git
Configure o nome de usuário para todos os repositórios locais ligados às suas transações de commit:
git config --global user.name "Your Name"
Configure o email de usuário para todos os repositórios locais ligados às suas transações de commit:
git config --global user.email "you@example.com"
É recomendado verificar se a instalação do seu Git não está realizando nenhuma transformação entre LFs e CRLFs.
git config --global core.autocrlf false
Configure o git para usar o Visual Studio Code como editor padrão para tarefas como escrever mensagens de commit ou rebases interativos
git config --global core.editor "code --wait"
Habilite a coloração automática da saída da linha de comando do Git:
git config --global color.ui auto
Configura o Git para usar main como o nome do branch padrão sempre que você inicializar um novo repositório localmente:
git config --global init.defaultBranch main
Liste as configurações aplicadas:
git config --list --show-origin
Verifique o seu ambiente de desenvolvimento!
Versão do git e configurações:
git --version
git config --list --show-origin
Versão do GitHub CLI e status de login:
gh --version
gh auth status
Versão do Visual Studio Code e extensões instaladas:
code -v
code --list-extensions --profile "STM32"
Crie um novo repositório com base no template do LAB01
Escolha o Grupo e entre com o comando abaixo para criar o repositório no GitHub:
- A
- B
- C
- D
- E
- F
- G
- H
- I
- J
- K
- L
- X
- Grupo S22-A: https://github.com/ELT73A-S22-2026-1-A
- LAB Template: https://github.com/ELT73A-LAB-TPL/LAB01
Use o comando abaixo para criar o repositório no GitHub com base no template do laboratório LAB01:
gh repo create ELT73A-S22-2026-1-A/LAB01 --private -p ELT73A-LAB-TPL/LAB01 -c
Visualize o repositório:
gh repo view ELT73A-S22-2026-1-A/LAB01 --web
Abra o repositório clonado no VS Code:
code LAB01 --profile "STM32"
- Grupo S22-B: https://github.com/ELT73A-S22-2026-1-B
- LAB Template: https://github.com/ELT73A-LAB-TPL/LAB01
Use o comando abaixo para criar o repositório no GitHub com base no template do laboratório LAB01:
gh repo create ELT73A-S22-2026-1-B/LAB01 --private -p ELT73A-LAB-TPL/LAB01 -c
Visualize o repositório:
gh repo view ELT73A-S22-2026-1-B/LAB01 --web
Abra o repositório clonado no VS Code:
code LAB01 --profile "STM32"
- Grupo S22-C: https://github.com/ELT73A-S22-2026-1-C
- LAB Template: https://github.com/ELT73A-LAB-TPL/LAB01
Use o comando abaixo para criar o repositório no GitHub com base no template do laboratório LAB01:
gh repo create ELT73A-S22-2026-1-C/LAB01 --private -p ELT73A-LAB-TPL/LAB01 -c
Visualize o repositório:
gh repo view ELT73A-S22-2026-1-C/LAB01 --web
Abra o repositório clonado no VS Code:
code LAB01 --profile "STM32"
- Grupo S22-D: https://github.com/ELT73A-S22-2026-1-D
- LAB Template: https://github.com/ELT73A-LAB-TPL/LAB01
Use o comando abaixo para criar o repositório no GitHub com base no template do laboratório LAB01:
gh repo create ELT73A-S22-2026-1-D/LAB01 --private -p ELT73A-LAB-TPL/LAB01 -c
Visualize o repositório:
gh repo view ELT73A-S22-2026-1-D/LAB01 --web
Abra o repositório clonado no VS Code:
code LAB01 --profile "STM32"
- Grupo S22-E: https://github.com/ELT73A-S22-2026-1-E
- LAB Template: https://github.com/ELT73A-LAB-TPL/LAB01
Use o comando abaixo para criar o repositório no GitHub com base no template do laboratório LAB01:
gh repo create ELT73A-S22-2026-1-E/LAB01 --private -p ELT73A-LAB-TPL/LAB01 -c
Visualize o repositório:
gh repo view ELT73A-S22-2026-1-E/LAB01 --web
Abra o repositório clonado no VS Code:
code LAB01 --profile "STM32"
- Grupo S22-F: https://github.com/ELT73A-S22-2026-1-F
- LAB Template: https://github.com/ELT73A-LAB-TPL/LAB01
Use o comando abaixo para criar o repositório no GitHub com base no template do laboratório LAB01:
gh repo create ELT73A-S22-2026-1-F/LAB01 --private -p ELT73A-LAB-TPL/LAB01 -c
Visualize o repositório:
gh repo view ELT73A-S22-2026-1-F/LAB01 --web
Abra o repositório clonado no VS Code:
code LAB01 --profile "STM32"
- Grupo S22-G: https://github.com/ELT73A-S22-2026-1-G
- LAB Template: https://github.com/ELT73A-LAB-TPL/LAB01
Use o comando abaixo para criar o repositório no GitHub com base no template do laboratório LAB01:
gh repo create ELT73A-S22-2026-1-G/LAB01 --private -p ELT73A-LAB-TPL/LAB01 -c
Visualize o repositório:
gh repo view ELT73A-S22-2026-1-G/LAB01 --web
Abra o repositório clonado no VS Code:
code LAB01 --profile "STM32"
- Grupo S22-H: https://github.com/ELT73A-S22-2026-1-H
- LAB Template: https://github.com/ELT73A-LAB-TPL/LAB01
Use o comando abaixo para criar o repositório no GitHub com base no template do laboratório LAB01:
gh repo create ELT73A-S22-2026-1-H/LAB01 --private -p ELT73A-LAB-TPL/LAB01 -c
Visualize o repositório:
gh repo view ELT73A-S22-2026-1-H/LAB01 --web
Abra o repositório clonado no VS Code:
code LAB01 --profile "STM32"
- Grupo S22-I: https://github.com/ELT73A-S22-2026-1-I
- LAB Template: https://github.com/ELT73A-LAB-TPL/LAB01
Use o comando abaixo para criar o repositório no GitHub com base no template do laboratório LAB01:
gh repo create ELT73A-S22-2026-1-I/LAB01 --private -p ELT73A-LAB-TPL/LAB01 -c
Visualize o repositório:
gh repo view ELT73A-S22-2026-1-I/LAB01 --web
Abra o repositório clonado no VS Code:
code LAB01 --profile "STM32"
- Grupo S22-J: https://github.com/ELT73A-S22-2026-1-J
- LAB Template: https://github.com/ELT73A-LAB-TPL/LAB01
Use o comando abaixo para criar o repositório no GitHub com base no template do laboratório LAB01:
gh repo create ELT73A-S22-2026-1-J/LAB01 --private -p ELT73A-LAB-TPL/LAB01 -c
Visualize o repositório:
gh repo view ELT73A-S22-2026-1-J/LAB01 --web
Abra o repositório clonado no VS Code:
code LAB01 --profile "STM32"
- Grupo S22-K: https://github.com/ELT73A-S22-2026-1-K
- LAB Template: https://github.com/ELT73A-LAB-TPL/LAB01
Use o comando abaixo para criar o repositório no GitHub com base no template do laboratório LAB01:
gh repo create ELT73A-S22-2026-1-K/LAB01 --private -p ELT73A-LAB-TPL/LAB01 -c
Visualize o repositório:
gh repo view ELT73A-S22-2026-1-K/LAB01 --web
Abra o repositório clonado no VS Code:
code LAB01 --profile "STM32"
- Grupo S22-L: https://github.com/ELT73A-S22-2026-1-L
- LAB Template: https://github.com/ELT73A-LAB-TPL/LAB01
Use o comando abaixo para criar o repositório no GitHub com base no template do laboratório LAB01:
gh repo create ELT73A-S22-2026-1-L/LAB01 --private -p ELT73A-LAB-TPL/LAB01 -c
Visualize o repositório:
gh repo view ELT73A-S22-2026-1-L/LAB01 --web
Abra o repositório clonado no VS Code:
code LAB01 --profile "STM32"
- Grupo S22-X: https://github.com/ELT73A-S22-2026-1-X
- LAB Template: https://github.com/ELT73A-LAB-TPL/LAB01
Use o comando abaixo para criar o repositório no GitHub com base no template do laboratório LAB01:
gh repo create ELT73A-S22-2026-1-X/LAB01 --private -p ELT73A-LAB-TPL/LAB01 -c
Visualize o repositório:
gh repo view ELT73A-S22-2026-1-X/LAB01 --web
Abra o repositório clonado no VS Code:
code LAB01 --profile "STM32"
Git e GitHub
- Definições;
- Uso do GitHub;
O GitHub é uma plataforma de hospedagem de código-fonte e arquivos com controle de versão usando o Git.
Git
| Git | Git |
|---|---|
| O Git é um programa de código aberto para acompanhamento de alterações em arquivos de texto. Ele foi escrito pelo autor do sistema operacional Linux e é a principal tecnologia na qual o GitHub, a interface social e do usuário, se baseia. | Git is an open source program for tracking changes in text files. It was written by the author of the Linux operating system, and is the core technology that GitHub, the social and user interface, is built on top of. |
repository
| Repositório | Repository |
|---|---|
| Um repositório é o elemento mais básico do GitHub. É mais fácil imaginá-lo como uma pasta de projetos. Um repositório contém todos os arquivos de projeto (incluindo a documentação) e armazena o histórico de revisão de cada arquivo. Os repositórios podem ter vários colaboradores e podem ser públicos ou privados. | A repository is the most basic element of GitHub. They're easiest to imagine as a project's folder. A repository contains all of the project files (including documentation), and stores each file's revision history. Repositories can have multiple collaborators and can be either public or private. |
commit
git-commit - Record changes to the repository
| confirmar | commit |
|---|---|
| Commit, ou "revisão", é uma alteração individual em um arquivo (ou conjunto de arquivos). Quando você faz um commit para salvar seu trabalho, o Git cria uma ID exclusiva (também conhecida como o "SHA" ou "hash") que permite que você mantenha o registro das alterações específicas confirmadas com quem as fez e quando. Os commits normalmente contêm uma mensagem do commit, que é uma breve descrição de quais alterações foram feitas. | A commit, or "revision", is an individual change to a file (or set of files). When you make a commit to save your work, Git creates a unique ID (a.k.a. the "SHA" or "hash") that allows you to keep record of the specific changes committed along with who made them and when. Commits usually contain a commit message which is a brief description of what changes were made. |
git help commit
pull
| pull | pull |
|---|---|
| Pull refere-se a quando você busca alterações e as mescla. Por exemplo, se alguém editou o arquivo remoto no qual vocês dois estão trabalhando, o ideal é fazer pull dessas alterações na cópia local para que ele fique atualizado. Confira também fetch. | Pull refers to when you are fetching in changes and merging them. For instance, if someone has edited the remote file you're both working on, you'll want to pull in those changes to your local copy so that it's up to date. See also fetch. |
git help pull
fetch
| fetch | fetch |
|---|---|
Ao usar git fetch, você está adicionando alterações do repositório remoto ao branch de trabalho local sem fazer commit delas. Ao contrário de git pull, a busca permite que você revise as alterações antes de fazer commit delas no branch local. | When you use git fetch, you're adding changes from the remote repository to your local working branch without committing them. Unlike git pull, fetching allows you to review changes before committing them to your local branch. |
git help fetch
clone
git-clone - Clone a repository into a new directory
| clone | clone |
|---|---|
| Um clone é uma cópia de um repositório que fica em seu computador em vez de ficar em algum outro lugar em um servidor de site. Clonar significa o ato de fazer essa cópia. Quando você faz um clone, é possível editar os arquivos no seu editor preferido e usar o Git para acompanhar as alterações sem precisar ficar online. O repositório clonado ainda está conectado à versão remota, ou seja, você poderá enviar as alterações locais por push ao repositório remoto para mantê-las sincronizadas quando estiver online. | A clone is a copy of a repository that lives on your computer instead of on a website's server somewhere, or the act of making that copy. When you make a clone, you can edit the files in your preferred editor and use Git to keep track of your changes without having to be online. The repository you cloned is still connected to the remote version so that you can push your local changes to the remote to keep them synced when you're online. |
git help clone
push
git-push - Update remote refs along with associated objects
| efetuar push | push |
|---|---|
| Enviar por push significa enviar as alterações confirmadas para um repositório remoto no GitHub.com. Por exemplo, se você alterar algo localmente, poderá enviar por push essas alterações para que outras pessoas possam acessá-las. | To push means to send your committed changes to a remote repository on GitHub.com. For instance, if you change something locally, you can push those changes so that others may access them. |
git help push
branch
git-branch - List, create, or delete branches
| branch | branch |
|---|---|
| Um branch é uma versão paralela de um repositório. Está no repositório, mas não afeta a ramificação principal ou primária e permite que você trabalhe à vontade, sem prejudicar a versão "online". Depois de fazer as alterações desejadas, você poderá fazer uma mesclagem do branch novamente com a ramificação principal para publicar as alterações. | A branch is a parallel version of a repository. It is contained within the repository, but does not affect the primary or main branch allowing you to work freely without disrupting the "live" version. When you've made the changes you want to make, you can merge your branch back into the main branch to publish your changes. |
git help branch
checkout
git-checkout - Switch branches or restore working tree files
| fazer checkout | checkout |
|---|---|
Use git checkout na linha de comando para criar um branch, alterar o branch de trabalho atual para outro branch ou até alternar para uma versão diferente de um arquivo de outro branch com git checkout [branchname] [path to file]. A ação de "check-out" atualiza toda ou parte da árvore de trabalho com um objeto de árvore ou um blob do banco de dados de objetos e atualiza o índice e o HEAD se toda a árvore de trabalho está apontando para um novo branch. | You can use git checkout on the command line to create a new branch, change your current working branch to a different branch, or even to switch to a different version of a file from a different branch with git checkout [branchname] [path to file]. The "checkout" action updates all or part of the working tree with a tree object or blob from the object database, and updates the index and HEAD if the whole working tree is pointing to a new branch. |
git help checkout
fork
| fork | fork |
|---|---|
| Uma bifurcação é uma cópia do repositório de outro usuário que está em sua conta. Os forks permitem que você faça alterações livremente em um projeto sem afetar o repositório upstream original. Você também pode abrir uma solicitação pull no repositório upstream e manter o fork sincronizado com as alterações mais recentes, pois os dois repositórios ainda estão conectados. | A fork is a personal copy of another user's repository that lives on your account. Forks allow you to freely make changes to a project without affecting the original upstream repository. You can also open a pull request in the upstream repository and keep your fork synced with the latest changes since both repositories are still connected. |
merge
git-merge - Join two or more development histories together
| mesclar | merge |
|---|---|
| O merge pega as alterações de um branch (no mesmo repositório ou a partir de uma bifurcação) e as aplica em outro. Normalmente, isso ocorre por meio de uma "solicitação de pull" (que pode ser considerada uma solicitação de mesclagem) ou por meio da linha de comando. Uma mesclagem pode ser feita por meio de uma solicitação de pull pela interface da Web GitHub.com se não há alterações conflitantes ou sempre pode ser feita por meio da linha de comando. | Merging takes the changes from one branch (in the same repository or from a fork), and applies them into another. This often happens as a "pull request" (which can be thought of as a request to merge), or via the command line. A merge can be done through a pull request via the GitHub.com web interface if there are no conflicting changes, or can always be done via the command line. |
git help merge
Exemplos
Iniciar um novo repositório e publicá-lo no GitHub
git initinicializa um novo repositório Git e começa a acompanhar um diretório existente. Ele adiciona uma subpasta oculta dentro do diretório existente que contém a estrutura de dados interna necessária para o controle de versão.git addprepara uma alteração. O Git controla as alterações na base de código de um desenvolvedor, mas é necessário testar e tirar um instantâneo das alterações para incluí-las no histórico do projeto. Este comando executa o teste, a primeira parte do processo de duas etapas. Todas as mudanças que são testadas irão tornar-se parte do próximo instantâneo e parte do histórico do projeto. O teste e o commit separados dão aos desenvolvedores total controle sobre o histórico do seu projeto sem alterar como eles codificam e funcionam.git commitsalva o instantâneo no histórico do projeto e conclui o processo de controle de alterações. Em suma, um commit funciona como tirar uma foto. Qualquer item que tenha sido preparado comgit addpassará a fazer parte do instantâneo comgit commit.git pushatualiza o repositório remoto com quaisquer commits feitos localmente em um branch.
create a new repository on the command line
gh repo create ELT73A-S22-2026-1-X/lab01-init --private
echo "# lab01-init" >> README.md
git init
git add README.md
git commit -m "first commit"
git branch -M main
git remote add origin https://github.com/ELT73A-S22-2026-1-X/lab01-init.git
git push -u origin main
push an existing repository from the command line
gh repo create ELT73A-S22-2026-1-X/lab01-push --private
git remote add origin https://github.com/ELT73A-S22-2026-1-X/lab01-push.git
# git remote set-url origin https://github.com/ELT73A-S22-2026-1-X/lab01-push.git
git branch -M main
git push -u origin main
clone an existing repository from the command line
git clone https://github.com/ELT73A-S22-2026-1-X/lab01-init.git
Contribuir para um repositório existente
# download a repository on GitHub to our machine
# Replace `owner/repo` with the owner and name of the repository to clone
git clone https://github.com/ELT73A-S22-2026-1-X/lab01-init.git
# change into the `repo` directory
cd lab01-init
# create a new branch to store any new changes
git branch my-branch
# switch to that branch (line of development)
git checkout my-branch
# make changes, for example, edit `file1.md` using the text editor
echo "# file 1 in lab01-init" >> file1.md
# stage the changed files
git add file1.md
# take a snapshot of the staging area (anything that's been added)
git commit -m "my snapshot"
# push changes to github
git push --set-upstream origin my-branch
Contribuir para uma ramificação existente no GitHub
# Replace `owner/repo` with the owner and name of the repository to clone
git clone https://github.com/ELT73A-S22-2026-1-X/lab01-init.git
# change into the `repo` directory
cd lab01-init
# update all remote tracking branches, and the currently checked out branch
git pull
# change into the existing branch called `feature-a`
git checkout feature-a
# make changes, for example, edit `file1.md` using the text editor
echo "# Add feature-a in lab01-init" >> file1.md
# stage the changed file
git add file1.md
# take a snapshot of the staging area
git commit -m "edit file1"
# push changes to github
git push
Mesclar feature-a
# Switch to the main branch
git checkout main
# Pull the latest changes from GitHub
git pull origin main
# Merge feature-a into your current branch (main)
git merge feature-a
# Remove a Remote Branch
git push origin --delete feature-a
Criando diagramas
Here is a simple flow chart:
Como escrever expressões matemáticas
**The Cauchy-Schwarz Inequality**\
$$\left( \sum_{k=1}^n a_k b_k \right)^2 \leq \left( \sum_{k=1}^n a_k^2 \right) \left( \sum_{k=1}^n b_k^2 \right)$$
The Cauchy-Schwarz Inequality
Static Badge
Como formatar o seu código em C no VScode
Como formatar o seu código em C no VScode
Escolha e configuração de temas no VScode
Escolha e configuração de temas no VScode
code --list-extensions --profile "Markdown"
{
"recommendations": [
/* Markdown & Documentation */
"yzhang.markdown-all-in-one",
"tomasdahlqvist.markdown-admonitions",
"bierner.markdown-footnotes",
"bierner.markdown-mermaid",
"davidanson.vscode-markdownlint",
/* Formatting & UI */
"dbaeumer.vscode-eslint",
"esbenp.prettier-vscode",
"pkief.material-icon-theme"
// Add other relevant extensions
]
}
{
"workbench.iconTheme": "material-icon-theme",
"editor.formatOnSave": true,
"terminal.integrated.defaultProfile.windows": "Command Prompt",
"editor.formatOnPaste": true,
"[markdown]": {
"editor.defaultFormatter": "yzhang.markdown-all-in-one"
}
}
mkdir helloworld
cd helloworld
code .
#include <stdio.h>
int main() {
printf("Hello World!");
return 0;
}
git init
git add .
git commit -m "First Commit!"
If you have a local Git repository you want to push to GitHub, you can use:
gh repo create ELT73A-S22-2025-2-X/helloworld --source=. --public --push
Description of the repository
gh repo edit -d "Description of the repository"
Make the repository available as a template repository
gh repo edit --template
Uso do GitHub CLI
Create a new remote repository in a different organization
gh repo create ELT73A-S22-2026-1-X/LAB01 --public -c -l mit --add-readme -g C
Uso do git e GitHub
Instruções TODO
Esta atividade de laboratório tem como objetivo verificar a configuração adequada do ambiente de desenvolvimento e uso do Git e GitHub.
- Crie uma organização baseada no nome do grupo;
- Adicione os membros do seu grupo a organização;
- Adicione o professor como membro da organização;
- Commit e push dos arquivos gerados;
- Envie o link da organização (hyperlink);
- Envie o link do repositório no GitHub (hyperlink);
Avaliação TODO
- Crie uma organização baseada no nome do grupo - 10%
- Adicione os membros do seu grupo a organização - 10%
- Adicione o professor como membro da organização - 10%
- Envie o link da organização e do repositório no GitHub (hyperlink) - 20%