SlideShare uma empresa Scribd logo
1 de 104
GOVERNO DO ESTADO DO AMAZONAS
Centro de Educação Tecnológica do Amazonas
INFORMATICA LOGICA DE
PROGRAMAÇÃO E ALGORITIMOS
LÓGICA DE PROGRAMAÇÃO: INTRODUÇÃO A
ALGORITMOS E PSEUDOCÓDIGO
LÓGICA DE PROGRAMAÇÃO: O ALGORITMO
A lógica de programação é a capacidade que todo
programador precisa ter para resolver os problemas que
aparecem no dia-a-dia. A capacidade de dividir o problema
em partes menores é uma etapa essencial da lógica de
programação e precisa ser levada em consideração quando
nos deparamos com qualquer exercício/desafio. É nesse
ponto que entra o conceito de algoritmo, descrito,
geralmente, como uma sequência lógica de ações capaz de
resolver um problema.
É válido ressaltar, no entanto, que o conceito de algoritmo
vai muito além da programação. Uma receita de bolo, por
exemplo, é um exemplo simples de algoritmo. Até mesmo
algo como “mascar um chiclete” pode ser descrito como um
algoritmo, como mostrado na Código 1.
Código 1. Algoritmo para mascar chiclete.
A maioria dos algoritmos, obviamente, será mais complexa do
que simplesmente “mascar um chiclete” ou “fazer um bolo”.
No caso da computação, uma soma de dois números é o
exemplo mais clássico de um algoritmo simples. Algo como
o mostrado na Código 2 é bastante comum para
observarmos que temos uma sequência lógica de ações que
envolvem os três elementos que comentamos anteriormente:
entrada de dados, processamento e saída de dados.
Código 2. Algoritmo para soma de dois números.
• Ações 1 e 2: entrada de dados;
• Ação 3: processamento das informações inseridas;
• Ação 4: saída de dados.
INTRODUÇÃO AO PSEUDOCÓDIGO
A representação de algoritmos pode ser feita de várias
formas; a que mostramos na Código 2 é uma delas.
Entretanto, essa opção não possui nenhum tipo de regra mais
formal, o que faz com que esteja um pouco distante da
programação propriamente dita. Para aproximar um pouco
mais os dois conceitos, o pseudocódigo foi criado (um dos
exemplos de pseudocódigo mais conhecidos no Brasil é o
Portugol). Além dele, podemos encontrar várias opções. O
objetivo de todos, no entanto, é um só: criar um código que se
aproxime do que será visto em linguagens de programação
como C, C# ou Java.
Utilizando o Portugol como exemplo, nosso algoritmo da
soma de dois números seria algo como o mostrado
na Código 3. Nessa “linguagem de programação”, é
importante observar que temos um outro conceito, conhecido
como regiões; nesse código, temos uma região de variáveis e
outra de processamento. Esse conceito também é algo que
será levado para as linguagens de programação e sempre
deve ser considerado durante o desenvolvimento de software.
Código 3. Soma de dois números em pseudocódigo (Portugol).
Linha 01: Indicação do início do algoritmo em Portugol;
Linha 02: Região de definição de variáveis. As variáveis
inteiras “a” e “b” são utilizadas para guardar os valores
inseridos pelo usuário, enquanto o “resultado”, como o nome
sugere, irá receber a soma deles;
Linhas 04 e 05: Lê os valores inseridos pelo usuário e os
guarda em “a” e “b”. Note que, no Portugol, as ações são
sempre definidas por verbos no infinitivo. Ler serve para
indicar a leitura de informações do usuário (entrada de
dados), e Escrever, para mostrar o resultado final para o
mesmo (saída de dados);
Linha 06: Utilizamos o operador de atribuição <-. Esse
operador atribui a soma de “a” e “b” à variável “resultado”.
Essa é a fase de processamento dos dados de entrada;
Linha 07: Para finalizar o algoritmo, temos a amostragem dos
dados para o usuário. Nesse caso, utilizamos o verbo
Escrever para mostrar essa ação;
Linha 08: Indicação do fim do algoritmo em Portugol.
Com isso, podemos observar que o Portugol possui regras
simples e bastante flexíveis. Ao começar a programar com
Java ou C#, por exemplo, você irá notar que a proposta de se
aproximar de linguagens como elas é obedecida. Se
compararmos o código da Código 3 com um em C#, por
exemplo, notaremos que não existe uma grande diferença. É
claro que as ações (ler e escrever) e os operadores
(atribuição e operador aritmético “+”) serão substituídos por
seus respectivos na linguagem, mas a estrutura será
semelhante à apresentada no exemplo.
NOÇÕES BÁSICAS DE ALGORITMO
Noções de Algoritmos
Algoritmo é a base da ciência da computação e da
programação. Quando falamos em programar, falamos,
basicamente, em construir um algoritmo. Todo programa de
um computador é montado por algoritmos que resolvem
problemas matemáticos lógicos com objetivos específicos.
Mesmo pessoas que usam uma linguagem de
programação para fazer seus programas de computadores
estão, na realidade, elaborando algoritmos computacionais
em suas mentes.
Um algoritmo não passa de passos sequenciais e
lógicos que são organizados de forma a realizar a
conclusão de certo problema. Mas precisamos
entender que existem dois tipos de algoritmos – os
Não Estruturados e os Estruturados.
Programadores usam algoritmos estruturados, pois
se adequam a determinado objetivo ou certo fim.
Mas não são apenas os programadores que usam
algoritmos. Em nosso cotidiano, os algoritmos Não
Estruturados são trabalhados em nossas mentes
sem nem mesmo percebermos. Vamos aprender
mais sobre eles.
Algoritmos não estruturados
Em nossa rotina, executamos algoritmos sem perceber.
Quando você levanta pela manhã, quando você sai de
casa, quando almoça. Você está sempre executando
tarefas enquanto realiza análises de decisões, análises
de possibilidades, valida argumentos e diversos outros
processos.
Há muitos exemplos de algoritmos. Um deles são os
manuais de instruções. Manuais de instruções sempre
contêm informações detalhadas sobre o que fazer em
cada situação e nos previnem de maiores problemas.
Situação: Dirigir até uma lanchonete e almoçar.
O que é preciso fazer para realizá-la?
• 1º Passo: Saia de casa.
• 2º Passo: Entre no carro.
• 3 º Passo: Se a garagem estiver aberta, saia. Senão, abra-
a e saia.
• 4 º Passo: Dirija até o local desejado.
• 5º Passo: Se chegou, estacione o carro. Senão, continue
até chegar e estacionar.
• 6 º Passo: Se estacionou, retire a chave da ignição e saia
do carro.
• 7 º Passo: Tranque o carro e dirija-se à lanchonete.
• 8 º Passo: Se a lanchonete estiver aberta, entre e dirija-se
ao caixa. Senão, volte para o carro. Procure outra
lanchonete aberta, entre e dirija-se ao caixa.
• 9º Passo: Faça o pedido e efetue o pagamento.
• 10º Passo: Aguarde.
• 11º Passo: Se o número de seu pedido for chamado, dirija-
se ao caixa e pegue sua refeição. Senão, aguarde ser
chamado e pegue-a.
• 12 º Passo: Procure um lugar para sentar e coma.
• 13 º Passo: Se estiver satisfeito, jogue o resto na lixeira.
Senão, faça outro pedido e coma.
• 14º Passo: Saia da lanchonete e dirija-se ao carro.
• 15 º Passo: Entre, ponha o sinto de segurança e vá para
casa.
VOCÊ CONSEGUIU ALMOÇAR?
Viu como você usa algoritmos na sua vida? Agora pense
desde quando você acorda até quando você volta a dormir.
Quantas tarefas necessitam de suas decisões? Com certeza
muitas. Lógico que não paramos para ver a vida
detalhadamente, mas quando percebemos que o que
fazemos faz parte de um grande algoritmo de decisões,
escolhas, entendemos como funciona um algoritmo
computacional.
Abaixo estão listados alguns passos importantes para a
escrita de um algoritmo computacional:
• Preste atenção à ordem lógica da execução das tarefas;
• Lembre-se de que ele deve ter um início e fim;
• Ele deve ser completo;
• Deve ter um alto nível de detalhes;
• Cada tarefa é uma instrução, assim, defina-a bem.
ALGORITMOS ESTRUTURADOS
São aqueles que buscam resolver problemas através do
uso de um computador. São criados com base em uma
linguagem de programação e podem ser escritos de
diversas formas.
Um algoritmo pode ser representado pelo chamado
Português Estruturado, que é uma ferramenta que usa
combinações de sequências, seleções e repetições. São
evitados advérbios e adjetivos, formas verbais diferentes da
imperativa, muita pontuação e descrição esparsa.
Observe esse exemplo bem simples de Algoritmo
Estruturado na linguagem de programação JAVA.
Listagem 1: Exemplo de algoritmo estruturado em Java
Nesse exemplo, vemos uma classe chamada filmes, que é uma
extensão de outra classe chamada conexão. Logo após, é declarada
uma variável e são implementados os métodos get/set.
Para que um algoritmo em Português Estruturado
seja conciso, ele deve seguir alguns pontos:
• Evitar comandos longos;
• Evitar adjetivos e advérbios;
• Ter comandos legíveis;
• Ter os comandos bem alinhados;
• Possuir comentários para o esclarecimento de
comandos;
• Evitar ninhos de SE (muitas possibilidades
desnecessárias para uma única situação. Ex.: se
chover, eu pego o guarda-chuva; se não chover,
eu não pego o guarda-chuva ou se eu pegar o
vermelho, ele combinará com a roupa; se eu usar
o roxo, não combinará).
Escolher a linguagem de programação que deseja
aprender
Existem diversas linguagens que podem ser usadas
para diversos propósitos. Por isso, é preciso escolher
a linguagem que mais agrega valor para os propósitos e
interesses pelos quais você aprende a lógica de
programação. Você pode escolher entre linguagem C,
Python, Java, etc.
É claro que você pode se especializar em várias
linguagens, mas se vai começar a acumular esse
conhecimento agora, é recomendado que escolha uma
linguagem para iniciar, aperfeiçoar e solidificar o
aprendizado para só então partir para as demais
linguagens.
O TUTORIAL DE PYTHON
Python é uma linguagem fácil de aprender e poderosa.
Ela tem estruturas de dados de alto nível eficientes e
uma abordagem simples mas efetiva de programação
orientada a objetos. A elegância de sintaxe e a tipagem
dinâmica de Python aliadas com sua natureza
interpretativa, o fazem a linguagem ideal para programas
e desenvolvimento de aplicações rápidas em diversas
áreas e na maioria das plataformas.
O interpretador Python e a extensiva biblioteca padrão
estão disponíveis gratuitamente em código ou na forma
binária para todas as maiores plataformas no endereço
eletrônico do Python, https://www.python.org/
O interpretador Python pode ser facilmente
estendido com novas funções e tipos de dados
implementados em C ou C++ (ou outras linguagens
chamadas a partir de C). Python também é
adequada como uma linguagem de extensão para
aplicações personalizáveis.
Este tutorial introduz informalmente o leitor aos
conceitos básicos e aos recursos da linguagem e do
sistema Python. É mais fácil se você possuir um
interpretador Python para uma experiência prática,
mas os exemplos são autossuficientes e, portanto, o
tutorial pode apenas ser lido off-line também
CHAMANDO O INTERPRETADOR
O interpretador Python é frequentemente instalado como
/usr/local/bin/python3.11 nas máquinas onde está disponível;
adicionando /usr/local/bin ao caminho de busca da shell de
seu Unix torna-se possível iniciá-lo digitando o comando:
python3.11
Download o Python
Para programar em Python é necessário fazer o download do
arquivo de instalação que está no site principal (Figura 1).
Para baixar o arquivo, vá no item “Downloads” e clique no
link que tem o nome da versão mais recente estável. Na data
de publicação desse conteúdo, a versão é a 3.7.4, como
vemos na Figura 2.
Instalação do Python
Após o término do download, abra o executável para começar a
instalação do Python. A tela inicial da instalação abrirá, como na Figura
3. Marque a opção “Add Python 3.7 to Path”, para já deixar o Python
configurado nas variáveis de ambiente do Windows. Clique em “Install
Now” e aguarde até que a instalação seja concluída.
Verificação do Python
Para verificar se o Python foi instalado corretamente, abra o
menu Iniciar do Windows e procure na lista de programas
pelos arquivos que foram instalados, conforme é exibido na
Figura 4.
IDE para Python
Agora precisamos de um editor para escrever nossos códigos
e para isso usaremos o PyCharm, que contém um editor e é
uma das IDE’s mais utilizadas para trabalhar com essa
linguagem.
Para instalar o PyCharm, acesse o site da IDE e clique no
botão “Download” localizado no meio da tela, como mostra a
Figura 5.
Clique no botão de download da versão “Community” e
aguarde até o instalador baixar para poder iniciar a instalação,
como na Figura 6.
Conforme o slide a seguir, execute o instalador e prossiga
clicando em “Next” e, por fim clique no botão “Install”. Após
isso, o PyCharm estará instalado no seu sistema.
Agora abra o PyCharm, e selecione a opção “Do not import
settings”, como na Figura 7, pois não importaremos nenhuma
configuração nesse momento. Aceite as políticas de
privacidade da IDE na próxima tela. Avance até a tela que
mostrará os temas disponíveis para a IDE.
Selecione um dos temas e depois clique no botão “Skip
Remaining and Set Defaults” localizado no final da Figura 8.
Agora só falta informar ao PyCharm o local onde o Python foi
instalado. Na tela inicial do PyCharm (Figura 9), clique em
“Configure” e depois em “Settings”.
Na nova tela da Figura 10, selecione a opção “Project
Interpreter”. Na sequência, clique no select na parte de cima
da tela e escolha a opção “Show All”, pois precisaremos de
um interpretador para executar os nossos códigos em Python.
Na tela da Figura 11, clique no botão “+” que está localizado
no topo e direita da tela.
Na próxima tela (Figura 12), escolha a opção “System
Interpreter” e clique em OK nessa e na outra tela. Fazemos
esses passos para ter apenas o nosso ambiente de execução
de códigos.
Caso a lista de interpretadores esteja vazia, volte alguns
passos nesse tutorial e verifique se durante a instalação do
Python foi marcada a opção “Add Python 3.7 to Path”. Caso
contrário, encontraremos as mesmas opções da Figura 13.
O construtor float também pode ser usado para fazer
representações numéricas de NaN (Not a Number – em
português, não é um número), infinity negativo e infinity
positivo (observe que as strings para estes não diferenciam
maiúsculas de minúsculas):
NÚMEROS COMPLEXOS
Os números complexos têm uma parte real e uma
parte imaginária, cada uma representada por um
número de ponto flutuante.
A parte imaginária de um número complexo pode ser
criada usando um literal imaginário, isso resulta em
um número complexo com uma parte real de 0.0:
Não existe literal para criar um número complexo
com partes reais e imaginárias diferentes de zero.
Para criar um número complexo de parte real
diferente de zero, adicione um literal imaginário a um
número de ponto flutuante:
Os argumentos usados para chamar o construtor complex
podem ser de tipo numérico (incluindo complex) para
qualquer parâmetro:
Uma string também pode ser usada como
argumento. Nenhum segundo argumento é permitido
se uma string for usada como argumento
VALOR DE RETORNO
Se x for falso ou omitido, retorna False; do contrário,
retorna True.
Estas são as operações booleanas, ordenadas por
PRIORIDADE CRESCENTE:
OBSERVAÇÕES:
Este é um operador de curto-circuito, portanto, ele só
avalia o segundo argumento se o primeiro for False.
2. Este é um operador de curto-circuito, portanto, ele
só avalia o segundo argumento se o primeiro for
True.
3. not tem prioridade mais baixa do que os
operadores não booleanos. Portanto, not a == b é
interpretado como not (a == b) e a == not b é um erro
de sintaxe.
Exemplos:
not:
PORTUGOL STUDIO
Nesse tutorial, você vai ver como instalar o Portugol Studio,
que é a ferramenta que será utilizada nos tutoriais para
criação de algoritmos. Também vai ser feito um mini overview
do Portugol, para que você tenha uma noção básica dos
recursos da ferramenta. Por fim, mostrarei como você pode
criar o seu primeiro algoritmo no Portugol.
Primeiramente, entre na página do Portugol Studio. Clique no
botão Download para baixar o Portugol. O Portugol é multi-
plataforma: ele tem versões para Windows, Mac e Linux.
Vamos cobrir os passos de instalação dele para Windows e
para Ubuntu, mas se você estiver usando outro sistema
operacional, não deve ter dificuldades. A instalação é bem
simples.
Instalação no Windows
Se você está usando Windows, basta abrir o arquivo
executável que você baixou e seguir os passos de instalação
normalmente.
INSTALAÇÃO NO UBUNTU
Se você está usando o Ubuntu, a primeira coisa a fazer é
abrir a linha de comando apertando Ctrl + Alt + T. Depois, vá
até a pasta na qual o arquivo foi baixado (geralmente, é a
pasta Downloads).
Descompate o Portugol executando o comando unzip
portugol-studio... (coloque o nome completo do arquivo no
comando). Após a descompactação, dê permissão de
execução para o arquivo com a extensão .run: chmod 755
portugol-studio....
Execute o arquivo com permissões de administrador: sudo
./portugol-studio.... O instalador do Portugol Studio deve ser
aberto. Basta seguir os passos da instalação normalmente.
.
CONHECENDO O PORTUGOL
Agora que você já instalou o Portugol Studio, vamos conhecê-
lo melhor. Logo de cara, ao abrir o programa, surge uma
janela com dicas. Recomendo ler essas dicas, mesmo que
você não faça isso na primeira vez que você abrir o programa.
Elas vão te fazer entender melhor o Portugol Studio.
ÁRVORE DE EXEMPLOS
Como a documentação desse programa é muito boa, eu não
vou explicar os detalhes de uso do Portugol Studio. Vou falar
apenas de algumas coisas. Vou começar falando da Árvore de
Exemplos. Nessa tela inicial do Portugol, ela fica do lado
direito:
Na raiz da árvore, há um ícone de uma lâmpada. Os
exemplos ficam abaixo dela e estão organizados em pastas.
Clicando em um exemplo, você vê uma descrição do exemplo
e um botão para explorá-lo. Alternativamente, você pode
clicar no exemplo duas vezes, que é mais simples. Será
aberto um arquivo do Portugol, onde você pode ver o código
do exemplo e executá-lo, se você quiser.
ÍCONES DA PARTE SUPERIOR
Na parte superior da tela, abaixo das abas, tem 3 ícones:
Novo Arquivo, Abrir Arquivo e Ajuda.
O ícone Ajuda é o que você deve consultar se estiver com alguma dúvida
sobre a sintaxe usada no Portugol. Assim como os exemplos, os tópicos de
ajuda estão organizados em uma estrutura de árvore. Os tópicos contém
exemplos que podem ser executados.
ITENS DA PARTE INFERIOR
Na parte inferior da tela, existem 5 itens: o primeiro item serve
apenas pra exibir as dicas e trocar o tema, se você quiser. O
segundo mostra uma lista dos atalhos do Portugol. O terceiro
permite que seja relatado um bug no programa. O quarto leva
pra página do projeto no Github, caso você queira contribuir
com o projeto. Os autores estão se referindo a uma
contribuição no código, não à doações. Temos, por fim, o item
"Sobre", que fala um pouco mais sobre o projeto.
Hello, World!
Chegou a hora de criar o seu primeiro programa no Portugol
Studio. Primeiramente, abra o Portugol. Crie um novo arquivo.
Como você verá, ele já tem uma estrutura inicial, que é um
"Hello, World!" em português. Veja que, do lado esquerdo da
tela, existem alguns ícones:
Clique no ícone do Play (ou aperte Shift + F6) para executar o
algoritmo. O texto "Olá Mundo" que o comando escreva()
pede pra escrever é escrito no Console. Os outros exemplos
dos tutoriais também terão sua saída exibida no Console.
Agora, salve o algoritmo clicando no ícone do pen-drive (ou
apertando Ctrl + S). Você também pode abrir um arquivo que
você salvou clicando no ícone da pasta.
Todos os exemplos dos tutoriais precisam estar dentro da
função inicio(), que por sua vez precisa estar dentro do bloco
programa. Como isso será comum a todos os exemplos dos
tutoriais, para evitar ficar repetindo sempre essas partes, eu
vou colocar nos exemplos apenas o pseudocódigo que fica
dentro da função inicio().
ENTRADA/SAÍDA DE DADOS
A entrada de dados, na programação, é basicamente tudo
aquilo que entra de fora pra dentro, ou seja, informações que
vem do meio externo para o programa. Por exemplo, quando
você digita uma tecla no teclado ou passa o mouse em algum
elemento qualquer na tela, você está enviando dados do meio
externo para o computador, e esses dados são passados para
o programa. Por isso, está ocorrendo uma entrada de dados.
Já a saída de dados é o que vai do programa para fora. Uma
impressão de um arquivo é uma saída de dados. A exibição de
um texto ou uma imagem na tela é saída de dados. Até
mesmo a escrita de um arquivo é uma saída de dados, porque
o ponto de vista é do programa para fora e não do computador
para fora.
SAÍDA DE DADOS
Como você viu no tutorial do Portugol Studio, o comando
escreva() é usado para imprimir alguma coisa na tela. Porém,
você viu apenas um uso básico do comando, onde foi usado
um texto comum. Agora, você vai se aprofundar mais no
comando.
Primeiramente, você pode usar n para pular uma linha e t
para dar um tab no texto. Altere o exemplo anterior ou crie um
novo exemplo colocando o código abaixo:
escreva("Primeira linhanSegunda linhan")
Você verá cada texto em sua linha, conforme o esperado.
Porém, vamos imaginar que a gente tivesse linhas grandes.
Da forma que está, estamos passando apenas um argumento
para o nosso comando. Não seria melhor separar nosso texto
em várias linhas, separando os textos por vírgulas? Dessa
forma, cada linha seria um argumento para o nosso comando.
Isso pode ser feito assim:
escreva(
"Primeira linhan",
"Segunda linhan"
)
Para ver o efeito do t, insira-o antes da palavra linha e confira
o resultado.
Podemos também escrever variáveis no comando:
inteiro pontos = 10
escreva("Você fez ", pontos, " pontos!n")
Basicamente, uma variável é uma informação que fica
armazenada na memória. Pode ser um número, um texto,
dentre outras coisas.
No código acima, a variável pontos foi declarada e inicializada
com o valor 10. Depois, usamos o comando escreva() para
imprimi-la na tela. Note que a palavra pontos aparece duas
vezes nesse comando. Na primeira vez, ele faz referência à
variável pontos que foi declarada.
Na segunda, ela imprime a palavra pontos literalmente.
Variáveis serão cobertas em detalhes em outro tutorial. Por
enquanto, você precisa apenas de uma noção básica desse
conceito, que foi dada.
ENTRADA DE DADOS
A entrada de dados é feita com o comando leia(). Assim como
o comando escreva(), ele também aceita vários argumentos:
inteiro x, y, idade
escreva("Digite a sua idaden")
leia(idade)
escreva("Digite as suas coordenadasn")
leia(x, y)
escreva("Coordenadas:n", x, " e ", y, "n", "Idade:n", idade,
"n")
Perceba que eu declarei algumas variáveis (três inteiros), mas
não atribuí nenhum valor a elas. Eu permiti que o usuário
definisse o valor delas pelo comando leia(). Esse comando só
aceita variáveis como argumentos. O que o usuário digitar ele
vai armazenar nas variáveis.
O que o nosso algoritmo faz é bem simples:
Solicita que o usuário digite uma idade.
Lê a idade que o usuário digitou com o comando leia().
Solicita duas coordenadas e lê as duas de uma vez só com o
comando leia() (é possível ler múltiplas variáveis de uma vez,
separando as variáveis por vírgula).
Usa o comando escreva() para imprimir o valor das variáveis.
O QUE ACONTECE SE FOR DIGITADO UM VALOR QUE
NÃO É INTEIRO? ACONTECE UM ERRO:
Isso acontece porque o programa exige que o valor que seja
passado para o comando leia() esteja dentro do conjunto de
valores aceitos pelo tipo da variável que vai receber o que for
digitado.
Ficou confuso? Basicamente, o que estou dizendo é que se
você usar o leia() em um inteiro, você precisa passar um valor
inteiro. Se você passar um texto, vai dar erro, porque um texto
não é um valor inteiro. E nas linguagens de programação? É
assim também? Geralmente, não. Até C++, que é uma
linguagem com tipagem forte, tem um comportamento
diferente.
Limpando a tela
Para limpar a tela do console, use o comando limpa(). Faça
um teste: coloque esse comando antes do comando que
mostra as variáveis do exemplo da idade e das coordenadas
da seção anterior.
VARIÁVEIS E CONSTANTES
1.Declaração e atribuição
2.Identificadores
3.Tipos de dados
4.Tipos de dados escalares
5.Tipos de dados compostos
6.Tipagem
7.Constantes
DECLARAÇÃO E ATRIBUIÇÃO
Em muitas linguagens de programação, antes que você possa
usar qualquer variável, você deve declará-la.
No entanto, isso não é necessário em todas as linguagens, e
a cada dia mais aumenta o número de linguagens onde isso
não é necessário.
Uma declaração é uma instrução que fornece
um identificador para uma variável, precedido em muitas
linguagens, mas não em todas, pelo tipo da variável.
É o tipo que determina o conjunto de valores que a variável
pode assumir. O identificador é simplesmente o nome da
variável.
Exemplo de declarações em Portugol Studio:
real altura
real peso = 74.4
inteiro prestacoes_financiamento_casa, animais_estimacao
NOTE QUE ESSE EXEMPLO TEM 3 TIPOS DE
DECLARAÇÕES:
Declaração de uma variável sem valor (o valor da variável é
atribuído posteriormente).
Declaração de uma variável com valor (ou seja, declaração e
atribuição ao mesmo tempo, num processo chamado de
inicialização).
Declaração de múltiplas variáveis (todas sem valor, porém eu
poderia ter declarado as duas variáveis com valor, se eu
quisesse).
Essa é a sintaxe de declarações de variáveis do Portugol
Studio. Linguagens de programação tem suas próprias
sintaxes, mas geralmente também tem esses mesmos
conceitos, porém com diferenças de sintaxe. Veja exemplos
de declarações similares em C++:
1 double altura;
2 double peso = 74.4;
3 int prestacoesFinanciamentoCasa = 300, animaisEstimacao = 2;
AGORA, VEJA EXEMPLOS DE DECLARAÇÕES
SIMILARES EM PHP:
1 $altura;
2 $peso = 74.4;
3 $prestacoesFinanciamentoCasa = 300;
4 $animaisEstimacao = 2;
IDENTIFICADORES
O identificador de uma variável nada mais é do que o seu
nome.
Restrições
Cada linguagem de programação tem as suas próprias regras
para criar identificadores. Geralmente, as linguagens
costumam ter palavras-chaves reservadas, que não podem
ser usadas como nomes de variáveis, porque elas são parte
da sintaxe da linguagem. Alguns exemplos de palavras-chaves
reservadas são nomes de tipos de dados e nomes de
estruturas de controle.
Diferentemente das palavras do mundo real, na programação
não se pode separar as palavras que fazem parte do
identificador de uma variável com espaço.
Ao invés disso, usa-se outras maneiras para indicar o fim de
uma palavra e o começo de outra no identificador de uma
variável. Algumas dessas maneiras são:
Usar o underline (snake_case). Exemplo: inteiro
jogos_perdidos_selecao = 10.
Usar uma letra maiúscula no começo de cada palavra, exceto
a primeira (camelCase). Exemplo: inteiro
jogosGanhosSelecao = 20.
Além disso, existem outras restrições aos identificadores de
variáveis. A documentação do Portugol Studio não cita essas
restrições, mas eu fiz alguns testes e vi que não é possível
começar um nome de variável com um dígito, mas é possível
iniciá-la com um underline ou uma letra.
De uma maneira geral, letras, dígitos e underlines geralmente
são permitidos no identificador de uma variável, mas dígitos
não costumam são permitidos na primeira letra. Isso não é
válido para todas as linguagens, mas muitas delas seguem
essas regras.
Os identificadores não permitem que se use letras com
acentos, cedilhas, tremas, crases ou caracteres desse tipo.
Exemplo:
real aceleracao = 7.1 // aceleracao ao invés de aceleração
TIPOS DE DADOS
O tipo de dado de uma variável está associado ao conjunto
de valores que a variável pode assumir. Exemplo: o tipo
inteiro está associado a um conjunto de valores inteiros, que
é limitado pelo número de bytes que podem ser usados para
representar o valor.
Os tipos de dados podem ser classificados em várias
categorias, de acordo com as características deles. Por
exemplo, eles podem ser escalares, que são aqueles que são
representados por um único valor (pense no conceito de
grandeza escalar da Física, que explica que grandeza
escalar é aquela que contém apenas um valor), ou
compostos, que podem ser representados por múltiplos
valores.
TIPOS DE DADOS ESCALARES
Os tipos de dados escalares, que também são chamados de
básicos ou de primitivos, se encaixam em três categorias:
numérica (gue engloba números, sejam eles inteiros ou reais),
lógica/booleana (que guarda true/false, ou seja
verdadeiro/falso) e caractere (que guarda um caractere, que
pode ser uma letra, um número, um símbolo, etc...).
A categoria lógica pode também ser considerada uma
subcategoria da categoria numérica, já que na verdade, ela
usa números. Mesmo assim, alguns, como eu, deixam ela em
uma categoria separada. Isso também não está errado, já que
o propósito dela é diferente do propósito da categoria
numérica e ela é bem mais restrita quanto aos valores
permitidos.
É importante lembrar que essas são categorias. Por serem
categorias, elas podem englobar vários tipos de dados. Por
exemplo, dentro da categoria numérica, a maioria das
linguagens de programação tem tipos de dados diferentes
para armazenar números inteiros e números reais. Muitas até
tem subtipos para armazenar números reais com precisões
diferentes (geralmente são os subtipos float e double). A
categoria lógica é mais restrita e as linguagens contém
apenas um tipo dentro dela.
Veja como é a declaração de variáveis com tipos de dados
escalares no Portugol Studio:
inteiro x = 3
real y = 2.5
logico lampadaAcesa = falso
caracter c = 'K'
ATRIBUIÇÃO DE VALORES
Valores numéricos
Valores numéricos são escritos sem símbolos especiais. Nada
de cifrão, mesmo se a variável que você estiver utilizando
guardar algum preço de alguma coisa ou o lucro de uma
empresa qualquer. Da mesma forma, se a sua variável
representar alguma grandeza, como velocidade, você não
deve colocar m/s após o número que representar o valor da
variável.
Números inteiros devem ser escritos apenas com os dígitos
dele. Números reais devem ser escritos com um ponto
separando a parte inteira da parte decimal. Os detalhes extras
(nos exemplos que eu citei, o $ e o m/s) devem ser
adicionados quando você for imprimir esses valores para o
usuário. Eles não fazem parte do valor da variável.
A única situação onde um número, seja inteiro ou real, é
escrito com alguma coisa a mais do que o número em si é
quando se deseja expressar o número em uma notação
diferente da padrão, que é a decimal. Essas notações
diferentes não são suportadas por todas as linguagens. O
Portugol suporta:
inteiro x = 0x7a84fb // número inteiro expresso em notação
hexadecimal
VALORES LÓGICOS
Podem assumir apenas dois valores: verdadeiro ou falso. Veja o exemplo
abaixo:
logico lampada_acesa = verdadeiro
Chars
Quando você atribuir um char a uma variável, coloque aspas
simples. Um char representa apenas um caractere. Um
caractere não precisa ser uma letra. Pode ser um dígito ou
algum outro caractere, como uma vírgula. Exemplos:
caractere c = 'K'
caractere d = '9'
TIPOS DE DADOS COMPOSTOS
Tipos de dados compostos são mais amplos do que os
simples e armazenam vários valores. Eles podem ser arrays,
strings, tipos definidos pelo usuário, dentre outros. Vamos ver
apenas arrays e strings. Os demais tipos compostos variam
de acordo com a linguagem, portanto não devem ser
abordados aqui, senão os tutoriais ficariam presos a uma
linguagem X ou Y, o que não é o propósito dos tutoriais.
Algumas linguagens (tais como PHP) permitem que o número
de elementos que uma array pode armazenar seja alterado
durante a execução e outras não permitem essa alteração
(tais como C++).
ARRAY
Uma array é um tipo de dado que armazena vários valores.
Exemplos: uma lista de fornecedores de uma empresa ou uma
lista com o número de vendas de um determinado produto em
cada mês. Em algumas linguagens, esses valores precisam
ser do mesmo tipo, como C++, e em outras, esses valores
podem ser de tipos diferentes, como PHP.
VETOR
Uma array pode ter várias dimensões. Uma array
unidimensional é chamada de vetor. Exemplos de
declarações de vetores no Portugol Studio:
inteiro fotos[10]
inteiro vitorias_equipes[] = {3, 1, 2, 1, 1}
real precos_produtos[3] = {10.30, 3.45, 2.10}
No Portugol Studio, um vetor é declarado da seguinte forma:
primeiro, informa-se o tipo da variável, seguido pelo
identificador dela. Depois, coloca-se colchetes, que é o que
indica que a variável é uma array. Se você quiser indicar o
tamanho do vetor, basta informá-lo nos colchetes. O tamanho
do vetor é obrigatório se os elementos do vetor não forem
inicializados.
Se os elementos do vetor forem informados, o tamanho se
torna opcional, porque ele pode ser inferido. Quando os
elementos do vetor são definidos, eles devem ser colocados
entre chaves e separados por vírgulas.
MATRIZES
Como eu falei, arrays podem ter várias dimensões. Uma array
unidimensional é chamada de vetor. Já uma array
bidimensional é chamada de matriz. Pense que você pode
querer armazenar a altura e o peso de um grupo de 10
pessoas.
Fazer isso em vetores não seria bom. Ficaria bagunçado,
estranho. O mais recomendado seria usar uma matriz
(considerando apenas essas duas opções).
Seguindo o exemplo de usar uma matriz para armazenar a
altura e o peso das 10 pessoas, a primeira dimensão da
matriz poderia ter 10 elementos para armazenar os dados das
10 pessoas, e a segunda dimensão poderia ter 2 elementos,
para armazenar o peso e a altura de cada uma das 10
pessoas. Ou seja, cada um dos elementos da primeira
dimensão da array vai poder guardar dois dados, em cada
uma das duas posições da segunda dimensão.
real dados_pessoas[3][2]
real dados_pessoas[3][2] = {{1.77, 78.0}, {1.54, 52.0}, {1.65, 57.0}}
real dados_pessoas[][] = {{1.77, 78.0}, {1.54, 52.0}, {1.65, 57.0}}
Índices
Depois que uma array foi declarada e você definiu os
elementos dela, você pode usar os elementos da array da
mesma forma que você usuaria variáveis simples. Ou seja,
você pode atribuir valores a elementos da array, imprimi-las,
etc.
Cada elemento de uma array é diferenciado dos outros por
um índice único, que é usado para acessar o elemento da
array. Na maioria das linguagens, o índice é obrigatoriamente
numérico (em outras, como PHP, também pode ser uma
string).
Em linguagens onde o índice deve ser numérico, ele quase
sempre indica a posição de um item particular dentro de uma
matriz, pois os itens quase sempre começam do 0 e
aumentam de 1 em 1. Uma das exceções é Pascal. Porém,
em quase todas as linguagens, você começará com o índice
0. Isso é o mais comum.
VEJA COMO DEFINIR E CONSULTAR ELEMENTOS DE
VETORES E MATRIZES:
inteiro vitorias_equipes[] = {3, 1, 2, 1, 1}
real dados_pessoas[3][2] = {{1.77, 78.0}, {1.54, 52.0}, {1.65, 57.0}}
escreva(vitorias_equipes[0])
vitorias_equipes[1] = 2
escreva(vitorias_equipes[1])
dados_pessoas[1][0] = 1.52
escreva(dados_pessoas[1][0])
CONVENÇÕES
Quando se nomeia arrays, programadores seguem as
mesmas regras que eles seguem quando nomeiam variáveis.
Muitos usam algumas convenções ao nomear arrays, como
apenas usar o plural, (exemplo: velocidades_carros), ou usar
uma palavra que implica um grupo, tais como lista_compras
ou grupo_estudantes. Esse primeiro deve ser evitado, porque
ele pode gerar confusão, já que lista é o nome de uma
estrutura de dados.
STRINGS
Enquanto o tipo caractere serve para armazenar apenas um
caractere, o tipo string armazena um conjunto de caracteres. Por
isso, ele pode ser usado para armazenar desde uma palavra ou
uma frase até o conteúdo de um arquivo de texto completo.
No Portugol Studio, o tipo string é chamado de cadeia (porque
remete à cadeia de caracteres):
cadeia nome = "Lorraine"
Perceba que é bem semelhante às declarações dos tipos de
dados escalares. A diferença é que o valor é um texto especificado
entre aspas. A diferença é portanto conceitual: o tipo string é
composto porque ele é uma cadeia de caracteres.
É importante ressaltar que uma string também pode conter apenas
dígitos. Ou também exclamações. Ainda assim seria uma string.
Uma string é uma cadeia de caracteres, e não de letras.
TIPAGEM
Assim como alguns outros temas cobertos nos tutoriais, esse
não é um tema tradicional de Lógica de Programação, mas eu
decidi colocá-lo porque eu acho que falar sobre tipagem vai te
ajudar quando você aprender a sua primeira linguagem de
programação.
INFERÊNCIA DE TIPO
O que é inferir? É deduzir. Então, a inferência de tipo nada
mais é do que a dedução do tipo de uma variável. Então, em
linguagens onde há inferência de tipo, o tipo da variável não é
informado. Exemplos: PHP e Python. Exemplos onde isso não
acontece: C++ e Java.
Exemplos de inferência de tipo em PHP:
PHP$salario = 8000; // infere-se o tipo int
$nome = "Max"; // infere-se o tipo string
Já em C++, o tipo não é inferido:
CPPint salario = 8000;
string nome = "Max";
TIPAGEM ESTÁTICA
Em linguagens com tipagem estática, o tipo de uma variável
não se modifica. Por isso, essa tipagem é chamada de
estática. Geralmente, linguagens com tipagem estática
requerem que o programador informe o tipo da variável
quando ele declara as variáveis do programa.
Mas isso nem sempre é necessário, pois uma linguagem pode
ter tipagem estática e inferência de tipo ao mesmo tempo.
Exemplos de linguagens com tipagem estática são C e C++.
TIPAGEM DINÂMICA
É o contrário da tipagem estática. Na tipagem dinâmica, o tipo
de uma variável pode ser modificado durante o programa. Em
linguagens que suportam esse tipo, não se indica o tipo da
variável na declaração dela.
Ao invés disso, usa-se apenas o identificador da variável e
algum prefixo antes dela em alguns casos, como um $ no
caso do PHP. Nele, eu posso inicializar uma variável com um
número inteiro e depois mudar o valor dela para um texto
tranquilamente:
PHP$x = 30;
$x = "texto";

Mais conteúdo relacionado

Semelhante a INFORMATICA LOGICA DE PROGRAMAÇÃO E ALGORITIMOS AULA- 01.ppt

Semelhante a INFORMATICA LOGICA DE PROGRAMAÇÃO E ALGORITIMOS AULA- 01.ppt (20)

Linguagem visualg2.0
Linguagem visualg2.0Linguagem visualg2.0
Linguagem visualg2.0
 
Introdução á programação - 1ª parte
Introdução á programação - 1ª parteIntrodução á programação - 1ª parte
Introdução á programação - 1ª parte
 
Introdução a programação
Introdução a programaçãoIntrodução a programação
Introdução a programação
 
Algoritmos visualg
Algoritmos visualgAlgoritmos visualg
Algoritmos visualg
 
Lógica da programação
Lógica da programaçãoLógica da programação
Lógica da programação
 
Lógica da programação
Lógica da programaçãoLógica da programação
Lógica da programação
 
Apostila algorítimos
Apostila algorítimosApostila algorítimos
Apostila algorítimos
 
Apostila algorítimos
Apostila algorítimosApostila algorítimos
Apostila algorítimos
 
Apostila algoritimos
Apostila algoritimosApostila algoritimos
Apostila algoritimos
 
CURSO JAVA - AULA 1 - INTRODUÇÃO LÓGICA DE PROGRAMAÇÃO
CURSO JAVA - AULA 1 - INTRODUÇÃO LÓGICA DE PROGRAMAÇÃOCURSO JAVA - AULA 1 - INTRODUÇÃO LÓGICA DE PROGRAMAÇÃO
CURSO JAVA - AULA 1 - INTRODUÇÃO LÓGICA DE PROGRAMAÇÃO
 
Algoritmos e Lógica de Programação
Algoritmos e Lógica de ProgramaçãoAlgoritmos e Lógica de Programação
Algoritmos e Lógica de Programação
 
Linguagem visualg2.0
Linguagem visualg2.0Linguagem visualg2.0
Linguagem visualg2.0
 
Algorítimos
AlgorítimosAlgorítimos
Algorítimos
 
Aula1 introdução à lógica de programação
Aula1 introdução à lógica de programaçãoAula1 introdução à lógica de programação
Aula1 introdução à lógica de programação
 
Módulo 1 de PSI
Módulo 1 de PSIMódulo 1 de PSI
Módulo 1 de PSI
 
Linguagem visualg2.0
Linguagem visualg2.0Linguagem visualg2.0
Linguagem visualg2.0
 
Apostila de Introdução a Programação
Apostila de Introdução a ProgramaçãoApostila de Introdução a Programação
Apostila de Introdução a Programação
 
Apostila visualg
Apostila visualgApostila visualg
Apostila visualg
 
Algoritimo1
Algoritimo1Algoritimo1
Algoritimo1
 
apostila sobre Algoritmos
apostila sobre Algoritmosapostila sobre Algoritmos
apostila sobre Algoritmos
 

INFORMATICA LOGICA DE PROGRAMAÇÃO E ALGORITIMOS AULA- 01.ppt

  • 1. GOVERNO DO ESTADO DO AMAZONAS Centro de Educação Tecnológica do Amazonas INFORMATICA LOGICA DE PROGRAMAÇÃO E ALGORITIMOS
  • 2.
  • 3. LÓGICA DE PROGRAMAÇÃO: INTRODUÇÃO A ALGORITMOS E PSEUDOCÓDIGO LÓGICA DE PROGRAMAÇÃO: O ALGORITMO A lógica de programação é a capacidade que todo programador precisa ter para resolver os problemas que aparecem no dia-a-dia. A capacidade de dividir o problema em partes menores é uma etapa essencial da lógica de programação e precisa ser levada em consideração quando nos deparamos com qualquer exercício/desafio. É nesse ponto que entra o conceito de algoritmo, descrito, geralmente, como uma sequência lógica de ações capaz de resolver um problema. É válido ressaltar, no entanto, que o conceito de algoritmo vai muito além da programação. Uma receita de bolo, por exemplo, é um exemplo simples de algoritmo. Até mesmo algo como “mascar um chiclete” pode ser descrito como um algoritmo, como mostrado na Código 1.
  • 4. Código 1. Algoritmo para mascar chiclete. A maioria dos algoritmos, obviamente, será mais complexa do que simplesmente “mascar um chiclete” ou “fazer um bolo”. No caso da computação, uma soma de dois números é o exemplo mais clássico de um algoritmo simples. Algo como o mostrado na Código 2 é bastante comum para observarmos que temos uma sequência lógica de ações que envolvem os três elementos que comentamos anteriormente: entrada de dados, processamento e saída de dados.
  • 5. Código 2. Algoritmo para soma de dois números. • Ações 1 e 2: entrada de dados; • Ação 3: processamento das informações inseridas; • Ação 4: saída de dados.
  • 6. INTRODUÇÃO AO PSEUDOCÓDIGO A representação de algoritmos pode ser feita de várias formas; a que mostramos na Código 2 é uma delas. Entretanto, essa opção não possui nenhum tipo de regra mais formal, o que faz com que esteja um pouco distante da programação propriamente dita. Para aproximar um pouco mais os dois conceitos, o pseudocódigo foi criado (um dos exemplos de pseudocódigo mais conhecidos no Brasil é o Portugol). Além dele, podemos encontrar várias opções. O objetivo de todos, no entanto, é um só: criar um código que se aproxime do que será visto em linguagens de programação como C, C# ou Java.
  • 7. Utilizando o Portugol como exemplo, nosso algoritmo da soma de dois números seria algo como o mostrado na Código 3. Nessa “linguagem de programação”, é importante observar que temos um outro conceito, conhecido como regiões; nesse código, temos uma região de variáveis e outra de processamento. Esse conceito também é algo que será levado para as linguagens de programação e sempre deve ser considerado durante o desenvolvimento de software.
  • 8. Código 3. Soma de dois números em pseudocódigo (Portugol).
  • 9. Linha 01: Indicação do início do algoritmo em Portugol; Linha 02: Região de definição de variáveis. As variáveis inteiras “a” e “b” são utilizadas para guardar os valores inseridos pelo usuário, enquanto o “resultado”, como o nome sugere, irá receber a soma deles; Linhas 04 e 05: Lê os valores inseridos pelo usuário e os guarda em “a” e “b”. Note que, no Portugol, as ações são sempre definidas por verbos no infinitivo. Ler serve para indicar a leitura de informações do usuário (entrada de dados), e Escrever, para mostrar o resultado final para o mesmo (saída de dados);
  • 10. Linha 06: Utilizamos o operador de atribuição <-. Esse operador atribui a soma de “a” e “b” à variável “resultado”. Essa é a fase de processamento dos dados de entrada; Linha 07: Para finalizar o algoritmo, temos a amostragem dos dados para o usuário. Nesse caso, utilizamos o verbo Escrever para mostrar essa ação; Linha 08: Indicação do fim do algoritmo em Portugol.
  • 11. Com isso, podemos observar que o Portugol possui regras simples e bastante flexíveis. Ao começar a programar com Java ou C#, por exemplo, você irá notar que a proposta de se aproximar de linguagens como elas é obedecida. Se compararmos o código da Código 3 com um em C#, por exemplo, notaremos que não existe uma grande diferença. É claro que as ações (ler e escrever) e os operadores (atribuição e operador aritmético “+”) serão substituídos por seus respectivos na linguagem, mas a estrutura será semelhante à apresentada no exemplo.
  • 12. NOÇÕES BÁSICAS DE ALGORITMO Noções de Algoritmos Algoritmo é a base da ciência da computação e da programação. Quando falamos em programar, falamos, basicamente, em construir um algoritmo. Todo programa de um computador é montado por algoritmos que resolvem problemas matemáticos lógicos com objetivos específicos. Mesmo pessoas que usam uma linguagem de programação para fazer seus programas de computadores estão, na realidade, elaborando algoritmos computacionais em suas mentes.
  • 13. Um algoritmo não passa de passos sequenciais e lógicos que são organizados de forma a realizar a conclusão de certo problema. Mas precisamos entender que existem dois tipos de algoritmos – os Não Estruturados e os Estruturados. Programadores usam algoritmos estruturados, pois se adequam a determinado objetivo ou certo fim. Mas não são apenas os programadores que usam algoritmos. Em nosso cotidiano, os algoritmos Não Estruturados são trabalhados em nossas mentes sem nem mesmo percebermos. Vamos aprender mais sobre eles.
  • 14. Algoritmos não estruturados Em nossa rotina, executamos algoritmos sem perceber. Quando você levanta pela manhã, quando você sai de casa, quando almoça. Você está sempre executando tarefas enquanto realiza análises de decisões, análises de possibilidades, valida argumentos e diversos outros processos. Há muitos exemplos de algoritmos. Um deles são os manuais de instruções. Manuais de instruções sempre contêm informações detalhadas sobre o que fazer em cada situação e nos previnem de maiores problemas.
  • 15. Situação: Dirigir até uma lanchonete e almoçar. O que é preciso fazer para realizá-la? • 1º Passo: Saia de casa. • 2º Passo: Entre no carro. • 3 º Passo: Se a garagem estiver aberta, saia. Senão, abra- a e saia. • 4 º Passo: Dirija até o local desejado. • 5º Passo: Se chegou, estacione o carro. Senão, continue até chegar e estacionar. • 6 º Passo: Se estacionou, retire a chave da ignição e saia do carro. • 7 º Passo: Tranque o carro e dirija-se à lanchonete. • 8 º Passo: Se a lanchonete estiver aberta, entre e dirija-se ao caixa. Senão, volte para o carro. Procure outra lanchonete aberta, entre e dirija-se ao caixa. • 9º Passo: Faça o pedido e efetue o pagamento. • 10º Passo: Aguarde.
  • 16. • 11º Passo: Se o número de seu pedido for chamado, dirija- se ao caixa e pegue sua refeição. Senão, aguarde ser chamado e pegue-a. • 12 º Passo: Procure um lugar para sentar e coma. • 13 º Passo: Se estiver satisfeito, jogue o resto na lixeira. Senão, faça outro pedido e coma. • 14º Passo: Saia da lanchonete e dirija-se ao carro. • 15 º Passo: Entre, ponha o sinto de segurança e vá para casa.
  • 17. VOCÊ CONSEGUIU ALMOÇAR? Viu como você usa algoritmos na sua vida? Agora pense desde quando você acorda até quando você volta a dormir. Quantas tarefas necessitam de suas decisões? Com certeza muitas. Lógico que não paramos para ver a vida detalhadamente, mas quando percebemos que o que fazemos faz parte de um grande algoritmo de decisões, escolhas, entendemos como funciona um algoritmo computacional.
  • 18. Abaixo estão listados alguns passos importantes para a escrita de um algoritmo computacional: • Preste atenção à ordem lógica da execução das tarefas; • Lembre-se de que ele deve ter um início e fim; • Ele deve ser completo; • Deve ter um alto nível de detalhes; • Cada tarefa é uma instrução, assim, defina-a bem.
  • 19. ALGORITMOS ESTRUTURADOS São aqueles que buscam resolver problemas através do uso de um computador. São criados com base em uma linguagem de programação e podem ser escritos de diversas formas. Um algoritmo pode ser representado pelo chamado Português Estruturado, que é uma ferramenta que usa combinações de sequências, seleções e repetições. São evitados advérbios e adjetivos, formas verbais diferentes da imperativa, muita pontuação e descrição esparsa. Observe esse exemplo bem simples de Algoritmo Estruturado na linguagem de programação JAVA.
  • 20. Listagem 1: Exemplo de algoritmo estruturado em Java Nesse exemplo, vemos uma classe chamada filmes, que é uma extensão de outra classe chamada conexão. Logo após, é declarada uma variável e são implementados os métodos get/set.
  • 21. Para que um algoritmo em Português Estruturado seja conciso, ele deve seguir alguns pontos: • Evitar comandos longos; • Evitar adjetivos e advérbios; • Ter comandos legíveis; • Ter os comandos bem alinhados; • Possuir comentários para o esclarecimento de comandos; • Evitar ninhos de SE (muitas possibilidades desnecessárias para uma única situação. Ex.: se chover, eu pego o guarda-chuva; se não chover, eu não pego o guarda-chuva ou se eu pegar o vermelho, ele combinará com a roupa; se eu usar o roxo, não combinará).
  • 22.
  • 23. Escolher a linguagem de programação que deseja aprender Existem diversas linguagens que podem ser usadas para diversos propósitos. Por isso, é preciso escolher a linguagem que mais agrega valor para os propósitos e interesses pelos quais você aprende a lógica de programação. Você pode escolher entre linguagem C, Python, Java, etc. É claro que você pode se especializar em várias linguagens, mas se vai começar a acumular esse conhecimento agora, é recomendado que escolha uma linguagem para iniciar, aperfeiçoar e solidificar o aprendizado para só então partir para as demais linguagens.
  • 24.
  • 25. O TUTORIAL DE PYTHON Python é uma linguagem fácil de aprender e poderosa. Ela tem estruturas de dados de alto nível eficientes e uma abordagem simples mas efetiva de programação orientada a objetos. A elegância de sintaxe e a tipagem dinâmica de Python aliadas com sua natureza interpretativa, o fazem a linguagem ideal para programas e desenvolvimento de aplicações rápidas em diversas áreas e na maioria das plataformas. O interpretador Python e a extensiva biblioteca padrão estão disponíveis gratuitamente em código ou na forma binária para todas as maiores plataformas no endereço eletrônico do Python, https://www.python.org/
  • 26. O interpretador Python pode ser facilmente estendido com novas funções e tipos de dados implementados em C ou C++ (ou outras linguagens chamadas a partir de C). Python também é adequada como uma linguagem de extensão para aplicações personalizáveis. Este tutorial introduz informalmente o leitor aos conceitos básicos e aos recursos da linguagem e do sistema Python. É mais fácil se você possuir um interpretador Python para uma experiência prática, mas os exemplos são autossuficientes e, portanto, o tutorial pode apenas ser lido off-line também
  • 27. CHAMANDO O INTERPRETADOR O interpretador Python é frequentemente instalado como /usr/local/bin/python3.11 nas máquinas onde está disponível; adicionando /usr/local/bin ao caminho de busca da shell de seu Unix torna-se possível iniciá-lo digitando o comando: python3.11
  • 28.
  • 29. Download o Python Para programar em Python é necessário fazer o download do arquivo de instalação que está no site principal (Figura 1).
  • 30. Para baixar o arquivo, vá no item “Downloads” e clique no link que tem o nome da versão mais recente estável. Na data de publicação desse conteúdo, a versão é a 3.7.4, como vemos na Figura 2.
  • 31. Instalação do Python Após o término do download, abra o executável para começar a instalação do Python. A tela inicial da instalação abrirá, como na Figura 3. Marque a opção “Add Python 3.7 to Path”, para já deixar o Python configurado nas variáveis de ambiente do Windows. Clique em “Install Now” e aguarde até que a instalação seja concluída.
  • 32. Verificação do Python Para verificar se o Python foi instalado corretamente, abra o menu Iniciar do Windows e procure na lista de programas pelos arquivos que foram instalados, conforme é exibido na Figura 4.
  • 33. IDE para Python Agora precisamos de um editor para escrever nossos códigos e para isso usaremos o PyCharm, que contém um editor e é uma das IDE’s mais utilizadas para trabalhar com essa linguagem. Para instalar o PyCharm, acesse o site da IDE e clique no botão “Download” localizado no meio da tela, como mostra a Figura 5.
  • 34.
  • 35. Clique no botão de download da versão “Community” e aguarde até o instalador baixar para poder iniciar a instalação, como na Figura 6.
  • 36. Conforme o slide a seguir, execute o instalador e prossiga clicando em “Next” e, por fim clique no botão “Install”. Após isso, o PyCharm estará instalado no seu sistema.
  • 37. Agora abra o PyCharm, e selecione a opção “Do not import settings”, como na Figura 7, pois não importaremos nenhuma configuração nesse momento. Aceite as políticas de privacidade da IDE na próxima tela. Avance até a tela que mostrará os temas disponíveis para a IDE.
  • 38. Selecione um dos temas e depois clique no botão “Skip Remaining and Set Defaults” localizado no final da Figura 8.
  • 39. Agora só falta informar ao PyCharm o local onde o Python foi instalado. Na tela inicial do PyCharm (Figura 9), clique em “Configure” e depois em “Settings”.
  • 40. Na nova tela da Figura 10, selecione a opção “Project Interpreter”. Na sequência, clique no select na parte de cima da tela e escolha a opção “Show All”, pois precisaremos de um interpretador para executar os nossos códigos em Python.
  • 41. Na tela da Figura 11, clique no botão “+” que está localizado no topo e direita da tela.
  • 42. Na próxima tela (Figura 12), escolha a opção “System Interpreter” e clique em OK nessa e na outra tela. Fazemos esses passos para ter apenas o nosso ambiente de execução de códigos.
  • 43. Caso a lista de interpretadores esteja vazia, volte alguns passos nesse tutorial e verifique se durante a instalação do Python foi marcada a opção “Add Python 3.7 to Path”. Caso contrário, encontraremos as mesmas opções da Figura 13.
  • 44.
  • 45. O construtor float também pode ser usado para fazer representações numéricas de NaN (Not a Number – em português, não é um número), infinity negativo e infinity positivo (observe que as strings para estes não diferenciam maiúsculas de minúsculas):
  • 46. NÚMEROS COMPLEXOS Os números complexos têm uma parte real e uma parte imaginária, cada uma representada por um número de ponto flutuante. A parte imaginária de um número complexo pode ser criada usando um literal imaginário, isso resulta em um número complexo com uma parte real de 0.0:
  • 47.
  • 48. Não existe literal para criar um número complexo com partes reais e imaginárias diferentes de zero. Para criar um número complexo de parte real diferente de zero, adicione um literal imaginário a um número de ponto flutuante:
  • 49. Os argumentos usados para chamar o construtor complex podem ser de tipo numérico (incluindo complex) para qualquer parâmetro:
  • 50. Uma string também pode ser usada como argumento. Nenhum segundo argumento é permitido se uma string for usada como argumento
  • 51. VALOR DE RETORNO Se x for falso ou omitido, retorna False; do contrário, retorna True.
  • 52. Estas são as operações booleanas, ordenadas por PRIORIDADE CRESCENTE:
  • 53. OBSERVAÇÕES: Este é um operador de curto-circuito, portanto, ele só avalia o segundo argumento se o primeiro for False. 2. Este é um operador de curto-circuito, portanto, ele só avalia o segundo argumento se o primeiro for True. 3. not tem prioridade mais baixa do que os operadores não booleanos. Portanto, not a == b é interpretado como not (a == b) e a == not b é um erro de sintaxe.
  • 55. PORTUGOL STUDIO Nesse tutorial, você vai ver como instalar o Portugol Studio, que é a ferramenta que será utilizada nos tutoriais para criação de algoritmos. Também vai ser feito um mini overview do Portugol, para que você tenha uma noção básica dos recursos da ferramenta. Por fim, mostrarei como você pode criar o seu primeiro algoritmo no Portugol. Primeiramente, entre na página do Portugol Studio. Clique no botão Download para baixar o Portugol. O Portugol é multi- plataforma: ele tem versões para Windows, Mac e Linux. Vamos cobrir os passos de instalação dele para Windows e para Ubuntu, mas se você estiver usando outro sistema operacional, não deve ter dificuldades. A instalação é bem simples.
  • 56. Instalação no Windows Se você está usando Windows, basta abrir o arquivo executável que você baixou e seguir os passos de instalação normalmente. INSTALAÇÃO NO UBUNTU Se você está usando o Ubuntu, a primeira coisa a fazer é abrir a linha de comando apertando Ctrl + Alt + T. Depois, vá até a pasta na qual o arquivo foi baixado (geralmente, é a pasta Downloads). Descompate o Portugol executando o comando unzip portugol-studio... (coloque o nome completo do arquivo no comando). Após a descompactação, dê permissão de execução para o arquivo com a extensão .run: chmod 755 portugol-studio.... Execute o arquivo com permissões de administrador: sudo ./portugol-studio.... O instalador do Portugol Studio deve ser aberto. Basta seguir os passos da instalação normalmente.
  • 57. . CONHECENDO O PORTUGOL Agora que você já instalou o Portugol Studio, vamos conhecê- lo melhor. Logo de cara, ao abrir o programa, surge uma janela com dicas. Recomendo ler essas dicas, mesmo que você não faça isso na primeira vez que você abrir o programa. Elas vão te fazer entender melhor o Portugol Studio.
  • 58.
  • 59. ÁRVORE DE EXEMPLOS Como a documentação desse programa é muito boa, eu não vou explicar os detalhes de uso do Portugol Studio. Vou falar apenas de algumas coisas. Vou começar falando da Árvore de Exemplos. Nessa tela inicial do Portugol, ela fica do lado direito:
  • 60. Na raiz da árvore, há um ícone de uma lâmpada. Os exemplos ficam abaixo dela e estão organizados em pastas. Clicando em um exemplo, você vê uma descrição do exemplo e um botão para explorá-lo. Alternativamente, você pode clicar no exemplo duas vezes, que é mais simples. Será aberto um arquivo do Portugol, onde você pode ver o código do exemplo e executá-lo, se você quiser. ÍCONES DA PARTE SUPERIOR Na parte superior da tela, abaixo das abas, tem 3 ícones: Novo Arquivo, Abrir Arquivo e Ajuda.
  • 61. O ícone Ajuda é o que você deve consultar se estiver com alguma dúvida sobre a sintaxe usada no Portugol. Assim como os exemplos, os tópicos de ajuda estão organizados em uma estrutura de árvore. Os tópicos contém exemplos que podem ser executados.
  • 62. ITENS DA PARTE INFERIOR Na parte inferior da tela, existem 5 itens: o primeiro item serve apenas pra exibir as dicas e trocar o tema, se você quiser. O segundo mostra uma lista dos atalhos do Portugol. O terceiro permite que seja relatado um bug no programa. O quarto leva pra página do projeto no Github, caso você queira contribuir com o projeto. Os autores estão se referindo a uma contribuição no código, não à doações. Temos, por fim, o item "Sobre", que fala um pouco mais sobre o projeto. Hello, World! Chegou a hora de criar o seu primeiro programa no Portugol Studio. Primeiramente, abra o Portugol. Crie um novo arquivo. Como você verá, ele já tem uma estrutura inicial, que é um "Hello, World!" em português. Veja que, do lado esquerdo da tela, existem alguns ícones:
  • 63.
  • 64. Clique no ícone do Play (ou aperte Shift + F6) para executar o algoritmo. O texto "Olá Mundo" que o comando escreva() pede pra escrever é escrito no Console. Os outros exemplos dos tutoriais também terão sua saída exibida no Console.
  • 65. Agora, salve o algoritmo clicando no ícone do pen-drive (ou apertando Ctrl + S). Você também pode abrir um arquivo que você salvou clicando no ícone da pasta. Todos os exemplos dos tutoriais precisam estar dentro da função inicio(), que por sua vez precisa estar dentro do bloco programa. Como isso será comum a todos os exemplos dos tutoriais, para evitar ficar repetindo sempre essas partes, eu vou colocar nos exemplos apenas o pseudocódigo que fica dentro da função inicio().
  • 66. ENTRADA/SAÍDA DE DADOS A entrada de dados, na programação, é basicamente tudo aquilo que entra de fora pra dentro, ou seja, informações que vem do meio externo para o programa. Por exemplo, quando você digita uma tecla no teclado ou passa o mouse em algum elemento qualquer na tela, você está enviando dados do meio externo para o computador, e esses dados são passados para o programa. Por isso, está ocorrendo uma entrada de dados. Já a saída de dados é o que vai do programa para fora. Uma impressão de um arquivo é uma saída de dados. A exibição de um texto ou uma imagem na tela é saída de dados. Até mesmo a escrita de um arquivo é uma saída de dados, porque o ponto de vista é do programa para fora e não do computador para fora.
  • 67. SAÍDA DE DADOS Como você viu no tutorial do Portugol Studio, o comando escreva() é usado para imprimir alguma coisa na tela. Porém, você viu apenas um uso básico do comando, onde foi usado um texto comum. Agora, você vai se aprofundar mais no comando. Primeiramente, você pode usar n para pular uma linha e t para dar um tab no texto. Altere o exemplo anterior ou crie um novo exemplo colocando o código abaixo: escreva("Primeira linhanSegunda linhan") Você verá cada texto em sua linha, conforme o esperado. Porém, vamos imaginar que a gente tivesse linhas grandes. Da forma que está, estamos passando apenas um argumento para o nosso comando. Não seria melhor separar nosso texto em várias linhas, separando os textos por vírgulas? Dessa forma, cada linha seria um argumento para o nosso comando. Isso pode ser feito assim:
  • 68. escreva( "Primeira linhan", "Segunda linhan" ) Para ver o efeito do t, insira-o antes da palavra linha e confira o resultado. Podemos também escrever variáveis no comando: inteiro pontos = 10 escreva("Você fez ", pontos, " pontos!n")
  • 69. Basicamente, uma variável é uma informação que fica armazenada na memória. Pode ser um número, um texto, dentre outras coisas. No código acima, a variável pontos foi declarada e inicializada com o valor 10. Depois, usamos o comando escreva() para imprimi-la na tela. Note que a palavra pontos aparece duas vezes nesse comando. Na primeira vez, ele faz referência à variável pontos que foi declarada. Na segunda, ela imprime a palavra pontos literalmente. Variáveis serão cobertas em detalhes em outro tutorial. Por enquanto, você precisa apenas de uma noção básica desse conceito, que foi dada.
  • 70. ENTRADA DE DADOS A entrada de dados é feita com o comando leia(). Assim como o comando escreva(), ele também aceita vários argumentos: inteiro x, y, idade escreva("Digite a sua idaden") leia(idade) escreva("Digite as suas coordenadasn") leia(x, y) escreva("Coordenadas:n", x, " e ", y, "n", "Idade:n", idade, "n")
  • 71. Perceba que eu declarei algumas variáveis (três inteiros), mas não atribuí nenhum valor a elas. Eu permiti que o usuário definisse o valor delas pelo comando leia(). Esse comando só aceita variáveis como argumentos. O que o usuário digitar ele vai armazenar nas variáveis. O que o nosso algoritmo faz é bem simples: Solicita que o usuário digite uma idade. Lê a idade que o usuário digitou com o comando leia(). Solicita duas coordenadas e lê as duas de uma vez só com o comando leia() (é possível ler múltiplas variáveis de uma vez, separando as variáveis por vírgula). Usa o comando escreva() para imprimir o valor das variáveis.
  • 72. O QUE ACONTECE SE FOR DIGITADO UM VALOR QUE NÃO É INTEIRO? ACONTECE UM ERRO:
  • 73. Isso acontece porque o programa exige que o valor que seja passado para o comando leia() esteja dentro do conjunto de valores aceitos pelo tipo da variável que vai receber o que for digitado. Ficou confuso? Basicamente, o que estou dizendo é que se você usar o leia() em um inteiro, você precisa passar um valor inteiro. Se você passar um texto, vai dar erro, porque um texto não é um valor inteiro. E nas linguagens de programação? É assim também? Geralmente, não. Até C++, que é uma linguagem com tipagem forte, tem um comportamento diferente. Limpando a tela Para limpar a tela do console, use o comando limpa(). Faça um teste: coloque esse comando antes do comando que mostra as variáveis do exemplo da idade e das coordenadas da seção anterior.
  • 74. VARIÁVEIS E CONSTANTES 1.Declaração e atribuição 2.Identificadores 3.Tipos de dados 4.Tipos de dados escalares 5.Tipos de dados compostos 6.Tipagem 7.Constantes
  • 75. DECLARAÇÃO E ATRIBUIÇÃO Em muitas linguagens de programação, antes que você possa usar qualquer variável, você deve declará-la. No entanto, isso não é necessário em todas as linguagens, e a cada dia mais aumenta o número de linguagens onde isso não é necessário. Uma declaração é uma instrução que fornece um identificador para uma variável, precedido em muitas linguagens, mas não em todas, pelo tipo da variável. É o tipo que determina o conjunto de valores que a variável pode assumir. O identificador é simplesmente o nome da variável. Exemplo de declarações em Portugol Studio:
  • 76. real altura real peso = 74.4 inteiro prestacoes_financiamento_casa, animais_estimacao
  • 77. NOTE QUE ESSE EXEMPLO TEM 3 TIPOS DE DECLARAÇÕES: Declaração de uma variável sem valor (o valor da variável é atribuído posteriormente). Declaração de uma variável com valor (ou seja, declaração e atribuição ao mesmo tempo, num processo chamado de inicialização). Declaração de múltiplas variáveis (todas sem valor, porém eu poderia ter declarado as duas variáveis com valor, se eu quisesse). Essa é a sintaxe de declarações de variáveis do Portugol Studio. Linguagens de programação tem suas próprias sintaxes, mas geralmente também tem esses mesmos conceitos, porém com diferenças de sintaxe. Veja exemplos de declarações similares em C++:
  • 78. 1 double altura; 2 double peso = 74.4; 3 int prestacoesFinanciamentoCasa = 300, animaisEstimacao = 2; AGORA, VEJA EXEMPLOS DE DECLARAÇÕES SIMILARES EM PHP: 1 $altura; 2 $peso = 74.4; 3 $prestacoesFinanciamentoCasa = 300; 4 $animaisEstimacao = 2;
  • 79. IDENTIFICADORES O identificador de uma variável nada mais é do que o seu nome. Restrições Cada linguagem de programação tem as suas próprias regras para criar identificadores. Geralmente, as linguagens costumam ter palavras-chaves reservadas, que não podem ser usadas como nomes de variáveis, porque elas são parte da sintaxe da linguagem. Alguns exemplos de palavras-chaves reservadas são nomes de tipos de dados e nomes de estruturas de controle.
  • 80. Diferentemente das palavras do mundo real, na programação não se pode separar as palavras que fazem parte do identificador de uma variável com espaço. Ao invés disso, usa-se outras maneiras para indicar o fim de uma palavra e o começo de outra no identificador de uma variável. Algumas dessas maneiras são: Usar o underline (snake_case). Exemplo: inteiro jogos_perdidos_selecao = 10. Usar uma letra maiúscula no começo de cada palavra, exceto a primeira (camelCase). Exemplo: inteiro jogosGanhosSelecao = 20.
  • 81. Além disso, existem outras restrições aos identificadores de variáveis. A documentação do Portugol Studio não cita essas restrições, mas eu fiz alguns testes e vi que não é possível começar um nome de variável com um dígito, mas é possível iniciá-la com um underline ou uma letra. De uma maneira geral, letras, dígitos e underlines geralmente são permitidos no identificador de uma variável, mas dígitos não costumam são permitidos na primeira letra. Isso não é válido para todas as linguagens, mas muitas delas seguem essas regras. Os identificadores não permitem que se use letras com acentos, cedilhas, tremas, crases ou caracteres desse tipo. Exemplo:
  • 82. real aceleracao = 7.1 // aceleracao ao invés de aceleração
  • 83. TIPOS DE DADOS O tipo de dado de uma variável está associado ao conjunto de valores que a variável pode assumir. Exemplo: o tipo inteiro está associado a um conjunto de valores inteiros, que é limitado pelo número de bytes que podem ser usados para representar o valor. Os tipos de dados podem ser classificados em várias categorias, de acordo com as características deles. Por exemplo, eles podem ser escalares, que são aqueles que são representados por um único valor (pense no conceito de grandeza escalar da Física, que explica que grandeza escalar é aquela que contém apenas um valor), ou compostos, que podem ser representados por múltiplos valores.
  • 84. TIPOS DE DADOS ESCALARES Os tipos de dados escalares, que também são chamados de básicos ou de primitivos, se encaixam em três categorias: numérica (gue engloba números, sejam eles inteiros ou reais), lógica/booleana (que guarda true/false, ou seja verdadeiro/falso) e caractere (que guarda um caractere, que pode ser uma letra, um número, um símbolo, etc...). A categoria lógica pode também ser considerada uma subcategoria da categoria numérica, já que na verdade, ela usa números. Mesmo assim, alguns, como eu, deixam ela em uma categoria separada. Isso também não está errado, já que o propósito dela é diferente do propósito da categoria numérica e ela é bem mais restrita quanto aos valores permitidos.
  • 85. É importante lembrar que essas são categorias. Por serem categorias, elas podem englobar vários tipos de dados. Por exemplo, dentro da categoria numérica, a maioria das linguagens de programação tem tipos de dados diferentes para armazenar números inteiros e números reais. Muitas até tem subtipos para armazenar números reais com precisões diferentes (geralmente são os subtipos float e double). A categoria lógica é mais restrita e as linguagens contém apenas um tipo dentro dela. Veja como é a declaração de variáveis com tipos de dados escalares no Portugol Studio: inteiro x = 3 real y = 2.5 logico lampadaAcesa = falso caracter c = 'K'
  • 86. ATRIBUIÇÃO DE VALORES Valores numéricos Valores numéricos são escritos sem símbolos especiais. Nada de cifrão, mesmo se a variável que você estiver utilizando guardar algum preço de alguma coisa ou o lucro de uma empresa qualquer. Da mesma forma, se a sua variável representar alguma grandeza, como velocidade, você não deve colocar m/s após o número que representar o valor da variável. Números inteiros devem ser escritos apenas com os dígitos dele. Números reais devem ser escritos com um ponto separando a parte inteira da parte decimal. Os detalhes extras (nos exemplos que eu citei, o $ e o m/s) devem ser adicionados quando você for imprimir esses valores para o usuário. Eles não fazem parte do valor da variável.
  • 87.
  • 88. A única situação onde um número, seja inteiro ou real, é escrito com alguma coisa a mais do que o número em si é quando se deseja expressar o número em uma notação diferente da padrão, que é a decimal. Essas notações diferentes não são suportadas por todas as linguagens. O Portugol suporta: inteiro x = 0x7a84fb // número inteiro expresso em notação hexadecimal
  • 89. VALORES LÓGICOS Podem assumir apenas dois valores: verdadeiro ou falso. Veja o exemplo abaixo: logico lampada_acesa = verdadeiro
  • 90. Chars Quando você atribuir um char a uma variável, coloque aspas simples. Um char representa apenas um caractere. Um caractere não precisa ser uma letra. Pode ser um dígito ou algum outro caractere, como uma vírgula. Exemplos: caractere c = 'K' caractere d = '9'
  • 91. TIPOS DE DADOS COMPOSTOS Tipos de dados compostos são mais amplos do que os simples e armazenam vários valores. Eles podem ser arrays, strings, tipos definidos pelo usuário, dentre outros. Vamos ver apenas arrays e strings. Os demais tipos compostos variam de acordo com a linguagem, portanto não devem ser abordados aqui, senão os tutoriais ficariam presos a uma linguagem X ou Y, o que não é o propósito dos tutoriais. Algumas linguagens (tais como PHP) permitem que o número de elementos que uma array pode armazenar seja alterado durante a execução e outras não permitem essa alteração (tais como C++).
  • 92. ARRAY Uma array é um tipo de dado que armazena vários valores. Exemplos: uma lista de fornecedores de uma empresa ou uma lista com o número de vendas de um determinado produto em cada mês. Em algumas linguagens, esses valores precisam ser do mesmo tipo, como C++, e em outras, esses valores podem ser de tipos diferentes, como PHP.
  • 93. VETOR Uma array pode ter várias dimensões. Uma array unidimensional é chamada de vetor. Exemplos de declarações de vetores no Portugol Studio: inteiro fotos[10] inteiro vitorias_equipes[] = {3, 1, 2, 1, 1} real precos_produtos[3] = {10.30, 3.45, 2.10}
  • 94. No Portugol Studio, um vetor é declarado da seguinte forma: primeiro, informa-se o tipo da variável, seguido pelo identificador dela. Depois, coloca-se colchetes, que é o que indica que a variável é uma array. Se você quiser indicar o tamanho do vetor, basta informá-lo nos colchetes. O tamanho do vetor é obrigatório se os elementos do vetor não forem inicializados. Se os elementos do vetor forem informados, o tamanho se torna opcional, porque ele pode ser inferido. Quando os elementos do vetor são definidos, eles devem ser colocados entre chaves e separados por vírgulas.
  • 95. MATRIZES Como eu falei, arrays podem ter várias dimensões. Uma array unidimensional é chamada de vetor. Já uma array bidimensional é chamada de matriz. Pense que você pode querer armazenar a altura e o peso de um grupo de 10 pessoas. Fazer isso em vetores não seria bom. Ficaria bagunçado, estranho. O mais recomendado seria usar uma matriz (considerando apenas essas duas opções). Seguindo o exemplo de usar uma matriz para armazenar a altura e o peso das 10 pessoas, a primeira dimensão da matriz poderia ter 10 elementos para armazenar os dados das 10 pessoas, e a segunda dimensão poderia ter 2 elementos, para armazenar o peso e a altura de cada uma das 10 pessoas. Ou seja, cada um dos elementos da primeira dimensão da array vai poder guardar dois dados, em cada uma das duas posições da segunda dimensão.
  • 96. real dados_pessoas[3][2] real dados_pessoas[3][2] = {{1.77, 78.0}, {1.54, 52.0}, {1.65, 57.0}} real dados_pessoas[][] = {{1.77, 78.0}, {1.54, 52.0}, {1.65, 57.0}}
  • 97. Índices Depois que uma array foi declarada e você definiu os elementos dela, você pode usar os elementos da array da mesma forma que você usuaria variáveis simples. Ou seja, você pode atribuir valores a elementos da array, imprimi-las, etc. Cada elemento de uma array é diferenciado dos outros por um índice único, que é usado para acessar o elemento da array. Na maioria das linguagens, o índice é obrigatoriamente numérico (em outras, como PHP, também pode ser uma string). Em linguagens onde o índice deve ser numérico, ele quase sempre indica a posição de um item particular dentro de uma matriz, pois os itens quase sempre começam do 0 e aumentam de 1 em 1. Uma das exceções é Pascal. Porém, em quase todas as linguagens, você começará com o índice 0. Isso é o mais comum.
  • 98. VEJA COMO DEFINIR E CONSULTAR ELEMENTOS DE VETORES E MATRIZES: inteiro vitorias_equipes[] = {3, 1, 2, 1, 1} real dados_pessoas[3][2] = {{1.77, 78.0}, {1.54, 52.0}, {1.65, 57.0}} escreva(vitorias_equipes[0]) vitorias_equipes[1] = 2 escreva(vitorias_equipes[1]) dados_pessoas[1][0] = 1.52 escreva(dados_pessoas[1][0])
  • 99. CONVENÇÕES Quando se nomeia arrays, programadores seguem as mesmas regras que eles seguem quando nomeiam variáveis. Muitos usam algumas convenções ao nomear arrays, como apenas usar o plural, (exemplo: velocidades_carros), ou usar uma palavra que implica um grupo, tais como lista_compras ou grupo_estudantes. Esse primeiro deve ser evitado, porque ele pode gerar confusão, já que lista é o nome de uma estrutura de dados.
  • 100. STRINGS Enquanto o tipo caractere serve para armazenar apenas um caractere, o tipo string armazena um conjunto de caracteres. Por isso, ele pode ser usado para armazenar desde uma palavra ou uma frase até o conteúdo de um arquivo de texto completo. No Portugol Studio, o tipo string é chamado de cadeia (porque remete à cadeia de caracteres): cadeia nome = "Lorraine" Perceba que é bem semelhante às declarações dos tipos de dados escalares. A diferença é que o valor é um texto especificado entre aspas. A diferença é portanto conceitual: o tipo string é composto porque ele é uma cadeia de caracteres. É importante ressaltar que uma string também pode conter apenas dígitos. Ou também exclamações. Ainda assim seria uma string. Uma string é uma cadeia de caracteres, e não de letras.
  • 101. TIPAGEM Assim como alguns outros temas cobertos nos tutoriais, esse não é um tema tradicional de Lógica de Programação, mas eu decidi colocá-lo porque eu acho que falar sobre tipagem vai te ajudar quando você aprender a sua primeira linguagem de programação. INFERÊNCIA DE TIPO O que é inferir? É deduzir. Então, a inferência de tipo nada mais é do que a dedução do tipo de uma variável. Então, em linguagens onde há inferência de tipo, o tipo da variável não é informado. Exemplos: PHP e Python. Exemplos onde isso não acontece: C++ e Java.
  • 102. Exemplos de inferência de tipo em PHP: PHP$salario = 8000; // infere-se o tipo int $nome = "Max"; // infere-se o tipo string Já em C++, o tipo não é inferido: CPPint salario = 8000; string nome = "Max";
  • 103. TIPAGEM ESTÁTICA Em linguagens com tipagem estática, o tipo de uma variável não se modifica. Por isso, essa tipagem é chamada de estática. Geralmente, linguagens com tipagem estática requerem que o programador informe o tipo da variável quando ele declara as variáveis do programa. Mas isso nem sempre é necessário, pois uma linguagem pode ter tipagem estática e inferência de tipo ao mesmo tempo. Exemplos de linguagens com tipagem estática são C e C++.
  • 104. TIPAGEM DINÂMICA É o contrário da tipagem estática. Na tipagem dinâmica, o tipo de uma variável pode ser modificado durante o programa. Em linguagens que suportam esse tipo, não se indica o tipo da variável na declaração dela. Ao invés disso, usa-se apenas o identificador da variável e algum prefixo antes dela em alguns casos, como um $ no caso do PHP. Nele, eu posso inicializar uma variável com um número inteiro e depois mudar o valor dela para um texto tranquilamente: PHP$x = 30; $x = "texto";