You are on page 1of 133

1

INTRODUÇÃO À LÓGICA DE
PROGRAMAÇÃO

Professor:
Denílson C Oliveira
infofortaleza@gmail.com
Plano da Aula
2

1 – O QUE É LÓGICA.// 1.1. 5 – CONHECENDO A LINGUAGEM C. //


Desenvolvendo o pensamento lógico para 5.1. História.// 5.2. Funções.// 5.3.
programação Variáveis.// 5.4. Operadores.// 5.5. Laços.
2 – O QUE É ALGORITMO 6 – Programando em C
3 – CONCEITOS BÁSICOS DO
ALGORITMO EM UM COMPUTADOR.//
3.1. Variáveis e constantes.// 3.2.
Identificadores.// 3.3. Estrutura de controle:
3.3.1 Estrutura sequencial; 3.3.2. Estrutura
condicional; 3.3.3 Estrutura de
repetição.//3.4.Conhecendo o VisualG
4 – TIPOS DE LINGUAGENS DE
PROGRAMAÇÃO.// 4.1. Linguagens de
máquina//4.2. linguagens assembly.// 4.3.
Linguagens de alto nível.
3

Não existem perguntas bobas, existem


pessoas bobas que não perguntam !!!

Tirem suas dúvidas.. ;)


1 – O QUE É LÓGICA
4

“A inovação é que
distingue um líder de um
seguidor”.
(Steve Jobs, magnata americano criador da
Apple)
1 – O QUE É LÓGICA
5

 Para definir o que é lógica não basta apenas dizer que ela é um ramo da
matemática ou ainda da filosofia (pois ambas as afirmações podem ser
consideradas corretas), na realidade, é necessário compreender o que gera
uma conclusão lógica, ou seja, como ocorre o desenvolvimento do
pensamento humano.

 Para que isto seja possível é imprescindível entender as fundamentações


da lógica, que são o raciocínio e a inferência.

 Raciocinar é verificar algo e pensar a


respeito, buscando soluções para
problemas ou tentando entender o que se
vê. Podemos dizer que é o ato de receber
uma informação, analisá-la e concluir algo
a seu respeito.
1 – O QUE É LÓGICA
6

 Para que esta primeira etapa possa ocorrer, ou seja, para que o raciocínio
suceda, é necessário o fornecimento de dados para organizar as ideias e
desenvolver a compreensão, estas informações fornecidas são chamadas
de premissas.
 Vejamos um exemplo simples: O Japão situa-se na Ásia. Todos que
nascem no Japão são japoneses. Portanto, podemos concluir que os
japoneses são asiáticos.
 Vemos neste exemplo que há duas
premissas, duas informações, fornecidas
para se chegar à conclusão.
 A primeira premissa é que o Japão situa-se
na Ásia e a segunda é que todos que
nascem naquele país são japoneses. Assim,
o desenvolvimento do raciocínio lógico
baseia-se nestes dois dados obtidos.
1 – O QUE É LÓGICA
7

 Mas ainda há uma última etapa da lógica, que é a conclusão. A esta dá-se o
nome de inferência, ou ainda, dedução.
 É a conclusão tirada de algo observado com base nas premissas
fornecidas. Voltando ao exemplo retro citado, a inferência foi ?????

 Que todos os japoneses


são asiáticos.
1 – O QUE É LÓGICA
8

 Podemos assim concluir que a lógica pauta-se nestes dois fundamentos,


raciocínio e inferência, para que suas respostas sejam seguras, baseadas
na observação, verificação e dedução.

 É exatamente isso que um computador faz ao receber dados. Contudo, o


processamento de dados só acontece porque um programa (software) foi
desenvolvido para realizar esta função e o desenvolvimento deste, por seu
turno, só foi possível graças ao raciocínio lógico do seu desenvolvedor

 Conclusivamente podemos nos fundamentar no conceito de Cezar Mortari:


Lógica é a ciência que estuda princípios e métodos
de inferência, tendo o objetivo principal de determinar
em que condições certas coisas se seguem (são
consequência), ou não, de outras. (Mortari, Cezar A.
Introdução à lógica. São Paulo: Editora UNESP –
Imprensa Oficial do Estado, 2001. p.2)
1 – O QUE É LÓGICA
9

 Tão importante quanto compreender a informação recebida e chegar a uma


conclusão correta, é justificá-la.
 Essa etapa da lógica é chamada de argumentação.

 Argumentar é justificar uma afirmativa ou


negativa, demonstrando as razões que
levaram a esta conclusão. Esta etapa é
relevantíssima, pois podem ocorrer erros
no raciocínio que conduzem a uma
conclusão que simplesmente não decorre
da informação obtida, ou ainda, a
resposta pode ter sido obtida com um
mero golpe de sorte, o que não é
satisfatório!
1 – O QUE É LÓGICA
10

 Em programação, a argumentação se dá no próprio ato de planejar um


algoritmo, pois este deve seguir uma sequência de passos lógicos e
corretamente organizados.
 É um equívoco achar que esta etapa é irrelevante, pois a inserção de
códigos de forma aleatória, ou ainda, apenas copiados de outros programas
sem desenvolver um raciocínio lógico para obter o resultado que se espera,
fatalmente, levará o programa a falhar.
1.1 – Desenvolvendo o pensamento
lógico para a programação
11

 Como já vimos no tópico anterior, a lógica é oriunda do raciocínio e


conclusão, sendo a lógica de programação uma técnica de encadear
pensamentos sistematicamente, para criar um programa capaz de
atender às expectativas de seu desenvolvedor, ou seja, capaz de atingir
um determinado objetivo.

 Este encadeamento de pensamentos é uma sequência lógica, ou seja, um


passo-a-passo a ser seguido para se cumprir uma determinada tarefa.

 Por exemplo, caso alguém deseje fazer um programa que será utilizado em
caixas de supermercados, esta pessoa deve primordialmente identificar
quais são as informações necessárias para concluir um processo de compra
e venda em um supermercado (fluxograma?). Esta etapa é a identificação
das premissas para planejamento do algoritmo.
1.1 – Desenvolvendo o pensamento
lógico para a programação
12

 Ainda de acordo com o exemplo citado,


digamos que um cliente se dirige ao caixa do
supermercado para pagar por 10 unidades
de um produto “A”, o sistema no computador
deve ser capaz de identificar o produto,
saber o preço e somar o total da compra.
 Assim, podemos dizer que a sequência
lógica para este programa é:

 1 - identificar o produto A;

 2 - identificar o preço do produto A;

 3 - Multiplicar o preço do produto A por sua


quantidade;
 4 - Apresentar o resultado na tela para que o
comprador e o caixa saibam o valor total.
1.1 – Desenvolvendo o pensamento
lógico para a programação
13

 Percebe-se que nenhuma etapa pode ser esquecida pelo programa, ele
consulta, processa e informa.
 Por isso, deve-se atentar para o fato de que uma única ordem isolada não
serve como instrução para concluir um processo, é necessário um conjunto
de instruções logicamente sequenciadas, pois o computador não é capaz de
raciocinar, apenas segue instruções para concluir tarefas.
 Por isso a lógica é fundamental para a programação, pois um único erro na
sequência do passo-a-passo que o sistema deve seguir já desencadeia
erros nos cálculos ou a impossibilidade de fazê-los.

 A lógica decorre da prática, ou seja, quanto mais exercita-se o cérebro


com questões de raciocínio e inferência, maior a capacidade de evoluir a
habilidade mental para a lógica. Entretanto, vale salientar que o estudo deve
ser contínuo e com a verificação e correção das respostas. Em resumo, deve-
se testar na prática, não reter-se apenas ao mundo das ideias!
1.1 – Desenvolvendo o pensamento
lógico para a programação
14

RESOLVER TODOS OS EXERCÍCIOS NO CADERNO

 EXERCÍCIO 1: Os brincos das princesas


 EXERCÍCIO 2: A torre de Hanoi
 EXERCÍCIO 3: Vizinhos por acaso
 EXERCÍCIO 4: Amigas da escola
 EXERCÍCIO 5: Teste de QI do Einstein
 EXERCÍCIO 6: Figuras lógicas
 EXERCÍCIO 7: Corrida de carro
 EXERCÍCIO 8: Descubra que dia é hoje
 EXERCÍCIO 9: Idade das filhas
 EXERCÍCIO 10: O fazendeiro de herança complicada
1.1 – Desenvolvendo o pensamento
lógico para a programação
15

 EXERCÍCIO 1: OS BRINCOS DAS PRINCESAS

Há muito tempo atrás, num país distante, havia um velho rei


que tinha três filhas, chamadas Guilhermina, Genoveva e
Griselda. Querendo ele indicar sua sucessora lançou um
desafio: Chamando as filhas à sua presença, o rei mostrou-
lhes cinco pares de brincos, idênticos em tudo, diferentes
apenas no tipo de pedras preciosas neles engastadas: três
eram de esmeraldas e dois de rubi.
O rei vendou então os olhos das moças e, escolhendo ao
acaso, colocou em cada uma delas um par de brincos. O
teste consistia no seguinte: aquela que pudesse dizer, sem
sombra de dúvida, qual o tipo de pedra que havia em seus
brincos herdaria o reino.
1.1 – Desenvolvendo o pensamento
lógico para a programação
16

 EXERCÍCIO 1: OS BRINCOS DAS PRINCESAS

Retiraram as vendas dos olhos das moças e a primeira a


querer tentar acertar foi Guilhermina, que afirmou não ser
possível para ela saber qual brinco estava usando.
Em seguida, Genoveva também afirmou que não poderia
adivinhar que pedra havia em seus brincos. A última princesa,
Griselda, afirmou em alto e bom som que seu par de brincos
era de esmeraldas.
Como Griselda sabia, com certeza, que seu par de brincos
era de esmeraldas?

Retirado do livro: Mortari, Cezar A. Introdução à lógica. São Paulo: Editora UNESP –
Imprensa Oficial do Estado, 2001.
1.1 – Desenvolvendo o pensamento
lógico para a programação
17

 EXERCÍCIO 2: A TORRE DE HANOI

Admita três bastões posicionados verticalmente lado a lado. No primeiro


bastão há 3 roldanas ( 1 pequena, 1 média e 1 grande). Você deve
transferi-las para o último bastão obedecendo as seguintes condições:

 Só pode retirar as peças pela parte


superior do bastão
 Só pode retirar uma peça por vez
 Uma peça maior não pode ficar
sobre uma menor
 Toda peça retirada do bastão tem
que ser colocada em outro bastão,
antes da retirada da próxima.
1.1 – Desenvolvendo o pensamento
lógico para a programação
18

 EXERCÍCIO 3: VIZINHOS POR ACASO


Em uma determinada rua há pessoas de diferentes
nacionalidades que são vizinhos e que gostam de
coisas diferentes. Estabeleça a ordem em que as
casas estão dispostas baseando-se nas seguintes
informações:
O brasileiro não mora na segunda casa. Quem cria
cachorros gosta de jogar futebol. Tem uma casa entre
o jogador de tênis e a casa preta, que fica à direita. O
homem que cria cavalos mora exatamente do lado
esquerdo do homem que cria borboletas. O homem
que cria cachorros mora exatamente do lado direito
da casa branca. O Espanhol mora na terceira casa.
Há uma casa que é azul. Na rua mora um Alemão.
Um dos vizinhos gosta de jogar sinuca.
1.1 – Desenvolvendo o pensamento
lógico para a programação
19

 RESPOSTA DO PROBLEMA:
1.1 – Desenvolvendo o pensamento
lógico para a programação
20

 EXERCÍCIO 4: AMIGAS NA ESCOLA

 Descubra qual a matéria preferida, o animal de estimação, o suco que


mais gostam, a cor da mochila e a cidade brasileira que as 5 amigas
pretendem visitar nas próximas férias, de acordo com as informações
abaixo:
1.1 – Desenvolvendo o pensamento
lógico para a programação
21

 EXERCÍCIO 4: AMIGAS NA ESCOLA


 Joana gosta de suco de Abacaxi.  A dona da mochila Vermelha vai viajar para
 A menina que tem Hamsters gosta de estudar Fernando de Noronha.
Artes.  A primeira da esquerda usa uma mochila
 O suco favorito de Ana é de Limão Amarela.
 Jéssica está a esquerda da Renata.  A menina da mochila Azul tem Cachorros.
 Pati é a primeira da esquerda.  Quem gosta de Biologia senta ao lado da menina
que tem Hamsters.
 A menina da direita gosta de estudar Artes.
 A garota que senta à direita de quem gosta de
 Quem toma suco de Laranja gosta de Cavalos História prefere Matemática.
 A pessoa que gosta de suco de Limão está no  Quem gosta de suco de Laranja senta ao lado de
meio. quem gosta de suco de Maracujá.
 A mochila da Jéssica é Verde.  Viajará para o Rio de Janeiro a menina que tem a
 A menina à esquerda da do meio viajará mochila Preta.
Florianópolis.  A garota que gosta de suco de Morango tem
 Quem quer viajar pra Recife tem a mochila Pássaros como animal de estimação.
Amarela.  A menina que gosta de Biologia senta ao lado da
 A menina que gosta do suco de Abacaxi senta que gosta de Português.
ao lado da que viajará para Fernando de  Jéssica viajará para Salvador nas férias.
Noronha.
1.1 – Desenvolvendo o pensamento
lógico para a programação
22

 RESPOSTA DO PROBLEMA:
1.1 – Desenvolvendo o pensamento
lógico para a programação
23

 EXERCÍCIO 5: TESTE DE QI DO EINSTEIN

Albert Einstein criou este teste de QI


(raciocínio lógico) no século passado e
afirmou que 98% da população mundial não é
capaz de resolvê-lo.
Regras básicas para resolver o teste
1. Há 5 casas de diferentes cores;
2. Em cada casa mora uma pessoa de uma
diferente nacionalidade;
3. Esses 5 proprietários bebem diferentes bebidas,
fumam diferentes tipos de cigarros e têm um
certo animal de estimação;
4. Nenhum deles têm o mesmo animal, fumam o
mesmo cigarro ou bebem a mesma bebida.
1.1 – Desenvolvendo o pensamento
lógico para a programação
24

 EXERCÍCIO 5: TESTE DE QI DO EINSTEIN


DICAS:
 O Norueguês vive na primeira casa.
 O Inglês vive na casa Vermelha.
 O Sueco tem Cachorros como animais de estimação.
 O Dinamarquês bebe Chá.
 A casa Verde fica do lado esquerdo da casa Branca.
 O homem que vive na casa Verde bebe Café.
 O homem que fuma Pall Mall cria Pássaros.
 O homem que vive na casa Amarela fuma Dunhill.
 O homem que vive na casa do meio bebe Leite.
 O homem que fuma Blends vive ao lado do que tem Gatos.
 O homem que cria Cavalos vive ao lado do que fuma Dunhill.
 O homem que fuma BlueMaster bebe Cerveja.
 O Alemão fuma Prince.
 O Norueguês vive ao lado da casa Azul.
 O homem que fuma Blends é vizinho do que bebe Água.
1.1 – Desenvolvendo o pensamento
lógico para a programação
25

 EXERCÍCIO 6: FIGURAS LÓGICAS

Você deverá completar todas as


posições livres com as figuras ao
lado e seguindo as instruções
abaixo: Figuras:
1. Faça um tabuleiro com 5 linhas e
5 colunas
2. Em cada linha ou coluna não
poderão aparecer figuras
repetidas,
3. Não poderão aparecer figuras
repetidas nas duas diagonais
principais.
1.1 – Desenvolvendo o pensamento
lógico para a programação
26

 EXERCÍCIO 7: CORRIDA DE CARRO

Oito carros, de marcas e cores diferentes, que nada têm a


ver com suas cores da Formula 1, estão alinhados, lado a
lado, para uma corrida. Estabeleça a ordem em que os
carros estão dispostos, baseando-se nas seguintes
informações:
1.1 – Desenvolvendo o pensamento
lógico para a programação
27

 EXERCÍCIO 7: CORRIDA DE CARRO

1. O FERRARI está entre os carros 'vermelho' e 'cinza'.


2. O carro cinza esta a esquerda do vermelho.
3. O MCLAREN é o segundo carro à esquerda do FERRARI e o primeiro
à direita do carro 'azul'.
4. O MERCEDES não tem carro a sua direita e esta logo depois do carro
'preto'.
5. O carro preto está entre o MERCEDES e o carro 'amarelo'.
6. O JORDAN não tem carro algum à esquerda: está a esquerda do carro
'verde'.
7. A direita do carro 'verde' está o RENAULT.
8. O LOTUS é o segundo à direita do carro 'creme' e o segundo a
esquerda do carro 'marrom'.
9. O WILLIAMS é o segundo à esquerda do BENETTON
1.1 – Desenvolvendo o pensamento
lógico para a programação
28

 EXERCÍCIO 8: DESCUBRA QUE DIA É HOJE

Anteontem a Carol tinha 12 anos,


mas terá 15 no ano que vem. Com
base nisso, diga que dia é hoje?
1.1 – Desenvolvendo o pensamento
lógico para a programação
29

 EXERCÍCIO 9: IDADE DAS FILHAS


Dois amigos, A e B, conversavam sobre
seus filhos. A dizia a B que tinha 3 filhas,
quando B preguntou a idade das mesmas.
Sabendo A que B gostava de problemas de
aritmética, respondeu da seguinte forma:
“O produto das idades das minhas filhas é
36. A soma de suas idades é o número
daquela casa ali em frente”. Depois de
algum tempo B retrucou: “Mas isto não é
suficiente para que eu possa resolver o
problema”. A pensou um pouco e
respondeu: “Tem razão. Esqueci de dizer
que a mais velha toca piano”. Com base
nesses dados, B resolveu o problema.
Pergunta-se: qual a idade das filhas de A?
1.1 – Desenvolvendo o pensamento
lógico para a programação
30

 EXERCÍCIO 10: O FAZENDEIRO DE HERANÇA COMPLICADA

Um velho fazendeiro morreu deixando o seguinte


testamento:

- Quanto à minha criação bovina, quero deixá-la


para os meus filhos, Bruno, Lucas e Mateus, nas
seguintes proporções: ½ para o Bruno, ¼ para o
Lucas e finalmente, 1/5 para o Mateus. Esta
divisão deve ser respeitada e nenhum boi pode
ser cortado.

Como há 19 bois, os herdeiros pediram ajuda a um


vizinho que é ótimo em matemática. Como o vizinho
pode resolver este problema de divisão?
2 – O QUE É UM ALGORITMO?
31

“Antes de começar, planeje


cuidadosamente”.
(Cícero, filósofo romano.)
2 – O QUE É UM ALGORITMO?
32

 DEFINIÇÃO

Formalmente é uma sequência finita de passos que levam à execução


de uma tarefa. Podemos pensar em algoritmo como uma receita, uma
sequência de instruções que dão cabo de uma meta específica
(FORBELLONE et al., 2005).
2 – O QUE É UM ALGORITMO?
33

 ESTRUTURA DE UM ALGORITMO

ALGORITMO COM RESULTADO CERTO: sequência simples de passos para


alcançar um único objetivo.
Exemplo: Algoritmo para fazer um omelete
<NOME DO ALGORITMO> Fazer omelete
1º Passo: Pegar dois ovos
2º Passo: Quebrá-los em um prato
3º Passo: Bater até homogeneizar
4º Passo: Colocar os ovos batidos na frigideira com óleo quente
5º Passo: Fritar até dourar
6º Passo: Desligar o fogo e servir
2 – O QUE É UM ALGORITMO?
34

 ESTRUTURA DE UM ALGORITMO

ALGORITMO DE DECISÃO: pode existir mais de um resultado, por isso, a


execução de alguns passos depende de uma decisão
Exemplo: Algoritmo para fazer um omelete
<NOME DO ALGORITMO> Fazer omelete

1º Passo: Pegar dois ovos

2º Passo: Quebrá-los em um prato

3º Passo: Bater até homogeneizar

4º Passo: Escolher se usará óleo ou manteiga

5º Passo: Colocar os ovos batidos na frigideira com óleo ou manteiga quente

6º Passo: Fritar até dourar

7º Passo: Desligar o fogo e servir


2 – O QUE É UM ALGORITMO?
35

 ESTRUTURA DE UM ALGORITMO

ALGORITMO COM ESTRUTURA DE REPETIÇÃO: em alguns casos faz-se


necessário verificar uma condição dentro do algoritmo, por isso, enquanto o
objetivo final não for atingido, o algoritmo repetirá o processo.
Exemplo: Algoritmo para fazer um omelete
<NOME DO ALGORITMO> Fazer 4º Passo: Quebrá-los em um prato
omelete 5º Passo: Bater até homogeneizar
1º Passo: Pegar dois ovos 6º Passo: Colocar os ovos batidos na
2º Passo: Verificar se os ovos não frigideira com óleo quente
estão podres 7º Passo: Fritar até dourar
3º Passo: Se estiver podre, jogue fora 8º Passo: Desligar o fogo e servir
e repita os passos 1 e 2. Se não, vá
para o passo 4.
2 – O QUE É UM ALGORITMO?
36

 TIPOS DE ALGORITMOS:

 DESCRIÇÃO NARRATIVA: representação textual na linguagem natural

 FLUXOGRAMA: representação gráfica

 PSEUDOCÓDIGO (PORTUGOL OU PORTUGUÊS ESTRUTURADO): representação


textual codificada para um programa de computador específico.
2 – O QUE É UM ALGORITMO?
37

 DESCRIÇÃO NARRATIVA:

Analisar o enunciado e escrever em LINGUAGEM NATURAL os passos para a


elaborar o algoritmo.

Vantagem: não é necessário aprender nenhum conceito


novo

Desvantagem: abre espaço para várias interpretações;


dificulta a transcrição do algoritmo para o programa
2 – O QUE É UM ALGORITMO?
38

 FLUXOGRAMA

Segundo o Dicionário Aurélio: Representação gráfica, por meio de


símbolos geométricos, da solução algorítmica de um problema.
2 – O QUE É UM ALGORITMO?
39

 EXEMPLO:

Algoritmo para efetuar a soma de dois números:

 Receber os dois números;


 Efetuar a soma dos dois números;
 Mostrar o resultado.

Uma descrição narrativa utiliza-se do nosso idioma para descrever o algoritmo.


2 – O QUE É UM ALGORITMO?
40

 EXEMPLO:

Refazendo o algoritmo para efetuar a soma de dois números:

Digitar 1º número Digitar 2º número Efetuar a soma Apresentar o resultado


2 – O QUE É UM ALGORITMO?
41

 FLUXOGRAMA:

O algoritmo é apresentado em formato gráfico


Cada ação ou situação é representada por um tipo de caixa.

Símbolos
2 – O QUE É UM ALGORITMO?
42

 FLUXOGRAMA:
Outros Símbolos
2 – O QUE É UM ALGORITMO?
43

 FLUXOGRAMA:

Analisar o enunciado e escrever em LINGUAGEM SIMBÓLICA os passos para


elaborar o algoritmo.

Vantagem: entendimento mais simples que texto

Desvantagem:
 Aprender a simbologia.
 O algoritmo resultante não apresenta muitos detalhes, dificultando
sua transcrição
2 – O QUE É UM ALGORITMO?
44

 PSEUDOCÓDIGO (PORTUGOL)
 O pseudocódigo é uma forma de representação baseada na escrita de
códigos que lembram uma linguagem de programação.

 Ela serve para mostrar a lógica do programa a ser desenvolvido.

 Essa modalidade não possui regras tão flexíveis quanto a descrição


narrativa e nem tão rígidas quanto uma linguagem de programação.
2 – O QUE É UM ALGORITMO?
45

 PSEUDOCÓDIGO (PORTUGOL)

Consiste em analisar o enunciado e escrever, por meio de REGRAS


PREDEFINIDAS, os passos seguidos para a resolução de um algoritmo em um
determinado sistema de computador.

 Vantagem:
 A passagem do algoritmo para qualquer linguagem é quase imediata; basta conhecer
as palavras reservadas que serão utilizadas

 Nativa a quem o escreve; pode ser entendido por qualquer pessoa;

 Não há necessidade de conhecer a sintaxe de nenhuma linguagem de programação.

 Desvantagem: aprender as regras de pseudocódigo


2 – O QUE É UM ALGORITMO?
46

 EXEMPLO:

Com o mesmo exemplo do algoritmo para efetuar a multiplicação de dois


números:
2 – O QUE É UM ALGORITMO?
47

RESOLVER TODOS OS EXERCÍCIOS NO CADERNO EM DESCRIÇÃO


NARRATIVA E FLUXOGRAMA

 EXERCÍCIO 11: Pinguins em uma fria


 EXERCÍCIO 12: O lobo, a ovelha e a couve
 EXERCÍCIO 13: Transporte chinês
 EXERCÍCIO 14: Missionários e Canibais
 EXERCÍCIO 15: Ponte escura
 EXERCÍCIO 16: A travessia das cabras
 EXERCÍCIO 17: Divisão de água
2 – O QUE É UM ALGORITMO?
48

 EXERCÍCIO 11: PINGUINS EM UMA FRIA

Existem 6 pinguins tentando chegar à margem oposta


de um rio gelado. Dentre eles há um adulto usando
cachecol vermelho e seu filhote também, outro adulto
que está usando cachecol verde e seu filhote também.
O último adulto, veste cachecol azul e seu filhote
também. Para ajuda-los a atravessar, fique atento às
seguintes regras:
 Os filhotes não ficam na margem sozinhos, só com adultos
 Há um iceberg onde apenas dois pinguins, de cada vez,
podem subir para atravessar.
 O iceberg não atravessa sem nenhum pinguim nele.
2 – O QUE É UM ALGORITMO?
49

 EXERCÍCIO 12: O LOBO, A OVELHA E A COUVE

Na margem esquerda de um rio estão:


1 Pastor
1 Lobo
1 Cabra
1 Repolho

Objetivo: Passar todos para a margem direita do rio, sendo que:


 O pastor só pode atravessar um “passageiro” de cada vez;
 Um “Passageiro” que “devora” o outro nunca podem estar no mesmo local sem
a presença do pastor..
2 – O QUE É UM ALGORITMO?
50

 EXERCÍCIO 13: TRANSPORTE CHINÊS

Transportar todos as pessoas de um lado para


outro do rio, sendo que:

 Somente o pai, a mãe e o policial sabem pilotar o


barco;
 A mãe não pode ficar sozinha com os filhos;

 O pai não pode ficar sozinho com as filhas;

 O prisioneiro não pode ficar sozinho com nenhum


integrante da família;

 O barco só pode transportar duas pessoas por vez;

 Você pode ir e vir com as pessoas quantas vezes


precisar.
2 – O QUE É UM ALGORITMO?
51

 EXERCÍCIO 14: MISSIONÁRIOS E CANIBAIS

Três missionários e três canibais encontram-se


do mesmo lado de um rio. Eles combinaram
que todos gostariam de chegar à outra
margem, porém, os missionários temem que
os canibais devore-os e querem organizar a
travessia de modo que o número de
missionários, em qualquer lado do rio, nunca
seja menor que o número de canibais que
estejam do mesmo lado.
O único barco disponível carrega apenas duas
pessoas de cada vez, então, como todos os
missionários conseguirão chegar ao outro lado
sem serem devorados?
2 – O QUE É UM ALGORITMO?
52

 EXERCÍCIO 15: PONTE ESCURA


Ajude todas as pessoas a atravessarem a ponte.
Está tudo escuro, por isso é necessário usar a
lanterna para atravessá-la. A luz só dura 30 minutos.
Cada pessoa anda em uma determinada velocidade
e sempre que passa pela ponte, o valor da sua
velocidade é diminuído do tempo da lanterna. Saiba
que a ponte somente suporta duas pessoas de cada
vez.
Tempo das pessoas: atleta 1 minuto; chinês 3
minutos; homem 6 minutos; mulher 8 minutos;
velha 12 minutos.
2 – O QUE É UM ALGORITMO?
53

 EXERCÍCIO 16: A TRAVESSIA DAS CABRAS

Atravesse todas as cabras, em segurança, para o outro lado do rio,


obedecendo as seguintes regras:

 A balsa só pode conduzir dois personagens, humanos/animais,


ao mesmo tempo.

 A Cabra Negra não pode ficar sozinha com os filhotes de Cabra


de cor branca, a menos que a Cabra Branca esteja presente.

 A Cabra Branca não pode ficar sozinha com os filhotes de Cabra


de cor negra, a menos que a Cabra Negra esteja presente.

 O Lobo não pode ficar sozinho com nenhum dos animais, a


menos que o Pastor esteja presente.

 Somente as Cabras adultas e o Pastor podem conduzir a balsa.


2 – O QUE É UM ALGORITMO?
54

 EXERCÍCIO 17: DIVISÃO DE ÁGUA

Há três garrafas de água, cada uma com uma capacidade diferente.


A maior contém 8 litros de água. A média possui capacidade para 5
litros de água, mas está vazia. A menor garrafa possui capacidade
para 3 litros de água, mas também está vazia.

Você deve transferir a água entre as garrafas de modo que, ao final,


a garrafa maior (capacidade 8L) fique com 4 litros de água e a
média (capacidade 5L) com 4 litros também.

Não é possível medir a quantidade de água, porque os recipientes


não possuem escala de medição, sabe-se apenas o volume total de
cada garrafa. Por isso, cada transferência (entre as garrafas) deve
ser feita no volume total da garrafa receptora.
3 – CONCEITOS BÁSICOS DO ALGORITMO EM UM
COMPUTADOR
55

“Inteligência...é a faculdade
de criar objetos artificiais,
principalmente ferramentas
para criar ferramentas.”
(Henri-Louis Bergson, filósofo e diplomata francês
com prêmio Nobel de literatura.)
3 – CONCEITOS BÁSICOS DO ALGORITMO EM UM
COMPUTADOR
56

 INSTRUÇÕES

Normas ou regras definidas para a realização ou emprego de


algo.

Sequência isoladas não resolvem problemas. Devem


haver conjuntos de instruções em ordem sequencial
lógica para a realização de alguma tarefa.

As instruções devem ser executadas em modo sequencial


3 – CONCEITOS BÁSICOS DO ALGORITMO EM UM
COMPUTADOR
57

 AS INSTRUÇÕES DO ALGORITMO NO COMPUTADOR

A CPU busca a instrução na memória


Decodifica-as para determinar os operandos (e.g. +, - )
Determina as operações a realizar com os operandos
Executa as operações
Busca, Decodifica e Executa as próximas instruções
3 – CONCEITOS BÁSICOS DO ALGORITMO EM UM
COMPUTADOR
58

 AS INSTRUÇÕES DO ALGORITMO NO COMPUTADOR


3 – CONCEITOS BÁSICOS DO ALGORITMO EM UM
COMPUTADOR
59

 REPRESENTAÇÃO DE DADOS
3 – CONCEITOS BÁSICOS DO ALGORITMO EM UM
COMPUTADOR
60

 TIPOS PRIMITIVOS DE DADOS

Tipos de Dados (TD)

Numérico: inteiro (sem parte fracionária), real (com


parte fracionária)

 Lógico: booleanos, podem assumir valores de


verdadeiro e falso

 Literais: um caractere ou uma sequencia deles


3 – CONCEITOS BÁSICOS DO ALGORITMO EM UM
COMPUTADOR
61

 DADOS NUMÉRICOS

Representam quantidades. Basicamente,


existem dois tipos de informação numérica:

Números Inteiros: 1 , 827 , 1235 ;


Números Reais: 1.35 , 827. , -83.420 , -5.2
E7

Operações:
+ SOMA, - SUBTRAÇÃO, / DIVISÃO, *
MULTIPLICAÇÃO e ** POTENCIAÇÃO
3 – CONCEITOS BÁSICOS DO ALGORITMO EM UM
COMPUTADOR
62

 DADOS LITERAIS

Representam as letras, os dígitos


numéricos e os caracteres especiais. Pode
ser um caracter ou um conjunto deles.
Conjuntos são conhecidos como cadeias de caracteres, tradução
da expressão em inglês, "character string".

Caracteres são basicamente as letras minúsculas, maiúsculas,


algarismos, sinais de pontuação, etc. Em computação caracteres
são representados por códigos binários e o mais disseminado de
todos é o código ASCII. Este padrão foi definido nos Estados
Unidos e é empregado pela quase totalidade dos fabricantes de
computadores e programas.
3 – CONCEITOS BÁSICOS DO ALGORITMO EM UM
COMPUTADOR
63

 DADOS LITERAIS
3 – CONCEITOS BÁSICOS DO ALGORITMO EM UM
COMPUTADOR
64

 DADOS LÓGICOS

Também é chamado de dados booleanos,


devido a George Boole, matemático que deu seu
nome à álgebra (álgebra booleana) que
manipula este tipo de dados.
Um valor lógico pode estar em apenas um dos
estados: Verdadeiro (V) ou Falso (F).

Operações:

NÃO - Troca o estado

OU - Se algum estado for verdadeiro, então verdadeiro

E - Se algum estado for falso, então falso


3.1 – Variáveis e constantes
65

 Os dados que são recebidos por um programa, para serem processados,


são armazenados na memória. Variáveis e constantes são esses dados
que o computador manipula.
 Cada dado recebe uma posição na memória, o que torna possível encontra-
lo posteriormente.
 Uma variável representa uma posição na memória. Ela tem nome e tipo,
seu conteúdo pode variar (ser alterado) posteriormente, durante a
execução do programa.
 As variáveis podem assumir diferentes valores, mas só podem armazenar
um valor a cada instante.
Exemplo:
Em um determinado programa é solicitado ao usuário digitar o
nome de um aluno. A variável “aluno” poderá receber um nome e
depois trocar por outro, o que a torna modificável.
3.1 – Variáveis e constantes
66

 As constantes são semelhantes às variáveis, mas seu valor será fixado no


início do programa e não poderá ser alterado.
 Se uma constante é declarada, este dado será sempre o mesmo na
execução do programa, independente das variáveis sofrerem alterações.

Exemplo:
Um programa que cria um boletim para alunos possui muitas
variáveis, como por exemplo: aluno, matrícula, notas, etc.
Mas o nome da instituição de ensino será sempre o mesmo, não
podendo ser modificado. Este dado é uma constante.
3.2 – Identificadores
67

 De acordo com Harvey M. Deitel:

“Um identificador consiste em uma série de caracteres


composta por letras, dígitos e o caractere sublinhado ( _ ) que
não começa por um dígito. Um identificador pode ter
qualquer comprimento, mas de acordo com a linguagem de
programação utilizada, apenas um certo número de caracteres
serão utilizados no reconhecimentos dos compiladores. No
caso da linguagem C serão reconhecidos somente os 31
primeiros caracteres.”(DEITEL, H.M.; DEITEL P.J.; NIETO. C: Como
programar. Tradução Daniel Vieira. 6ª ed. São Paulo: Pearson Education do Brasil,
2011.p.24)

 Também de acordo com a linguagem utilizada, os identificadores poderão


ser “case sensitive” ou não.
3.2 – Identificadores
68

 Exemplos de identificadores válidos:


Alpha, nome, nota1, nota2, CPF, nome_funcionario
 Exemplo de identificadores inválidos:
5, t(b), A:B

OBSERVAÇÃO:
Evite identificadores muito longos e que tornem o programa confuso.
Prefira identificadores separados por sublinhado, como no exemplo
acima: nome_funcionário.
Se preferir utilizar palavras juntas, escreva a primeira letra de cada
palavra em maiúsculo, como por exemplo: NomeFuncionario.
Não são permitidos espaços em branco e nem caracteres especiais. Não
é permitido usar palavras reservadas
3.3 – Estrutura de controle
69

 Também chamada de FLUXO DE CONTROLE, é a ordem em que as


instruções, expressões e chamadas de função são avaliadas ou executadas
pelo programa.
 Cada linguagem de programação possui tipos de estrutura de controle
diferentes, mas assemelham-se em seus efeitos. Em nível de linguagem de
máquina, as instruções de estruturas de controle geralmente funcionam ao
alterar o contador de programa. Já na linguagem de alto nível há vários
tipos de estrutura de controle, aqui veremos os três principais:
Estrutura sequencial

Estrutura condicional

Estrutura de repetição
3.3.1 – Estrutura sequencial
70

 Basicamente ela indica ao


computador que a execução
continua na próxima instrução,
de forma sequencial e
obedecendo uma ordem de
cima para baixo, respeitando a
ordem em que foram declaradas.

 Estrutura básica da ES:

Nome do algoritmo
Declaração de variáveis
Bloco de comandos
Fim_algoritmo
3.3.2 – Estrutura condicional
71

 É também chamada de estrutura


de seleção, expressão
condicional ou construção
condicional. Esta estrutura
realiza diferentes ações de
acordo com a condição proposta
previamente, dependo se essa é
verdadeira ou falsa.
 A expressão é processada e
transformada em um valor
booleano, podendo ser ser
simples ou composta.
3.3.2 – Estrutura condicional
72

 Estrutura simples de EC:

Se (condição) Então
(bloco de código)
Senão
(bloco de código)
Fim Se

 Estrutura composta de EC:

Se (condição) Então
(bloco de código)
Senão
Se (condição) Então
(bloco de código)
Fim Se
Fim Se
3.3.3 – Estrutura de repetição
73

 Quando um trecho do algoritmo necessita


ser repetido, ou ele todo, é utilizado uma
ER. O número de repetições pode ser
fixo (com variável de controle) ou
atrelado a uma condição.
 A condição é verificada e se for
verdadeira o bloco de comandos será
executado. Após a execução a condição
é verificada novamente e se ela ainda for
verdadeira o bloco será novamente
executado.
 Só é interrompido este processo quando
a verificação do programa encontrar a
condição como falsa, o que o leva para a
próxima instrução.
3.3.3 – Estrutura de repetição
74

 Basicamente existem três tipos de estruturas de repetição:


 Repetição pré-testada
 Repetição pós-testada
 Repetição com variável de controle

 Repetição pré-testada:
Nesta estrutura, a condição é primeiramente verificada e se for verdadeira o
bloco é executado. No final de execução do bloco a condição é novamente
testada.
Enquanto (condição) Faça
(bloco de código)
Fim Enquanto
3.3.3 – Estrutura de repetição
75

 Repetição pós-testada:
É uma variação da estrutura
anterior e difere na etapa da
verificação da condição, pois
esta é feita após uma execução
do bloco de comandos.

Repita
(bloco de código)
Ate (condição)
3.3.3 – Estrutura de repetição
76

 Repetição com variável de controle:


É uma estrutura de repetição que designa uma variável de controle para cada
iteração do bloco e uma operação de passos a cada iteração.
Para I <- a até z faça passo X
Inicio
Comando1
Comando2
...
comando
Fim

Onde I é o comando inicial, “a” é a primeira condição e “z” é a última condição.


O passo X é o incremento.
3.3.3 – Estrutura de repetição
77

 Exemplo de repetição com variável de controle:

Para J <- 1 até 9 faça passo 2


Escreva J
Fimpara

O comando J será executado 5 vezes, ou seja, para J variando de 1 a 9 de 2


em 2. Assim os valores de J são: 1, 3, 5, 7, 9.
3.4 – Conhecendo o VisualG
78

 O QUE É O VISUALG?

Editor e interpretador de
algoritmos

Criado pelo professor Claúdio


Morgado de Souza (Professor do
Centro de Ensino Superior de Valênca- RJ)

Utilizado por alunos iniciantes


em programação, para que
possam exercitar seus
conhecimentos
3.4 – Conhecendo o VisualG
79

 TELA DO PROGRAMA
3.4 – Conhecendo o VisualG
80

CARACTERÍSTICAS:

Possui interface simples;


Aceita instruções em português estruturado;
Os programas gerados são mais limitados que as linguagens de programação
convencional.
A linguagem do VisuAlg permite apenas um comando por linha: desse modo, não há
necessidade de tokens separadores de estruturas, como o ponto e vírgula em
Pascal, por exemplo.
Também não existe o conceito de blocos de comandos (que correspondem ao begin e
end do Pascal e ao { e } do C)
 todas as palavras-chave do VisuAlg foram implementadas sem acentos, cedilha, etc.
Portanto, o tipo de dados lógico é definido como logico, o comando se..então..senão é
definido como se..entao..senao, e assim por diante.
Não é case-sensitive (não distingue maiúsculas e minúsculas no reconhecimento de
palavras-chave e nomes de variáveis).
3.4 – Conhecendo o VisualG
81

CARACTERÍSTICAS:

Nome do programa

Comentários (use // para escrever


comentários)
Variáveis (memória)

Comandos
3.4 – Conhecendo o VisualG
82

TIPOS DE DADOS:

NO VISUALG AS VARIÁVEIS PODEM TER OS SEGUINTES TIPOS DE


DADOS:

inteiro: define variáveis numéricas do tipo inteiro, ou seja, sem casas decimais.
real: define variáveis numéricas do tipo real, ou seja, com casas decimais.
caractere: define variáveis do tipo string, ou seja, cadeia de caracteres.
logico: define variáveis do tipo booleano, ou seja, com valor VERDADEIRO ou
FALSO.

ATENÇÃO: As variáveis são escritas no espaço que fica depois do nome do


algoritmo e antes da palavra “início”, com a palavra reservada “var”.
3.4 – Conhecendo o VisualG
83

EXEMPLO DE DECLARAÇÃO DE VARIÁVEL:

Declaração das
variáveis
3.4 – Conhecendo o VisualG
84

ATRIBUIÇÃO DE VALORES:

A atribuição de valores a variáveis é feita com o operador <-. Do seu lado


esquerdo fica a variável à qual está sendo atribuído o valor, e à sua direita pode-
se colocar qualquer expressão (constantes, variáveis, expressões numéricas),
desde que seu resultado tenha tipo igual ao da variável.
Alguns exemplos de atribuições:
3.4 – Conhecendo o VisualG
85

OPERADORES ARITMÉTICOS:
Operadores unários, isto é, são aplicados a um único operando. São os operadores
+,- aritméticos de maior precedência. Exemplos: -3, +x. Enquanto o operador unário - inverte
o sinal do seu operando, o operador + não altera o valor em nada o seu valor.

Operador de divisão inteira. Por exemplo, 5 \ 2 = 2. Tem a mesma precedência do operador


\ de divisão tradicional.

+,- Operadores aritméticos tradicionais de adição, subtração, multiplicação e divisão. Por


,*, convenção, * e / têm precedência sobre + e -. Para modificar a ordem de avaliação das
/ operações, é necessário usar parênteses como em qualquer expressão aritmética.

MOD
Operador de módulo (isto é, resto da divisão inteira). Por exemplo, 8 MOD 3 = 2. Tem a
ou mesma precedência do operador de divisão tradicional.
%
Operador de potenciação. Por exemplo, 5 ^ 2 = 25. Tem a maior precedência entre os
^ operadores aritméticos binários (aqueles que têm dois operandos).
3.4 – Conhecendo o VisualG
86

OPERADORES RELACIONAIS:

Respectivamente: igual, menor que, maior que, menor ou igual a, maior ou


=,
igual a, diferente de.
<,
>,
São utilizados em expressões lógicas para se testar a relação entre dois
<=,
valores do mesmo tipo. Exemplos: 3 = 3 ( 3 é igual a 3?) resulta
>=,
em VERDADEIRO ; "A" > "B" ("A" está depois de "B" na ordem
<>
alfabética?) resulta em FALSO.

Importante: No VisuAlg, as comparações entre strings não diferenciam as letras


maiúsculas das minúsculas. Assim, "ABC" é igual a "abc". Valores lógicos obedecem à
seguinte ordem: FALSO < VERDADEIRO.
3.4 – Conhecendo o VisualG
87

OPERADORES LÓGICOS:
Operador unário de negação. nao VERDADEIRO = FALSO, e nao
nao FALSO = VERDADEIRO. Tem a maior precedência entre os operadores
lógicos.
Operador que resulta VERDADEIRO quando um dos seus operandos
ou
lógicos for verdadeiro.
Operador que resulta VERDADEIRO somente se seus dois operandos
e
lógicos forem verdadeiros.

Operador que resulta VERDADEIRO se seus dois operandos lógicos


xou
forem diferentes, e FALSO se forem iguais.
3.4 – Conhecendo o VisualG
88

COMANDO DE SAÍDA “ESCREVA”:


3.4 – Conhecendo o VisualG
89

EXECUÇÃO DO PROGRAMA:

O resultado é exibido na parte lateral inferior.


3.4 – Conhecendo o VisualG
90

EXECUÇÃO DO PROGRAMA:

O resultado pode ser exibido clicando em “rodar o algoritmo” no menu “run”. Uma tela
em DOS mostrará o resultado.
3.4 – Conhecendo o VisualG
91

EXECUÇÃO DO PROGRAMA:
 Janela em modo “Prompt de Comando”
3.4 – Conhecendo o VisualG
92

UTILIZANDO O PROGRAMA:
É possível usar
vários comando
“escreva” para
mostrar
diversas frases
na tela.
3.4 – Conhecendo o VisualG
93

COMANDO DE SAÍDA “ESCREVAL”:


Observe que
“escreva” coloca
o texto sempre
na mesma linha.
Se quisermos
colocar cada
frase em uma
linha diferente
usamos o
“escreval”, que
salta para a
próxima linha
após exibir o
texto.
3.4 – Conhecendo o VisualG
94

RESOLVER OS EXERCÍCIOS NO VISUALG

 EXERCÍCIO 18: Desenvolva um programa que escreva seu nome


 EXERCÍCIO 19: Desenvolva um programa que escreva seu nome em uma
linha e o sobrenome em outra
3.4 – Conhecendo o VisualG
95

 RESPOSTA DO EXERCÍCIO 18:


(https://drive.google.com/file/d/0BwMLkIEmehaAa0ttY0ZZTEJMNkU/view?usp=sharing)
3.4 – Conhecendo o VisualG
96

 RESPOSTA DO EXERCÍCIO 19:


(https://drive.google.com/file/d/0BwMLkIEmehaAbHZsdzVXNnJpZmc/view?usp=sharing)
3.4 – Conhecendo o VisualG
97

COMANDO DE ENTRADA “LEIA”:


Recebe valores
digitados pelos
usuário, atribuindo-
os às variáveis cujos
nomes estão em
<lista-de-variáveis>
(é respeitada a
ordem especificada
nesta lista).
3.4 – Conhecendo o VisualG
98

COMANDO DE DESVIO CONDICIONAL (“SE”):


Ao encontrar este comando, o
VisuAlg analisa a (expressão-
lógica). Se o seu resultado for
VERDADEIRO, todos os
comandos da (seqüência-de-
comandos) (entre esta linha e a
linha com “fimse”) são
executados. Se o resultado for
FALSO, estes comandos são
desprezados e a execução do
algoritmo continua a partir da
primeira linha depois do “fimse”.
3.4 – Conhecendo o VisualG
99

COMANDO DE SELEÇÃO MÚLTIPLA (“CASO”):


Ao encontrar este comando, o
VisuAlg analisa a (expressão-
lógica). Como há vários casos
possíveis o programa analisará
qual comando se aplica ao caso
que ele está analisando.
3.4 – Conhecendo o VisualG
100

ESTRUTURA DE REPETIÇÃO
O VisualG implementa as três estruturas de repetição usuais
nas linguagens de programação:

O laço contado (para...ate...faca)

Os laços condicionados:


 enquanto...faca
 repita...ate
3.4 – Conhecendo o VisualG
101

PARA...FAÇA
3.4 – Conhecendo o VisualG
102

EXEMPLO (INCREMENTA +1):


3.4 – Conhecendo o VisualG
103

EXEMPLO (DECREMENTA -1):


3.4 – Conhecendo o VisualG
104

ENQUANTO...FAÇA
3.4 – Conhecendo o VisualG
105

EXEMPLO (INCREMENTA +1):


3.4 – Conhecendo o VisualG
106

RESOLVER TODOS OS EXERCÍCIOS NO VISUALG


 EXERCÍCIO 20: Cálculo da área de um retângulo
 Observação: a área de uma figura geométrica retangular é calculada pela fórmula área = largura x altura.

 EXERCÍCIO 21: Troca de valores


 Armazenar dois números em variáveis e trocar os seus valores
 EXERCÍCIO 22: Cálculo das raízes de uma equação de segundo grau
 Onde: ax² + bx + c = 0, sendo a, b e c números reais, com a ≠ 0. Delta (∆) é a raiz
 Observação: ∆ > 0, a equação possui duas raízes reais e distintas. ∆ = 0, a equação
possui raízes reais iguais. ∆ < 0, a equação não possui raízes reais.
3.4 – Conhecendo o VisualG
107

RESOLVER TODOS OS EXERCÍCIOS NO VISUALG


 EXERCÍCIO 23: Cálculo do custo de uma viagem
 Calcule qual o custo de uma viagem de carro para uma determinada distância. Saiba
que a distância é medida em Km, o combustível em L e o valor do litro em R$.
 EXERCÍCIO 24: Números positivos e negativos
 Faça um algoritmo que informe se um número, diferente de zero, é positivo ou
negativo. Preveja uma resposta para o caso do número ser zero.
 EXERCÍCIO 25: Média de cada aluno
 Faça um algoritmo que calcule a média de 3 notas de um aluno. Saiba que a nota
mínima para ser aprovado é 7, a nota para ir à recuperação é 5 e abaixo disso o aluno
é reprovado.
 EXERCÍCIO 26: Qual é o fatorial?
 Crie uma função para calcular o fatorial de um número.
4 – TIPOS DE LINGUAGENS DE PROGRAMAÇÃO
108

“Pensamentos sublimes
devem ser escritos em uma
linguagem sublime”.
(Aristófanes, dramaturgo grego.)
4 – TIPOS DE LINGUAGENS DE PROGRAMAÇÃO
109

Nem todas as linguagens de programação são diretamente


compreendidas pelo computador, por isso existem tipos diferentes de
linguagens, sendo geralmente classificadas em três grandes grupos:

 Linguagens de máquina
 Linguagens assembly
 Linguagens de alto nível
4 – TIPOS DE LINGUAGENS DE PROGRAMAÇÃO
110

 LINGUAGEM DE MÁQUINA

Os computadores somente são capazes de


entender sua própria linguagem de máquina, esta, em
particular, é definida pelo seu projeto de hardware, ou
seja, um hardware só entende a sua linguagem
específica.
Estas linguagens de máquina geralmente
consistem em cadeias de números, chamadas de
streams, composta de uns e zeros. São elas responsáveis
por instruir o computador a realizar a maioria das suas
operações elementares. Estas linguagens de máquina
são, na realidade, dependentes da máquina, pois uma
linguagem específica só pode ser usada em um tipo de
computador específico para ela.
4 – TIPOS DE LINGUAGENS DE PROGRAMAÇÃO
111

 LINGUAGEM DE MÁQUINA

A linguagem de máquina combina os zeros e uns em formato binário,


decimal ou hexadecimal, para que esta codificação seja convertida em um
processo a ser executado pela máquina. Este tipo de programação exige muito
do programador, é excessivamente lenta e propensa a erros, ademais, com a
evolução dos hardwares e sua capacidade de multiprocessamento, ficou
inviável programar apenas em linguagem de máquina.
Em decorrência desta evolução, os programadores também evoluíram a
forma de programar e ao invés de usarem strings, passaram a usar
abreviações parecidas com o inglês, fazendo assim uma nova codificação para
as operações elementares do computador. Esta mudança foi a base do
programa assembly.
4 – TIPOS DE LINGUAGENS DE PROGRAMAÇÃO
112

 LINGUAGEM ASSEMBLY

Programas de tradução são chamados


de assemblers. Eles são capazes de
converter um programa em linguagem
assembly para a linguagem de máquina de
forma muito mais rápida, em velocidade de
computador.
Este tipo de codificação é mais claro
para os seres humanos, pois utiliza uma
pseudo linguagem próxima ao idioma inglês,
ao invés de utilizar apenas zeros e uns.
Contudo, ele é incompreensível para os
computadores até ser traduzido para a
linguagem de máquina.
4 – TIPOS DE LINGUAGENS DE PROGRAMAÇÃO
113

 LINGUAGEM ASSEMBLY

Entretanto, o uso dos computadores aumentou muito, tendo seu


crescimento ocorrido aceleradamente com o advento das linguagens assembly.
Estas, por seu turno, possuem o inconveniente de exigirem muitas
instruções para realizar qualquer tarefa, o que motivou os programadores a
criarem linguagem mais práticas para acelerar o processo de programação.
Estas novas linguagens são chamadas de linguagens de alto nível.
4 – TIPOS DE LINGUAGENS DE PROGRAMAÇÃO
114

 LINGUAGEM DE ALTO NÍVEL

Elas consistem em comandos simples,


capazes de realizar até tarefas substanciais para o
computador.
Foram desenvolvidos também os programas
chamados de compiladores, que são responsáveis
por traduzir a linguagem de alto nível para a
linguagem de máquina.
Contudo, a compilação pode exigir muito
tempo e por isso foram criados programas capazes
de executar a linguagem de alto nível diretamente,
ignorando o passo da compilação. Estes programas
são chamados de interpretadores.
4 – TIPOS DE LINGUAGENS DE PROGRAMAÇÃO
115

 LINGUAGEM DE ALTO NÍVEL

Embora os programas compilados sejam executados mais rápidos do


que os interpretados, os interpretadores tornaram-se populares entre os
desenvolvedores, pois estes alteram frequentemente seus programas à
medida que adicionam recursos e corrigem erros, sendo mais prático não
perder tempo compilando.
Somente na versão final do programa desenvolvido é que os
programadores fazem a versão compilada para que o software seja executado
com eficiência máxima.
5 – CONHECENDO A LINGUAGEM C
116

“C é excêntrico, defeituoso e
um enorme sucesso.”
(Dennis Ritchie (1941-2011), criador da
linguagem de programação C.)
5.1 – História
117

Durante a década de 1960, duas linguagens foram desenvolvidas sem


um tipo definido, pois ambas não eram linguagens de máquina e nem
Assembly. Eram estas a linguagem BCPL e a B.
Martin Richards foi quem desenvolveu a BCPL, no ano de 1967. Um
pouco depois, Ken Thompson criou a linguagem B inspirado na BCPL,
utilizando sua nova linguagem para desenvolver as primeiras versões do
sistema operacional UNIX, no ano de 1970 no Bell Laboratories. Embora tenha
sido desenvolvido originalmente em Assembly, a sua remodelação para B
possibilitou a otimização do sistema.
Neste mesmo laboratório, Dennis Rictchie criou a linguagem C a partir
da B, em 1972. Esta nova linguagem utiliza muitos conceitos fundamentais
tanto de BCPL como B, mas possui tipos de dados e outras características
próprias poderosas.
5.1 – História
118

Uma nova versão do UNIX, agora em C, tornou esta nova linguagem


conhecida e possibilitou o desenvolvimento de muitos outros sistemas
operacionais, como originalmente o Windows e o LINUX. A partir do C,
surgiram novas versões, como o C++ e C#.
Atualmente existem poucas arquiteturas para as quais não existam
compiladores para C, o que a torna disponível para a maioria dos
computadores, independente do hardware.
Algo interessante sobre a história do C que deve ser destacado, foi a
sua ausência de padronização durante muito tempo. Como a linguagem sofreu
uma rápida expansão para vários tipos de computadores, isto levou a muitas
variações de linguagem e por isso ela era chamada de uma linguagem não
padronizada.
5.1 – História
119

Durante a década de 1970 esta característica da linguagem C gerou um


problema de incompatibilidade pelas variadas versões, o que prejudicava os
chamados “programas portáveis”, pois estes eram executados em várias
plataformas.
Em 1989 foi criado um padrão para a linguagem, que sofreu uma
atualização posterior, em 1999. O documento de padronização é chamado de
INCITS/ISSO/IEC9899-1999. Contudo, embora exista o C99, que é um padrão
revisado para a linguagem de programação C que aperfeiçoa e expande as
capacidades da linguagem, há muitos compiladores populares em C que não
admitem o C99, fazendo com ainda existam erros na portabilidade de
programas.
Há ainda outro problema atualmente, embora não muito comum, que é a
existência de compiladores que implementam apenas um subconjunto dos
novos recursos, o que ocasiona erros e divergências na execução de alguns
programas.
5.2 – Biblioteca padrão
120

Bibliotecas são arquivos


em linguagem de máquina que
contém funções desenvolvidas
por programadores para serem
utilizadas em várias linguagens,
inclusive em C.
Os compiladores
possuem sua biblioteca padrão
que executam inúmeras
funções. No caso dos
compiladores da linguagem C,
a biblioteca padrão contém
funções básicas de I/O (entrada
e saída) do sistema
operacional.
5.3 – Pré-processador e diretivas
121

O pré-processador é um programa que examina o programa fonte em C


e executa algumas modificações com base em instruções denominadas
diretivas.
Estas podem ser colocadas em qualquer parte do programa, mas não
podem ser escritas na mesma linha que outra diretiva ou instrução, além disso,
elas não fazem parte da linguagem C servindo apenas para auxiliar o
desenvolvimento do programa fonte.
Toda diretiva é iniciada pelo símbolo # (sharp) e seu texto deve ser
escrito em uma linha, unicamente.
As principais diretivas de compilação são:
Utilizaremos apenas a #include #include #ifndef
#define #if
#undef #else
#ifdef #elif
#endif
5.3 – Pré-processador e diretivas
122

 A DIRETIVA #INCLUDE
Ela faz com que outro arquivo seja incluído no programa fonte, ou seja, o
compilador substitui a linha contendo essa diretiva pelo conteúdo do arquivo
indicado. Isso ocorre antes do programa ser compilado e é possível ver a
apresentação de um texto como se todo o conteúdo do arquivo incluído tivesse
sido digitado.
A função printf(), por exemplo, contém suas definições no arquivo
stdio.h. Já a função system() contém suas definições no arquivo stdlib.h.
Quanto à sua sintaxe, a diretiva #include aceita duas formas:
#include “arquivo”  Entre aspas
#include <arquivo>  entre os sinais “maior que” e “menor que”
A diferença na sintaxe está relacionada com a ordem de procura do
arquivo nos diretórios. Se o caminho for pré-especificado no compilador utiliza-
se < >, caso o arquivo esteja no diretório de trabalho utiliza-se “ ”.
5.3 – Pré-processador e diretivas
123

 OBSERVE A APRESENTAÇÃO DO TEXTO NO COMPILADOR

A diretiva include
antes da compilação
( no DEV C)
5.4 – Funções
124

 A FUNÇÃO main()
Todo programa em C, obrigatoriamente, possui uma função principal,
chamada de main(), ela é o ponto inicial de execução do programa e termina
quando for encerrada a execução da sua função. Se um programa em C tiver
apenas uma única função a ser executada, esta será main().
Os parênteses, após o nome main, são obrigatórios porque indicam ao
compilador que ali encontra-se uma função a ser executada. Caso ocorra a
escrita sem estes parênteses o programa não será executado, por erro de
sintaxe, ou ainda, o compilador poderá entender que main é uma variável
declarada, incidindo em erro na execução também.
Após escrever a função main() deve-se começar o bloco de comandos com
chave( { ) e, após terminar de escrever todas as instruções, ele será fechado
com chave também ( } )
5.4 – Funções
125

 EXEMPLO:
Int main()
{
Bloco de comandos ;
system (“PAUSE”) ;
Segundo bloco de comandos ;
return 0;
}
Observações: O system (“PAUSE”) não é sempre utilizado, só é empregado nos casos
em que o programa solicita ao computador uma pausa até que alguma tecla seja
pressionada. O return 0 solicita à função main() que retorne o valor zero a quem o
chamou. Quanto ao ponto-e-vírgula, ele indica ao compilador que ali está escrita uma
instrução que deve ser lida, por isso é obrigatória a sua escrita.
5.4 – Funções
126

 A FUNÇÃO printf()
Esta função não é parte da
definição de linguagem do C, ela é
uma função de I/O (entrada e saída)
da biblioteca padrão, fornecida pelos
compiladores.
Quando o programa inicia sua
execução e encontra esta função ele
executa a tarefa de imprimir seu
conteúdo na tela do computador.
Após o término da impressão o
controle segue para a próxima
instrução do programa principal.
5.4 – Funções
127

 A FUNÇÃO printf()
A impressão ocorre na mesma
linha, não havendo inclusão de
novas linhas.
Para imprimir na próxima linha é
necessário acrescentar o \n no final
do texto digitado.
Observe que a posição da barra é
\ e não /.
5.4 – Funções
128

 CARACTERES ESPECIAIS
Além do \n é possível utilizar outros caracteres para realizar tarefas
específicas, vejamos a tabela abaixo:
5.4 – Funções
129

 A FUNÇÃO printf()
Esta função pode ter um ou vários argumentos. No nosso primeiro
exemplo temos apenas um, que é “OLÁ MUNDO”.
O primeiro argumento é chamado de EXPRESSÃO DE CONTROLE e
pode conter caracteres que serão exibidos na tela e códigos de formatação
que informam ao compilador como os argumentos devem ser impressos.
Cada argumento deve ser separado por vírgula.
Exemplo:

%d para dizer que 67 deve ser impresso


como número inteiro
5.4 – Funções
130
5.4 – Funções
131

 A FUNÇÃO system()
Este é um comando shell, ou
seja, é um meio que possibilita à
interface de usuário a ter acesso aos
serviços do kernel(núcleo) no
sistema operacional.
A função system() pode executar
tanto um comando interno do
sistema operacional quanto um
programa(.EXE, .COM ou .BAT).
Esta função é bastante utilizada,
porém, é muito complexa e por isso
utilizaremos apenas o system
(“pause”).
6 – PROGRAMANDO EM C
132

“Tente uma, duas, três vezes e


se possível tente a quarta, a
quinta e quantas vezes for
necessário.
Só não desista nas primeiras
tentativas, a persistência é
amiga da conquista.
Se você quer chegar aonde a
maioria não chega, faça o que
a maioria não faz.”
(Bill Gates, magnata americano proprietário da
Microsoft e criador do windows )
Bibliografia consultada
133

 MORTARI, Cezar A. Introdução à lógica. São Paulo: Editora UNESP –


Imprensa Oficial do Estado, 2001.
 DEITEL, H.M.; DEITEL P.J.; NIETO, T.R. Visual Basic.Net: como
programar. Tradução Célia Yumi Okano Taniwaki. São Paulo: Pearson
Education do Brasil, 2004. (Disponível na BVU do IFCE)
 TOCCI, Ronaldi J.; WIDMER Neal S.; MOSS, Gregory L. Sistemas digitais:
princípios e aplicações. Tradução Jorge Ritter. 11ª ed. São Paulo: Pearson
Prentice Hall, 2011. (Disponível na BVU do IFCE)
 DEITEL, H.M.; DEITEL P.J.; NIETO. C: Como programar. Tradução
Daniel Vieira. 6ª ed. São Paulo: Pearson Education do Brasil, 2011.
(Disponível na BVU do IFCE)
 MIZRAHI, Victorine Viviane. Treinamento em linguagem C. São Paulo:
Pearson Prentice Hall, 2008. (Disponível na BVU do IFCE)

You might also like