Skip to content

Commit

Permalink
Quartz sync: May 3, 2024, 12:52 AM
Browse files Browse the repository at this point in the history
  • Loading branch information
jocile committed May 3, 2024
1 parent 92824a7 commit f5fc101
Show file tree
Hide file tree
Showing 11 changed files with 536 additions and 22 deletions.
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
---
title: 01 Programador de Sistemas
title: 01 Cronograma Programador de Sistemas
tags:
- Senac
- planejamento
Expand Down Expand Up @@ -136,7 +136,6 @@ Competências:
> [!info]
> Outros Temas Geradores podem ser definidos em conjunto com os alunos, desde que constituam uma situação-problema e atendam aos 3 itens acima para a avaliação.

## Bibliografia

- XAVIER, Gley Fabiano Cardoso. Lógica de Programação. 13ª ed. Senac, São Paulo SP.
Expand All @@ -151,3 +150,5 @@ Competências:
- BRAGA, P. H. C. Testes de software. São Paulo: Pearson Education do Brasil, 2016. (ebook)
- GALOTTI, G. M. A. Qualidade de Software. São Paulo: Pearson Education do Brasil, 2016. (ebook)
- SOMERVILLE, I. Engenharia de software. São Paulo: Pearson Education do Brasil, 2018. (ebook)

[➡️02-logica-com-blocos](02-logica-com-blocos.md)
101 changes: 101 additions & 0 deletions content/programador/02-logica-com-blocos.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,101 @@
---
title: "02-lógica com blocos"
draft: false
tags:
- programador
- lógica
- algoritmos
---
A programação em blocos, também conhecida como programação visual, é uma maneira intuitiva e divertida de aprender e criar programas de computador. Imagine um quebra-cabeça, onde cada peça representa um comando ou ação. Ao encaixar as peças corretamente, você constrói a lógica do seu programa.

Em vez de escrever linhas de código complexas, você utiliza blocos coloridos interativos para montar a sequência de instruções. Cada bloco possui uma função específica, como mover um personagem, tocar um som ou fazer um cálculo. As cores e formatos dos blocos facilitam a identificação de sua função, tornando a programação mais acessível para iniciantes.

## Vantagens

- **Aprendizagem intuitiva:** Ideal para iniciantes, crianças e pessoas sem experiência anterior em programação.
- **Interface amigável:** O ambiente visual torna a programação mais divertida e engajadora.
- **Lógica de programação:** Desenvolve o raciocínio lógico, resolução de problemas e pensamento crítico.
- **Criatividade:** Estimula a criatividade e a capacidade de solucionar problemas de forma inovadora.
- **Trabalho em equipe:** Permite a colaboração entre pessoas com diferentes níveis de conhecimento em programação.

## Aplicações

- **Desenvolvimento de jogos:** Crie jogos interativos, plataformas, quebra-cabeças e muito mais.
- **Animações e histórias interativas:** Dê vida a histórias com personagens, sons e efeitos visuais.
- **Protótipos de aplicativos:** Crie modelos interativos de aplicativos para testar ideias e conceitos.
- **Ferramentas educativas:** Auxilie no aprendizado de diversas disciplinas de forma lúdica e interativa.
- **Robótica:** Programe robôs para realizar tarefas, se moverem e interagirem com o ambiente.

## Exemplos

- [**Scratch:**]([https://scratch.mit.edu/](https://scratch.mit.edu/)) - Uma plataforma popular para iniciantes, com interface amigável e grande comunidade online.
- [**Blockly:**]([https://blockly.games/](https://blockly.games/)) - Ferramenta versátil utilizada em diversos projetos, incluindo desenvolvimento web e robótica.
- [**Code.org:**]([https://studio.code.org/](https://studio.code.org/)) - Oferece cursos e desafios interativos para aprender conceitos básicos de programação.
- [**App Inventor:** ]([https://appinventor.mit.edu/](https://appinventor.mit.edu/)) - Permite criar aplicativos Android utilizando blocos visuais.
- [**Minecraft Education Edition:** ](https://education.minecraft.net/) - Integra conceitos de programação à jogabilidade do Minecraft.
- [godotengine.org](https://godotengine.org/)

A programação em blocos é uma ferramenta poderosa que abre portas para o mundo da criação digital. Através dela, você pode desenvolver jogos, animações, aplicativos e muito mais, tudo de forma intuitiva, divertida e acessível. Seja você um iniciante ou um programador experiente, a programação em blocos oferece uma maneira inovadora de aprender, criar e se expressar.

**Para mais informações:**

### Scratch

O Scratch é uma plataforma de programação em blocos que permite criar jogos, animações e histórias interativas de forma divertida e educativa. Ideal para iniciantes, crianças e pessoas sem experiência em programação, o Scratch oferece uma interface amigável e intuitiva, utilizando blocos coloridos que se encaixam para construir a lógica do programa.

**Começando com o Scratch:**

1. **Acesse o Scratch:** Acesse o site do Scratch em [scratch.mit.edu](https://scratch.mit.edu/) e crie uma conta gratuita.
2. **Explore a interface:** Familiarize-se com a interface do Scratch, que inclui as seguintes áreas:
- **Palco:** Onde seus personagens e projetos serão exibidos.
- **Abas de Sprites:** Contém os personagens e objetos que você pode usar em seus projetos.
- **Área de Código:** Onde você monta os blocos para programar seus personagens e objetos.
- **Paleta de Blocos:** Contém diferentes categorias de blocos para movimento, sons, aparência, controle, etc.
3. **Crie seus personagens:** Utilize a aba de sprites para criar ou importar personagens e objetos que serão utilizados em seu projeto. Você pode desenhá-los, importar imagens ou utilizar personagens pré-definidos.
4. **Programe seus personagens:** Arraste e solte os blocos da paleta de código para a área de código. Cada bloco representa uma ação ou comando específico (mover, falar, tocar som, etc.).
5. **Teste e refine:** Clique no botão "Bandeira Verde" para testar seu programa. Observe como seus personagens se comportam e faça ajustes nos blocos de código conforme necessário.
6. **Compartilhe e explore:** Compartilhe seus projetos Scratch com a comunidade online ou explore os projetos criados por outros usuários para se inspirar e aprender novas técnicas.

**Dicas para iniciantes:**

- Comece com projetos simples e vá aumentando a complexidade gradualmente.
- Utilize os tutoriais e guias disponíveis no site do Scratch para aprender novas funcionalidades.
- Explore os projetos de outros usuários para se inspirar e aprender novas técnicas.
- Participe da comunidade online do Scratch para obter ajuda e compartilhar seus projetos.
- Divirta-se e seja criativo!

**Recursos úteis:**

- **Site do Scratch:** [scratch.mit.edu/](https://scratch.mit.edu/)
- **Tutoriais do Scratch:** [scratch.mit.edu/explore/projects/tutorials/](https://scratch.mit.edu/explore/projects/tutorials/)
- **Guia do Usuário do Scratch:** [https://cdn.scratch.mit.edu/scratchr2/static/**709da8e5f3d72129538a4ccdbcbf5f2a**/pdfs/help/Getting-Started-Guide-Scratch2.pdf](https://gemini.google.com/app/%3C0%3Ehttps://cdn.scratch.mit.edu/scratchr2/static/__709da8e5f3d72129538a4ccdbcbf5f2a__/pdfs/help/Getting-Started-Guide-Scratch2.pdf)
- **Comunidade Scratch:** [scratch.mit.edu/discuss/](https://scratch.mit.edu/discuss/)

> [!tip]
> Lembre-se que o Scratch é uma ferramenta poderosa que permite criar projetos incríveis. Com um pouco de prática e criatividade, você poderá dominar a plataforma e dar vida às suas ideias!
### Code.org

O [code.org](https://studio.code.org/) é um excelente recurso para quem deseja aprender ciência da computação de forma autodidata. Oferece lições que permitem aos alunos criar programas de computador, desenvolver habilidades de resolução de problemas e enfrentar desafios interessantes. Além disso, os alunos podem fazer jogos e projetos criativos para compartilhar com amigos, familiares e professores.

[Trilha de aprendizagem de Programação em blocos com code.org](https://studio.code.org/s/express-2021)

### Godot

- O Godot é um motor de jogos que utiliza uma linguagem de script chamada GDScript, similar ao Python.
- O Godot é um motor de jogo gratuito e de código aberto, acessível a todos.
- Apesar de não ser totalmente visual, o GDScript é conhecido por ser amigável para iniciantes e relativamente fácil de aprender.
- O Godot fornece um editor de script visual chamado editor de nó VisualScript. Ele permite que você conecte nós visualmente para representar a lógica do seu jogo.
- Embora não seja tão abrangente quanto a programação em blocos pura, pode simplificar algumas tarefas e fornecer uma abordagem mais intuitiva para alguns usuários.

**Se você estiver interessado no Godot, aqui estão alguns recursos:**

- Site oficial do Godot: [https://godotengine.org/](https://godotengine.org/)
- Documentação do Godot: [https://docs.godotengine.org/en/stable/index.html](https://docs.godotengine.org/en/stable/index.html)
- Fórum da comunidade Godot: [https://forum.godotengine.org/](https://forum.godotengine.org/)
- Godot na DEV Community: [https://dev.to/t/godot](https://dev.to/t/godot)

> [!nota]
> Embora o Godot não seja uma plataforma de programação em blocos pura, seus recursos de script visual e linguagem amigável para iniciantes o tornam uma boa opção para quem se interessa pelo desenvolvimento de jogos sem ter muita experiência em codificação.

[01-cronograma-programador-de-sistemas ⬅️](01-cronograma-programador-de-sistemas.md) | [➡️ 03-introdução-aos-algoritmos](03-introdução-aos-algoritmos.md)
12 changes: 0 additions & 12 deletions content/programador/03-introdução-a-logica.md

This file was deleted.

136 changes: 136 additions & 0 deletions content/programador/03-introdução-aos-algoritmos.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,136 @@
---
title: 03 Introdução aos algoritmos
draft: false
tags:
- programador
- lógica
- algoritmos
---
Algoritmos são conjuntos de instruções precisas e ordenadas que definem como realizar uma tarefa ou resolver um problema. Eles são a base da programação e estão presentes em diversos aspectos da nossa vida, desde o funcionamento de computadores e smartphones até a forma como realizamos tarefas cotidianas.

## Características

- **Precisão:** As instruções do algoritmo devem ser claras e inequívocas, não permitindo interpretações dúbias.
- **Ordem:** As instruções devem ser executadas em uma sequência específica para garantir o resultado correto.
- **Generalidade:** O algoritmo deve ser aplicável a diferentes casos dentro do problema que se pretende resolver.
- **Finitudes:** O algoritmo deve ter um número finito de instruções e chegar a um resultado final em um tempo determinado.
- **Eficiência:** O algoritmo deve utilizar o mínimo de recursos computacionais para alcançar o resultado desejado.

## Tipos

- **Algoritmos sequenciais:** Executam as instruções uma após a outra, em uma ordem pré-definida.
- **Algoritmos de decisão:** Permitem tomar decisões com base em condições específicas.
- **Algoritmos recursivos:** Dividem o problema em subproblemas menores e resolvem cada um deles de forma recursiva.
- **Algoritmos de busca:** Localizam um elemento específico dentro de um conjunto de dados.
- **Algoritmos de ordenação:** Organizam um conjunto de dados em uma ordem específica.

## Exemplos de algoritmos na vida cotidiana

- **Receita culinária:** Uma sequência de instruções para preparar um prato específico.
- **Montagem de móveis:** Um conjunto de passos para montar um móvel a partir de peças e ferramentas.
- **Resolução de um problema matemático:** Uma série de operações matemáticas para chegar a um resultado.
- **Jogos de tabuleiro:** Regras e instruções para jogar um jogo específico.
- **Algoritmos de busca na internet:** Encontram páginas web relevantes para uma pesquisa específica.

## Importância dos algoritmos

- **Eficiência e produtividade:** Permitem automatizar tarefas e otimizar processos, tornando-os mais rápidos e eficientes.
- **Precisão e confiabilidade:** Garantem a execução correta de tarefas e a obtenção de resultados confiáveis.
- **Criatividade e inovação:** Permitem desenvolver soluções inovadoras para problemas complexos.
- **Aprendizado e desenvolvimento:** Auxiliam no desenvolvimento do raciocínio lógico, da resolução de problemas e da capacidade de pensar de forma organizada.

> [!Nota]
> Os algoritmos são ferramentas essenciais para a resolução de problemas, a automação de tarefas e a criação de soluções inovadoras. Compreender seus princípios e aplicá-los de forma eficiente é fundamental para o sucesso em diversas áreas da vida, desde a programação de computadores até a resolução de problemas cotidianos.
## Conceitos de algoritmos

Usamos a lógica para guiar nossos pensamentos ou ações para chegarmos a uma solução. Devemos ter sempre em mente que a lógica está correta se ela atingir o objetivo para que ela foi proposta.

Para conseguirmos inserir lógica em nossas atividades, precisamos aprender a pensar de forma estruturada, ou seja, desenvolver e aperfeiçoar a técnica de pensamento e seguir uma sequência de raciocínio que crie passos objetivos e seguros até a solução.


> [!NOTE] IMPORTANTE
Segundo Manzano e Oliveira (2012), para usar o raciocínio lógico, é necessário ter domínio do pensar, bem como saber pensar, ou seja, possuir e usar a "arte de pensar".
Quando organizamos nossos pensamentos de forma lógica conseguimos associar as informações e transformá-las em base para nossas soluções.

## Exemplos de algoritmos lógicos

Analise a lógica a seguir:

Se: todo mamífero é um animal
E: todos os gatos são mamíferos
Logo: todos os gatos são animais!
Ou
Se: todos os veículos são transportes
E: todas as motos são veículos
Logo: todas as motos são transportes!

- No exemplo apresentado usamos a lógica para averiguar uma situação e chegar a uma conclusão, fazendo associações entre eles.
- A primeira parte analisa que se todos os seres mamíferos são animais e que se todos os gatos são mamíferos, então os gatos também fazem partes do grupo de animais.
- A segunda faz uma análise parecida, que se todos os veículos são chamados de transportes e se todas as motos são consideradas veículos, então as motos também fazem parte do grupo de transportes.

Utilizamos a lógica a todo o momento em nossas vidas, quando pensamos, falamos ou escrevemos, utilizamos a lógica para ordenar as palavras e dar sentido ao que estamos fazendo.\
Ao longo do dia, usamos o nosso raciocínio lógico para resolvermos questões, das mais simples as mais complexas.\
A lógica nos ensina a corrigirmos nosso pensamento, nos ensinando a usá-lo corretamente. Usando o raciocínio de forma ordenada dividindo a ação em vários passos até a solução do problema.

Analise a lógica a seguir:

Se: A porta está fechada
E: a mochila está dentro da casa
Logo: Preciso primeiro abrir a porta, entrar em casa para depois pegar a mochila!
Ou
Se: Se Jussara é mais nova que José
E: José é mais novo que Fábio
Logo: Jussara é mais nova que Fábio!

Neste exemplo, somos apresentados com duas premissas e uma conclusão:

- **Premissa 1:** A porta está fechada.
- **Premissa 2:** A mochila está dentro de casa.
- **Conclusão:** Preciso primeiro abrir a porta, entrar em casa e depois pegar a mochila!

Para analisar este raciocínio lógico, podemos usar uma **tabela verdade**:

|Premissa 1|Premissa 2|Conclusão|
|---|---|---|
|Verdadeiro|Verdadeiro|Verdadeiro|
|Verdadeiro|Falso|Falso|
|Falso|Verdadeiro|Falso|
|Falso|Falso|Verdadeiro|

> [!Nota]
Como podemos ver, a conclusão só é verdadeira quando ambas as premissas são verdadeiras. Isso significa que, para recuperar a mochila, primeiro devemos abrir a porta e entrar em casa. Se a porta estiver aberta ou se a mochila estiver fora de casa, a conclusão não necessariamente se segue.

**Exemplo: Comparando Idades**

Neste exemplo, somos apresentados com três declarações que comparam as idades de três pessoas:

- **Declaração 1:** Jussara é mais nova que José.
- **Declaração 2:** José é mais novo que Fábio.
- **Conclusão:** Jussara é mais nova que Fábio.

Para analisar este raciocínio lógico, podemos usar a propriedade transitiva da idade. A propriedade transitiva afirma que se A é mais novo que B, e B é mais novo que C, então A também deve ser mais novo que C.

Neste caso, temos:

- **Jussara é mais nova que José.**
- **José é mais novo que Fábio.**

Portanto, pela propriedade transitiva da idade, podemos concluir que **Jussara é mais nova que Fábio**.

**Conclusão**

Ambos os exemplos de raciocínio lógico são válidos. O primeiro exemplo usa uma tabela verdade para mostrar que a conclusão só é verdadeira quando ambas as premissas são verdadeiras. O segundo exemplo usa a propriedade transitiva da idade para mostrar que a conclusão segue das duas declarações.


> [!tip]
Em geral, o raciocínio lógico é uma ferramenta poderosa que pode ser usada para resolver problemas e tomar decisões. Ao compreender os princípios da lógica, podemos melhorar nossas habilidades de pensamento crítico e nos tornar comunicadores mais eficazes.

Podemos representar os algoritmos de forma gráfica com [fluxogramas](04-fluxogramas.md).

## 📚 Livros de introdução a programação

- [Desenvolvimento de sistemas Allen Oberleitner](https://jocile.notion.site/Desenvolvimento-de-sistemas-Allen-Oberleitner-7f43c99c571d43ecafd026cda967461e)
- [Lógica de programação Gley Fabiano Cardoso Xavier](https://jocile.notion.site/L-gica-de-programa-o-Gley-Fabiano-Cardoso-Xavier-1dbcc1c64e45402d9f130d07fd2914dd)

[02-logica-com-blocos ⬅️](02-logica-com-blocos.md) | [➡️ 04-fluxogramas](04-fluxogramas.md)
Loading

0 comments on commit f5fc101

Please sign in to comment.