An open API service indexing awesome lists of open source software.

https://github.com/manoelcampos/logica-programacao

Curso de Lógica de Programação em C 👩🏽‍💻🤔
https://github.com/manoelcampos/logica-programacao

algoritmos c curso ebook gitbook logica

Last synced: about 1 year ago
JSON representation

Curso de Lógica de Programação em C 👩🏽‍💻🤔

Awesome Lists containing this project

README

          

= Introdução
:revealjsdir: reveal.js
// :revealjsdir: https://cdnjs.cloudflare.com/ajax/libs/reveal.js/3.3.0
:revealjs_slideNumber: true
:source-highlighter: highlightjs
:imagesdir: images
:allow-uri-read:
:safe: unsafe
:numbered:
:listing-caption: Listing

ifdef::env-github[]
:outfilesuffix: .adoc
:caution-caption: :fire:
:important-caption: :exclamation:
:note-caption: :paperclip:
:tip-caption: :bulb:
:warning-caption: :warning:
endif::[]

- https://palmas.ifto.edu.br/index.php/component/content/article?id=225[Curso Superior de Sistemas para Internet] - http://www.ifto.edu.br[IFTO]
- http://about.me/manoelcampos[Prof. Me. Manoel Campos da Silva Filho]

ifdef::backend-revealjs[]
- mcampos@ifto.edu.br
- https://manoelcampos.gitbooks.io/logica-programacao/
endif::backend-revealjs[]

ifdef::env-github[]
IMPORTANT: Acesse o curso online https://manoelcampos.gitbooks.io/logica-programacao/[neste link], onde é possível fazer o download do material em PDF e epub.
O acesso ao curso diretamente pelo GitHub não permite a exibição de vídeos nem a navegação facilitada entre capítulos.
endif::[]

== Objetivos

Aprender os fundamentos para desenvolvimento de *programas* para solucionar problemas cotidianos.
Programas são executados em equipamentos como *computadores* e *smartphones*. Porém, atualmente podem ser encontrados em diversos equipamentos.

== Pré-requisitos

ifndef::backend-revealjs[]
Para aprender lógica de programação é preciso *foco*, *dedicação*, *proatividade* e *curiosidade*. Estas são características normalmente necessárias para desenvolver qualquer nova habilidade, desde uma habilidade motora como tocar um instrumento musical até aprender um novo idioma. Por falar em idiomas, você verá que saber algo de inglês ajuda bastante.

Apesar de não ser um pré-requisito, se ainda não sabe inglês, já passou da hora de iniciar os estudos. Aprender inglês ao longo do caminho abrirá um mundo de possibilidades em programação. Existem incontáveis materiais de altíssima qualidade disponíveis em inglês. Empresas como a https://www.coursera.org[Coursera] disponibilizam diversos cursos gratuitos, desenvolvidos por universidades conceituadas dos Estados Unidos como Stanford e MIT.
endif::backend-revealjs[]

ifdef::backend-revealjs[]
- *foco*, *dedicação*, *proatividade* e *curiosidade*
- um pouquinho de inglês ajuda bastante
endif::backend-revealjs[]

== Metodologia
Aulas expositivas e práticas em laboratório, com aplicação da teoria no desenvolvimento de pequenos programas.

== Plano do Curso

== Método de Avaliação

ifndef::backend-revealjs[]

Para ser aprovado na disciplina o aluno precisa ter média igual ou superior a 6 e pelo menos 75% de presença.

O aluno será avaliado pelas atividades realizadas em sala de aula e no ambiente virtual de aprendizagem, a soma delas contabilizando 10 pontos por bimestre. Será ainda aplicada 1 prova prática valendo 10 pontos. A Nota Final do aluno será calculada pela média aritmética das notas dos bimestres.

Caso o aluno não consiga obter nota para aprovação, será aplicado um Exame Final prático. A Nota Final será calculada pela média aritmética
da nota do semestre e o Exame Final.

endif::backend-revealjs[]

ifdef::backend-revealjs[]

- Média igual ou superior a 6 e pelo menos 75% de presença.

- Atividades realizadas em sala de aula e no ambiente virtual de aprendizagem, a soma delas contabilizando 10 pontos por bimestre.
- Uma prova prática valendo 10 pontos por bimestre.
- A Nota Final é a média aritmética das notas dos bimestres.
- Recuperação: Exame final prático.

endif::backend-revealjs[]

ifndef::backend-revealjs[]
== Motivação
Aplicativos invadiram as nossas vidas e estão em todos os lugares. Muitos dos equipamentos onde eles podem ser encontrados são:

- *televisores*: possibilitando interatividade dos telespectadores, fornecendo serviços de utilidade pública (como consulta de resultado das loterias e localização de postos de saúde), navegação na internet, jogos, etc;
- https://pt.wikipedia.org/wiki/Veículo_aéreo_não_tripulado[drones]: para permitir controlar aeronaves não tripuladas por meio de controle remoto ou mesmo permitir que elas possam voar de forma autônoma sem intervenção humana. image:tv-digital.jpg[link="http://www.portalmidiaesporte.com/2015/07/esporte-interativo-estreia-tela-em-l-no.html" title="Aplicativo de TV Digital"]

video::RXZJzXf4Scg[youtube, width=640, height=480, title="DroneSeed: aeronave autônoma para plantio de sementes."]

- *veículos*: prover https://pt.wikipedia.org/wiki/Sistema_de_posicionamento_global[serviços de navegação por satélite (GPS)], entretenimento como players de vídeo e música e aplicações populares em smartphones como o Spotify, ou até mesmo permitir que carros possam ser guiados de forma autônoma, sem a intervenção do motorista, como é o caso de veículos da Tesla Motors.

video::192179726[vimeo, start=5, width=640, height=480, title="Veículo totalmente autônomo da Tesla Motors"]

- robôs, semâforos, câmeras fotográficas, geladeiras, produtos de automação residencial como fechaduras eletrônicas, lâmpadas e uma série de produtos inteligentes como porteiros eletrônicos, relógios, balanças Wi-Fi, etc.

TIP: Programas podem ser chamados de _softwares_, aplicações, aplicativos ou simplesmente _apps_.

video::wek9VPTdMMM[youtube, width=640, height=480, title="Porteiro Eletrônico Inteligente: detecta movimentos e permite atender a campainha mesmo não estando em casa"]

video::tmQpP_r9QsU[youtube, width=640, height=480, title="Balança Inteligente: mede peso, gordura corporal e conecta na Wi-Fi para enviar histórico para aplicativo"]

Pode-se ainda desenvolver jogos para vários dos equipamentos citados, além de consoles de video game como Playstation, X-Box e outros.

Programas podem ser desenvolvidos como páginas de internet, para serem acessados a partir de um navegador em um smartphone, TV, computador, etc. Mas como já visto, podem ser criados como aplicações independentes para uso nestes mesmos dispositivos.

endif::backend-revealjs[]

ifdef::backend-revealjs[]
== Motivação
Aplicativos em todo lugar

- *televisores*

image::tv-digital.jpg[link="http://www.portalmidiaesporte.com/2015/07/esporte-interativo-estreia-tela-em-l-no.html" title="Aplicativo de TV Digital"]

== Motivação
- https://pt.wikipedia.org/wiki/Veículo_aéreo_não_tripulado[drones]: controle remoto ou navegação autônoma.

video::RXZJzXf4Scg[youtube, width=640, height=480]

== Motivação

- *veículos*: carros autônomos, GPS e entretenimento.

video::192179726[vimeo, start=5, width=640, height=480, title="Veículo totalmente autônomo da Tesla Motors"]

== Motivação

- robôs, semâforos, câmeras fotográficas, geladeiras
- produtos de automação residencial como fechaduras eletrônicas
- lâmpadas e uma série de produtos inteligentes como porteiros eletrônicos,
- relógios, balanças Wi-Fi, etc.

== Motivação
video::wek9VPTdMMM[youtube, width=640, height=480, title="Porteiro Eletrônico Inteligente: detecta movimentos e permite atender a campainha mesmo não estando em casa"]

== Motivação
video::tmQpP_r9QsU[youtube, width=640, height=480, title="Balança Inteligente: mede peso, gordura corporal e conecta na Wi-Fi para enviar histórico para aplicativo"]

== Motivação

- Jogos para consoles como Playstation e X-Box
- Páginas de Internet

endif::backend-revealjs[]

ifndef::backend-revealjs[]
== Porque desenvolver programas

Um dispositivo com poder computacional só consegue realizar tarefas se tiver programas para isto. Tais dispositivos sem programas não tem qualquer utilidade. Desta forma, pode-se criar programas para:

* Automatizar tarefas repetitivas que demandem tempo e/ou esforço, visando reduzir: custos, tempo e redução de erros humanos.
* Resolver problemas que antes não eram possíveis sem o uso da computação. Além dos exemplos já apresentados, alguns problemas que só puderam ser resolvidos com o uso de programas incluem:
** image:uber-map.png[title="Uber: aplicativo de compartilhamento de corridas de taxi", width=320, role="right"] aproximação de consumidores e fornecedores, como o http://uber.com[Uber];
** image:whatsapp.png[title="WhatsApp Messenger",link="https://pt.wikipedia.org/wiki/WhatsApp" role="right"] comunicação instantânea com texto, áudio e vídeo como o https://whatsapp.com[WhatsApp];
** image:bitcoin.png[title="Bitcoin: moeda digital", link="https://pt.wikipedia.org/wiki/Bitcoin" role="right"] moedas virtuais como https://www.bitcoin.com[Bitcoin];
** tradução instantânea de video-chamadas com https://www.skype.com[Skype]; image:skype.png[title="Skype Mensagens Instantâneas", link="https://pt.wikipedia.org/wiki/Skype" role="right"]

TIP: Computar signifca avaliar, igualar, orçar e não somente calcular ou contar.

video::G87pHe6mP0I[youtube, width=640, height=480, title="Tradução instantânea de voz em video-chamada com Skype"]
endif::backend-revealjs[]

ifdef::backend-revealjs[]
== Porque desenvolver programas

- Um dispositivo com poder computacional só é útil se tiver programas
- Pode-se criar programas para:
* Automatizar tarefas repetitivas
* Resolver problemas que antes não eram possíveis sem o uso da computação.

== Porque desenvolver programas

Além dos exemplos já apresentados, outros incluem:

- image:uber-map.png[title="Uber: aplicativo de compartilhamento de corridas de taxi", width=320, role="right"] aproximação de consumidores e fornecedores como o http://uber.com[Uber];

== Porque desenvolver programas
- image:whatsapp.png[title="WhatsApp Messenger",link="https://pt.wikipedia.org/wiki/WhatsApp" role="right"] comunicação instantânea como o https://whatsapp.com[WhatsApp];
- image:bitcoin.png[title="Bitcoin: moeda digital", link="https://pt.wikipedia.org/wiki/Bitcoin" role="right"] moedas virtuais como https://www.bitcoin.com[Bitcoin];
- tradução instantânea de video-chamadas com https://www.skype.com[Skype]; image:skype.png[title="Skype Mensagens Instantâneas", link="https://pt.wikipedia.org/wiki/Skype" role="right"]

== Porque desenvolver programas

video::G87pHe6mP0I[youtube, width=640, height=480, title="Tradução instantânea de voz em video-chamada com Skype"]
endif::backend-revealjs[]

ifndef::backend-revealjs[]
Desenvolver programas pode ser algo desafiador, a medida que você se depara com problemas cada vez mais complexos. Se você é o tipo de pessoa que é instigada por desafios, você está no caminho certo para aprender lógica de programação. Esta disciplina lhe ajuda a aguçar o raciocínio lógico e a despertar o espírito empreendedor.

Com foco e dedicação, você começará a ver o mundo com outros olhos, procurando um problema em cada lugar e desafiando-se a resolvê-los.
Programação pode ser ainda divertido com o desenvolvimento de jogos, aplicativos para celular, páginas web, automação de robôs, drones e tudo mais.

Atualmente, programação é essencial em todas as áreas da computação, inclusive em infraestrutura e redes. Com o advento da computação em nuvem, empresas, empreendedores individuais e pessoas físicas podem alugar recursos computacionais como armazenamento de um provedor de computação em nuvem. Provedores possuem uma série de servidores (computadores de alto poder computacional) que podem ser alugados para vários clientes. Diversos clientes podem compartilhar o mesmo servidor. Todo o processo de reserva de recursos computacionais para cada cliente pode ser feito por programas, normalmente aplicações web. Tais programas permitem aos clientes reservarem mais recursos como espaço de armazenamento à medida que precisarem, sem precisar da intervenção de intervenção humana do provedor para reservar espaço no servidor.

Por fim, profissionais que querem se manter atualizados em qualquer sub-area da informática devem ter conhecimento de programação.
endif::backend-revealjs[]

ifdef::backend-revealjs[]
== Porque desenvolver programas

- Desafiador
- Aguça o raciocínio lógico
- Desperta o espírito empreendedor
- Ver o mundo com outros olhos
- Divertido

== Porque desenvolver programas

- Essencial em todas as áreas da computação.
- Áreas de infraestrutura e redes com a computação em nuvem.
endif::backend-revealjs[]

ifdef::backend-revealjs[]

include::chapter1.adoc[]
include::chapter2.adoc[]

endif::backend-revealjs[]