From f5fc101e96180c463621c29c9ef3365e256a402e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jocil=C3=A9=20Serra?= Date: Fri, 3 May 2024 00:52:46 -0300 Subject: [PATCH] Quartz sync: May 3, 2024, 12:52 AM --- ... 01-cronograma-programador-de-sistemas.md} | 5 +- content/programador/02-logica-com-blocos.md | 101 ++++++++++++ .../03-introdu\303\247\303\243o-a-logica.md" | 12 -- ...ntrodu\303\247\303\243o-aos-algoritmos.md" | 136 ++++++++++++++++ content/programador/04-fluxogramas.md | 129 ++++++++++++++++ .../05-editor-de-Diagramas-mermaid.md | 145 ++++++++++++++++++ .../programador/06-links-de-diagramas.md | 19 ++- .../{ => 2023}/Curso-de-programador-2023.md | 2 +- content/programador/2023/index.md | 4 + .../links-de-aulas-programador-2023.md | 2 +- content/programador/index.md | 3 + 11 files changed, 536 insertions(+), 22 deletions(-) rename content/programador/{01-programador-de-sistemas.md => 01-cronograma-programador-de-sistemas.md} (98%) create mode 100644 content/programador/02-logica-com-blocos.md delete mode 100644 "content/programador/03-introdu\303\247\303\243o-a-logica.md" create mode 100644 "content/programador/03-introdu\303\247\303\243o-aos-algoritmos.md" create mode 100644 content/programador/04-fluxogramas.md create mode 100644 content/programador/05-editor-de-Diagramas-mermaid.md rename "content/programador/02-introdu\303\247\303\243o-aos-diagramas.md" => content/programador/06-links-de-diagramas.md (74%) rename content/programador/{ => 2023}/Curso-de-programador-2023.md (96%) create mode 100644 content/programador/2023/index.md rename content/programador/{ => 2023}/links-de-aulas-programador-2023.md (99%) diff --git a/content/programador/01-programador-de-sistemas.md b/content/programador/01-cronograma-programador-de-sistemas.md similarity index 98% rename from content/programador/01-programador-de-sistemas.md rename to content/programador/01-cronograma-programador-de-sistemas.md index 77edb6b..666b33e 100644 --- a/content/programador/01-programador-de-sistemas.md +++ b/content/programador/01-cronograma-programador-de-sistemas.md @@ -1,5 +1,5 @@ --- -title: 01 Programador de Sistemas +title: 01 Cronograma Programador de Sistemas tags: - Senac - planejamento @@ -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. @@ -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) diff --git a/content/programador/02-logica-com-blocos.md b/content/programador/02-logica-com-blocos.md new file mode 100644 index 0000000..fdce229 --- /dev/null +++ b/content/programador/02-logica-com-blocos.md @@ -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) diff --git "a/content/programador/03-introdu\303\247\303\243o-a-logica.md" "b/content/programador/03-introdu\303\247\303\243o-a-logica.md" deleted file mode 100644 index 16ee4d4..0000000 --- "a/content/programador/03-introdu\303\247\303\243o-a-logica.md" +++ /dev/null @@ -1,12 +0,0 @@ ---- -title: 03 Introdução a lógica -draft: false -tags: - - programador - - lógica - - algoritmos ---- -## 📚 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) diff --git "a/content/programador/03-introdu\303\247\303\243o-aos-algoritmos.md" "b/content/programador/03-introdu\303\247\303\243o-aos-algoritmos.md" new file mode 100644 index 0000000..a21ac3f --- /dev/null +++ "b/content/programador/03-introdu\303\247\303\243o-aos-algoritmos.md" @@ -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) diff --git a/content/programador/04-fluxogramas.md b/content/programador/04-fluxogramas.md new file mode 100644 index 0000000..2e8d1bc --- /dev/null +++ b/content/programador/04-fluxogramas.md @@ -0,0 +1,129 @@ +--- +title: "04-fluxogramas" +draft: false +tags: + - programador + - lógica + - algoritmos +--- +Podemos representar os algoritmos de forma gráfica, para isso utilizamos os fluxogramas. + +- Os fluxogramas são formados de caixas com formato variado que conectadas de forma ordenada e lógica informam as instruções a serem executadas. São muito populares por serem de fácil entendi- mento das ideias contidas no algoritmo. +- A representação do fluxograma é ótima para descrever algoritmos de pequeno e médio tamanho. +- **Visualização Clara:** Os fluxogramas transformam a lógica abstrata dos algoritmos em uma linguagem visual compreensível, facilitando o aprendizado e a análise de cada etapa do processo. +- **Comunicação Eficaz:** Funcionam como ferramenta de comunicação entre desenvolvedores, permitindo que diferentes pessoas compreendam a estrutura e o funcionamento do algoritmo de forma clara e objetiva. +- **Identificação de Falhas:** Ao visualizar o algoritmo passo a passo, fica mais fácil identificar erros de lógica, falhas de processamento ou inconsistências na sequência de instruções. +- **Documentação Detalhada:** Os fluxogramas servem como documentação detalhada do algoritmo, registrando todas as etapas e decisões envolvidas no processo. + +## Formato + +- **Caixas:** Cada caixa representa uma ação específica, como ler um dado, realizar um cálculo ou escrever um resultado. Elas podem ter diferentes formatos e cores para indicar funções distintas. +- **Símbolos:** Os símbolos são os sinais de trânsito do mundo dos fluxogramas. Eles guiam o fluxo da execução do algoritmo, indicando o início, o fim, decisões a serem tomadas e a direção que o processo deve seguir. +- **Linhas de Conexão:** As linhas de conexão são as estradas que ligam as caixas e os símbolos, definindo a ordem em que as instruções devem ser executadas. Elas podem ser contínuas ou segmentadas para indicar diferentes fluxos de execução. +- **Início:** Um símbolo especial marca o início da execução do algoritmo. +- **Comandos e Decisões:** Uma sequência de caixas representa as instruções que o algoritmo deve executar, incluindo cálculos, leituras e decisões a serem tomadas. +- **Bifurcações:** As decisões geram bifurcações no fluxo do algoritmo, direcionando a execução para diferentes caminhos de acordo com o resultado da decisão. +- **Processamento:** As informações são processadas e manipuladas ao longo das etapas do algoritmo. +- **Armazenamento:** Dados e resultados são armazenados em caixas específicas para serem utilizados posteriormente. +- **Fim:** Um símbolo especial marca a finalização da execução do algoritmo + +Usando editor de diagramas [mermaid - fluxograma](https://mermaid.js.org/syntax/flowchart.html): + +```mermaid +flowchart TD +A[Início] --> B{Ler número} +B --> C[Verificar se o número é par] + C --> D[Se o número for par] + D --> E[Mostrar mensagem O número é par] + E --> F[Fim] + C --> G[Se o número não for par] + G --> H[Mostrar mensagem O número é ímpar] + H --> I[Fim] + +``` + +Neste exemplo, podemos observar os diversos símbolos utilizados para representar as diferentes etapas do algoritmo: + +- **A:** Símbolo de Início +- **B:** Símbolo de Ação +- **C:** Símbolo de Decisão +- **D, E, G, H:** Símbolos de Ação +- **F, I:** Símbolos de Fim + +Ao combiná-los de forma correta, podemos criar fluxogramas que representam a lógica de diversos algoritmos de forma clara e visualmente intuitiva. + +## Exemplos + +### Verificar se um Número é Par ou Ímpar + +Verificar se um Número é Par ou Ímpar: Um fluxograma pode ser utilizado para determinar se um número é par ou ímpar, dividindo-o por dois e verificando o restante da divisão. + +```mermaid +flowchart TD +A[Início] --> B{Ler número} +B --> C{Armazenar número em variável} +C --> D{Dividir número por 2} +D --> E{Armazenar resto da divisão em variável} +E --> F[Verificar resto da divisão] + F --> G[Se resto for 0, então o número é par] + G --> H[Mostrar mensagem O número é par] + H --> I[Fim] + F --> J[Se resto for diferente de 0, então o número é ímpar] + J --> K[Mostrar mensagem O número é ímpar] + K --> I[Fim] + +``` + +**Explicação do Fluxograma:** + +1. **Início:** O algoritmo começa com a leitura de um número. +2. **Ler número:** Um número é lido do usuário e armazenado em uma variável. +3. **Armazenar número:** O número lido é armazenado em uma variável chamada `numero`. +4. **Dividir número por 2:** O número armazenado na variável `numero` é dividido por 2 e o resultado é armazenado em uma variável chamada `resto`. +5. **Armazenar resto:** O valor da variável `resto` é armazenado em uma variável chamada `restoDivisao`. +6. **Verificar resto da divisão:** O valor da variável `restoDivisao` é verificado. +7. **Se resto for 0, então o número é par:** Se o valor da variável `restoDivisao` for 0, então o número é par e a mensagem "O número é par" é exibida na tela. +8. **Mostrar mensagem "O número é par":** A mensagem "O número é par" é exibida na tela do usuário. +9. **Fim:** O algoritmo termina. +10. **Se resto for diferente de 0, então o número é ímpar:** Se o valor da variável `restoDivisao` for diferente de 0, então o número é ímpar e a mensagem "O número é ímpar" é exibida na tela. +11. **Mostrar mensagem "O número é ímpar":** A mensagem "O número é ímpar" é exibida na tela do usuário. +12. **Fim:** O algoritmo termina. + +### **Calcular a Média de Três Notas** + +Um fluxograma pode ser usado para representar o processo de calcular a média de três notas, mostrando os passos de somar as notas e dividir o resultado por três. + + +```mermaid +flowchart TD +A[Início] --> B{Ler nota 1} +B --> C{Armazenar nota 1 em variável} +C --> D{Ler nota 2} +D --> E{Armazenar nota 2 em variável} +E --> F{Ler nota 3} +F --> G{Armazenar nota 3 em variável} +G --> H{Somar notas 1, 2 e 3} +H --> I{Armazenar soma em variável total} +I --> J{Dividir total por 3} +J --> K{Armazenar média em variável média} +K --> L[Mostrar média na tela] +L --> M[Fim] +``` + +**Explicação do Fluxograma:** + +1. **Início:** O algoritmo começa com a leitura da primeira nota. +2. **Ler nota 1:** A nota 1 é lida do usuário e armazenada em uma variável. +3. **Armazenar nota 1:** A nota 1 é armazenada em uma variável chamada `nota1`. +4. **Ler nota 2:** A nota 2 é lida do usuário e armazenada em uma variável. +5. **Armazenar nota 2:** A nota 2 é armazenada em uma variável chamada `nota2`. +6. **Ler nota 3:** A nota 3 é lida do usuário e armazenada em uma variável. +7. **Armazenar nota 3:** A nota 3 é armazenada em uma variável chamada `nota3`. +8. **Somar notas 1, 2 e 3:** As notas 1, 2 e 3 são somadas e o resultado é armazenado em uma variável chamada `total`. +9. **Armazenar soma:** O valor da variável `total` é armazenado em uma variável chamada `soma`. +10. **Dividir total por 3:** O valor da variável `soma` é dividido por 3 e o resultado é armazenado em uma variável chamada `media`. +11. **Armazenar média:** O valor da variável `media` é armazenado em uma variável chamada `média`. +12. **Mostrar média na tela:** A média é exibida na tela do usuário. +13. **Fim:** O algoritmo termina. + +[03-introdução-aos-algoritmos ⬅️](03-introdução-aos-algoritmos.md) | [➡️ 05-editor-de-Diagramas-mermaid](05-editor-de-Diagramas-mermaid.md) diff --git a/content/programador/05-editor-de-Diagramas-mermaid.md b/content/programador/05-editor-de-Diagramas-mermaid.md new file mode 100644 index 0000000..508eddb --- /dev/null +++ b/content/programador/05-editor-de-Diagramas-mermaid.md @@ -0,0 +1,145 @@ +--- +title: 05 Editor de Diagramas Mermaid +draft: false +tags: + - diagramas + - uml + - algoritmos +--- +Mermaid não é a criatura mítica do mar, mas sim uma poderosa e versátil ferramenta de diagramação e criação de gráficos. Aqui está um resumo do que ela é: + +## **O que é** + +- Uma ferramenta baseada em JavaScript que permite criar diversos diagramas e gráficos usando uma sintaxe simples baseada em texto. +- Pense nisso como escrever código para gerar elementos visuais. +- A sintaxe é inspirada no Markdown, tornando-a fácil de aprender e usar, mesmo para aqueles sem experiência prévia em codificação. + +## **O que ela pode fazer** + +- Criar vários tipos de diagramas, incluindo: + - Fluxogramas: Visualize o fluxo da lógica em algoritmos ou processos. + - Diagramas de sequencia: Ilustre a interação entre diferentes partes de um sistema ao longo do tempo. + - Gráficos de Gantt: Represente cronogramas e agendas de projetos. + - Mapas de jornada do usuário: Descreva as etapas que os usuários realizam ao interagir com um produto ou serviço. + - Gráficos de pizza, barras e outras representações gráficas de dados. + +## **Principais benefícios** + +- Simples e intuitiva: A sintaxe baseada em texto é fácil de aprender e entender, mesmo para iniciantes. +- Versátil: Pode criar uma ampla variedade de diagramas, tornando-a adequada para diversos projetos e necessidades. +- Compatibilidade multiplataforma: Funciona perfeitamente em diferentes sistemas operacionais e pode ser integrada a várias ferramentas e plataformas. +- Código aberto: Gratuito e constantemente sendo aprimorado pela comunidade de desenvolvedores. + +> [!NOTA] +> Ao usar o Mermaid, você pode comunicar ideias e processos complexos de forma eficaz por meio de diagramas visualmente atraentes, tornando-o uma ferramenta valiosa para programadores, analistas, designers e qualquer pessoa que precise criar representações visuais claras e concisas. + +## Exemplos + +### Diagrama de sequência + +```mermaid +sequenceDiagram +Alice->>John: Olá John, como vai você? +John-->>Alice: Tudo bem! +Alice-)John: Te vejo amanhã! + +``` + +Veja o código: +```plaintext +sequenceDiagram +Alice->>John: Olá John, como vai você? +John-->>Alice: Tudo bem! +Alice-)John: Te vejo amanhã! +``` + +### Diagrama de classes + +```mermaid +classDiagram + Animal <|-- Duck + Animal <|-- Fish + Animal <|-- Zebra + Animal : +int age + Animal : +String gender + Animal: +isMammal() + Animal: +mate() + class Duck{ + +String beakColor + +swim() + +quack() + } + class Fish{ + -int sizeInFeet + -canEat() + } + class Zebra{ + +bool is_wild + +run() + } +``` + +Veja o código: + +```plaintext +classDiagram + Animal <|-- Duck + Animal <|-- Fish + Animal <|-- Zebra + Animal : +int age + Animal : +String gender + Animal: +isMammal() + Animal: +mate() + class Duck{ + +String beakColor + +swim() + +quack() + } + class Fish{ + -int sizeInFeet + -canEat() + } + class Zebra{ + +bool is_wild + +run() + } +``` + +### Diagrama de Gantt + +```mermaid +gantt + title A Gantt Diagram + dateFormat YYYY-MM-DD + section Section + A task :a1, 2014-01-01, 30d + Another task :after a1 , 20d + section Another + Task in sec :2014-01-12 , 12d + another task : 24d +``` + +Veja o código: + + +```plaintext +gantt + title A Gantt Diagram + dateFormat YYYY-MM-DD + section Section + A task :a1, 2014-01-01, 30d + Another task :after a1 , 20d + section Another + Task in sec :2014-01-12 , 12d + another task : 24d +``` + + + +## Referências + +- Site oficial: [https://mermaid.js.org/](https://mermaid.js.org/) +- Tutorial Mermaid: [https://mermaid.js.org/intro/getting-started.html](https://mermaid.js.org/intro/getting-started.html) +- Editor Online Mermaid: [https://mermaid.live/](https://mermaid.live/) + +[04-fluxogramas ⬅️](04-fluxogramas.md) | [➡️ 06-links-de-diagramas](06-links-de-diagramas.md) diff --git "a/content/programador/02-introdu\303\247\303\243o-aos-diagramas.md" b/content/programador/06-links-de-diagramas.md similarity index 74% rename from "content/programador/02-introdu\303\247\303\243o-aos-diagramas.md" rename to content/programador/06-links-de-diagramas.md index fae9347..fe5d57d 100644 --- "a/content/programador/02-introdu\303\247\303\243o-aos-diagramas.md" +++ b/content/programador/06-links-de-diagramas.md @@ -1,5 +1,5 @@ --- -title: 02 Introdução aos diagramas +title: 06 Links de diagramas draft: false tags: - diagramas @@ -8,16 +8,23 @@ tags: - uml --- +## Editores de diagramas + +- [editor de Diagramas-mermaid](05-editor-de-Diagramas-mermaid.md) +- [Editor de diagramas PlantUML](https://plantuml.com/) +- [Draw.io app.diagrams.net](https://app.diagrams.net/) +- [Draw.io exemplos](https://gist.github.com/jocile/b98add89c82e8629eb11b409c5dd0e69) +- [Modelos de diagramas Lucidchard UML](https://www.lucidchart.com/pages/pt/modelos-e-exemplos-de-diagramas-uml) + +## Referências de análise e projeto de sistemas + - [Processamento de dados](https://blog.betrybe.com/tecnologia/processamento-de-dados/) - [Introdução a análise e projeto de sistemas](https://programadoresdepre.com.br/introducao-a-analise-e-projeto-de-sistemas/) - [Ciclo de vida do desenvolvimento de softwares: o que eu preciso saber?](https://gaea.com.br/ciclo-de-vida-do-desenvolvimento-de-softwares-o-que-eu-preciso-saber/) - [O que É Desenvolvimento Iterativo?](https://www.cin.ufpe.br/~gta/rup-vc/core.base_rup/guidances/supportingmaterials/develop_iteratively_1F6AE780.html) - [O Modelo Incremental](https://medium.com/contexto-delimitado/o-modelo-incremental-b41fc06cac04) - [Padrões de projeto](https://github.com/jocile/patterns/wiki) -- [Diagramas Mermaid](http://mermaid.js.org/intro/getting-started.html) -- [Editor de diagramas PlantUML](https://plantuml.com/) - [Design Patterns for Humans](https://roadmap.sh/guides/design-patterns-for-humans) -- [Modelos de diagramas Lucidchard UML](https://www.lucidchart.com/pages/pt/modelos-e-exemplos-de-diagramas-uml) - [Livro de lógica](https://bibliotecadigitalsenac.com.br/?from=explorar%2F3002%2Fall%3FcontentInfo%3D1306#/legacy/epub/1306) -- [Programação em blocos com code.org](https://studio.code.org/s/express-2021) -- [Programação em blocos com Scratch](https://scratch.mit.edu/) + +[⬅️05-editor-de-Diagramas-mermaid](05-editor-de-Diagramas-mermaid.md) diff --git a/content/programador/Curso-de-programador-2023.md b/content/programador/2023/Curso-de-programador-2023.md similarity index 96% rename from content/programador/Curso-de-programador-2023.md rename to content/programador/2023/Curso-de-programador-2023.md index 95ae02c..4be9391 100644 --- a/content/programador/Curso-de-programador-2023.md +++ b/content/programador/2023/Curso-de-programador-2023.md @@ -3,7 +3,7 @@ title: Curso de Programador em 2023 draft: false tags: - programador - - aulas + - aulas/2023 --- ## Referências diff --git a/content/programador/2023/index.md b/content/programador/2023/index.md new file mode 100644 index 0000000..1c44663 --- /dev/null +++ b/content/programador/2023/index.md @@ -0,0 +1,4 @@ +--- +title: "Programador em 2023" +--- +> [!NOTE] Páginas do curso de Programador de Sistemas em 2023 diff --git a/content/programador/links-de-aulas-programador-2023.md b/content/programador/2023/links-de-aulas-programador-2023.md similarity index 99% rename from content/programador/links-de-aulas-programador-2023.md rename to content/programador/2023/links-de-aulas-programador-2023.md index 6c09108..4ef6526 100644 --- a/content/programador/links-de-aulas-programador-2023.md +++ b/content/programador/2023/links-de-aulas-programador-2023.md @@ -2,8 +2,8 @@ title: Links de aulas de programador em 2023 draft: false tags: - - aulas - programador + - aulas/2023 --- Aulas de março de 2023 → a junho de 2023 diff --git a/content/programador/index.md b/content/programador/index.md index 16e144d..b2c7d30 100644 --- a/content/programador/index.md +++ b/content/programador/index.md @@ -1,4 +1,7 @@ --- title: "Programador de Sistemas" --- +> [!NOTE] Pastas +> [🗂️ Aulas em 2023](/programador/2023/) + > [!NOTE] Páginas do curso de Programador de Sistemas \ No newline at end of file