2
Sumário• Briefing• Representação de Algoritmos• Dados• Variáveis• Expressões• Tabelas Verdade• Representação de Algoritmos
– Pseudocódigo e VisuAlg• Instruções Primitivas• Estrutura de Decisão• Estrutura de Repetição• Vetores• Procedimentos e Funções
4
Briefing
• Lógica– Do grego “Logos”– Estudo do raciocínio válido• Aquilo que pode ocorrer
– Áreas da ciência• Filosofia• Matemática• Semântica• Informática
5
Briefing
• Filosofia
» Você é prisioneiro de uma tribo indígena que conhece todos os segredos do Universo e portanto sabem de tudo. Você está para receber sua sentença de morte. O cacique o desafia: - Faça uma afirmação qualquer. Se o que você falar for mentira você morrerá na fogueira, se falar uma verdade você será afogado. Se não pudermos definir sua afirmação como verdade ou mentira, nós te libertaremos. O que você diria?
6
Briefing
• Filosofia
» Solução: Afirme que você morrerá na fogueira!
» Explicação:• Se você realmente morrer na fogueira, isto é uma verdade,
portanto deveria morrer afogado• Mas se você morrer afogado a informação seria uma mentira e,
portanto, deveria morrer na fogueira
» Mesmo prevendo o futuro, haveria um impasse• Você seria libertado
7
Briefing
• Matemática
» Você deve colocar os números nas intersecções destes três aros, de modo que nas três linhas a soma seja dois.
9
Briefing
• Semântica
» Qual afirmação está correta?• A afirmação abaixo é verdadeira• A afirmação acima é falsa
11
Briefing
• Informática– Lógica de programação• Técnica de encadear pensamentos para atingir um
determinado objetivo
– Algoritmo• Uma sequência finita de passos, logicamente
colocados, que levam a execução de uma determinada tarefa
12
Briefing
• Informática– Algoritmo• “Receita de bolo”• Deve ter passos claros e precisos• Softwares são algoritmos construídos com alguma
linguagem de programação
13
Atividade (classwork)
• Escreva um parágrafo que conceitue a palavra “Lógica”, na sua opinião sem a consulta de quaisquer recursos literários ou bibliográficos
• Pesquise e escreva sobre o Paradoxo de Epiménides e busque exemplos deste tipo de problema
15
Representação de Algoritmos
• Linguagem Natural– Narrativa– Sequência de passos– Trilha evolutiva
– Podem conter decisões que modificam o curso e os passos a serem seguidos
16
Representação de Algoritmos
• Linguagem Natural– Ex: Preparar um bolo
• Início: Coloque no liquidificador a laranja picada (sem casca e sem o pavio central), os ovos, o óleo e o açúcar
• Ligue o liquidificador e bata por 3 minutos• Despeje o conteúdo em uma vasilha e adicione a farinha e o fermento• Misture bem• Asse em forno médio e pré-aquecido por 35 minutos• Faça a cobertura, despejando o suco de laranja com açúcar e o leite sobre o bolo
ainda quente• Fim: Deixe esfriar e sirva
19
Atividade (classwork)
• Cite 5 exemplos de problemas que possam ser resolvidos com algoritmos
• Elabore um algoritmo em linguagem natural para cada problema citado
21
Representação de Algoritmos
• Fluxograma– Representação gráfica– Figuras geométricas representam ações distintas– Muito popular– Fácil entendimento das ideias contidas no
algoritmo
23
Representação de Algoritmos
• Fluxograma– Ex: Preparar um bolo
INÍCIO Ligue o liquidificador e bata por 3 minutos
FIM
Despeje em uma vasilha e adicione farinha e fermento
Misture bemAsse em forno médio por 35min
Deixe esfriar e sirva
Despeje o suco de laranja, açúcar e leite sobre o bolo para
cobertura
Junte a laranja picada, ovos, óleo e açúcar
26
Atividade (classwork)
• Cite 5 exemplos de problemas que possam ser resolvidos com algoritmos
• Elabore um algoritmo com fluxogramas para cada problema citado
32
Dados
• Os dados possuem tipos diferentes, dependendo da forma que possuem e o que proporcionam ao sistema
• A memória do computador trabalha de forma diferente com cada tipo de dado
• Os tipos de dados são:– Numéricos– Lógicos– Literais
33
Dados
• Numéricos– Inteiros• São valores numéricos (positivos ou negativos) que não
possuem casas decimais– Idade (28,5 anos?)– Dia (dia 15,2?)– Unidades (2,1 maçãs?)
34
Dados
• Numéricos– Reais• São valores numéricos (positivos ou negativos) que
podem possuir casas decimais– Peso (78,6 kg)– Largura de um terreno (12,5 m)
– Número real positivo (23.4)– Número real negativo (-12.9)– Uma casa decimal (0.0)– Duas casas decimais (-0.32)
35
Dados
• Numéricos– Os números devem ser tratados da seguinte
maneira:• 2 = Inteiro• 2.0 = Real• 2.1 = Real
36
Dados
• Lógicos– São também conhecidos como booleanos– Sua ideologia de uso reflete a maneira de
funcionamento dos computadores– São usados para representar dois tipos de valores
possíveis:• V (valor lógico verdadeiro)• F (valor lógico falso)
37
Dados
• Lógicos– Verdadeiro pode ser simbolizado por:
• V• TRUE• 1• SIM
– Falso por:• F• FALSE• 0• NÃO
38
• Lógicos– O colaborador é professor?
• V– Portanto, o colaborador não é técnico administrativo, diretor,
atendente ou qualquer outra função
– O colaborador é professor?• F
– O colaborador é técnico administrativo?• F
– O colaborador é atendente?• F
– Portanto, o colaborador exerce outra função
Dados
39
Dados
• Literais– Letras, números e caracteres especiais podem ser
dados de tipo literal– Uma sequência de dados deste tipo é
caracterizada por estar entre aspas duplas (“”)– É também conhecido por tipo de dado
alfanumérico (alfa = letras; numérico = números) ou string
40
Dados
• Literais– Exemplos de dados literais:• “25”• “Fulano”• “24 de Fevereiro”• “30.2”• “20/02/2002”• “-32a9ff34”• “$#@”
41
Atividade (homework)
• Cite 10 exemplos de dados para cada tipo de dado:– Numérico inteiro– Numérico real– Literal
43
Variáveis
• As variáveis são espaços criados na memória do computador para guardar informações
• Estas informações são armazenadas por período temporário pela aplicação a ser executada (software)
• Seus valores, diferente das constantes podem variar
44
Variáveis
• Imagine um armário:
Idade
Cidade
Estado
Nome
Salário
Nº filhos
38
1200.00
Ijuí
RS
Fulano Ciclano
3
45
Variáveis
• Cada “gaveta” armazena um tipo de dado• Se o valor na gaveta identificada for
substituído, o dado anterior se perderá• Cada gaveta pode possuir somente UM dado
(valor)
46
Variáveis
• Existem algumas regras a serem seguidas ao nomearmos uma variável:– Começar com uma letra– Os demais caracteres podem ser letras, números
ou ‘_’ (underline, underscore)– Não podem ser utilizados nomes reservados,
como: escreva, leia, var, etc.– Procure utilizar nomes sugestivos para suas
variáveis
48
Expressões
• Aritméticas– São expressões cujo resultado é um valor
numérico (inteiro ou real)– São utilizados somente operadores aritméticos e
variáveis numéricas para este tipo de expressão
49
Expressões
• Aritméticas– São utilizados os seguintes operadores
Operador Operação
+ Adição
- Subtração
* Multiplicação
/ Divisão
+ Manutenção de sinal
- Inversão de sinal
DIV Parte inteira da divisão
MOD Resto da divisão
50
Expressões
• Aritméticas– Os tipos de dados do resultado das expressões
são:Inteiro +, -, * Inteiro = Inteiro
Inteiro +, -, * Real = Real
Real +, -, * Inteiro = Real
Real +, -, * Real = Real
Qualquer / Qualquer = Real
Inteiro DIV Inteiro = Inteiro
Inteiro MOD Inteiro = Inteiro
51
Expressões
• Aritméticas– Os elementos obedecem uma hierarquia de
execução• Parênteses• Multiplicação ou Divisão (o que vier primeiro)• Soma e Subtração (o que vier primeiro)
– Media = Nota1 + Nota2 + Nota3 / 3– Media = (Nota1 + Nota2 + Nota3) / 3
52
Atividades (classwork)• Verifique o tipo de dado numérico resultante das seguintes expressões
aritméticas:a) 7 * 2b) 0.6 + 3.2c) - 5 + 9.0d) 4 DIV 1e) 4.5 * 2f) 1 + 1 + (2 MOD 4)g) (10 + 2) * 2h) - 0.8 / - 2i) 1 - 0.5 + 9j) 7 * (- 2 + 3.4)k) (10 DIV 2) + 0.2l) (90 MOD 33) - 0.2
54
Expressões
• Lógicas– As expressões lógicas são aquelas cujo o resultado
da sua avaliação tem um resultado lógico (V ou F)
Operador
OU OR v
E AND ^
NÃO NOT ¬
Comparador
== Igual
<> Diferente
< Menor
< = Menor ou Igual
> Maior
> = Maior ou Igual
55
Expressões
• Lógicas– Comparadores• A = 5, B = 3
– A = B Falso– A <> B Verdadeiro– A > B Verdadeiro– A < B Falso– A > = B Verdadeiro– A < = B Falso
56
Expressões
• Lógicas– Operadores• OU
– O resultado será verdadeiro se pelo menos UM resultado de uma expressão lógica for verdadeiro
• E– O resultado será verdadeiro somente se TODOS os resultados
das expressões lógicas forem verdadeiros• NÃO
– O resultado final é o inverso do resultado da expressão lógica
57
Expressões
• Lógicas1º Valor Operador 2º Valor Resultado
V E V V
V E F F
F E V F
F E F F
V OU V V
V OU F V
F OU V V
F OU F F
V NÃO F
F NÃO V
59
Expressões
• Lógicas– Exemplos• Se não houver placas de proibida a ultrapassagem E
não houver faixa contínua, posso ultrapassar o veículo
E =nãonão
61
Expressões
• Lógicas– A = 2, B = 3– C = 2, D = 3
A == B A <> B A < B A < = B A > B A > = B
F V V V F F
A == B ^ C == D A == B v C == D ¬ (A == B) C == A v B <> D C == A ^ B <> D
F F V V F
64
Expressões
• Literais– Seu resultado proporciona um valor literal– Ocorre com menos frequência nos sistemas do
que as expressões aritméticas e lógicas– O operador varia de uma linguagem de
programação para outra (+)(,)(.)...• A operação para unir dois valores literais (strings) é
chamado de concatenação
65
Expressões
• Literais– Exemplo• Suponha que esteja sendo utilizada uma linguagem que
o operador de concatenação seja “+”• Imagine que queremos construir a expressão
“REFRIGERANTE”, havendo a string “REFRI” e “GERANTE”• “REFRI” + “GERANTE” = “REFRIGERANTE”
67
Expressões
• Lógicas (Tabelas Verdade)– Considere as variáveis A e B. Como não sabemos
seus valores, se faz necessário desenvolver todas as combinações lógicas possíveis (Tabela Verdade)
A B NÃO A NÃO B A OU B A E B
V V F F V V
V F F V V F
F V V F V F
F F V V F F
68
Expressões
• Lógicas (Tabelas Verdade)– As tabelas verdade são utilizadas para verificar se
uma fórmula é verdadeira ou falsa, e quando que ela é verdadeira ou falsa
– São utilizadas em interrogatórios, para verificar se um indivíduo está mentindo ou não
– São utilizadas para quando não se sabe o valor verdadeiro de cada variável da fórmula
– Todas as probabilidades
69
Expressões
• Lógicas (Tabelas Verdade)– Verifique quando a seguinte expressão é falsa:
A v ¬B
• Falso quando A for falso e B for verdadeiro
A B ¬B A v ¬B
V V F V
V F V V
F V F F
F F V V
70
Atividades (classwork)• Informe a tabela verdade das seguintes expressões lógicas,
informando em cada questão quando que o resultado é falso ou verdadeiro:a) A ^ Bb) A v Bc) A v ¬Bd) ¬Ae) ¬A ^ Bf) A ^ ¬Bg) ¬A ^ ¬Bh) A v ¬Ai) B ^ ¬B v A
72
Representação de Algoritmos
• Pseudocódigo, algoritmo ou português estruturado– Utilizado para elaborar a sequência lógica pela
linguagem natural, antes de utilizar uma linguagem de programação
– Permite a tradução de um algoritmo para uma linguagem de programação específica, diretamente
– VisuAlg
73
Representação de Algoritmos
• Pseudocódigo, algoritmo ou português estruturado– Ex: Alô Mundo! (Hello World!)
75
Instruções Primitivas
• As instruções primitivas exercem funções básicas e essenciais para a operação dos computadores sendo:– Entrada de dados– Saída de dados
• Servem para que o sistema se comunique com:– Usuário– Periféricos
76
Instruções Primitivas
• Aplicativos, softwares e programas que não utilizam instruções primitivas é incapaz de se comunicar com o mundo exterior
• Programas sem comunicação com o mundo externo não tem qualquer utilidade
77
Instruções Primitivas
• De atribuição– Principal maneira de se armazenar informação em uma
variável• <nome_da_variável> <- <expressão>
– O tipo da variável deve estar conciso com o valor a ser atribuído (inteiro, real, literal, ...)
– No fluxograma é ilustrado pelo bloco PROCESSAMENTOvar = 1+1
78
Instruções Primitivas
• De saída de dados– Somente a instrução de atribuição não é suficiente
para haver comunicação, pois o valor fica armazenado na memória
– As instruções de saída são os meios pelos quais as informações são exibidas ao usuário e/ou periféricos• escreva(“Alô Mundo!”)• escreva(<variável>)
– No fluxograma é representado pelo bloco IMPRESSÃO DE RESULTADOSEscreva “Alô Mundo”
79
Instruções Primitivas
• De entrada de dados– Somente a instrução e saída não é suficiente, pois
não há dinamicidade no sistema– Cada vez que o programa é executado, novos
valores podem ser atribuídos às variáveis• leia(<variável>)
– No fluxograma é ilustrado pelo bloco ENTRADA DE DADOS NATURAL
leia Nome
81
Estrutura de Decisão
• As estruturas de decisão englobam os princípios da condição
• O fluxo de instruções a ser seguido é escolhido em função do resultado da condição
• Podem existir várias condições a serem avaliadas para a definição do fluxo a ser seguido
• Condição = Expressão lógica• As decisões podem ser tomadas por SE e
ESCOLHA
82
Estrutura de Decisão
• Tipo Se– Nesta estrutura uma única condição é avaliada– Se o resultado for verdadeiro (V, T, 1), então um
determinado conjunto de instruções será executado. Caso contrário, ou seja, o resultado for falso (F, F, 0) outro conjunto de instruções será executado
– É obrigatório que o algoritmo prossiga por alguma das condições (verdadeiro ou falso)
84
Estrutura de Decisão
• Tipo Se– Sintaxes
<condição>
<comando composto 1>
<comando composto 2>
V F
...
87
Estrutura de Decisão
• Tipo Escolha– Generalização do SE– Pode haver uma ou mais condições a serem
testadas e um comando composto diferente associado a cada uma das condições
88
Estrutura de Decisão
• Tipo Escolha– Sintaxes
<Condição_1> <Comando_composto_1>
...
<Condição_2> <Comando_composto_2>
V
VF
<Condição_n>
F…
<Comando_composto_n>
V
<Comando_composto_s>
F
89
Atividades (classwork)
• Transcreva os exercícios da aula passada utilizando o tipo ESCOLHA no VisuAlg– a) b) c)
• Elabore o fluxograma para cada exercício– a) b) c)
91
Estrutura de Repetição
• São comuns os trechos de código que devem ser repetidos em um algoritmo
• Este trecho de código pode conter valores diferentes, seja pela entrada ou pela saída de dados
• As estruturas de repetição também são conhecidas por laços de repetição ou loops
• Existem dois tipos de estruturas de repetição: laços contados e laços condicionais
Lógica de Programação (Leonardo Minelli)
92
Estrutura de Repetição
• Laços Contados– São utilizados para quando sabe-se ao certo
quantas vezes o comando composto no interior do bloco deverá ser executado
– Instrução dotada de mecanismos para contar quantas vezes o laço é executado
Lógica de Programação (Leonardo Minelli)
5x
93
Estrutura de Repetição
• Laços Contados– Semântica• O valor <inicio> é atribuído a variável <variavel>• O valor <variavel> é comparado com o valor <final>
– Se <variavel> for menor ou igual que <final>» Comando composto é executado» Ao final do comando é atribuído +1 para <variavel>
– Se <variavel> for maior que <final>» Comando composto não é executado
• Finaliza-se o laço
94
Estrutura de Repetição
• Laços Contados– Semântica• <variavel> é uma variável do tipo inteiro• <inicio>, <final>, <passo> podem ser constantes ou
variáveis• <passo> se não atribuído terá o valor de 1. Significa de
quanto em quanto será acrescido o valor a cada execução do laço de repetição, podendo ser positivo ou negativo
97
Estrutura de Repetição
• Laços Condicionais– Diferente dos laços contados, com os laços
condicionais não se sabe ao certo quantas vezes a repetição será executada
– Existem dois tipos de instruções que expressam este tipo de laço• Enquanto• Repita
98
Estrutura de Repetição
• Laços Condicionais– Enquanto
• No início da instrução a condição é testada– Se for falsa, os comandos compostos não serão executados, nem por
uma vez– Se for verdadeira, os comandos compostos serão executados
• Se repetirá até que a condição proposta seja falsa.
• Atenção:– O controle para saída do laço é de responsabilidade do criador do código!
Em um momento a condição deve ser falsa para que o laço pare de ser executado. Quando isto ocorre, é chamado de laço infinito ou looping
99
Estrutura de Repetição
• Laços Condicionais– Enquanto• Semântica
– <condição> é qualquer expressão lógica
100
Estrutura de Repetição
• Laços Condicionais– Repita• Semelhante ao enquanto• A condição é testada ao final do laço
– Diferente do enquanto, que é no início• Sempre será executado pelo menos uma vez
101
Estrutura de Repetição
• Laços Condicionais– Repita• Semântica
– <condição> é qualquer expressão lógica
103
Vetores
• Todas as variáveis, até agora, possuem somente um valor, correto?– Lembram do armário e das gavetas?
104
... Variáveis
• Imagine um armário:
Idade
Cidade
Estado
Nome
Salário
Nº filhos
38
1200.00
Ijuí
RS
Fulano Ciclano
3
105
Vetores
• Só podíamos armazenar um valor por vez em cada variável
• Se precisássemos armazenar 10 nomes, necessitaríamos de 10 variáveis de tipo literal!– nome1, nome2, nome3, ... nome10
• O vetor veio para acabar com estes problemas!
106
Vetores
• O que é um vetor?– Segundo a matemática...• Segmento de reta orientado que possuem a mesma
intensidade, mesma direção e mesmo sentido!• SANTOS, Reginaldo J.
108
Vetores
• O que é um vetor?– Segundo a informática...• Vetor é uma variável que, a partir de posições
diferentes, consegue armazenar várias informações do mesmo tipo• Sua posição inicial será SEMPRE 0 (zero)
• Existem basicamente dois tipos de vetores– Unidimensionais– Bidimensionais
109
Vetores
• Unidimensionais– Vetores unidimensionais são semelhantes a uma
“trilha” de informações– Pensando em um vetor com países que falam
português, por exemplo, um vetor unidimensional seria o seguinte:
pt[0,1,2,3,4,5,6,7]pt[0..7]
Brasil São Tomé e Príncipe
Cabo Verde
Timor Leste
Moçambique Portugal Guiné-Bissau Angola
110
Vetores
• Unidimensionais– VisuAlg• <variavel> : vetor[<inicio>..<final>] de <tipo de dado>
• Este comando criará um vetor unidimensional com o nome <variavel>, que iniciará em <inicio> e irá até <final>, possuindo o tipo de dado <tipo de dado>– Literal– Inteiro– Real
112
Vetores
• Bidimensionais– O que é um vetor?• Vetores Bidimensionais = Matrizes• Matriz
– É uma tabela de “m” linhas e “n” colunas sobre um conjunto, normalmente um corpo “F”, representada sobre a forma de um quadro “s”
115
Vetores
• Bidimensionais– Ex: pt[1,1] = Brasil
pt[1,2] = São Tomé e Príncipept[1,3] = Cabo Verdept[1,4] = Timor Lestept[2,1] = Moçambiquept[2,2] = Portugalpt[2,3] = Guiné-Bissaupt[2,4] = Angola
117
Procedimentos e Funções
• Subalgoritmos e subprogramas são blocos independentes de comandos que visam dividir as operações do programa
• Os subalgoritmos podem ser de dois tipos– Procedimentos– Funções
118
Procedimentos e Funções
• Procedimentos– Os procedimentos não possuem valores de
retorno– Os valores são processados e manipulados dentro
do bloco