{"id":22930467,"url":"https://github.com/patinaomi/menu-de-navegacao-em-python","last_synced_at":"2025-04-01T17:19:57.515Z","repository":{"id":202914087,"uuid":"700171479","full_name":"patinaomi/menu-de-navegacao-em-python","owner":"patinaomi","description":"Exercício realizado para um trabalho (Challenge) da faculdade FIAP na matéria de Computational Thinking Using Python.","archived":false,"fork":false,"pushed_at":"2023-12-09T19:01:43.000Z","size":39,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-02-07T11:15:13.921Z","etag":null,"topics":["exercicios","exercicios-python","exercicios-resolvidos","faculdade","fiap","logica","logica-de-programacao","python","python3"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/patinaomi.png","metadata":{"files":{"readme":"readme.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null}},"created_at":"2023-10-04T04:52:24.000Z","updated_at":"2023-12-09T19:01:15.000Z","dependencies_parsed_at":null,"dependency_job_id":"e11b840d-07fb-41bc-81fa-552a61085fc2","html_url":"https://github.com/patinaomi/menu-de-navegacao-em-python","commit_stats":null,"previous_names":["patinaomi/menu-de-navegacao-em-python"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/patinaomi%2Fmenu-de-navegacao-em-python","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/patinaomi%2Fmenu-de-navegacao-em-python/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/patinaomi%2Fmenu-de-navegacao-em-python/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/patinaomi%2Fmenu-de-navegacao-em-python/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/patinaomi","download_url":"https://codeload.github.com/patinaomi/menu-de-navegacao-em-python/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":246679068,"owners_count":20816402,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["exercicios","exercicios-python","exercicios-resolvidos","faculdade","fiap","logica","logica-de-programacao","python","python3"],"created_at":"2024-12-14T10:28:12.890Z","updated_at":"2025-04-01T17:19:57.498Z","avatar_url":"https://github.com/patinaomi.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"\n# Menu de Site Python   \n## Descrição\nEste é um projeto de uma implementação de um menu de seleção em Python. O menu permite ao usuário escolher uma opção a partir de uma lista de escolhas. Cada opção é associada a uma função correspondente que é executada quando a escolha é feita. Além disso, o projeto inclui a funcionalidade de armazenamento de informações de contato em dois arquivos JSON separados.\n\n## Índice\n * [Descrição](#descrição)\n * [Vídeo](#vídeo)\n * [Funcionalidades](#funcionalidades)\n * [Funções](#funções)\n * [Pilares do Pensamento Computacional](#pilares-do-pensamento-computacional)\n\n## Vídeo\nVídeo da explicação do projeto da Sprint 1 e o código em execução: [Link no youtube](https://www.youtube.com/watch?v=wS5WSZMN7d8\u0026ab_channel=BrunoCarrilo)\n\n\n## Funcionalidades:\n -  **Menu de Navegação:** Um menu que permite aos usuários navegar por diferentes seções.\n    \n-   **Formulário de Contato:** Os usuários podem preencher um formulário de contato com informações, como nome e email.\n    \n-   **Armazenamento de Contatos:** As informações de contato fornecidas pelos usuários são armazenadas em dois arquivos JSON separados para futura referência.\n\n\n[:arrow_double_up: voltar ao índice :arrow_double_up: ](#índice)\n\n## Funções\n\n - **menu_principal()**\nA função exibe um menu de opções, permitindo ao usuário fazer uma seleção e, em seguida, retorna a escolha do usuário. Um loop  `while` mantém o menu visível até que o usuário escolha a opção \"0\" para sair. Se o usuário inserir uma opção inválida, uma mensagem de erro será exibida.\n\n- **sobre_salesforce()**\nA função exibe um menu de opções para que o usuário tenha mais informações sobre a empresa Salesforce. Um loop while mantém o menu visível até que o usuário escolha a opção \"0\" para retornar ao menu principal. Em caso de inserção de uma opção inválida, uma mensagem de erro é exibida.\n\n- **sobre_crm()**\nA função apresenta um menu de escolhas para permitir que o usuário obtenha informações adicionais sobre o CRM (Customer Relationship Management). O menu permanece visível até que o usuário opte por retornar ao menu principal, digitando \"0\". Se o usuário inserir uma escolha que não seja válida, o sistema mostrará uma mensagem de erro.\n\n- **sobre_produtos()**\nA função oferece uma visão geral dos produtos da Salesforce. O usuário pode obter detalhes sobre um produto específico digitando \"1\". O menu permanece disponível até que o usuário retorne ao menu principal com \"0\", e qualquer escolha inválida resultará em uma mensagem de erro.\n\n- **produto_especifico()**\nA função lista os produtos da Salesforce. Se o usuário quiser informações detalhadas sobre um produto específico, pode selecionar a opção desejada na lista. Para retornar ao menu principal, basta digitar \"0\". Qualquer escolha inválida resultará em uma mensagem de erro.\n\n- **validar_email(email)**\nEssa função recebe como parâmetro um endereço de e-mail digitado pelo usuário. Para validação, é utilizado uma expressão regular (regex) como critério. Se a validação for bem-sucedida, a função retorna `True`; caso contrário, retorna `False`.\n\n- **validar_nome(nome)**\nEssa função recebe um nome fornecido pelo usuário como parâmetro. Para validar, é usado uma expressão regular (regex) para assegurar que o nome irá consistir apenas de letras. Se a validação for bem-sucedida, a função retorna `True`; caso contrário, retorna `False`.\n\n- **validar_telefone(telefone)**\nEssa função aceita um número de telefone fornecido pelo usuário como parâmetro. Para validar, o número de telefone deve consistir apenas de dígitos e ter um comprimento de até 10 ou 11 caracteres. Se a validação for bem-sucedida, a função retorna `True`; caso contrário, retorna `False`.\n\n- **assinar_newsletter()**\nNessa função, o usuário insere os dados de nome e e-mail. Posteriormente, esses dados são validados utilizando as funções `validar_nome` e  `validar_email`. Se os dados forem validados com sucesso, a função abre um arquivo JSON, cria um dicionário contendo as informações inseridas e adiciona o novo contato à lista de newsletter. Em seguida, a lista atualizada é salva no arquivo JSON.\nNo entanto, se os dados fornecidos pelo usuário não passarem na validação, uma mensagem de erro é exibida, informando que os dados estão incorretos. Isso assegura que apenas informações válidas sejam incluídas na lista de newsletter.\n\n- **cadastro_contato()**\nNessa função, o usuário fornece informações de nome, e-mail, telefone, empresa e uma mensagem. Após a inserção, esses dados são validados usando as funções `validar_nome`, `validar_email` e `validar_telefone`. Se todos os dados forem validados com sucesso, a função abre um arquivo JSON, cria um dicionário contendo as informações inseridas e adiciona o novo contato à lista de contatos do formulário. A lista atualizada é, então, salva no arquivo JSON.\nNo entanto, se os dados fornecidos pelo usuário não passarem na validação, uma mensagem de erro é exibida, indicando que os dados estão incorretos. Isso garante que apenas informações válidas sejam incluídas na lista de contatos, mantendo a integridade dos dados.\n\n[:arrow_double_up: voltar ao índice :arrow_double_up:](#índice)\n\n\n\n \n## Pilares do Pensamento Computacional   \nOs pilares do pensamento computacional são princípios fundamentais que englobam habilidades essenciais para enfrentar desafios complexos e desenvolver soluções eficazes no campo da ciência da computação. A seguir, destacaremos como esses quatro pilares foram aplicados no código:  \n  \n#### Decomposição:  \nA decomposição é a divisão de um problema complexo em partes menores, traduzida na **fragmentação de um programa em funções menores**. Isso facilita a manutenção, depuração e desenvolvimento colaborativo, permitindo que várias pessoas trabalhem em partes distintas do código independentemente.  \n  \n#### Reconhecimento de Padrões:  \nO Reconhecimento de Padrões é a identificação de tendências em dados e problemas, frequentemente usado para simplificar processos complexos e encontrar **soluções reutilizáveis** em códigos para problemas semelhantes.  \n#### Abstração:  \nA abstração é a simplificação de problemas, eliminando detalhes desnecessários, geralmente **encapsulando comportamentos em funções para criar interfaces mais simples e legíveis** . É uma técnica crucial para simplificar a complexidade e facilitar a reutilização de código no desenvolvimento de software.   \n#### Algoritmo:  \nAlgoritmos são conjuntos de instruções que resolvem problemas específicos, servindo como base para a resolução de problemas na ciência da computação, descrevendo os passos necessários para realizar tarefas ou cálculos.\n\n[:arrow_double_up: voltar ao índice :arrow_double_up: ](#índice)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpatinaomi%2Fmenu-de-navegacao-em-python","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fpatinaomi%2Fmenu-de-navegacao-em-python","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpatinaomi%2Fmenu-de-navegacao-em-python/lists"}