Lógica de Programação

Criado por Paulo Diniz / @paulodiniz

Quem sou eu?

Desenvolvedor @ Sage

O que é lógica?

É o estudo dos argumentos válidos

"Sócrates é um homem.
Todos os homens são mortais.
Logo, Sócrates é mortal."
Se Pedro é um filósofo, então Pedro é pobre.
Pedro é um filósofo.
Portanto, Pedro é pobre.

Programação

Controlar o computador, utilizando lógica.

Como?

Operadores e Estruturas!

Operadores

  • Aritiméticos ( 1 + 2)
  • Comparativos ( 1 = 2, 1 < 2, 1 >= 2)
  • Lógicos (!a || b)
  • Deslocamento de bits
  • Lógicos sobre bits
  • Outros

Estruturas

  • Seleção (se..senão)
  • Repetição (enquanto)

Algoritmo

Um algoritmo é formalmente uma seqüência finita de passos que levam a execução de uma tarefa

Chupar uma bala

  • Pegar a bala
  • Retirar o papel
  • Chupar a bala
  • Jogar o papel no lixo

Exercício

Faça um algoritmo para trocar uma lâmpada

Pseudocódigo

Não precisamos aprender uma linguagem de programação para aprender lógica de programação

Calcular a média final de um aluno. O aluno realizou quatro provas

Dados de entrada?

Processamento?

Saída?

Calcular a média final de um aluno. O aluno realizou quatro provas

Dados de entrada -> NOTA_P1, NOTA_P2, NOTA_P3, NOTA_P4

Processamento -> (NOTA_P1 + NOTA_P2 + NOTA_P3 + NOTA_P4) /4

Saída -> MÉDIA

Algoritmo

Receba a nota da prova1
Receba a nota de prova2
Receba a nota de prova3
Receba a nota da prova4
Some todas as notas e divida o resultado por 4
Mostre o resultado da divisão

Constantes, Variáveis e Tipos de Dados

Espaço reservado na memória para armazenar informação

Constantes

Valor determinado. Não muda

Exemplo: (NOTA_P1 + NOTA_P2 + NOTA_P3 + NOTA_P4) /4

Variáveis

Armazenam um valor determinado no programa

Exemplo: NOME = "José"

Exemplo: IDADE = 50

Variáveis

  • Númericas. Ex: 3, 5.3
  • Alfanuméricas. Ex: Nomes, Códigos
  • Lógicas. Ex: Verdadeirou Ou Falso

Operadores

São meios pelo qual incrementamos, decrementamos, comparamos e avaliamos dados.

  • Aritiméticos
  • Relacionais
  • Lógicos

Operadores Aritiméticos

  • Adição
  • Subtração
  • Multiplicação
  • Exponenciação

Exemplo: TOTAL = PRECO * QUANTIDADE

Operadores relacionais

Comparam valores

  • IGUAL A =
  • DIFERENTE DE <>
  • MAIOR QUE >
  • MENOR QUE <
  • MAIOR OU IGUAL A >=
  • MENOR OU IGUAL A <=

Operadores relacionais

A = 5 e B = 3

Expressão Resultado
A = B Falso
A <> B Verdadeiro
A > B Verdadeiro
A < B Falso
A >= B Verdadeiro
A <= B Falso

Operadores lógicos

EAND
OUOR
NÃONOT

AND

É verdadeira se e somente se todas as condições forem verdadeiras

OR

É verdadeira se ao menos uma das condições for verdadeira

NOT

Inverte o valor da expressão

A = 5, B = 8, C = 1
A = B AND B > C Falso
A <> B OR B < C Verdadeiro
A > B NOT Verdadeiro
A < B AND B > C Verdadeiro
A >= B OR B = C Falso
A <= B NOT Falso

A=5, B=4 e C=3 e D=6

  • (A > C) AND (C <= D)
  • (A+B) > 10 OR (A+B) = (C+D)
  • (A>=C) AND (D >= C)

Fluxograma

Fragments

Hit the next arrow...

... to step through ...

... a fragmented slide.

Fragment Styles

There's different types of fragments, like:

grow

shrink

fade-out

current-visible

highlight-red

highlight-blue

Transition Styles

You can select from different transitions, like:
None - Fade - Slide - Convex - Concave - Zoom

Themes

reveal.js comes with a few themes built in:
Black (default) - White - League - Sky - Beige - Simple
Serif - Blood - Night - Moon - Solarized

Slide Backgrounds

Set data-background="#dddddd" on a slide to change the background color. All CSS color formats are supported.

Down arrow

Image Backgrounds

<section data-background="image.png">

Tiled Backgrounds

<section data-background="image.png" data-background-repeat="repeat" data-background-size="100px">

Video Backgrounds

<section data-background-video="video.mp4,video.webm">

... and GIFs!

Background Transitions

Different background transitions are available via the backgroundTransition option. This one's called "zoom".

Reveal.configure({ backgroundTransition: 'zoom' })

Background Transitions

You can override background transitions per-slide.

<section data-background-transition="zoom">

Pretty Code


function linkify( selector ) {
  if( supports3DTransforms ) {

    var nodes = document.querySelectorAll( selector );

    for( var i = 0, len = nodes.length; i < len; i++ ) {
      var node = nodes[i];

      if( !node.className ) {
        node.className += ' roll';
      }
    }
  }
}
					

Code syntax highlighting courtesy of highlight.js.

Marvelous List

  • No order here
  • Or here
  • Or here
  • Or here

Fantastic Ordered List

  1. One is smaller than...
  2. Two is smaller than...
  3. Three!

Tabular Tables

Item Value Quantity
Apples $1 7
Lemonade $2 18
Bread $3 2

Clever Quotes

These guys come in two forms, inline: “The nice thing about standards is that there are so many to choose from” and block:

“For years there has been a theory that millions of monkeys typing at random on millions of typewriters would reproduce the entire works of Shakespeare. The Internet has proven this theory to be untrue.”

Intergalactic Interconnections

You can link between slides internally, like this.

Speaker View

There's a speaker view. It includes a timer, preview of the upcoming slide as well as your speaker notes.

Press the S key to try it out.

Export to PDF

Presentations can be exported to PDF, here's an example:

Global State

Set data-state="something" on a slide and "something" will be added as a class to the document element when the slide is open. This lets you apply broader style changes, like switching the page background.

State Events

Additionally custom events can be triggered on a per slide basis by binding to the data-state name.


Reveal.addEventListener( 'customevent', function() {
	console.log( '"customevent" has fired' );
} );
					

Take a Moment

Press B or . on your keyboard to pause the presentation. This is helpful when you're on stage and want to take distracting slides off the screen.

Much more

THE END

- Try the online editor
- Source code & documentation